Feature Driven Development (FDD): conheça essa metodologia
Rogério Marques
12 abril 2019 - 09:00 | Atualizado em 14 julho 2023 - 18:45
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 impedimentoque 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 é aimplementaçã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 opair 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.
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ê
A influência dos millennials nos serviços financeiros ...
A importância de ter um canal de atendimento full time ...
Market Data para Aplicativos e Cotações da BOVESPA (B3) ...
A Cedro Technologies utiliza cookies para melhorar a sua experiência de navegação, personalizar conteúdos e desenvolver iniciativas de marketing. Para informações sobre os tipos de cookies e para configurá-los de acordo com a sua preferência, clique em “Definições de cookies”, onde poderão ser habilitados e desabilitados conforme sua preferência. Para aceitá-los, clique em "Aceitar todos os cookies". Querendo saber mais, acesse nossa Política de Privacidade.
Cookies estritamente necessários
Os cookies estritamente necessários permitem um funcionamento adequado do nosso site, não coletando ou armazenando informações sobre você ou em relação às suas preferências. Normalmente, eles só são configurados em resposta a ações realizadas pelos usuários, como por exemplo salvar as suas preferências de privacidade, realizar login ou salvar informações para o preenchimento de formulários. Por essa razão, não é possível desabilitá-los.
Se você desativar este cookie, não poderemos salvar suas preferências. Isso significa que toda vez que você visitar este site, você precisará ativar ou desativar os cookies novamente.
Cookies de desempenho (Performance cookies)
Esse tipo de cookie coleta informações sobre como os usuários utilizam e navegam no site, como por exemplo:
Quais páginas os usuários acessam com mais frequência;
Se o usuário recebe mensagens de erro de nossas páginas.
Vale ressaltar que esse tipo de cookie não coleta informações que identificam o usuário. Todas as informações que esses cookies coletam são agregadas e, portanto, anônimas, sendo usados apenas para melhorar o funcionamento do site (medição e melhoria de desempenho do site).
Ative primeiro os Cookies estritamente necessários para que possamos salvar suas preferências!
Cookies de funcionalidade (Functional cookies)
Permitem que o site forneça funcionalidade e personalização aprimoradas. Eles podem ser definidos por nós ou por fornecedores terceiros cujos serviços adicionamos às nossas páginas.
Ative primeiro os Cookies estritamente necessários para que possamos salvar suas preferências!