Feature Driven Development: tudo sobre a metodologia

Inspirada no Método Coad/Yourdon, a metodologia Feature Driven Development (FDD) é baseada em 5 processos para o desenvolvimento de softwares eficientes.

O Feature Driven Development (FDD), ou Desenvolvimento Orientado a Recursos, em tradução literal para o português, é uma das metodologias ágeis utilizadas por desenvolvedores de software.

O FDD é uma das metodologias mais antigas do ramo, sendo anterior, inclusive, ao Manifesto Ágil, criado apenas em 2001.

Neste artigo, você vai entender um pouco mais sobre o Feature Driven Development. Vamos explorar desde a sua criação até as aplicações da metodologia no desenvolvimento de softwares.

Boa leitura!

O que é o Feature Driven Development (FDD)?

Feature Driven Development é uma metodologia ágil para desenvolvimento de softwares orientada pela modelagem. Ela se baseia no estudo de problemas e no entendimento dos processos interativos para propor soluções. Seu principal objetivo é entregar ao cliente um software funcional em tempo hábil. 

O FDD se preocupa em promover aplicabilidade. Em outras palavras, é uma função com valor para o cliente, que pode ser desenvolvida em duas ou menos semanas. 

Para isso, o FDD trabalha os projetos a partir de 5 processos:

  • desenvolvimento de modelo geral;
  • criação de lista de funcionalidades;
  • planejamento por funcionalidade;
  • modelagem por funcionalidade;
  • construção por funcionalidade.

Nessa metodologia, as entregas são incrementais ao longo de todo o projeto. Por isso, o FDD é um método indicado para projetos longos que estão em fase inicial.

Características do FDD

Agora você já sabe o que é FDD. Mas, afinal, o que diferencia esta metodologia de outras, que também têm o propósito de entregar soluções de forma ágil? 

Aqui estão algumas características que tornam o FDD uma ferramenta única: 

  • é uma ferramenta iterativa (baseada na repetição, em ciclos);
  • tem, como base, a criação de produtos de qualidade;
  • funciona com pequenos e grandes projetos; 
  • é uma ferramenta pautada na geração de muitas informações (enriquecimento do processo de criação);
  • foco no processo em si, e não no resultado final; 
  • funciona sob uma abordagem sistemática e simples;
  • seu método operacional facilita a evolução do processo (apenas aquilo que funciona passa para a fase seguinte). 

A História do FDD em metodologias ágeis

De acordo com os registros, a metodologia foi concebida por Jeff De Luca, estrategista global de Tecnologia da Informação. De Luca foi inspirado nos princípios da modelagem de objetos criada por Peter Coad, um empresário de software norte-americano.

A metodologia FDD foi aplicada pela primeira vez em 1997, durante um projeto de desenvolvimento de software para um grande banco em Singapura. 

Nesse projeto, Jeff entregou um conjunto com cinco processos que atenderam às necessidades do banco, em um projeto de desenvolvimento de software que durou 15 meses e envolveu 50 pessoas.

Em seguida, o Feature Driven Development foi utilizado em um segundo projeto que durou 18 meses e envolveu 250 pessoas. A partir disso, a metodologia se tornou popular entre equipes de desenvolvedores de softwares. 

O método Coad/Yourdon

O FDD surgiu a partir de uma metodologia de análise orientada a objetos chamada método Coad/Yourdon. Tal método, criado pelos norte-americanos Peter Coad e Edward Yourdon, tem, como objetivo, identificar a razão dos problemas e os requisitos do sistema para sua solução.

Inicialmente, o método Coad/Yourdon foi pensado apenas para a fase de análise. Porém, logo em seguida, começou a ser aplicado também na fase de desenvolvimento do projeto.

Para identificar os problemas, no momento da análise, o processo toma, como base, 5 fases preliminares de análise que acontecem de forma simultânea. São elas: 

  1. identificação de classes;
  2. objetos;
  3. estruturas;
  4. assuntos;
  5. definição dos atributos e dos serviços.

Os 5 processos do Feature Driven Development

A partir das cinco fases da metodologia Coad/Yourdon, definem-se os 5 processos do FDD. Eles são amplamente utilizados por equipes de desenvolvedores de softwares até os dias atuais. 

Veja, no desenho abaixo, um esquema ilustrativo dos 5 processos do Feature Driven Development. A seguir, explicamos como cada um deles funciona.

Os 5 processos do FDD - Feature Driven Development

1- Desenvolver um modelo geral

O primeiro momento é de conhecer o sistema. Isso possibilita sua análise, bem como a avaliação do contexto no qual ele se insere. A partir desse entendimento, o profissional estuda os domínios do sistema e desenvolve um modelo geral com base nesses estudos. 

Então, pequenas equipes são designadas para criar uma modelagem superficial para cada área de domínio do sistema. 

Cada modelo criado é revisado por outros membros do projeto, que não fazem parte da equipe inicial de criação, a fim de escolher imparcialmente o melhor modelo de domínio para cada área.

Assim, ao final do processo, os modelos escolhidos são unificados no modelo geral do domínio do sistema e o trabalho é iniciado.  

2- Gerar uma lista de funcionalidades

Nesta fase, cria-se uma lista de funcionalidades do sistema, descrevendo e identificando a área de domínio de cada uma delas

As funcionalidades são importantes para o processo, porque cada uma é uma pequena tarefa que precisa ser implementada ao projeto, com o objetivo de gerar valor ao cliente. 

Os itens de funcionalidade não devem levar mais de duas semanas para serem concluídos, e são ordenados na lista por ordem de prioridade no desenvolvimento. Por exemplo: uma lista de funcionalidades pode conter os seguintes itens: “validar a senha do usuário”, “liberar o login” e “gerar relatório de vendas”. 

Caso a equipe não consiga criar a lista de funcionalidades, o processo de desenvolvimento sofre atraso, pois a primeira etapa de criação de modelo geral precisa ser refeita. Caso contrário, as fases seguintes do projeto sofrerão as consequências de erros e mais atrasos.

3- Planejar por funcionalidade

Após a lista de funcionalidades, é hora de planejar o desenvolvimento de cada uma delas. Para cada funcionalidade, são designados programadores-chefe, responsáveis por algumas classes ou códigos. 

A partir disso, formam-se as equipes de planejamento. Dentro desses times, cada integrante é encarregado de uma parte do projeto. 

4- Modelar por funcionalidade

Assim como na primeira fase, nessa etapa, cria-se uma modelagem com as funcionalidades a serem desenvolvidas. 

A diferença dessa modelagem é que o programador-chefe a cria de acordo com uma funcionalidade específica e a divide em classes, métodos e atributos. 

Quando finalizada, a funcionalidade passa por testagens da equipe desenvolvedora. 

5- Construir por funcionalidade

Após a modelagem passar por diversos testes, o código começa a ser implementado no sistema. Dessa forma, as funcionalidades são incorporadas e já podem ser colocadas em prática. Efetivado o código, ele é escrito e essa funcionalidade tem sua conclusão. 

Fazem parte dessa fase:

  • implementação das regras de negócio das classes;
  • inspeção do código;
  • condução dos testes unitários;
  • release (lançamento) da funcionalidade.

Como executar um projeto FDD? Conheça a equipe necessária

Por ser um processo repleto de tarefas executáveis, o capital humano envolvido em um projeto FDD é essencial. Aqui está um resumo da equipe necessária para suprir todas as demandas do Feature Driven Development em uma empresa. 

  1. Gerente de projeto, responsável por aspectos administrativos do projeto, gestão de tarefas e de prazos, operação do centro de controle, contato com o cliente e o compartilhamento do status do projeto;
  2. Arquiteto-chefe, responsável pela criação do sistema e gerenciamento dos demais arquitetos;
  3. Programador-chefe, que coordena a equipe de programadores;
  4. Gerente de desenvolvimento, profissional que lida com a equipe de desenvolvedores, gerencia prazos de sprints e coordena entregas e relatórios junto ao arquiteto-chefe;
  5. Proprietário da classe, desenvolvedores que gerenciam conjuntos menores de desenvolvimento de recursos, com prazo rápido de execução (até 2 semanas);
  6. Especialista em domínio: pessoas que entendem o contexto do projeto e contribuem para otimizá-lo. Podem ser usuários, clientes, patrocinadores etc.;
  7. Funções de suporte como testadores, escritores técnicos, administradores de sistema, gestores de ferramentas etc. 

FDD em metodologias ágeis: entenda a relação

Apesar do FDD ser uma metodologia ágil focada no processo de desenvolvimento do software com seus princípios bem definidos, ela é bastante flexível.

Por isso, consegue se adaptar e se integrar a outros métodos. Um deles é o Scrum, um framework de trabalho para gestão de projetos

Qual a diferença entre FDD e Scrum?

O FDD tem, como base, um conjunto de ações executadas de acordo com comandos pré-determinados. O objetivo é que as pequenas iterações (ciclos de repetições) sejam concluídas em um curto período de tempo (aproximadamente duas semanas) sem afetar o longo período de desenvolvimento do projeto. 

Os processos no FDD, apesar de serem adaptáveis, são bem definidos já no início do projeto. 

Enquanto isso, o Scrum é uma metodologia ágil que tem como objetivo principal, criar um projeto focado nas pessoas, mas que se adapta de acordo com as mudanças repentinas que surgem ao longo do processo de desenvolvimento. 

Além destas diferenças na essência da metodologia, outros detalhes separam o Scrum do FDD, como: 

  • estrutura das equipes: no FDD, os times são grandes, já que há muitas funções para execução. Já no Scrum as equipes são pequenas, e cada um acumula poucos papéis;
  • características dos projetos: o Scrum foi pensado para grupos e projetos pequenos, para respeitar o princípio da comunicação. Já o FDD foi criado para grandes projetos desenvolvidos por grandes equipes, sem precisar de divisão dos integrantes da equipe em pequenos grupos;
  • Riscos: no método FDD, o gerente é responsável por identificar os riscos durante o desenvolvimento do software. Em contrapartida, no Scrum, a própria equipe conversa para discutir os riscos e as melhores soluções para o problema. 

Embora sejam essencialmente diferentes, é importante pontuar que empresas que buscam a alta performance na entrega de resultados podem utilizá-las de forma complementar.

< Leia mais sobre a metodologia Scrum e o papel do Scrum Master! />

Diferença entre Feature Driven Development e Extreme Programming

O Extreme Programming é uma metodologia de desenvolvimento ágil baseada na testagem extrema dos softwares que estão sendo desenvolvidos. Além disso, o método enfatiza o trabalho em dupla, a colaboração entre a equipe e a boa comunicação entre o cliente e a equipe.

Podemos dizer que o XP, como é conhecido o Extreme Programming, mescla características da metodologia Scrum e do FDD. Isso porque trata-se de um método criado para desenvolvimento de software com base na criação de sistemas de alta performance. 

Sua estrutura, assim como o Scrum, prevê uma interação próxima com os clientes ao longo do processo de desenvolvimento. Além disso, contempla etapas de testagem em ciclos de desenvolvimento reduzidos (assim como no FDD).

FDD e XP: como escolher o melhor método?

O Extreme Programming é ideal para projetos em que o cliente não sabe muito bem o que quer. Assim, ele pode mudar de ideia durante o processo de desenvolvimento do software e a equipe de DevOps pode fazer as alterações solicitadas com agilidade, sem prejudicar o plano. 

Isso acontece porque o contato com o cliente é frequente, e eles estão sempre recebendo feedback. 

Por isso, decidir qual método se aplica melhor na rotina da sua equipe é uma decisão que precisa ser tomada após uma série de avaliações. 

É importante pensar no tamanho da sua equipe, observar o estilo de trabalho praticado por eles e estudar os prós e contra de cada metodologia. 

Vantagens e Desvantagens do FDD

Assim como qualquer metodologia, o FDD possui vantagens e desvantagens que devem ser levadas em consideração na hora de optar pelo método. Abaixo listamos alguns desses itens.

Vantagens 

  • Ideal para trabalhar com equipes grandes em projetos grandes;
  • projetos bem estruturados desde a sua primeira fase;
  • permite que várias equipes trabalhem simultaneamente, reduzindo o tempo de execução do projeto;
  • o processo é altamente documentado, o que o torna muito rastreável (é mais fácil identificar gaps e corrigi-los);
  • equipes trabalham com as etapas de desenvolvimento com agilidade.

Desvantagens 

  • Não funciona bem em equipes menores, já que projeto FDD demanda a execução de muitas tarefas;
  • grande produção de documentação escrita nas primeiras fases do projeto;
  • o projeto depende muito das decisões dos programadores-chefe.

Torne-se um expert em Agile com a Multi+

Para entender, de forma profunda, como funciona o Feature Driven Development e outras metodologias ágeis, é preciso unir duas habilidades: conhecimento e prática. 

A boa notícia é que, na Multi+, plataforma de ensino da XP Educação, você alcança os dois objetivos de uma só vez.

Isso porque, dentre os diversos cursos e formações oferecidos, estão os bootcamps. São experiências imersivas, práticas e interativas que te ajudam a colocar em prática os conhecimentos adquiridos em aulas com especialistas do mercado. 

Nossa dica é o Bootcamp Agile Expert, que fornece toda a estrutura necessária para que você se torne um profissional habilitado para atuar em times ágeis. 

Inscreva-se agora mesmo!

spot_img

Continue Aprendendo

spot_img