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!

terça-feira, 21 de julho de 2009

Geração de Código com Visual Studio 208 e T4

Estas férias estão sendo super produtivas. Estou aproveitando pra colocar um monte de coisa em ordem e me atualizar com bastante tecnologias, coisas que a tempos não fazia com tanta frequencia.
Acabei de assistir um screemcast muito legal sobre T4 a tecnologia de templates e geração de código com o Visual Studio, utilizado pelos Softwares Factories e base do DSL (Domain Specific Language) que no fim das contas irá parar no OSLO que está sendo apresentado agora pela Microsoft.

Acessem http://www.pnpguidance.net/Post/T4TemplatesVisualStudioCodeGenerationScreencast.aspx e vejam por si próprios o que estou falando.

segunda-feira, 20 de julho de 2009

Microsoft Entity FRamework

nEstava dando uma olhada no blog do time do ADO.NET e do Microsoft Entity Framework, o framework de ORM (Object-Relational Modeling) tecnologia paa mapeamento de objetos para banco de dados relacionais.
Parece que eles já atenderam no último CTP (Commynity Technology Preview( do Entity Framework a possibilidade de se trabalhar apenas com código, sem a necessidade de utilização do Designer já conhecido desde o Linq to SQL.
Agora além de poder utilizar suas próprias entidades, foi criado um template T4 (recurso de template incluído no Visual Studio) para criação de classes POCO (Plain Old CLR Object), ou seja nossas classes de negócio que contem apenas a definilão de dados e .
O blog contém uma série de exemplos passo-a-passo. Para faze-los você precisará do .NET Framework 4.0 Beta 1 e do Visual Studio 2010 também em versão Beta 1.
Recomendo uma olhada! Pretendo estudar isto um pouco mais de perto, e logo em seguida colocar minhas próprias demonstrações e opiniões aqui.

domingo, 19 de julho de 2009

Duas dicas legais

Deixa eucompartilhar duas dicas legais que aprendi esta semana e que são de valor incalculável.
Uma o meu amigo Fábio Margarito comentou e fazendo uma busca ´rapida no Google w E OUTRA O Igor instrutor do curso de WCF (Windows Communication Foundation) passou ontem durante a aula.
A primeira refere-se a arquivos XML que você precise editar e que você tenha acesso a um XSD. Se você colocar o arquivo XSD dentro da pasta Xml\Schemas do Visual Studio você ganha o recurso de intellisense dentro do Visual Studio para este arquivo XML. Este recurso existe desde o Visual Studio 2005 e está disponível em todas as versões desde então.
A segunda refere-se a o processo de debug de Windows Services. Você já teve esta difícil tarefa e utilizou inúmeros recuros “porcos” para conseguir atingir o objetivo. Beleza. Dentro do Framework existuma classe Debugger. Sua função é única e ~exclusivamente trabalhar com o Debugger do .NET. Chamando o método Break ou Lanch você tem a opção de inciiar o debugger e com isso debugar o seu projeto desde o início. Chega de Sleep e outras funções toscas. Valeu pela dica Igor.

Silverlight 3 lançado

Saiu o Silverlight 3, última versão do framework da Microsoft para desenvolvimento de aplicações ricas para Web.
O Silverlight é um port para Web do WPF (Windows Presentation Foundation) integrante do Framework 3.5 do .NET com o objeitov de oferecer uma nova maneira d criação de interfaces ricas i utilizando ao máximo os recuros gráficos, animações e efeitos visuais, inclusive em 3D, de forma simples e acessível aqualquer um.
Além da linguagem declarativa XAML que além de poderosa da total liberdade para o trabalho dos designers de interface trabalharem independentes dos desenvovledores, novas funcionalidades e recursos de programação foram adicionados ao Framework e são capaz de deioxar qualquer um com água na bica em vê-las funcionando. O roteamento de eventos, o conceito de Commands, Recursos entre outros permitem uma rápida criação de interfaces que dão um novo nível de experiência ao usuário.
Rcomendo estudar estes assuntos, poiseles tem toda a pinta de ditarem as novas rergas para criaçõ de aplicações nos príximos anos.