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.
Arquivo do Autor
Google anuncia a criação de um novo sistema operacional – Google Chrome OS
09/07/2009Pouco 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/2009Olá 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/2009Olá 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/2009Olá! 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: