Você está na página 1de 6

Feature Driven Development ou Desenvolvimento guiado à funcionalidades (FDD)

Resumo
● Desenvolvimento a partir de funcionalidades.
● Separar a equipe em áreas de atuação.
● Listar funcionalidades do MVP.
● Ordenar a lista de funcionalidades por prioridade e dependência de execução.
● Dividir o desenvolvimento em Sprints.

Etapas
● Desenvolvimento de modelo abrangente (Análise orientada por objetos);
● Construção de lista de funcionalidades (Decomposição funcional);
● Planejar por funcionalidade (Planejamento incremental);
● Detalhe por funcionalidade (Desenho orientado a objetos);
● Construção por funcionalidade (Programação e teste orientado a objetos).

Desenvolver um modelo abrangente


Um processo que cobre todo o projeto e, portanto, só é executado uma vez no início do projeto. Durante
esse processo, é formada uma equipe de modelagem, composta por especialistas de negócios e
programadores. Dependendo da complexidade do ramo de atividade apresentado, o grupo pode solicitar
um curto período de tempo para estudo da documentação fornecida pelo especialista do negócio. O
modelo escolhido está incluído no modelo completo do produto. Este modelo completo é o resultado da
combinação de todos os modelos escolhidos para cada parte da empresa apresentada.

Construir a lista de funcionalidades


Atividade onde é realizada a decomposição do modelo de negócio. A divisão normalmente é realizada
por áreas, atividades de negócio e passos da atividade. O resultado final é uma lista de funcionalidades
que irão compor o produto final, dispostas hierarquicamente por importância.
Planejar por funcionalidades
Fase onde o planejamento é realizado com base nas funcionalidades, levando em consideração a
complexidade e dependência entre elas. O resultado é o plano de desenvolvimento com os prazos e
atribuição das atividades definidas. Em geral, as atividades são atribuídas para um programador líder,
que fará a distribuição das mesmas na fase seguinte.

Detalhar por funcionalidade


Esta fase já pode ser considerada como construção do produto. A equipe detalha, para cada
funcionalidade, os requisitos e outros artefatos para a codificação. Os testes também já começam a ser
definidos nesta etapa. É efetuada uma inspeção nas funcionalidades do projeto, principalmente no
design. O resultado é um pacote de design do produto, com o esqueleto do código fonte criado,
inclusive.

Construir por funcionalidade


Os códigos são preenchidos com as validações finais, testados e inspecionados. Ao término das
atividades, o código é integrado às demais funcionalidades para a criação do produto final, com
potencial para entregas ao cliente. O FDD utiliza também várias práticas que podem ser observadas em
outros métodos ágeis como testes unitários, refatoração, programação em pares, integração contínua e
outras.
Equipe
Quando se trata de Metodologias ágeis existe a tendência de valorizar as pessoas. Isso devido à

influência que a qualificação e desempenho do pessoal da equipe têm em métodos adaptativos de

desenvolvimento de software.

É importante ressaltar que, no FDD, uma pessoa pode desempenhar mais de um papel e um papel pode

ser desempenhado por mais de uma pessoa, a seguir serão listados e especificados cada um dos papéis

do FDD.

Gerente de projeto:

O gerente de projeto é responsável por compartilhar relatórios de processo com o cliente e garantir que

o processo esteja progredindo conforme necessário. Os gerentes de projeto são responsáveis pelo

orçamento, pela determinação do número de funcionários, pela criação e pela circulação de relatórios

de progresso. Mantém a equipe focada em fornecer recursos no prazo.

Arquiteto chefe:

Um arquiteto é quem cria o sistema, e o arquiteto chefe lida com uma equipe de arquitetos. Em um

projeto de pequena escala, pode ser uma pessoa também.

Os arquitetos-chefes são responsáveis ​pelos seguintes itens:

● Design geral do sistema.

● Orientam o projeto em dificuldades técnicas.

Gerente de desenvolvimento:

O gerente de desenvolvimento é quem lida com a equipe de desenvolvedores e garante que eles

terminem seu trabalho a tempo. Sendo possível lidar com mais de um projeto ou equipe de cada vez.

Um gerente de desenvolvimento cuida das seguintes coisas:

● Acompanhar as atividades de desenvolvimento do dia a dia.

● Garante que não haja conflitos entre os membros da equipe e possíveis

problemas na distribuição das tarefas.


Programador chefe:

O programador chefe é um dos programadores mais experientes. É dever do programador chefe ajudar

na programação e garantir que ele esteja indo na direção correta.

O programador chefe lida com um projeto em particular por vez.

Um programador chefe cuida das seguintes coisas:

● Ser um desenvolvedor experiente com a linguagem utilizada.

● Lidera pequenas equipes em questões tecnológicas.

● Desenvolvedores e gerentes respeitam suas decisões no desenvolvimento.

Proprietários da classe:

Os proprietários da classe são os desenvolvedores que criam recursos. Além disso, eles recebem

orientação do programador-chefe e enviam relatórios de progresso ao Gerente de Desenvolvimento.

Especialistas em regra de negócio:

O especialista em domínio pode ser qualquer pessoa que tenha o melhor conhecimento desse domínio

em particular e pode ajudar as Equipes a entendê-lo.

Um especialista em regra de negócio cuida das seguintes coisas:

● Orientar e tirar dúvidas relacionadas a questões práticas do produto.

● Servem como base de conhecimento dos desenvolvedores.

Gerente de Versão:

O gerente de versão controla a evolução do processo através da análise de relatórios de progresso dos
programadores chefe e reuniões curtas com eles.
Gerente de domínio:

O gerente de domínio é o líder dos peritos do domínio e resolve suas divergências de opinião com

relação aos requisitos do sistema.

Guru da linguagem:

O Guru da Linguagem é um membro da equipe com amplo conhecimento na linguagem ou tecnologia

usada no desenvolvimento do sistema.


Administrador de sistemas:

O administrador do sistema configura, gere e resolve problemas nos servidores e redes

utilizados.

Características positivas
● Resultados úteis a cada duas semanas ou menos.

● Blocos pequenos de funcionalidade valorizada pelo cliente, chamados "Features”.

● Planejamento detalhado e guia para medição.

● Rastreabilidade e relatórios com precisão.

● Monitoramento detalhado dentro do projeto, com resumos de alto nível para clientes e

gerentes.

● Fornece uma forma de saber, dentro dos primeiros 10% de um projeto, se o plano e a

estimativa são sólidos.

Conclusão
O FDD é um método simples, objetivo e fácil de seguir, possui técnicas objetivas e é altamente

adaptativo, no FDD temos o planejamento e modelo na medida certa, sem exageros, mas também sem

ausência. Não é extremamente focado apenas na programação ou no modelo, mas sim utiliza o bom

senso para abstrair o melhor dos dois mundos atendendo tanto às necessidades dos clientes e gerentes,

quanto dos desenvolvedores. Possui técnicas claras para informar o processo e permite que as decisões

possam ser tomadas em tempo oportuno, tornando isso possível com os feedbacks antecipados sobres

os resultados entregues em curtos períodos, permitindo assim que o cliente direcione o projeto

conforme as necessidades do negócio.

Você também pode gostar