Estou bastante empolgado em finalmente poder aplicar o Desenvolvimento Orientado a Testes (TDD) em um projeto profissional. As vezes é difícil convencer o alto escalão sobre os benefícios em se usar esta técnica de desenvolvimento que, em um primeiro momento, pode até reduzir na produtividade enquanto a equipe ainda não dominar as técnicas necessárias para criar bons testes usando mocks, fakes e stubs.

Atualmente venho investindo bastante tempo em me aperfeiçoar no uso do Domain Driven Design (Projeto Orientado a Domínio) proposto por Eric Evans. Na realidade tenho aplicando de maneira “mais flexível” este  princípio de design em projetos de pequeno porte, porém o projeto atual é de grande porte e envolve o core business da empresa e por isso estou sendo mais crítico quanto ao uso correto do DDD.

Lembro que desde que fui apresentado ao paradigma da Programação Orientada a Objetos (POO) sempre fiquei preocupado em modelar corretamente os objetos de negócio.

A ideia de usar no sistema a mesma a terminologia empregada pelos usuários era pra ser um dos ganhos da POO, mas durante muito tempo  não passou de promessa vazia porque na prática os analistas e programadores demoraram a se adequar a esta nova forma de se projetar e desenvolver software. O DDD surgiu então para ajudar a preencher esta lacuna e auxiliar na hora de projetar softwares mais robustos e alinhados ao negócio.

Minha proposta para o projeto foi empregar uma Arquitetura em N-Camadas DDD de modo que o foco continue sendo as regras de negócio e o TDD visa a melhoria da qualidade dos diversos componentes espalhados pelas camadas. Além disso os testes automatizados certamente darão um grande ganho de produtividade e qualidade depois que o projeto entrar em produção e começar a receber as manutenções evolutivas (afinal de contas gastamos muito mais tempo dando manutenção em um software do que gastamos em seu desenvolvimento).

Por enquanto estamos começando a criar as primeiras entidades de domínio, serviços e objetos de valor e ainda teremos um longo caminho pela frente, mas já deu pra perceber os benefícios desta poderosa combinação de DDD+TDD. Vamos aguardar e conferir se as primeiras impressões se confirmam.