O documento descreve a metodologia de desenvolvimento de software chamada Feature-Driven Development (FDD). O FDD é um processo iterativo e incremental que foca no desenvolvimento equilibrado de funcionalidades valiosas para o cliente, através de modelagem, planejamento, detalhamento e implementação de pequenas funcionalidades por uma equipe multifuncional. O ciclo de vida do FDD inclui a construção de um modelo abrangente do sistema, a criação de uma lista de funcionalidades, o planejamento e detalhamento dessas funcionalidades e o desenvolvimento por funcionalidade.
14. Gerente de Projeto
● O Gerente do Projeto é responsável pelos
assuntos administrativos;
● Gerenciamento de recursos, orçamentos,
equipamentos, entre outros;
● A principal meta é garantir que nenhum fator
externo atrapalhe a equipe.
15. Especialista de Negócios
● Conhecedor das regras de negócio e apresenta
as necessidades à equipe;
● Disponibiliza os detalhes das funcionalidades;
● Membro fixo da equipe e sempre fornece
feedbacks sobre as entregas.
16. Arquiteto de Software
● Bastante experiente em modelagem orientada
a objetos - UML;
● Atua como facilitador no entendimento das
regras de negócio;
● Responsável pela última palavra em toda a
arquitetura do sistema;
17. Gerente de Desenvolvimento
● Responsável pelo desenvolvimento diário do
produto;
● Resolve os conflitos técnicos – software,
hardware - entre programadores-chefes;
● Deve possuir experiência em desenvolvimento
de software e nas tecnologias utilizadas no
projeto;
18. Programadores-chefes
● Responsável por liderar pequenos grupos de
desenvolvedores;
● Atua, também, como desenvolvedor e
implementa as classes mais complexas;
● Papel fundamental nas fases de análise do
negócio e planejamento de features;
19. Programadores (Class-owners)
● Compõem as pequenas equipes de
funcionalidades;
● Realiza programação, modelagem, testes e
documentação das suas funcionalidades;
● São os “donos” das classes que realizam as
features atribuídas por Programadores-chefes
20. Outras funções
● Gerente de Release ● Guru da linguagem
●
Testadores ●
Administrador de
Sistema
●
Escritores técnicos
●
Implantadores
●
Marketing
●
Entre outros...
24. Exemplos de features
● Calcular o desconto de uma venda
● Listar os clientes ativos de uma empresa
● Destacar os clientes devedores
● Imprimir a nota fiscal de uma venda
● Validar a senha de um usuário
27. Construir um modelo abrangente
● Formar time de modelagem: especialistas,
programadores e arquiteto;
● Apresentar a visão geral do produto e estudar
documentação existente;
● Desenvolver modelos de pequenos grupos e
unir para formar o modelo abrangente;
● Executado uma única vez no projeto.
28. Construir lista de funcionalidades
● Formar o time de funcionalidades, com os
programadores-chefes;
● Construir uma lista de features, separada por
áreas de negócio;
● Identificar as atividades de cada área;
29. Planejar por funcionalidades
● Formar o time de planejamento: gerente,
gerente de desenvolvimento e programadores-
chefes;
● Determinar a seqüência do desenvolvimento,
baseado nas dependências de cada
funcionalidade;
● Atribuir áreas de negócios aos programadores-
chefes, e classes aos desenvolvedores (class-
owners)
30. Detalhar por funcionalidade
● Apresentação detalhada da funcionalidade com
especialista de negócio;
● Estudar documentos e refinar modelos:
diagramas, descrições, casos de uso;
● Escrever prólogos de métodos e classes, sem
implementação ainda;
● Inspeção do design, ou modelo, da
funcionalidade;
31. 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;
33. 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 freqüentes ao cliente.
● A inspeção de código e de design permite obter
qualidade no produto final.
34. Referências
● MAGNO, Alexandre. FDD Numa casca de
banana. 2007.
● Heptagon: www.heptagon.com.br
● Nebulon – Jeff De Luca: www.nebulon.com
● Oficial Site: featuredrivendevelopment.com