Arquivo do Autor

Instalando o Team Foundation Server (TFS) sobre o SQL Server 2008

16/07/2009

Conversando com alguns alunos num último curso que ministrei, verifiquei que diversas pessoas ainda enfrentam problemas na instalação do TFS 2008 em uma máquina que já tenha o SQL Server 2008 instalado. Portanto, envio o link abaixo que utilizei quando enfrentei as dificuldades de instalação citadas, e que me ajudou plenamente na resolução do problema.

http://weblogs.asp.net/jgaylord/archive/2008/09/24/installing-team-foundation-server-2008-on-sql-server-2008.aspx

Google anuncia a criação de um novo sistema operacional – Google Chrome OS

09/07/2009

Pouco mais de um mês após o lançamento do Bing, sistema de buscas da Microsoft que visa atacar o domínio do Google nessa área, a gigante dos fundadores  Larry Page e Sergyi Brin responde com o anúncio do projeto de um novo sistema operacional, o Google Chrome OS, visando atacar o coração dos negócios da empresa de Bill Gates.

A idéia principal por trás do novo projeto está na estruturação de um novo sistema de janelas, sobre um kernell linux, visando a efetivação de um sistema operacional rápido, simples e seguro.

Como ambas as empresas já se mostraram suficientemente competentes na inovação e re-inovação de seus negócios, é bom que os concorrentes, e o mercado em geral, fiquem de olhos abertos.

Enterprise Library 4.1 – Hands On Labs

05/07/2009

Olá pessoal, tudo bem ?

Em todos os sistemas que desenvolvemos, nos vemos envolvidos em desenvolver código de infra-estrutura (log, acesso a dados, tratamento de exceções, validação, etc. ) para suportar as operações de negócio que serão desenvolvidas no nosso sistema.

A equipe do Patterns & Practices da Microsoft lançou há algum tempo a nova versão do projeto Enterprise Library que nos fornece uma extensa biblioteca de funcionalidades   para cobrir as necessidades de código de infra-estrutura.

Junto com a biblioteca, foi disponibilizado um projeto na linha Hands-On Labs, explicando e exemplificando cada um dos blocos de aplicação da biblioteca. A versão 4.1 da bibliote já inclui o unity, solução para injeção de dependências desenvolvida pela equipe do p&p, vale a pena conferir!

Guia para engenharia de testes de aceitação – Volume I

03/07/2009

Olá pessoal,

A patterns & practices acaba de publicar o guia “Acceptance Test Engineering”. Esse guia contém informações e métodos importantes relacionados a testes de aceitação. Algumas informações importantes constantes do guia:

  • Como planejar testes de aceitação
  • Tipos de testes de aceitação necessários
  • Como criar e executar testes de aceitação
  • Definição da palavra “concluído”
  • Justificativas de abordagens
  • Simplificação do processo de aceitação

Grande abraço e até a próxima,

Orientação a Objetos e o Modelo Anêmico: Business Objects, Value Objects e Data Access Objects

28/06/2009

Olá! Para iniciar a sequência de posts deste blog, gostaria de falar de um problema arquitetura que venho encontrando constantemente nos projetos em que tenho participado. O que vamos discutir aqui são os problemas que um Modelo de Domínio Anêmico, ou Anemic Domain Model pode nos causar.

Nos últimos projeto de sistemas que tenho participado, verifiquei que a estruturação de uma arquitetura n-camadas, tem sido baseada na combinação de diversos padrões de desenho, notadamente a trinca BO + VO + DAO.

Assim, o usuário executaria alguma operação na interface do sistema, que conversaria com algum objeto da camada de objetos de negócio (BO). O objeto de negócios por diversas vezes precisa armazenar informações dentro do banco de dados e utiliza objetos da camada de acesso a dados para isso (DAO).

A proposta do objeto de valor (VO) é funcionar como meio de transporte entre essas duas camadas, evitando assim overhead de comunicação entre as camadas que podem estar em processos de execução diferentes.

Eu fiz questão de destacar a palavra podem, pois apesar do padrão VO ter sido criado exatamente com o propósito de trafegar entre camadas que executam processos diferentes, em 90% dos casos que tenho visto ele não é usado dessa maneira. A minha percepeção é que na maioria das vezes, existe um uso indiscriminado dos design patterns, sem um entendimento completo da proposta de solução que os mesmos apresentam. Explico:

O pattern VO é um padrão que deve ser utilizado para trafegar objetos “de domínio” entre processos. O fato é que ele vem sido utilizado como objeto de transporte entre camadas que residem no mesmo processo. Um BO que reside na mesma máquina e no mesmo processo de um DAO (tipicamente uma referência direta em C#) utiliza um VO para transporte de objetos de domínio entre essas duas camadas. E qual é o problema disso ? Um grande problema:

Se voltarmos aos preceitos iniciais da orientação à objetos, vamos perceber que é desejado que objetos sejam entidades com dados e responsabilidades. O que estamos fazendo ao armazenar as operações de negócio num BO e os dados num VO ? Estamos quebrando uma das principais regras da orientação à objetos e introduzindo um estilo procedural de implementação. Um objeto VO, que é composto apenas de getters e setters, tem quais comportamentos ? E um objeto BO que aramazena comportamento mas não controla dados e/ou seus estados, tem quais informações para serem operadas sobre seus comportamentos ? Percebem a incoerência na quebra de um objeto “rico” de domínio em dois objetos: BO + VO ?

A utilização do VO para transporte de dados entre camadas que residem num mesmo processo deve ser evitada pois nos leva a construção de modelos anêmicos. Tais modelos, considerados burros, contém apenas dados que são transportados de um lado para o outro mas que não sabem o que fazer com esses dados.

Existem soluções para o para o problema arquitetural descrito no tópico desse post, como por exemplo o pattern Repository.

Nos próximos tópicos estarei discutindo um modelo de solução arquitetural para evitar o problema descrito acima.

Grande abraço e até o próximo post
Referências:

http://martinfowler.com/bliki/AnemicDomainModel.html
http://martinfowler.com/eaaCatalog/repository.html
http://fragmental.com.br/wiki/index.php?title=Fantoches
http://fragmental.com.br/wiki/index.php?title=Evitando_VOs_e_BOs
http://fragmental.com.br/wiki/index.php?title=Desenvolvendo_Sistemas_OO_Com_Padr%C3%B5es_de_Neg%C3%B3cio