TDD, BDD e DDD: entenda o que são essas siglas!
TDD, BDD e DDD: se você é desenvolvedor ou gestor de TI, já deve ter ouvido falar nessas siglas. Apesar de não serem modelos novos, eles têm sido implementados cada vez mais nas rotinas internas das empresas, de forma a melhorar o processo de desenvolvimento.
Aplicando-os, seja individualmente ou em conjunto, sua empresa de TI consegue melhorar produtividade e encantar mais o cliente. Por isso, é fundamental saber exatamente como cada um desses conceitos opera.
Vamos explicar mais sobre cada um deles a seguir. Boa leitura!
Test-Driven Development (TDD)
O Test-Driven Development (TDD ou, em português, Desenvolvimento Orientado a Testes) é uma abordagem cujo objetivo é a realização de um sistema com 100% de cobertura de testes. Saiba mais.
Qual sua importância para o desenvolvimento de sistemas?
O sistema de testes é fundamental para verificar se há qualquer tipo de falha que pode comprometer a usabilidade e funcionalidade da solução antes que seja entregue ao cliente final ou aplicada em seu negócio.
Seu objetivo é buscar a qualidade total do código, por meio de 100% de cobertura de testes.
Quais suas principais características?
Sua proposta é bem simples: o colaborador deverá escrever um teste que será feito de forma automatizada antes mesmo de começar o processo de desenvolvimento do código, segundo algumas práticas que explicaremos a seguir.
Como esse modelo funciona?
O desenvolvimento do Test-Driven Development, segundo a proposta, deve ser feito da seguinte forma:
- escreva um teste, mesmo que ainda não tenha em mãos o código real a ser testado, sem nada implementado;
- realize o procedimento de teste e acompanhe o processo de falha;
- produz-se o código real que deverá ser testado, de forma que ele passe no teste;
- teste novamente, com o objetivo de passar no teste produzido;
- revise o código, melhorando o que é preciso, e escreva-o por completo para testá-lo;
- repita os passos de acordo com o que for necessário.
É importante reforçar que ele pode ser utilizado tanto em conjunto com o DDD, em processos não-ágeis (caso a sua empresa não trabalhe, ainda, com metodologia ágil e pode ser fundamental para o design de software.
Behavior Driven Development (BDD)
O Behavior Driven Development (BDD, ou, em português, Desenvolvimento Guiado por Comportamento ou, ainda, Desenvolvimento Orientado a Comportamento) é um modelo criado em 2003, por Dan North, como uma espécie de resposta à criação do DDD. Veja.
Qual sua importância para o desenvolvimento de sistemas?
O BDD traz grandes vantagens para o desenvolvimento de sistemas e soluções. Em primeiro lugar, ele deixa bem claro para o profissional responsável como a funcionalidade deverá operar, dando maior liberdade para que ele atue buscando a melhor solução técnica para a questão.
Além disso, esse tipo de descrição, pela sua simplicidade, permite que pessoas que não sejam da área de TI consigam entender o que é esperado da solução e poder contribuir na descrição de demandas. Com isso, até mesmo o cliente consegue ser mais ativo no processo.
Com isso, é possível diminuir falhas e quebras de expectativas no que concerne a funcionalidade, entregando uma solução mais próxima do que o seu público realmente necessita.
Quais suas principais características?
O Behavior Drive Development tem como principal característica a criação de códigos que sejam baseados nas descrições do comportamento que determinada funcionalidade da solução deva ter.
Sendo assim, ele deve descrever, sem o uso de informação técnica, exatamente como ela deve se comportar e qual a resposta esperada da funcionalidade.
Por exemplo, se você está montando um aplicativo baseado em gamification, deverá registrar como será um sistema de pontuação, demonstrando o que deverá ocorrer nos momentos em que os usuários ganham e perdem pontos.
Como esse modelo funciona?
Ele se baseia em 5 práticas fundamentais, tais como apresentaremos a seguir:
- o envolvimento dos colaboradores responsáveis pelo projeto no processo, por meio de Outside-in Development (Desenvolvimento de Fora para Dentro);
- utilização de exemplos para conseguir demonstrar o comportamento que uma solução deverá ter;
- a automação dos exemplos, de forma a obter um feedback mais rápido e eficiente, bem como a realização de testes de regressão;
- utilização de dublês de teste, de forma a contribuir na colaboração entre módulos e códigos ainda não produzidos.
Domain-Driven Design (DDD)
O Domain-Driven Design (DDD), conceito criado em 2003 por Erick Evans em seu livro “Domain-Driven Design: Tackling Completixy in the Heart of Software” diz respeito a uma abordagem focada no design de softwares, o qual abarca uma série de protocolos, conceitos e técnicas para garantir um design mais eficiente no desenvolvimento de soluções.
Qual sua importância para o desenvolvimento de sistemas?
O Domain-Driven Design traz uma série de técnicas importantes para realizar um design impecável de software, conseguindo unir funcionalidade, User Experience e visual atrativo para o usuário final.
Sua importância é trazer as abordagens necessárias para realizar esse tipo de aplicação, mantendo o foco no Domínio de Software, ou seja, para cumprir o propósito que a aplicação deve atender. Afinal, não adianta ter um bom design, mas não cumprir a função para o qual a solução foi criada.
Quais suas principais características?
Seu foco principal é, como falamos acima, manter o foco no Domínio de Software, de forma automatizada, a fim de atender completamente um determinado modelo de negócio, por meio das abordagens estabelecidas.
O modelo DDD apresenta 5 itens principais:
- Entidades;
- Objetos de Valor;
- Factories;
- Serviços;
- Repositórios.
Ele também aborda outros pontos, tais como:
- ubiquitous language (linguagem onipresente): é a adequação para a linguagem do negócio. Por exemplo, se a solução será desenvolvida para o setor financeiro, termos como “amortização de dívidas” e “antecipação de recebíveis” deverão se repetir, tanto no modelo quanto no código, fazendo com que todos falem a língua do negócio;
- separação das camadas: as camadas da solução precisam ser independentes, sem se misturarem.
Com o uso de TDD, BDD e DDD em seu negócio, é possível realizar um desenvolvimento mais seguro, completo, sem falhas e que consiga, de fato, realizar todas as funcionalidades esperadas por parte do seu cliente final. Com isso, sua empresa tende a ganhar muito mais em produtividade, fidelização do público e espaço no mercado.
Gostou deste conteúdo? Então compartilhe-o em suas redes sociais para que mais colegas da área possam desfrutar deste conhecimento!
Patrick
O texto é muito bom, mas eu não diria que o TDD vai atingir 100% de cobertura de código, tratar todo o código pode ser contra producente. Quanto ao DDD faltou mencionar o bounded context que é um dos pilares do DDD
infra@gaea.com.br
Obrigado Patrick por enriquecer o texto!