Desenvolvimento Guiado por Domínio (DDD)
O Desenvolvimento Guiado por Domínio (DDD) é uma abordagem de desenvolvimento de software que se concentra na compreensão profunda do domínio do negócio para o qual o software está sendo construído. O objetivo do DDD é criar uma linguagem comum, chamada de linguagem ubíqua, e um modelo de domínio rico que reflitam as necessidades complexas do negócio.
No contexto de construir uma casa, o DDD seria como passar um tempo extenso conversando com a família sobre como eles imaginam sua casa ideal, suas necessidades específicas e como eles interagem com cada espaço da casa. Essa etapa é essencial para criar um modelo que todos entendam e concordem.
Desenvolvimento Guiado por Comportamento (BDD)
O Desenvolvimento Guiado por Comportamento (BDD) se concentra na colaboração entre desenvolvedores, garantia de qualidade (QA) e stakeholders do negócio para desenvolver um entendimento compartilhado do comportamento do software. O BDD utiliza cenários escritos em linguagem natural para descrever o comportamento do sistema e os critérios de aceitação.
No exemplo da construção da casa, o BDD seria como criar uma lista de “histórias” que descrevem como a família vai usar cada parte da casa. Essas histórias ajudam a garantir que os construtores e designers entendam exatamente o que é importante para a família e construam a casa de acordo.
Desenvolvimento Guiado por Testes (TDD)
O Desenvolvimento Guiado por Testes (TDD) é uma prática de desenvolvimento em que os testes são escritos antes do código de produção. O desenvolvedor começa escrevendo um teste que define uma função ou melhoria desejada, então escreve o código mínimo necessário para passar o teste e, por fim, refatora o novo código para atender a padrões de qualidade.
No exemplo da construção da casa, o TDD seria como criar um checklist de inspeção para cada parte da casa que será construída. Esse checklist detalha tudo que precisa ser verificado antes de considerar essa parte da casa completa. Os construtores usam esse checklist para garantir que cada parte da construção esteja correta antes de passar para a próxima etapa.
Em resumo:
o DDD foca na modelagem e compreensão profunda do domínio do negócio
o BDD concentra-se na comunicação e no entendimento compartilhado do comportamento esperado do software
o TDD foca no desenvolvimento orientado a testes para garantir que o software atenda aos requisitos técnicos desde o início.
Essas abordagens de desenvolvimento de software compartilham o objetivo comum de criar sistemas de alta qualidade.
Referências:
Post de Lucas Di Blasi no LinkedIn – Você sabe o que são TDD, BDD,DDD, FDD, ATDD e STDD?