Please enable JavaScript.
Coggle requires JavaScript to display documents.
FDD (Feature-Driven Development) - Coggle Diagram
FDD (Feature-Driven Development)
Propõe um equilíbrio entre filosofias tradicionais e
ágeis;
É prático para o trabalho com projetos iniciais, com grandes equipes, ou projetos com codificações já existentes.
Lema do FDD: “Resultados frequentes e
funcionais”
Características
Um dos objetivos do FDD é entregar para o cliente funcionalidades com rapidez.
● Desenvolvimento por funcionalidades incrementais
Um único programador é responsável pela funcionalidade desenvolvida
ETVX
Entrada (Entry)
Tarefa (Task)
Verificação (Verification)
Saída (Exit)
especifica os critérios de saída, definindo os produtos tangíveis
especifica tipos de avaliações (internas e externas) e inspeções de projeto e código
é composto por uma lista com as tarefas que deverão ser realizadas
especifica e define os critérios de entradas para as etapas
Papéis
Gerente de Projeto
O líder administrativo e financeiro do projeto tem autoridade sobre escopo, cronograma e recursos, lida com questões administrativas, prioriza funcionalidades de valor em prazos determinados e assegura boas condições de trabalho para a equipe.
Gerente de Desenvolvimento
O líder nas atividades diárias do desenvolvimento resolve conflitos na equipe, remove impedimentos, agiliza reuniões com clientes/usuários, e avalia o código em conformidade com os padrões do projeto, fornecendo feedback para melhorar o desempenho do time.
Arquiteto-chefe
O responsável pela modelagem do projeto auxilia os desenvolvedores na construção de software, definindo componentes, propriedades externas e relacionamentos com outros sistemas. Seu objetivo é melhorar a organização, flexibilidade e portabilidade do software, facilitando sua manutenção.
Proprietários de código
Desenvolvedores modelam e implementam funcionalidades de software, transformando especificações em código. No FDD, uma funcionalidade é idealmente concluída por um único desenvolvedor, promovendo responsabilidade individual sobre o código.
Especialistas do Domínio (negócio)
A pessoa deve ter um profundo conhecimento sobre o software e auxiliar as equipes a compreender os requisitos do sistema. Pode ser um usuário, cliente ou patrocinador, servindo como fonte de conhecimento para os desenvolvedores.
Fases
Concepção e Planejamento: Pensar um pouco antes de fazer (tipicamente de 1 a 2 semanas);
Construção: Fazer de forma iterativa (tipicamente em iterações de 2 semanas).
Processos:
DMA (Desenvolver um Modelo Abrangente)
Análise Orientada por Objetos
O primeiro momento é de conhecer para analisar o sistema e o
contexto em que ele está inserido.
Criado o modelo geral, pequenas equipes são responsáveis por criar uma modelagem superficial para cada área de domínio de sistema.
CLF (Construir a Lista de Funcionalidades)
Decomposição Funcional
Nesta fase é criada uma lista de funcionalidades do sistema,
descrevendo e identificando a área de domínio de cada uma delas.
As funcionalidades devem ser concluídas em até duas semanas e são organizadas em ordem de prioridade para o desenvolvimento.
PPF (Planejar por Funcionalidade) Planejamento Incremental
De acordo com a lista de funcionalidades é feito o planejamento de
desenvolvimento delas.
Para cada funcionalidade são designados programadores-chefe que ficarão responsáveis por algumas classes ou códigos.
Equipes de planejamento são formadas, com cada membro responsável por uma partes específica do projeto.
DPF (Detalhar por Funcionalidade) Desenho(Projeto) Orientado por Objetos
nessa etapa é criada uma modelagem com as funcionalidades a serem desenvolvidas.
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.
CPF (Construir por Funcionalidade) Programação e Teste Orientados por Objetos
Após a modelagem passar por testes, o código é implementado no sistema, permitindo a incorporação das funcionalidades para serem utilizadas.
Essa fase envolve a implementação das regras de negócio das classes, inspeção do código, realização de testes unitários e o lançamento da funcionalidade.