Estava pesquisando sobre BDD, TDD e DDD e me deparei com o FDD (Feature Driven Development), afinal:
- O que é FDD?
- Ele tem alguma relação com BDD, TDD e DDD?
É um dos muitos modelos de desenvolvimento criados nas últimas décadas para tornar o processo de desenvolvimento de software melhor. Nenhum deles tem comprovação clara de eficácia e nenhum é muito diferente de usar o bom senso geral sobre gerenciamento de projetos, cada um com seu viés positivo e negativo. O único ponto que o diferencia realmente de outros mais conhecidos é não ter um marketing tão bem feito e por causa/consequência não tem ampla adoção, que gera um ciclo vicioso.
Como o nome diz ele foca em características específicas da aplicação. Apesar dele pregar ser uma metodologia ágil, como tudo parece ter que ser para fazer sucesso, não há clareza que seja ligado a pequenas interações, mas parece seguir os preceitos básicos originais do que é ágil, o que quase qualquer coisa se encaixa.
Ele tenta compartimentar o projeto mais ou menos como se faz com o código fazendo com que cada feature tenha um dono que é o responsável isoladamente. Os outros membros do projeto não precisam entender nada daquilo a não ser o contrato público que precisa para interagir com o componente. Mais ou menos como ocorre com qualquer projeto, inclusive com frameworks e bibliotecas públicas conhecidas. A questão é quem pode por a mão naquilo. O que é legal, mas dependendo do tamanho do projeto isso faz pouco sentido e ou mesmo é inviável já que equipes não são estáveis, o que acaba sendo um problema.
O importante é que tudo é pensado como feature centralmente. Tem um fluxograma da Wikipedia:
Diretamente não tem nada a ver com essas outras técnicas ou metodologias, mas podem ser usadas em conjunto.
Em geral não gosto nada dessas coisas que terminam em DD, pela forma como elas são criadas. Podem até ser úteis, mas não são fundamentais como as pessoas acreditam, e muda pouco a forma como desenvolve software, se souber o que está fazendo.
Ou seja, é só mais um manualzinho de como você pode gerenciar seu projeto, estude-o um pouco e decida se ele é útil para você mais que outra forma. Se achar que sim, aprofunde-se mais, aplique, teste, melhore, e se ver que não deu benefício algum, que se deixar de usá-lo terá mais benefícios, não hesite em abandonar.