Escolar Documentos
Profissional Documentos
Cultura Documentos
mar.2007
aXmagno
www.axmagno.com
O que FDD?
Feature-Driven Development (FDD) uma metodologia gil para o
processo de engenharia de software, que foi elaborada com foco na
entrega frequente de software funcionando para os clientes e na
utilizao de boas prticas durante o ciclo de seu desenvolvimento.
Uma caracterstica marcante da FDD o fato dela
favorecer fortemente o envolvimento de clientes (interno
ou externo) ao processo de planejamento e
desenvolvimento do software.
O que no FDD?
A FDD no uma metodologia descrita em uma coleo com
30(trinta) volumes de livros. Portanto, ela no uma bblia a
ser seguida por sua equipe de desenvolvimento.
A FDD no uma metodologia de gerenciamento de
projetos de software. Apesar de, em suas prticas, existirem
atividades relacionadas a esse fim, a FDD tem como principal foco
cobrir o processo da engenharia de software, e no do
gerenciamento.
Quem quem?
Ol! Eu sou a Gerente do Projeto, e
como tal sou responsvel por todos os
assuntos administrativos do projeto, o que
inclui o gerenciamento de recursos,
oramento, equipamentos e outros. Minha
principal meta fornecer subsdios para
que nenhum fator externo atrapalhe a
produtividade da equipe do projeto.
O que feature?
Features(funcionalidades) so expresses granulares que
representem algum valor para o cliente.
Funcionalidades so nomeadas atravs do uso do template
<ao><resultado><objeto>
O ciclo de vida
da FDD
O ciclo de vida da FDD composto de 05(cinco)
prticas. So elas:
1. Desenvolver um modelo abrangente
Este processo abrange todo o projeto, o que significa que ele ser executado uma
nica vez no projeto.
Formar o time de planejamento: normalmente este time composto pelo gerente de
projeto, gerente de desenvolvimento e programadores-chefes.
Determinar a sequncia do desenvolvimento: o time determina a seqncia do
desenvolvimento baseando-se nas dependncias entre elas, na carga de trabalho da
equipe de desenvolvimento e tambm na complexidade das funcionalidades a serem
implementadas.
Atribuir atividades de negcio aos programadores-chefes: cada programador-chefe fica
responsvel por um conjunto de atividades de negcio. Ele ser o programador-chefe
de todas as funcionalidades que compem suas atividades.
Atribuir classes aos desenvolvedores: cada classe passar a ter um dono. Este
dono, que um programador, ser o responsvel por qualquer manuteno
necessria naquela classe. As classes so distribudas pelo time levando em
considerao a experincia, carga e sequncia de trabalho de cada desenvolvedor.
Inspecionar cdigo: cada desenvolvedor deve convidar algum outro membro do time(da
funcionalidade ou do projeto) para avaliar o que foi feito em sua classe durante este
processo.
Teste unitrio: cada desenvolvedor responsvel por executar os testes de unidade nos
mtodos de suas classes para garantir o alcance das necessidades do negcio.
Promover a build: estando a classe inspecionada e testada, ela ento pode ser
promovida a build.
A empresa, o projeto.
Um projeto
O time.
unitYeventos
unitYeventos
unitYeventos
Mnica Silva
Joo Marcos
Thomz Bin
GERENTE DE PROJETO
ESPECIALISTA DE
NEGCIO
ARQUITETO
unitYeventos
unitYeventos
unitYeventos
Paulo Martins
Carlos Jnior
Paula Pimenta
GERENTE DE DESENV.
/ PROG. CHEFE
PROG. CHEFE
PROGRAMADORA
unitYeventos
unitYeventos
unitYeventos
Raimunda Lins
Jos Pintado
ESPECIALISTA DE
NEGCIO
PROGRAMADOR
Thiago Pires
PROGRAMADOR
Mnica Silva
GERENTE DE PROJETO
Raimunda Lins
ESPECIALISTA DE
NEGCIO
Estudar documentao
Thomz Bin
ARQUITETO
Equipe A
Equipe B
Paulo Martins
GERENTE DE DESENV.
/ PROG. CHEFE
Joo Marcos
ESPECIALISTA DE
NEGCIO
Paula Pimenta
PROGRAMADORA
Thiago Pires
PROGRAMADOR
Carlos Jnior
PROG. CHEFE
Jos Pintado
PROGRAMADOR
Paulo Martins
GERENTE DE DESENV.
/ PROG. CHEFE
Raimunda Lins
ESPECIALISTA DE
NEGCIO
Jos Pintado
PROGRAMADOR
Thomz Bin
ARQUITETO
Mnica Silva
GERENTE DE PROJETO
Paulo Martins
GERENTE DE DESENV.
/ PROG. CHEFE
Carlos Jnior
PROG. CHEFE
Paulo Martins
GERENTE DE DESENV.
/ PROG. CHEFE
Raimunda Lins
ESPECIALISTA DE
NEGCIO
Carlos Jnior
PROG. CHEFE
Thiago Pires
Jos Pintado
PROGRAMADOR
PROGRAMADOR
Thiago Pires
Jos Pintado
PROGRAMADOR
PROGRAMADOR
Inspeo de design
Carlos Jnior
PROG. CHEFE
Paula Pimenta
PROGRAMADORA
Thiago Pires
PROGRAMADOR
Teste de unidade
Utilizando recurso da prpria ferramenta de desenvolvimento adotada, o
time realiza teste de unidade em todos os mtodos implementados para
esta funcionalidade. A poltica de teste de unidade, ou seja, por quem
ser realizado e em que exato momento, deve ser definida pelo
programador-chefe da funcionalidade.
Carlos Jnior
PROG. CHEFE
Inspecionar cdigo
Seguindo o mesmo mecanismo utilizado na inspeo de design, o
programador-chefe solicita que um outro programador, ou mesmo um
outro programador-chefe, inspecione todo o cdigo implementado para
esta funcionalidade.
Promover a build
Carlos Jnior
Este o momento de
integrar todas as classes e
mtodos desenvolvidos para
esta funcionalidade.
PROG. CHEFE
DONE!
Jos Pintado
Thiago Pires
PROGRAMADOR
PROGRAMADOR
Visibilidade gerencial
Mnica Silva
GERENTE DE PROJETO
Seqncia do projeto
Aps a promoo a build de uma funcionalidade(ou pacote de
funcionalidades), os processos 4 e 5 vo sendo repetidos para cada
nova funcionalidade(ou pacote) prevista para a iterao corrente.
Ao final de cada iterao, a lista de funcionalidades(backlog) deve
ser revisada, quando ento podero ser adicionadas ou removidas
novas funcionalidades na lista.
Dvidas freqentes
Existem ferramentas disponveis para FDD?
Sim, existem vrias ferramentas especficas para o uso dos processos da FDD,
dentre elas podemos citar: FDDTracker(www.fddtracker.com) e
FDDTools(fddtools.sourceforge.net) como as principais, sendo que a primeira
ideal para quem precisa de uma ferramenta mais abrangente, e a segunda
para quem quer apenas controlar as funcionalidades do projeto e visualiz-las
atravs do Parking Lot. Ferramentas de grandes fornecedores, como o Caliber
da Borland e o RequisitePro da IBM/Rational, tambm suportam as
funcionalidades da FDD, mas sem seus recursos especficos. J o Visual Studio
Team System, da Microsoft, possui um plug-in especfico para FDD que foi
desenvolvido por uma empresa indiana chamada Cognizant
(www.cognizant.com).
Vale ainda frisar que, com simples planilhas eletrnicas ou mesmo post-its,
voc consegue sem muitas complicaes montar um ambiente para completo
acompanhamento de projetos FDD.
Posso utilizar FDD em conjunto com outra metodologia?
O uso da FDD em conjunto com alguma metodologia de gerenciamento de
projeto muito comum. Como exemplo podemos citar a dobrinha
Scrum/FDD que, sendo bem planejada, pode ser de grande valia para seus
projetos de software.
Na FDD, como tratado o processo de levantamento de requisitos?
A FDD pressupe que, ao entrar na fase de desenvolvimento do modelo
abrangente, voc j tenha em mos os requisitos do seu projeto, sejam eles
use-cases, storys ou qualquer outra coisa. Portanto, a FDD considera que o
processo de levantamento de requisitos deva ser executado antes de voc
entrar nas prticas de engenharia, ou seja, antes de entrar na FDD. No post
FDD e requisitos (www.axmagno.com) comento mais sobre este assunto.
Posso utilizar FDD em projetos relacionais, ou seja, sem nenhum uso
de orientao a objetos?
Apesar da documentao da FDD ser sempre recheada das palavras classes,
objetos e diagramas, nada nos impede de utiliz-la em projetos
relacionais/procedurais. Uma vez que voc considere o modelo abrangente da
Fase 1 como um MER ao invs de um diagrama de classes, todas as prticas
seguintes sero aplicadas a ele. David Anderson fala sobre um projeto
relacional onde aplicou FDD no post FDD in non-OO projects em
www.agilemanagement.net. Em breve devo estar escrevendo algo sobre a
minha experincia neste tipo de projeto aqui mesmo em www.axmagno.com.
Como est sendo o uso da FDD pelo mundo?
A Trail Ridge Consulting realizou uma pesquisa sobre o uso de prticas geis
em projetos de software pelo mundo. Nela podemos perceber que a FDD,
juntamente com a Extreme Programming so as duas metodologias geis para
a engenharia de software de maior destaque. A Heptagon disponibilizou em
uma verso em portugus desta pesquisa em seu site www.heptagon.com.br,
Vale a pena dar uma conferida nos resultados.
Sobre o autor
Alexandre Magno Figueiredo vive em So Paulo
-SP, onde trabalha como consultor em liderana e
gerenciamento de projetos de software atravs do
uso de metodologias e processos geis,
principalmente FDD e Scrum. Atua na rea de
software h mais de 14 anos, j tendo participado de
projetos de variadas dimenses de lead time, escopo
e investimento. Certified Scrum Master, possuindo
ainda certificaes dos fornecedores IBM e Borland, e
dos grupos OMG e PMI. Pode ser encontrado em
axmagno@gmail.com ou no Palestra Itlia assistindo
aos jogos do Palmeiras.