segunda-feira, 12 de julho de 2010

TDD – Uma abordagem do ponto de vista da acessibilidade

Recentemente participei de um projeto na empresa onde trabalho e decidimos utiliza uma abordagem orientada a testes para que eu pudesse desenvolver o projeto  e usar meu código para geração dos artefatos necessários pelo nosso processo e  a área de qualidade.

Gostei da abordagem pois gosto muito de codificar, testar novos recursos da linguagem e das demais bibliotecas que a Microsoft disponibiliza, neste caso a Enterprise Library 5.

Foi minha primeira experiência com desenvolvimento pensado deste jeito, e apesar dos roblemas identificados gostie da abordagem, e o assunto é uma boa discussão para a inclusão de mais deficientes visuais no ramo de desenvolvimeno de software.

Mas com que base posso afirmar isto?

TDD só necessita da Especificação de Requisitos para ser iniciado. Este é um documento textual acessível para todos e por este motivo nãpo impede o trabalho de um DV;

Todas as boas IDEs possuem ferramentas integradas de geração de testes unitários e sua execução, demonstrando sua completude, permitindo sua depuração de maneira com que o DV escreva e realize todos os testes de forma independnete;

A escrita de testes unitários, e o desenvolvimento em camadas, permite que os testes sejam escritos antes do código em si, e assim, antes mesmo até da interface gráfica. Membros diferentes da equipe podem trabalhar em paralelo, partes do código podem ser “mockadas” e a boa definição de um contrato garante a total compatibilidade do código na hora de fazer o merge de tudo;

Unity, o framework de injeção de dependência da EntLib, é robusto o suficiente para permitir este desenvolvimento paralelo sem traumas;

Temos algumas coisas para melhorar em nosso processo, mas acredito que em pouco tempo teremos um processo maduro e acessível, e quem sabe com isso um primeiro passo para abertura de mais oportunidades no mercado de trabalho.

Publicarei aqui todos os nosso avanços.

segunda-feira, 28 de junho de 2010

EnterpriseLibrary5DataAccessBlock-parte1

Pessoal como havia prometido começo hoje uma série de artigos falando das principais novidades da Enterprise Library 5.

Para quem não conhece a Enterprise Library, também conhecida como EntLib, é uma biblioteca de blocos de código com fins bem específicos e comuns a maioria das aplicações.

Enter eles podemos citar o Data Access e seus recursosde conectividade e abstração no acesso a bancos de dados encapsulando diversos recursos do ADO.NET, o Exception |Handling e seus diversos tratamentos para as exceções, Logging e seus diversos listeners que determinam como e onde o logo é armazenado, e varios outros como SEgurança, Criptografia, Validação de Dados, Injeção de Dependencia, Orientação a Aspecto, entre outros.

Como trabalho muito com aplicações de banco de dados, e acho um dos blocos mais simples de se trabalhar, decidi começar falando do Data Access. Para quem ainda não oconhece recomendo realizar os Hands On Labs.

O que vou falar aqui são das novidades da versão 5 apenas. E são elas:

Data Accessors;

Chamadas Assincronas ao Banco de Dados;

Os Data Accessors nos dão a possibilidade de transformar um ResultSet diretamente em uma lista genérica de objetos.

O que ele faz é mapear os campos do ResultSet diretamente para as propriedades do objeto.

Isto é muito útil quando temos aplicações legadas e ainda não estamos preparados para migra-las para um ORM, mas precisamos de produtividade na criação das consultas.

Mas se é legado, normalmente os nomes das colunas não tem nada haver com o nome da propriedade ceto? A resposta normalmente será sim. Ai não vai funcionar né? Ai é que você se engana.

Junto com os Data Acessors existem classes sensacionais utilizadas para dar suporte ao mapeamento dinamico de propriedades, até mesmo de tipos complexos como classes, para colunas do resultset.

É possível se especificar uma coluna ou uma função que via lambda expression permite se construir mapeamentos altamente sofisticados e versáteis.

Alias elesforam idealizadosexatamente para que você traga os dados odo banco, mas faça querys mais complexas em sua aplicação, ja que os dados ja estarão em memória e suas consultas serão absursamente mais rápidas.

Já as chamadas assincronas, também usadas pelos Accessors, são um recurso interessante para aumentar a escalabilidade de suas aplicações, porincipalmente aplicações data centricas que trabalham com milhares de registros.

O que le faz, caso suportado pelo banco de dados, e fazer a transferência dos registros de forma assincrona, de acordo com a necessidade da aplicações, permitindo assim uma maior otimização dos recursos, principalmente quando por exemplo, existe muita concorrência, processamentos massissos sobre os dados ou mesmo para que o usuário tenha um feedback mais rápido na User Interface.

Duas novas propriedades foram adicionadas aos objetos Database:

SupportAsynchronousExecute;

SupportDynamicPArameterDiscovery;

Ambas definem se a conexão aceita os devidos recursos.

No próximo post colocarei exemplos práticos de cada recurso.

quinta-feira, 24 de junho de 2010

Services.Restart()

Depoisdeumalongatemporadaforaretomoaquiminahsatividadesnestblog.

Durante os últimos meses venho estudando muito as novidades do Visual Studio 2010, .NET Framework 4, e atualmente a Enterprise Library 5.

Tentarei nas próximas semanas mante uma certa regularidade nas postagens para que não percamos o fio da miada ok?

Aproveitando este post quero falar de um recurso muito interessante do novo Data Access Block da EntLib 5, os Data Accessors.

Apesar de termos diversos Frameworks ORM, como o próprio Entity e o NHibernate, a Microsoft nos proveu uma ferramenta muito interessante para adiconarmos este recurso em aplicações mais simples, legados e casos emque o modelo relacional é tão complexo que nem Jesus nos ajudaria.

O que ele faz é praticamente mapear um resultset, IDataReader ou IDataSet, para uma lista de objetos.

Por default ele faz o mapeamento pelo nome das colunas, mas é possível se criar mecanismos custom de mapeamento e com isso preencher estruturas complexas de maneira relativamente simples.

Tenho utilizado este recurso em meu último projeto e o ganho de produtividade é absurda.

No próximo post coloco um passo-a-passo de por onde começar e algumas dicas de boas práticas quando trabalhamos com este bichinho.

Pra quem está curioso, recomendo a leitura do arquivo .CHM disponível no site da Enterprise Library, os Hands On e é lógico os blogs dos desenvolvedores.

Abraço!