Você está na página 1de 38

Feature-Driven Development (FDD)

Srgio Mergen

Genesis: Singapore, 1997-98


Um grande banco e um projeto

de software que falhou 2 anos de trabalho 3,500 pginas de casos de uso Modelo de objetos complexo Nenhum cdigo funcional Concluiu-se que no poderia ser feito

Genesis: Singapore, 1997-98


De Luca chega, contrata Coad Entrega 2000 caractersticas

funcionais Leva 15 meses com 50 programadores Terminou abaixo do oramento Tudo isso em um projeto invivel!

Como?
De Luca trouxe uma

metodologia usada a 20 anos Coad trouxe suas ideias sobre features. Nasceu o FDD. Primeira publicao em 1999, Java Modeling in Color with UML

Features
So blocos muito pequenos de funcionalidades, com valor para o

cliente

So expressadas na forma
<ao> <resultado> <objeto>

Com as proposies apropriadas entre ao, resultado e objeto. Calcular o total de uma venda; Avaliar o desempenho de um vendedor. Validar a senha de um usurio.

Features - exemplo
rea Principal Gerenciamento de venda de produtos Conjunto de Features Vender para um cliente Features 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

Features
Conjuto de Features Grande Conjunto de Features Conjuto de Features Features Individuais

Conjuto de Features
Conjuto de Features Conjuto de Features Conjuto de Features

Lista de Features

Grande Conjunto de Features


Grande Conjunto de Features

Conjuto de Features
Conjuto de Features Conjuto de Features
Conjunto de Features
Agendar um Servio Agendar um Servio Realizar um Servio Realizar um Servio

Grande Conjunto de Features


Gerncia de Servios Gerncia de Servios Gerncia de Servios Gerncia de Servios

Feature
Agendar um servio para um carro Adicionar um novo cliente na lista Registrar dados gerais do servio Registrar partes usadas no servio

Processo
Papis principais
Gerente de projeto Arquiteto chefe

Especialistas no domnio
Gerentes de desenvolvimento Programadores chefes

Proprietrios de classes

Melhores Prticas do FDD


Modelagem do objeto do domnio Desenvolver por features Propriedade individual de classes Equipes de features Inspees Construo de builds regulares

Gerncia de configurao
Comunicao dos resultados

Processo
Descrio
Cada processo descrito em no mais do que duas pginas de

papel tamanho carta, frente-e-verso; Cada descrio do processo apresenta-se de acordo com a estrutura: Entrada, Tarefas, Verificao e Sadas (ETVX).

Processo
1.Desenvolver um Modelo Geral 2. Construir uma Lista de Features 3. Planejar Por Feature 4. Projetar Por Feature 5. Construir Por Feature

Modelo de Objeto (mais formas do que contedo)

Uma lista de Features categorizada

Um plano de desenvolvimento (mais contedo do que forma)

Um pacote de projeto (seqncias)

Uma funo do cliente completada

Desenvolver um Modelo Geral


Adquirir conhecimento do domnio e construir o modelo

geral
Estabelecimento do propsito de negcio do novo sistema; Construo de um modelo conceitual do sistema.

Atividades
Formar a Equipe de Modelagem

Walkthrough sobre o Domnio Estudar Documentos Desenvolver pequenos Modelos de Grupo

Desenvolver um Modelo da Equipe

Refinar o Modelo Geral

Escrever Anotaes do Modelo

Entradas e Sadas
Entrada Especialistas no domnio, programadores e arquitetos chefes so selecionados. Sadas Modelo geral do domnio; Diagrama das classes principais com alguns mtodos e atributos identificados; Diagramas de seqncia de algumas funcionalidades mais complexas (se houver); Comentrio sobre o modelo.

Modelagem Do Domnio

Modelagem do Domnio (Usando Cores)

Java Modeling in Color : Enterprise Components and Process, Coad, Lefebvre and De Luca, PTR-PH 1999

Construir lista de Features


O domnio decomposto at chegar nas Features; Features so agrupadas e categorizadas; Features so granuladas at ser necessrio menos de 2 semanas

pro seu desenvolvimento.

Atividades

Formar a Equipe da Lista de Features

Construir a lista de Features

Entradas e Sadas
Entrada
O processo de desenvolvimento do modelo geral ter sido

concludo com sucesso.

Sadas
Uma lista das reas do domnio identificadas; Para cada rea, uma lista de atividades de negcio (conjunto de

Features); Para cada atividade, os passos a serem realizados (Features).

Lista de Features

http://www.nebulon.com/articles/fdd/DevView.html

Planejar por Features


Uma data de lanamento estabelecida para o release

inicial; A lista de Features priorizadas refinada;


Dependncia entre funcionalidades Carga de Trabalho Complexidade ou Risco Milestones

O trabalho tcnico planejado e atribudo plano de

desenvolvimento

Atividade

Formar a Equipe de Planejamento

Determinar a Seqncia de Desenvolvimento

Atribuir Conjuntos de Features para Programadores Chefes


Atribuir Classes para Desenvolvedores

Entradas e Sadas
Entrada O processo de construir a lista de Features ter sido concludo com sucesso. Sadas reas de Domnio com datas de trmino; Atividades de negcio com datas de trmino; Programadores-chefes atribudos a atividades de negcio; A lista de classes e seus donos (desenvolvedores).

Planejar por Features

http://www.nebulon.com/articles/fdd/planview.html

Projetar por Features


Regras e transaes so identificadas O modelo da interface do usurio esboado Diagramas de seqncia mais detalhados so produzidos

Especialistas so consultados para descobrir qualquer

necessidade especfica adicional

Atividades

Formar a Equipe Por Feature

Estudo do Domnio

Estudar Documentos de Referncias

Desenvolver Diagramas de Seqncia Refinar o Modelo Descrever os prefcios de classes e mtodos

Entradas e Sadas
Entrada O processo de planejamento ter sido concludo com sucesso Sadas Diagramas de seqncia Designs alternativos (caso exista) O modelo de objeto com classes, mtodos e atributos novos ou atualizados A documentao da API do sistema Lista de tarefas (calendrio/ To-Do)

Construir por Feature


Features so construdas implementando todas as classes e

mtodos necessrios Testes de unidades Features so inseridas no build quando o teste resulta em sucesso

Atividades

Codificar

Testar Unidades

Inspecionar Cdigo

Promover verso atual (Build)

Ponto de integrao para a feature inteira

Entradas e Sadas
Entrada
O processo de projeto por Feature ter sido concludo com

sucesso

Sadas
Classe(s) e/ou mtodo(s) que passaram na inspeo de cdigo

com sucesso Classes inseridas no build A concluso da funcionalidade do cliente

Os seis marcos do FDD

Projetar por features


Anlise do domnio Projeto Inspeo do projeto

Construir por features


Cdigo Inspeo do cdigo Gerao de build

1%

40%

3%

45%

10%

1%

Comunicao/Visibilidade dos Resultados

KEY:

Work In Progress

Attention

Completed

Not Started

Comunicao/Visibilidade dos Resultados

Comunicao/Visibilidade dos Resultados


Status Geral:
Trabalhos em progresso
Ateno (ie, atrasado) Completo No iniciado

CP-1

Fazendo avaliao de produtos (14) 75%

Exemplo:
Conjunto de Features: Fazendo avaliao de produtos Trabalho em progresso CP-1 o programador chefe inicial (14) esse conjunto de Features possui 14 features Conjunto de Features/ est 75% completado A concluso para dezembro de 2012

Porcentagem completa:
Barra de progresso

Status Completo:
Completo MY Ms de concluso

Dez 2012

Comunicao/Visibilidade dos Resultados


Product Sale Management (PS)
CP-1 CP-1 CP-3 CP-1 CP-2 CP-1

Selling Products (22) 99% Nov 2001

Shipping Products (19) 10% Dec 2001

Delivering Products (10) 30% Dec 2001

Invoicing Sales (33) 3% Dec 2001

Setting up Product Agreements (13)

Making Product Assessments (14) 75%

Dec 2001

Dec 2001

Customer A/C Mgmt (CA)


CP-2 Evaluating Account Applications (23) 95% Oct 2001
KEY:

Inventory Mgmt (IM)


CP-2 Logging Account Transactions (30) 82% Nov 2001
Attention

CP-2 Opening New Accounts (11) 100% Oct 2001


Work In Progress

CP-3 Establishing Storage Units (26) 100% Nov 2001


Completed

CP-3 Accepting Movement Requests (18) 97% Nov 2001


Progress Bar

CP-3 Moving Content (19) 82% Nov 2001


Not Started

Comunicao/Visibilidade dos Resultados

Consideraes Finais
Por que usar?
Clientes tm resultados rpidos e relatrio do status numa

linguagem que eles entendem Gerentes de projeto tm uma viso completa e exata do status do projeto Desenvolvedores conseguem trabalhar em novas coisas em poucos dias e ficam mais envolvidos em anlise, projeto e codificao

Referncias
A Practical Guide to Feature-Driven Development Stephen R. Palmer, John M. Felsing http://www.featuredrivendevelopment.com/ http://www.nebulon.com/fdd/ http://www.fddmanager.com/ http://fddtools.sourceforge.net/

Você também pode gostar