Engenharia de Software
Feature Driven Development
Allyson José
Edivânia Pontes
Thomas Matheus
Stephany Silva
Metodologias Ágeis
• Foi criada durante os anos 90 como reação contra os
métodos de desenvolvimento “pesados”, tipificados pelo
modelo em cascata.
• Denominadas como métodos de desenvolvimento
“leves”.
Como surgiu o FDD
• Concebido originalmente por Jeff de Luca, o FDD surgiu
em Singapura, entre os anos de 1997 e 1999 com base
no método Coad (Criado por Peter Coad – 1980/1990) e
nos processos interativos e lean já utilizados por Jeff de
Luca.
FDD
• É uma metodologia ágil para o processo de engenharia
de software.
• Busca o desenvolvimento por funcionalidade, ou seja,
por um requisito funcional do sistema.
Agentes e Atores
Análise do risco de utilização de
Métodos Ágeis e Preditivos
• Métodos ágeis:
Pouca crítica à implementação
Equipe de desenvolvimento constituída por elementos
experientes
Grandes mudanças nos requisitos
Equipe de desenvolvimento constituída por poucos
elementos
Cultura que prospera na falta de organização.
Análise do risco de utilização de
Métodos Ágeis e Preditivos
• Métodos preditivos:
Muita crítica à implementação
Equipe de desenvolvimento constituída por elementos
inexperientes
Poucas mudanças nos requisitos
Equipe de desenvolvimento constituída por muitos
elementos
Cultura que exige ordem e organização.
Ciclo de Vida do Projeto
Requisitos
Desenvolver
um modelo
abrangente
Detalhar
por
Feature
Construir
Listas de
Features
Construir
por
Feature
Planejar
por
Feature
Produto
Develop an Overall Model
Desenvolvimento de Modelo Abrangente
• O cliente indica quais os requisitos que quer ver
cumpridos no sistema
• Cabe à equipe de desenvolvimento: analisar e verificar os
requisitos dados pelo cliente; Sugerir novos requisitos; E
colocar todas questões que possam ainda não terem sido
respondidas, ou que tenham sido esquecidas
• A equipe de desenvolvimento dividem-se em pequenos
grupos para desenvolver seus modelos
• Os resultados são adicionados a um modelo comum, um
modelo abrangente
Build by Features List
Construção de Lista de Funcionalidades
• Identifica todas as funcionalidades e agrupa-as por
ordem hierárquica
• Critérios de divisão: áreas e classes
• Entra a provisória lista de funcionalidades
• Sai uma detalhada lista de funcionalidades
Plan by Feature
Planejar por Funcionalidade
• Desenho por funcionalidade e Construção por
funcionalidade
• Sequência e conjunto inicia de datas
• A cada chefe de programação é fornecida uma lista de
funcionalidades a serem desenvolvidas.
• Revisão e aprovação do desenvolvedor e chefe de design.
• Previsão de término do projeto
Design by Feature
Detalhar por Funcionalidade
• Desempenho da estrutura para cada funcionalidade.
• Análise do processo
• Identificação das classes envolvidas
• Dependendo da complexidade da funcionalidade, o
programador chefe poderá consultar os especialistas da
área
• O programador consulta o diagrama sequencial
• A equipe de programadores toma nota daquilo que é
relevante
Build by Feature
Desenvolver por Funcionalidade
• Implementar classes e métodos;
• Inspecionar código: o desenvolvedor “convida” outro
para verificar seu código;
• Testes unitários, realizados pelo próprio desenvolvedor;
• Promover a build, se a classe estiver testada e
inspecionada;
Percentual de tempo gasto em cada
funcionalidade
• Levantamento do domínio da aplicação = 1%;
• Projeto = 40%;
• Inspeção do projeto = 3%;
• Desenvolvimento = 45%;
• Inspeção do código = 10%;
• Integração = 1%.
Afinal, por que usar FDD?
• Planejamento e modelo na medida certa. Sem exageros,
mas também sem ausência;
• Os processos favorecem a aproximação de especialistas,
gerentes e desenvolvedores;
• Permite realizar entregas frequentes ao cliente;
• A inspeção de código e de design permite obter
qualidade no produto final.
Vantagens
• Por cada feature ser pequena, coletar os requisitos se
torna mais fácil, pois estes podem ser melhor descritos,
e durante a revisão, se torna mais fácil encontrar
ambiguações e erros.
• Features podem ser organizadas de forma hierárquica;
• Menor custo humano, dado que cada feature pode ser
desenvolvida de maneira independente, e ser lançada
em média a cada 2 semanas.
• Como cada feature é algo reduzido, inspecionar erros
em seu design ou em seu código é uma tarefa mais
fácil (menor custo de tempo).
Desvantagens
• Questionamento sobre efetividade/aplicabilidade do
FDD.
• Não existe um consenso do tamanho que cada feature
deve ter.
• Manutenção.
Referências
• http://www.slideshare.net/ruancarvalho/featuredrivendevelopment-viso-geral
• http://paginas.fe.up.pt/~aaguiar/es/artigos%20finais/es_final
_22.pdf
• http://www.devmedia.com.br/introducao-ao-fdd-featuredriven-development/27971
OBRIGADO!
Download

Feature Driven Development