Feature Driven Development (FDD): conheça essa metodologia

Rogério Marques

12 abril 2019 - 09:00 | Atualizado em 14 julho 2023 - 18:45

Retrato de dois jovens engenheiros criativos, uma mulher e um homem, usando um tablet para analisar e discutir como proceder com o software de inteligência artificial. Eles estão em pé em um escritório de pesquisa de alta tecnologia.

O processo Feature Driven Development, também conhecido como FDD, é uma metodologia de análise orientada a objetos, que tem como foco o estudo de problemas com fundamentos baseados em conceitos palpáveis

Também conhecida como Desenvolvimento Orientado a Recursos, também se baseia em processos interativos para entendimento do contexto que será analisado.

De acordo com Peter Coad, uma dos co-criadores, uma funcionalidade “é uma função com valor para o cliente que pode ser desenvolvida em duas ou menos semanas”, pois uma das características dessa abordagem é realizar a apresentação de todo um conjunto de features em um período de tempo fixo.

Essa orientação para resultados parciais em curtos espaços de tempo torna o modelo bastante atrativo. No entanto, para entendê-lo, fazem-se necessários uma série de conhecimentos, e é sobre isso que falaremos. Nesse artigo de Cedro, iremos te contar como esse método funciona, além de te ajudar a implementá-lo. Confira!

Qual é a principal diferença entre o FDD e o Scrum?

Para entendermos o que é Feature Driven Development é necessário sabermos em que tipo de modelo ele se encaixa, que no caso é o de desenvolvimento, extremamente focado nas atividades semanais dos times. Já o Scrum é um modelo de gerenciamento, que visa trazer agilidade nos processos de organização de uma equipe.

Por mais que sejam duas coisas distintas, na medida em que o FDD é quase que uma extensão do SCRUM, só que focalizada no desenvolvimento de softwares, esses dois modelos devem ser desempenhados juntos para que a máxima produtividade seja alcançada.

A seguir, traçaremos melhor os paralelos entre FDD e Scrum, além de informar como os dois se complementam.

Papéis do Desenvolvimento Orientado a Recursos no SCRUM

O SCRUM, um framework de gerenciamento de equipes, é amplamente utilizado. Segundo artigo da FM25, gigantes corporações do mercado, como Sony, LEGO e Simens já implementam essa técnica. Nesse sentido, o papel do Feature Driven dentro dessa alternativa é essencial.

1.1 Gestor do Projeto / Product Owner

O gestor do projeto é quem trata das questões administrativas do projeto, onde possui autonomia para decidir o que deverá ser feito, priorizando toda e qualquer funcionalidade que entregue valor e consiga ser realizada durante aquele período de tempo pré-determinado.   

É o responsável também por uma equipe pequena, assegurando boas condições de trabalho para aumentar o rendimento de todos os envolvidos, além de decidir o que será realizado durante a sprint definida.

1.2 Gestor de Desenvolvimento/Scrum Master

O gestor de desenvolvimento é responsável por retirar qualquer impedimento que a equipe possua, além de fazer com que as reuniões necessárias aconteçam.

Ele também deve avaliar se o código realizado pelo time de desenvolvimento está nos padrões do projeto. Caso não esteja, ele deverá apontar melhorias ou sugestões que colaborem no amadurecimento da equipe, em relação ao código e também de time.

1.3 Equipe de Design/Equipe de UX

A equipe de design, a partir da análise da arquitetura e documentação do projeto e/ou produto trabalhado, será responsável por toda a questão visual a ser realizada, pensando inclusive em termos de usabilidade.

1.4 Dono de Classe/Desenvolvedor

O dono de classe é membro do time de desenvolvimento, onde estará sob comando do gestor de desenvolvimento. Ele é responsável por questões relacionadas à arquitetura e testes, mas sua principal atividade é a implementação das features (funcionalidades) definidas pelo gestor do projeto.

1.5 Escritor Técnico/Analista de Requisitos

O escritor técnico é responsável pelo entendimento do produto, tendo que conhecer a área de atuação do projeto e/ou produto trabalhado, devendo ser envolvido em grande parte das decisões dos produtos, pois é ele que assegura que o sistema siga as regras de negócio de cada funcionalidade.

Boas práticas no uso do FDD

Para que o Feature Driven Development flua de maneira correta existem algumas boas práticas em sua utilização. Frequentemente, essas práticas envolvem mudanças no ambiente organizacional para que ocorram, mas têm extrema valia para o sucesso do projeto. Algumas delas são:

  • Modelagem orientada a objetos de domínio: a modelagem deve ser básica, apenas algo ilustrativo para os envolvidos no projeto;
  • Desenvolvimento por feature: implementação orientada por funcionalidade;
  • Código proprietário: o código deve ser realizado apenas por um desenvolvedor, ou seja, iniciado e terminado pelo mesmo desenvolvedor. Entretanto, não impede de ser realizado o pair programming com outro desenvolvedor do time, e não deve excluir de maneira nenhuma o trabalho em equipe;
  • Equipe: equipe destinada a desenvolver funcionalidades necessárias ao projeto;
  • Inspeções: deve ser realizado o code review, para garantir que o que está sendo enviado para o ambiente de uso não resultará em bugs e problemas futuros;
  • Integração regular: em um determinado período de tempo pré-determinado, devem ser integradas as características já terminadas, permitindo a verificação de erros e também criando uma versão atual que pode ser demonstrada ao cliente;
  • Gerência de configuração: ter ambientes diferentes com versões da funcionalidade desenvolvida. Atualmente, é muito utilizado um ambiente de desenvolvimento, um de homologação e outro que é o ambiente estável, para que os clientes utilizem;
  • Reportar/Visibilidade dos resultados: todos os envolvidos devem saber o status de desenvolvimento das funcionalidades que foram elaboradas. Isso é uma maneira de favorecer o trabalho conjunto, além de prevenir possíveis erros pela ausência inesperada de algum membro.

Processos Básicos

Alguns processos a serem desenvolvidos para o funcionamento básico do Feature Driven Development são os seguintes:

  • Desenvolvimento de modelo abrangente (Análise orientada por objetos);
  • Construção de lista de funcionalidades;
  • Planejamento incremental por funcionalidade;
  • Projeção por funcionalidade;
  • Construção por funcionalidade.

Fluxograma de passos do modelo de Feature Driven Development

Progresso da Equipe

Como já dissemos, o Desenvolvimento Orientado por Funcionalidades é orientado por resultados. Isso significa que medir o desempenho da equipe é bastante relevante para que o método seja aplicado com eficácia, além de favorecer a gestão de talentos da corporação.

Essa medição de progresso deve ocorrer a partir de cada item que foi estipulado no início do planejamento. Nesse sentido, o nível de esforço e de prioridade dos features devem ser previamente definidos, e também serão critérios de avaliação.

Follow Ups diários e/ou semanais devem ser realizados para entender melhor o progresso dos times,  e para que as alterações nos status ocorram. Isso inclui dizer se a tarefa está “em andamento”, “entregue” ou “atrasada”.

Dentre as ações para organizar essa alocação de desempenho, a mais comum é dividir a funcionalidade em dias de desenvolvimento, na intenção de comportar as atividades de desenvolvimento das features em 8 horas de trabalho, da seguinte forma:

  • Levantamento do domínio da aplicação = 1%;
  • Conhecimento da funcionalidade = 40%;
  • Inspeção do projeto = 3%;
  • Desenvolvimento = 45%;
  • Inspeção do código = 10%;
  • Integração = 1%.

Essas estimativas são salutares para nortear como o tempo de cada tarefa será alocada, mas vale ressaltar que o foco é o cumprimento da tarefa, e todas as ações devem girar em torno disso.

Documentação no Feature Driven Development 

A documentação dessa abordagem não é muito diferente das documentações que são comuns de serem utilizadas em metodologias ágeis. A ideia principal para a documentação é de que a feature deve entregar valor ao cliente, seguir as boas práticas e os processos básicos. 

Cada processo deve ser descrito em no máximo duas páginas, seguindo a estrutura: Entrada, Tarefas, Verificação e Saídas.

5.1 Documentação de Funcionalidades

A estrutura da documentação de features segue o seguinte padrão:

<ação> <resulta em> <objeto>

Como por exemplo:

  • Calcular o total de uma venda;
  • Avaliar o desempenho de um vendedor;
  • Validar a senha de um usuário.

Feature Principal

  • Gerenciamento de senhas.

Conjunto de Features

  • Validar a senha de um usuário.

Features

  • Verificar quantidade de caracteres;
  • Verificar se na senha possui número;
  • Verificar se na senha possui letra maiúscula;
  • Verificar se na senha possui letra minúscula;
  • Verificar se na senha possui símbolo.

5.2 Revisão da Documentação

As inspeções nas documentações realizadas previnem futuros bugs no desenvolvimento, permitem a transferência de conhecimento correto, dá ao desenvolvedor os padrões que devem ser seguidos e permitem a extração de métricas para melhorias, tanto em processos de documentação, como nos processos de desenvolvimento. 

Lembrando que tanto a revisão da documentação, quanto de código, não são uma avaliação pessoal de performance, mas sim do conjunto.

Conclusão

Por ser uma abordagem ágil extremamente adaptável, podendo ser acoplada facilmente à metodologia SCRUM, que tem suas vantagens pelos eventos que devem ser realizados no decorrer da sprint de desenvolvimento, permitindo um maior acompanhamento de tudo que foi proposto a ser desenvolvido. 

A principal vantagem em aplicar o desenvolvimento orientado a recursos é considerar o todo maior que cada parte separadamente. Esse fator estimula o espírito de equipe, e faz com que todos entendam o que o produto é, para realizar o desenvolvimento da feature, evitando futuros problemas na implementação.

Segundo a definição de Jeff De Luca, co-criador da metodologia, podemos definir esse o FDD como: “…uma abordagem de desenvolvimento ágil de software baseada em funcionalidades, que visa a entrega rápida e iterativa de recursos de alta qualidade para os usuários. 

Ele se concentra na colaboração entre as equipes, na decomposição do trabalho em tarefas gerenciáveis e na utilização de processos bem definidos para garantir a qualidade e a eficiência do desenvolvimento”.

Negócios e Gestão Inteligente com a Cedro Technologies! 

E aí, gostou do artigo? Aqui no blog da Cedro temos diversos conteúdos para contribuir nas rotinas das empresas e trazer muito mais sobre metodologias de desenvolvimento de projetos, além de aplicações no mercado financeiro. Acesse o blog de Cedro e confira!

Recomendados para você

Pessoas em mesa de escritório discutindo projetos
Bancos enfrentam concorrência das fintechs pelas PMEs ...
Homem clicando em ícone de "Open Sourcing" com uma série de outros ícones ao lado
Contextos e previsões sobre o futuro do código aberto ...
Pessoa utilizando computador com site de análise dados aberto
Plataforma de investimentos: conheça a solução completa da Cedro Technologies ...