Você está na página 1de 54

FDD Feature

Driven Development
Prof. Marcio Sete
Alunos:
Fabiano Nunes Santos
Guilherme Cekiera
Philippe Costa
Roberson Campos
Saulo Alves Grego
Vincius Silva Andrade

O que FDD
Feature Driven Development
(Desenvolvimento Guiado por Funcionalidades):
uma metodologia gil para gerenciamento e
desenvolvimento de software. Ela combina as
melhores prticas do gerenciamento gil de
projetos com uma abordagem completa para
Engenharia de Software orientada por
objetos.

O que Feature?
Funcionalidade
uma funcionalidade para o detalhamento
e uma caracterstica pequena para ser
implementada, no mximo em um
iterao, oferecendo assim o valor ao
cliente
<ao><resultado><objeto>

Histria da FDD


O FDD foi criado em 1997 num grande


projeto em Java para o United Overseas
Bank, em Cingapura.
Nasceu a partir da experincia de anlise e
modelagem orientadas por objetos de Peter
Coad e de gerenciamento de projetos por Jeff
de Luca.
Foi inicialmente publicada em 1999, no
captulo 6 do livro Java Modeling in Color
with UML, de Peter Coad, Eric Lefebvre e
Jeff de Luca.
Seu lema : Resultados frequentes,
tangveis e funcionais.

Jeff de Luca

Peter Coad

Caractersticas


A FDD chama a ateno por algumas caractersticas


peculiares:








Resultados teis a cada duas semanas ou menos


Blocos bem pequenos de funcionalidade valorizada pelo cliente,
chamados "Features
No existem restries quanto complexidade do sistema e
tamanho da equipe
Planejamento detalhado e guia para medio
Rastreabilidade e relatrios com preciso
Monitoramento detalhado dentro do projeto, com resumos de
alto nvel para clientes e gerentes, tudo em termos de negcio
Fornece uma forma de saber, dentro dos primeiros 10% de um
projeto, se o plano e a estimativa so slidos

Padres do FDD


Segundo De Luca todas as fases do FDD


devem seguir o padro ETVX:
 Entry

Entrada: define e especifica critrios de


entrada para as fases do FDD;
 Task Tarefa: composto por uma lista de tarefas a
ser realizada a cada uma das fases;
 Verification Verificao: especifica tipos de
avaliaes e inspees de projeto e cdigos testes;
 Exit Sada: especifica os critrios de sada ou seja
os critrios de pronto da fase;

Prticas do FDD









Modelagem dos objetos de domnio;


Desenvolvendo atravs de funcionalidades;
Propriedade individual das classes;
Equipes de funcionalidades;
Inspees;
Construes regulares;
Administrao de configurao;
Relatrios de resultados;

Prticas do FDD
Modelagem dos objetos de Domnio


Construo de diagramas de classes UML (Unified


Modeling Language) que descrevem os objetos
relevantes dentro do domnio do problema, bem como
os relacionamentos entre eles. Para complementar os
diagramas de classe UML, so desenvolvidos
diagramas de seqncia UML que descrevem
explicitamente como os objetos interagem para cumprir
suas responsabilidades.

Prticas do FDD
Desenvolvendo atravs de funcionalidades


feita a identificao das funcionalidades do sistema


(definidas pelo cliente). Aps isso, inicia-se o projeto e a
construo de cada uma delas. Uma vez identificadas,
as funcionalidades sero utilizadas para guiar o
desenvolvimento no FDD, tendo como objetivo mostrar o
progresso atravs da implementao das mesmas.
A execuo das funcionalidades, ou conjunto delas, no
deve exceder de duas semanas.

Prticas do FDD
Propriedade individual das classes



Cada classe ou conjunto de classes de


responsabilidade de um indivduo.
Isso pode ser uma vantagem e uma grande
desvantagem em alguns pontos de vista, pois a sada do
programador proprietrio da classe pode gerar perda de
tempo no projeto.

Prticas do FDD
Equipes de funcionalidades
A prtica da propriedade individual da classe atribui
classes a desenvolvedores especficos. Contudo, sabese que o desenvolvimento deve ser por funcionalidade.
Por isso, so definidas equipes, com seus respectivos
desenvolvedores lderes, onde os componentes
possuem as propriedades das classes, e atribudo a
eles um conjunto de funcionalidades.
 A equipe de funcionalidades deve ter no mnimo 3 e no
maximo 6 programadores envolvidos.

Prticas do FDD
Inspees


Devem ser feitas durante e ao final de cada iterao,


para assegurar a qualidade do projeto e do cdigo. O
objetivo principal das inspees a deteco de
defeitos. uma ferramenta para eliminao de erros e
uma grande oportunidade de aprendizado.

Prticas do FDD
Construes regulares


Devem ocorrer durante as iteraes, na execuo de um


conjunto
de
funcionalidades,
para
detectar,
prematuramente, erros de integrao. Uma construo
regular assegura tambm que haja sempre um sistema
atual e executvel para ser apresentado ao cliente.

Prticas do FDD
Administrao de configurao


Utilizao de um sistema de controle de verses para


datar e manter um histrico das alteraes feitas em
cada classe. Bem como, no que se refere aos requisitos,
anlise e o projeto de modo que facilite a visualizao
das modificaes feitas.

Prticas do FDD
Relatrios de resultados


O FDD sugere que todos os resultados ocorridos


durante o projeto sejam disseminados para todos os
membros da equipe e clientes.

Papis
 Principais
 Apoio
 Adicionais

Papis principais
Gerente de projeto
 Arquiteto chefe
 Gerente de desenvolvimento
 Programador chefe
 Proprietrio de classe
 Especialista do domnio


Papis principais
Gerente de projeto


Responsvel financeiro e administrativo do projeto. Uma


de suas responsabilidades gerenciar a viabilidade do
projeto oferecendo todas as condies necessrias
equipe para o desenvolvimento do trabalho. No FDD, a
ltima palavra dada por ele.

Papis principais
Arquiteto chefe


Elabora o projeto geral do software a ser desenvolvido,


tomando decises finais em relao ao projeto tcnico.
Essa funo poder ser dividida entre o Projetista de
Domnio e o Projetista Tcnico.

Papis principais
Gerente de desenvolvimento


Responsvel por gerenciar as atividades dirias do


projeto resolvendo problemas que podero ocorrer com
a equipe. Pode combinar as atividades desenvolvidas
pelo Arquiteto Principal e Gerente de Projeto.

Papis principais
Proprietrio de classe


Geralmente o programador com maior experincia


dentro da equipe, participando na anlise dos requisitos
e no projeto do software. Considerado como um dos
papis mais importantes no projeto FDD. Atua
principalmente nas duas ltimas etapas do processo.

Papis principais
Proprietrio de classe


Subordinado do Programador Chefe, tendo como tarefas


projetar, codificar, testar e documentar. Responsvel
pelo desenvolvimento das classes atribudas a ele.

Papis principais
Especialista do domnio


Pode ser um usurio, analista de negcios, cliente ou


qualquer pessoa que conhea bem o domnio do
problema. Sua tarefa informar as funcionalidades que
devero ser atendidas pelo software e entender como os
requisitos esto sendo desenvolvidos.

Papis de apoio
Gerente do domnio
 Gerente de verso
 Especialista (guru) de linguagem
 Coordenador de construo
 Ferramenteiro (toolsmith)
 Administrador de sistema


Papis de apoio
Gerente do domnio


Conduz os peritos de domnio a resolver as diferenas


de opinio relativa aos requisitos do sistema.

Papis de apoio
Gerente de verso


Responsvel
por
controlar
o
progresso
no
desenvolvimento atravs de constantes revises em
conjunto com o Programador Chefe. Informa suas
atividades ao Gerente de Projeto.

Papis de apoio
Especialista (guru) de linguagem


Membro da equipe responsvel por possuir um


conhecimento completo de uma linguagem de
programao especfica ou tecnologia. Este papel
particularmente importante quando usada uma nova
tecnologia.

Papis de apoio
Coordenador de construo


Pessoa responsvel pelas tarefas de administrao do


sistema de controle de verso e a publicao da
documentao, durante a atividade de construo.

Papis de apoio
Ferramenteiro (toolsmith)


Responsvel por construir ferramentas de suporte para


o desenvolvimento, teste e converso de dados no
projeto. Tambm pode trabalhar com modelagem e
manuteno de bancos de dados e websites para
propsitos especficos do projeto.

Papis de apoio
Administrador de sistema


Possui a tarefa de configurar, administrar e diagnosticar


os servidores, estaes de trabalho e desenvolvimento e
testar os ambientes usados pela equipe do projeto.

Papis adicionais
Testador
 Desenvolvedores
 Escritor tcnico


Papis adicionais
Testador


Verificam se o sistema que est sendo produzido


satisfar os requisitos do cliente.

Papis adicionais
Desenvolvedor


Responsveis por converter dados existentes ao


formato requerido pelo novo sistema e participar no
desenvolvimento de novos lanamentos.

Papis adicionais
Escritor tcnico


Responsvel pela documentao de usurio.

Time







Formados dinamicamente: nica forma de


desenvolver por feature (funcionalidade) e
manter a posse do cdigo;
Sob a coordenao de um programador chefe;
Mltiplas mentes projetando;
Membros so os Donos de Classes relevantes;
Enfatiza o trabalho em equipe;

Fases do FDD


A FDD uma metodologia muito objetiva que


possui cinco fases e essas podem ser divididas
em duas etapas:
 Concepo

& Planejamento: Pensar no modelo,


criar uma lista de caractersticas e planejar atravs
delas. Essa fase executada apenas uma vez e dura
de uma a duas semanas.
 Construo: Desenvolvimento iterativo e incremental
durante um perodo de tempo de no mximo 2
semanas.

Fases do FDD

Concepo & Planejamento


Desenvolver um modelo abrangente
 Construir a lista de funcionalidades
 Planejar por funcionalidade


Desenvolver modelo abrangente










Formar o time de modelagem.


Conduzir o Domain Walkthrough.
Estudar documentao.
Desenvolver modelos de pequenos grupos.
Desenvolver modelo da equipe.
Refinar o Modelo Abrangente.
Escrever Notas.

Desenvolver modelo abrangente


O

Modelo de Domnio Criado


decomposto por 3 camadas:

rea de Negcio.
Atividade de Negcio.
Automatizao da Atividade (Funcionalidade).




Ser

Construir a lista de funcionalidades


Construo de uma lista de funcionalidades
importantes para o cliente onde a lista
representara o produto final a ser
desenvolvido, podendo ser necessrio a
incluso de novas funcionalidades no
modelo de domnio a cada iterao.

Construir a lista de funcionalidades


Sistema ou Aplicao

rea de Negcio

rea de Negcio

FBS

Atividade de Negcio
Atividade de Negcio

(Feature Breakdown Structure)

Funcionalidade
Funcionalidade

Planejar por funcionalidade




Determinar a seqncia do
desenvolvimento .

Atribuir atividades de Negcio aos


Programadores-chefes.

Atribuir Classes aos Desenvolvedores.

Construo
Detalhar por funcionalidade
 Construir por funcionalidade


Detalhar por funcionalidade


J dentro de uma iterao de construo, a equipe
detalha os requisitos e outros artefatos para a
codificao de cada funcionalidade, incluindo os
testes. O projeto para as funcionalidades
inspecionado e o modelo abrangente
atualizado. O resultado o modelo de domnio
mais detalhado e os esqueletos de cdigo como
declarao de mtodos, tipagem, atributos e
parmetros prontos para serem preenchidos.

Construir por funcionalidade


Cada esqueleto de cdigo preenchido, testado e
inspecionado de acordo com o modelo
abrangente. O resultado um incremento do
produto integrado ao repositrio principal do
cdigo aps ter sido devidamente testado por
um outro membro da equipe se necessrio, com
qualidade e potencial para ser usado pelo
cliente.

Processo

FDD x Scrum
Eles so compatveis?
 Qual o papel de cada um no
desenvolvimento de software?
 Eles so complementares?


Combinando Scrum x FDD

Vantagens






Recomendado para qualquer tipo de desenvolvimento;


Foco em caractersticas de valor para o cliente;
FDD prioriza aquilo que o cliente prioriza;
FDD possui requisitos mais formais;
Seus princpios e prticas proporcionam um equlibrio
entre as filosofias tradicionais e as mais extremas,
proporcionando uma transio mais suave para
organizaes mais conservadoras;

Desvantagens
Ainda existem questionamento sobre a
eficcia / aplicabilidade de FDD;
 Controvrsias sobre o tamanho mnimo de
um time FDD;


Concluso
um mtodo gil e altamente adaptativo;
 Oferece vantagens dos mtodos pesados;
 Oferece vantagens dos mtodos
extremamente geis;
 orientada s necessidades dos clientes,
gerentes e desenvolvedores;


Referencias





Feature Driven Development; 2007; Setti Rodrigo,


Gameiro Lucas, Boscariol Lendro, Leal Flavio
http://www.featuredrivendevelopment.com/
Modelagem da Interao do usurio com o sistema em
mtodos geis; 2009; Cecilia Giuffra Palomino
FDD Numa Casca de banana, Um guia de rpido
aprendizado para a Feature Driven Development; Mar
2007; Alexandre Magno Figueiredo

Perguntas?

Você também pode gostar