Você está na página 1de 46

Feature Driven

Development (FDD)
Kleber Silva, khfts@cin.ufpe.br
11/10/2005

Agenda

Introduo
Motivao
Melhores Prticas
Modelagem de Objeto do Domnio
Desenvolvimento por Feature
Class (Code) Ownership
Equipes por Feature
Inspees
Builds Regulares
Gerncia de Configurao
Comunicao/Visibilidade dos Resultados
Processo
Concluso

Introduo

Desenvolvimento gil
(+)

(-)

Indivduos e Interaes

Processos e Ferramentas

Software Funcionando

Documentao Extensa

Colaborao do Cliente

Negociao de Contrato

Resposta s Mudanas

Seguir um Plano

Tabela 1 Manifesto Desenvolvimento gil

Introduo

Feature Driven Development

Criado por Jeff De Luca em 1999,


baseado em 30 anos experincia na
rea de TI com envolvimento de Peter
Coad e Steve Palmer;
Trata-se de uma compilao dos
patterns of success percebidos;
Possui
caractersticas
de
Desenvolvimento gil;
Iteraes pequenas (no mximo 2
semanas)
Centrada em Design.

We cannot predict where a


chess game will go, but we
can learn patterns of play
that bring success."
[Highsmith 2000].
Good habits are a wonderful
thing. They allow the team
to carry out the basic
steps, focusing on content
and results , rather than
process steps . This is
best achieved when
process steps are logical
and their worth
immediately obvious to
each member.
Coad, LeFebvre, De Luca
[Coad 99]

Motivao
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

Melhores Prticas
Modelagem

de Objeto do Domnio

Diagramas de classes dos objetos do domnio e


seus relacionamentos so construdos;
O suporte aos aspectos comportamentais dado
por diagramas de seqncia em alto nvel;
nfase no em cima de se determinar todos os
atributos;
Evita as inferncias isoladas dos analistas, por se
tratar de um modelo global onde todos os
envolvidos participam.

Modelagem De Objeto Do
Domnio
Extending that analogy a bit
further, a domain object
model is like the road map
that guides the journey;
with it, you can reach your
destination relatively
quickly and easily without
too many detours or a lot
of backtracking; without it,
you can very quickly end
up lost or driving around in
circles, continually
reworking and refactoring
the same pieces of code.
Stephen Palmer

Figura 1 Modelo de Objetos Do Domnio numa Fase Inicial

Desenvolvimento Por Feature


Req 1.1

Statement of
Purpose

Mdulo 1

Req 1.2

Mdulo 2

Req 2.1

Mdulo 3

Req 3.1

.
.
.
Mdulo N

Req 3.2
Req 3.3
.
.
.
Req N.1

Figura 2 Decomposio do Statement Of Purpose em Requisitos Funcionais

Feature

Features so os requisitos funcionais


com valor para o usurio, isto , esto
numa linguagem que o cliente ou
usurio podem entender;
Os requisitos funcionais tendem a
misturar
funes
de
interface,
persistncia e comunicao em rede
com funes de negcio;
Facilitam o acompanhamento da
evoluo do projeto (o quanto j foi
feito) junto ao cliente.

Once we have identified the


classes in our domain object
model, we can design and
implement each one in turn.
Then, once we have completed
a set of classes, we integrate
them and hey, presto! We have
part of our system.
Easy!...Well, its a nice dream!
We can produce the most elegant
domain object model possible,
but if it does not help us to
provide the systems clients
with the functionality for which
they have asked, we have
failed. It would be like building
a fantastic office skyscraper but
either leaving each floor
unfurnished, uncarpeted, and
without staff, or furnishing it
with ornamental but impractical
furniture and untrained staff.
A Practical Guide to FDD, cap 3

Feature

O termo feature em FDD muito especfico. Uma feature uma


funo pequena, com valor no cliente expressa na seguinte
forma:
<action> <result> <object>
Com as proposies apropriadas entre ao, resultado e objeto.
Ex.:
- Calcular o total de uma venda;
- Avaliar o desempenho de um vendedor.
- Validar a senha de um usurio.
Features vs. Casos de Uso
Classes com funes pesadas constantemente acessando
classes com dados pesados
Alto acoplamento
Baixa coeso
Encapsulamento pobre

Feature

Exemplo

rea de Features Principal (Subject Domain Area)


Gerenciamento de venda de produtos
Conjunto de Features (Business Activity)
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

Class (Code) Ownership


Class

(code) ownership num processo de


desenvolvimento denota quem em ltima
instncia responsvel pelo contedo de uma
classe (parte de cdigo);
Pode ser:

Individual a classe atribuda somente a um


nico dono;
Coletiva O time possui coletivamente a classe
(cdigo).

Individual Class Ownership


Vantagens

Um guardio de integridade conceitual;


Um expert para explicar uma parte do cdigo;
Um desenvolvedor mais rpido para implementar
essa parte de cdigo;
minha classe, dela me orgulho!!!

Desvantagens

Mudanas que dependem de outras classes;


Perda do conhecimento por ocasio da falta do
class owner.

Collective Class Ownership


Vantagens

Resolve o problema da espera por outro para


soluo de um problema;

Desvantagens

Facilmente degenera em no tem dono ou


classes governadas por uma elite.

Equipes por Feature


Como

se organiza os class owners para


construir as features?

Figura 3 Equipes por Feature

Equipes por Feature


Normalmente

pequena: de trs a seis

integrantes;
Possui todo o cdigo que necessita para
mudar sua feature;
Cada membro de uma feature contribui para
o design e implementao de uma feature
sob a orientao de um desenvolvedor mais
experiente.

Inspees
Usadas

para:

Deteco de Defeitos;
Transferncia de Conhecimento;
Aderncia Padres de Codificao;
Extrair Mtricas para Melhoria do Processo.

Cuidado:

No devem ser tomadas como uma


avaliao pessoal de performance.

Builds Regulares

Em intervalos regulares, o sistema completo


montado;
Identifica os erros de integrao;
Garante
um
sistema
up-to-date
para
demonstrao ao cliente
Um processo de gerao de builds pode ser
melhorado para:

Gerar documentao;
Rodar script de mtricas e de auditoria;
Base para testes de regresso;
Construir novo build e release notes, listando novas
features adicionadas, defeitos corrigidos, etc...

Gerncia de Configurao
Identificao

do cdigo para todas as


features completadas;
Manuteno de um histrico de mudanas
das classes.

Comunicao/Visibilidade Dos
Resultados
Progress

Reporting
Facilita o acompanhamento
gerencial, atravs da coleta de
informaes
confiveis
e
precisas sobre o status do
projeto;
Sugere
um
nmero
de
formatos
de
relatrios
intuitivos e diretos para ilustrar
o progresso.

Closely related to project


control is the concept of
visibility, which refers to
the ability to determine a
projects true status....If
the project team cant
answer such questions, it
doesnt have enough
visibility to control its
project.
The working software is a more
accurate status report than
any paper report could
ever be.
Steve McConnell [McConnell
98]

Comunicao/Visibilidade Dos
Resultados

KEY:

Work In Progress

Attention

Completed

Not Started

Comunicao/Visibilidade Dos
Resultados

Comunicao/Visibilidade Dos
Resultados
CP-1

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

Fazendo
avaliao
de produtos
(14)

No iniciado

Porcentagem completa:

75%

Completo
MY Ms de concluso

Conjunto de Features: Fazendo


avaliao de produtos Trabalho em
progresso
CP-1 o programador chefe inicial
(14) esse conjunto de Features possui
14 caractersticas
Conjunto de Features/ est 75%
completado

Barra de progresso

Status Completo:

Exemplo:

Dez 2001

A concluso para dezembro de 2001

Comunicao/Visibilidade Dos
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

Comunicao/Visibilidade Dos
Resultados

Processo
Descrio

Cada processo descrito em no mais do que


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

Processo
Papis

principais

Gerente de projeto
Arquiteto chefe
Especialistas no domnio
Gerentes de desenvolvimento
Programadores chefes
Proprietrios de classes

Processo
1.Desenvolver
um Modelo
Geral

Modelo de Objeto
(mais formas do
que contedo)

2. Construir
uma Lista de
Features

Uma lista de
Features
categorizada

3. Planejar
Por
Feature
Um plano de
desenvolvimento

(mais contedo do que forma)

4. Projetar
Por
Feature

5. Construir
Por Feature

Um pacote de
projeto
(seqncias)

Uma funo do
cliente
completada

Figura 4 Os 5 Processos FDD

Desenvolver um Modelo Geral


Adquirir

conhecimento
construir o modelo geral

do

domnio

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.

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).

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
negcio;
A lista de classes e seus donos (desenvolvedores).

de

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 funcionalidade
inteira

Entradas e Sadas
Entrada

O processo de construo 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

Concluso
Requer

alguma

arte

na

alocao

de

recursos;
Permite um bom acompanhamento gerencial
do status das atividades;
Mais leve e simples de implementar;
Favorece um bom Design do sistema.

Referncias

http://agilemanifesto.org/principles.html, Principles Behind The Agile


Manifest.
Highsmith, James A. III, 2000, "Adaptive Software Development: A
Collaborative Approach to Managing Complex Systems." Dorset House
Publishing
R Palmer, S. Felsing, John M. A Practical Guide to Feature-Driven
Development. The Coad Series.
Coad P., Lefebyre E., De Luca, J. Java Modeling In Color With UML:
Enterprise Components And Processes. Prentice Hall.
http://www.cin.ufpe.br/~processos/TAES3/slides-2004.2/FDD.ppt,
Feature
Driven Development. Apresentao por Manuela Xavier, 05/11/2004.

http://www.nebulon.com/fdd/, Feature Driven Development.


http://www.faturedrivendevelopment.com/, The Portal For All Things
FDD.
http://www.fddmanager.com/, FDD Manager Overview.
http://fddtools.sourceforge.net/, FDD Tools Project.

Dvidas

???

Você também pode gostar