FDD
Feature-Driven Development
Igor Cavalcanti
[email protected]
O estado atual dos projetos
 Resultados pobres



Planejamento pobre ou incompleto
Falta de entendimento das questões de negócio
ou técnico
Falha em não colocar as necessidades dos
clientes ou dos usuários finais em primeiro lugar
 Estouro de cronograma, e entrega de
produtos indesejáveis
Feature Driven Development FDD
 O que é?






é um processo definido para produzir resultados freqüentes, tangíveis
e que funcionem
É um processo pragmático, centrado no cliente e na arquitetura
combina as principais vantagens de outras abordagens ágeis com
técnicas centradas no modelo
possui iterações curtas e altamente adaptativas
introduzido em 1999 por Jeff DeLuca, Peter Coad e Steve Palmer
num desenvolvimento de um projeto grande em Singapura
descreve uma série de passos a seguir – desde a concepção até a
implementação.
Introduzido aqui...
Expandido aqui...
Feature Driven Development FDD
 Por que usar?



Clientes têm resultados rápidos e relatório do
status numa linguagem que eles entendem
Gerentes de projeto têm uma visão completa e
exata do status do projeto
Desenvolvedores conseguem trabalhar em novas
coisas em poucos dias e ficam mais envolvidos
em análise, projeto e codificação
Característica – O que é?
 São blocos muito pequenos de funcionalidades
 São organizados em grupos de negócio
relacionados:


Conjuntos de Características (atividades de
negócio)
Conjuntos de Características Principais (áreas do
domínio)
 São expressadas na forma
<ação> <resultado> <objeto>
Característica - exemplo
 Área de Características Principal

Gerenciamento de venda de produtos
 Conjunto de Características




caclTotal
1
Vender para um cliente
 Características

Cliente
Calcular o total de vendas
Calcular o total de compras de um cliente
Estimar o tempo de entrega de uma venda
Calcular a taxa de uma venda
0..*
Venda
caclTotal
estimativaEntrega
Os Papéis
 Papéis principais






Gerente de projeto
Arquiteto chefe
Especialistas no domínio
Gerentes de desenvolvimento
Programadores chefes
Proprietários de classes
Melhores Práticas do FDD








Modelagem do objeto do domínio
Desenvolver por características
Propriedade individual de classes
Equipes de características
Inspeções
Construção de builds regulares
Gerência de configuração
Comunicação dos resultados
Os 5 processos do FDD
1.Desenvolver
um Modelo
geral
Modelo de Objeto
(mais formas do que
conteúdo)
2. Construir
uma lista de
características
Uma lista de
características
categorizada
3. Planejar
através de
característica
Um plano de
desenvolvimento
(mais conteúdo do que forma)
4. Projetar
através de
característica
5. Construir
através de
característica
Um pacote de
projeto (seqüências)
Uma função do
cliente completada
Descrição dos Processos de FDD
 Cada processo é descrito em não mais do que
duas páginas de papel tamanho carta, frentee-verso
 Cada descrição do processo apresenta-se de
acordo com a estrutura: Entrada, Tarefas,
Verificação e Saídas (ETVX)
FDD Processo #1:
Desenvolver um modelo geral
 Adquirir conhecimento do domínio e
construir o modelo geral


Estabelecimento do “propósito de negócio” do
novo sistema
Construção de um “modelo conceitual” do
sistema
FDD Processo #1- Atividades
Formar a Equipe de Modelagem
Estudo dirigido sobre o Domínio
Estudar Documentos
Desenvolver pequenos Modelos de Grupo
Desenvolver um Modelo da Equipe
Refinar o Modelo Geral
Escrever Anotações do Modelo
FDD Processo #1:
Entradas e Saídas
 Entrada

Especialistas no domínio, programadores e arquitetos
chefes são selecionados
 Saídas




Modelo geral do domínio
Diagrama das classes principais com alguns métodos e
atributos identificados
Diagramas de seqüência de algumas funcionalidades mais
complexas (se houver)
Comentário sobre o modelo
FDD Processo #2:
Construir lista de características
 O domínio é decomposto até chegar nas
características
 Características são agrupadas e categorizadas
 Características são granuladas até ser
necessário menos de 2 semanas pro seu
desenvolvimento
FDD Processo #2 - Atividades
Formar a Equipe da Lista de Características
Construir a lista de características
FDD Processo #2:
Entradas e Saídas
 Entrada

O processo #1 ter sido concluído com sucesso
 Saídas



Uma lista das áreas do domínio identificadas
Para cada área, uma lista de atividades de
negócio (conjunto de características)
Para cada atividade, os passos a serem realizados
(características)
FDD Processo #3:
Planejar através de características
 Uma data de lançamento é estabelecida
para o release inicial
 A lista de características priorizadas é
refinada
 O trabalho técnico é planejado e atribuído –
plano de desenvolvimento
FDD Processo #3 - Atividades
Formar a Equipe de Planejamento
Determinar a Seqüência
de Desenvolvimento
Atribuir Conjuntos de Características
para Programadores Chefes
Atribuir Classes para Desenvolvedores
FDD Processo #3:
Entradas e Saídas
 Entrada

O processo de construir a lista de características
(processo #2) ter sido concluído com sucesso
 Saídas



Atividades de negócio com datas de término
Programadores-chefes atribuídos a atividades de
negócio
A lista de classes e seus donos (desenvolvedores)
FDD Processo #4:
Projetar através de características
 Regras e transações são identificadas
 O modelo da interface do usuário é esboçado
 Diagramas de seqüência mais detalhados são
produzidos
 Especialistas são consultados para descobrir
qualquer necessidade específica adicional
FDD Processo #4 - Atividades
Formar a Equipe de Características
Estudo do Domínio
Estudar Documentos de Referências
Desenvolver Diagramas de Seqüência
Refinar o Modelo
Descrever os prefácios de
classes e métodos
FDD Processo #4:
Entradas e Saídas
 Entrada

O processo de planejado (processo #3) ter sido concluído
com sucesso
 Saídas





Diagramas de seqüência
Projetos alternativos (caso exista)
O modelo de objeto com classes, métodos e atributos
novos ou atualizados
A documentação da API do sistema
Lista de tarefas (calendário/ To-Do)
FDD Processo #5:
Construir através de características
 Características são construídas
implementando todas as classes e métodos
necessários
 Testes de unidades
 Características são inseridas no build quando
o teste resulta em sucesso
FDD Processo #5- Atividades
Codificar
Testar Unidades
Inspecionar Código
Promover à versão
atual (Build)
Ponto de integração
para a funcionalidade
inteira
FDD Processo #5:
Entradas e Saídas
 Entrada

O processo anterior ter sido concluído com
sucesso
 Saídas



Classe(s) e/ou método(s) que passaram na
inspeção de código com sucesso
Classes inseridas no build
A conclusão da funcionalidade do cliente
Divulgando Resultados
 Cada característica é uma unidade planejada
de trabalho que pode ser devolvida
 A soma de características entregues é igual
ao status do projeto
Os seis marcos do FDD
Projetar pelas características
Construir pelas características
Análise do
domínio
Projeto
Inspeção do
projeto
Código
Inspeção do
código
Geração de
build
1%
40%
3%
45%
10%
1%
Relatando resultados
KEY:
Work In Progress
Attention
Completed
Not Started
Relatando resultados
Relatando resultados
CP-1
Status Geral:
Trabalhos em progresso
Atenção (ie, atrasado)
Completo
Fazendo
avaliação
de produtos
(14)
Não iniciado
Porcentagem completa:
75%
Completo
MY Mês de conclusão
Conjunto de características: Fazendo
avaliação de produtos – Trabalho em
progresso
CP-1 é o programador chefe inicial
(14) esse conjunto de características
possui 14 características
Conjunto de características está 75%
completado
Barra de progresso
Status Completo:
Exemplo:
Dez 2001
A conclusão é para dezembro de 2001
Relatando resultados
Product Sale Management (PS)
CP-1
CP-1
CP-3
CP-1
Selling
Products
Shipping
Products
Delivering
Products
Invoicing
Sales
(22)
(19)
(10)
(33)
99%
10%
30%
3%
Nov 2001
Dec 2001
Dec 2001
Dec 2001
CP-2
Setting up
Product
Agreements
(13)
CP-2
Inventory Mgmt (IM)
CP-2
CP-3
Opening
New
Accounts
(11)
Logging
Account
Transactions
(30)
Establishing
Storage Units
95%
100%
82%
Oct 2001
Oct 2001
Work In Progress
Dec 2001
Dec 2001
Evaluating
Account
Applications
(23)
KEY:
Making
Product
Assessments
(14)
75%
Customer A/C Mgmt (CA)
CP-2
CP-1
Nov 2001
Attention
CP-3
CP-3
Moving
Content
(26)
Accepting
Movement
Requests
(18)
100%
97%
82%
Nov 2001
Nov 2001
Completed
Progress Bar
(19)
Nov 2001
Not Started
Relatando resultados
Conclusão
 FDD







Fornece clareza
Eleva o controle
Facilita a comunicação – reporta resultados
Status do projeto completo é determinado pelas
características entregues
Características quebram o trabalho em entregas
menores e mais gerenciáveis
Builds regulares
É bom para os desenvolvedores, gerentes e clientes...
Referências
 A Practical Guide to Feature-Driven Development
 Stephen R. Palmer, John M. Felsing
 http://www.featuredrivendevelopment.com/
 http://www.nebulon.com/fdd/
 http://br.groups.yahoo.com/group/gufdd/
 http://www.fddmanager.com/
 http://fddtools.sourceforge.net/
 http://www.agilemodeling.com/essays/fdd.htm
 http://en.wikipedia.org/wiki/Feature_Driven_Development
Feature-Driven Development
Dúvidas ??
Download

FDD - Centro de Informática da UFPE