FDD - Feature Driven Development
FDD - Feature Driven Development
O FDD foi criado em 1997 num grande projeto em Java para o
United Overseas Bank, em Cingapura.
Nasceu a partir da experiência de análise e modelagem
orientadas por objetos de Peter Coad e de gerenciamento de
projetos por Jeff de Luca.
Foi inicialmente publicada em 1999, no
capítulo 6 do livro “Java Modeling in Color with UML”, de Peter
Coad, Eric Lefebvre e Jeff de Luca.
FDD - Feature Driven Development
Jeff de Luca
Peter Coad
FDD - Feature Driven Development
O que e FDD
Feature Driven Development (Desenvolvimento Guiado
por Funcionalidades)
È uma das seis metodologias ágeis originais,
cujos representantes redigiram o Manifesto Ágil para
Desenvolvimento de Software, em 2001.
O representante doFDD foi Jon Kern, que trabalhava na
TogetherSoft, substituindo Peter Coad quem foi o
desenvolvedor da metodologia juntamente com Jeff de
Luca.
FDD - Feature Driven Development
A FDD é uma metodologia ágil para gerenciamento e
desenvolvimento de Software, com foco na entrega frequente de
“software funcionando” para os clientes e na utilização de boas
práticas durante o ciclo de seu desenvolvimento.
Ela combina as melhores práticas do gerenciamento ágil de
projetos com uma abordagem completa para Engenharia de
Software orientada a objetos.
FDD - Feature Driven Development
• Com relação às outras metodologias de desenvolvimento de
software, esta numa posição intermediária entre as abordagens
mais prescritivas (Processo Unificado, Cascata tradicional -
Waterfall) e as abordagens Ágeis (XP - Programação Extrema, Scrum,
Crystal, etc.).
• Oferece um conjunto de princípios e práticas tanto para a Gestão de
Projetos e para a Engenharia de Software, convive bem com
abordagens mais especialistas, como Scrum.
• Apesar de algumas divergências com a XP, várias práticas propostas
pelo XP são utilizadas por equipes usando FDD, como os testes
unitários, refatoração, programação em pares, integração contínua,
entre outras. Apenas a ênfase na FDD é que não é tão grande
quanto na XP. A FDD também propõe práticas como inspeção formal
(de desenho e de código) e posse individual/situacional de
código/classe, que podem contrastar com algumas das práticas
fundamentais da XP.
O que são Features
Features são funcionalidade para o detalhamento
e uma característica pequena para ser implementada, no máximo em um
iteração, oferecendo assim o valor ao cliente
<ação><resultado><objeto>
<action><result><object>
Exemplo:
Calcular o total de uma venda.
ação resultado objeto
FDD - Feature Driven Development
• Os papéis principais são:
• Gerente de Projeto, Arquiteto Chefe, Gerente de
Desenvolvimento, Programador Chefe, Proprietário de Classe
e Especialista de Domínio.
• Os papéis de apoio são:
• Gerente de Domínio, Gerente de Versão, Especialista (Guru)
da Linguagem, Coordenador de Construção, Ferramenteiro
(toolsmith) e Administrador de Sistema.
• Os papéis adicionais são:
• Testador, Desenvolvedores e Escritor Técnico.
FDD - Feature Driven Development
Padrões do FDD
Segundo Jeff de Luca todas as fases do FDD devem seguir o
padrão “ETVX”:
• Entry – Entrada: define e especifica critérios de entrada para
as fases do FDD;
• Task – Tarefa: é composto por uma lista de tarefas a ser
realizada a cada uma das fases;
• Verification – Verificação: especifica tipos de avaliações e
inspeções de projeto e códigos “testes”;
• Exit – Saída: especifica os critérios de saída ou seja os critérios de
“pronto” da fase;
FDD - Feature Driven Development
Caracteristicas
A FDD chama a atenção por algumas características peculiares:
• .Fornece a estrutura suficiente para equipes maiores.
• Modelagem Orientada a Objetos do Domínio
• Desenvolvimento por funcionalidade
• Resultados úteis a cada duas semanas ou menos
• Blocos bem pequenos de funcionalidade valorizada pelo
cliente, chamados "Features"
• Planejamento detalhado e guia para medição
• Rastreabilidade e relatórios com incrível precisão
• Classe proprietária, ou seja, a unidade é feita individualmente,
evitando-se assim conflitos na equipe;
• Monitoramento detalhado dentro do projeto, com resumos de
alto nível para clientes e gerentes, tudo em termos de negócio
• Inspeção é realizada constantemente para garantir a boa
qualidade do código e do projeto
• Gerenciamento de configuração
• Integração contínua para demonstrar constantemente as
funcionalidades ao cliente e
• Visibilidade de progressos e resultados.
FDD - Feature Driven Development
A FDD é uma metodologia muito objetiva que possui duas
etapas e essas podem ser divididas cinco fases :
FDD - Feature Driven Development
Etapas
• Concepção e Planejamento: Pensar no modelo,
criar uma lista de características e planejar através
delas. Essa fase é executada apenas uma vez e dura
de uma a duas semanas.
• Construção: Desenvolvimento iterativo e incremental
durante um período de tempo de no máximo 2 semanas.
FDD - Feature Driven Development
Fases
A FDD é dividida em cinco processos principais bem definidos e
integrados:
• DMA - Desenvolver um Modelo Abrangente
(Critérios de entrada, Atividades, Verificação , Critérios de saída)
Estudos detalhados sobre o domínio do negocio para as partes do produto a
serem modeladas, podendo ser em forma de análise de requisitos, orientado
por objetos e outras técnicas.
• CLF - Construir a Lista de Funcionalidades
(Critérios de entrada, Atividades, Verificação , Critérios de saída)
Pode ser chamado de product backlog, consiste na decomposição funcional do
domínio, em áreas de negocio, atividades de negocio e funcionalidades.
FDD - Feature Driven Development
• PPF - Planejar por Funcionalidade
(Critérios de entrada Atividades Verificação Critérios de saída)
Planejamento, ordenação e estimativa das atividades a serem implementadas
baseando-se em fatores como carga de trabalho da equipe e complexidade.
• DPF - Detalhar por Funcionalidade
(Critérios de entrada Atividades Verificação Critérios de saída)
Dentro de uma iteração ocorre o detalhamento dos requisitos e outros artefatos
refinando os modelos de objetos com a definição de padrões e esqueletos de
código.
• CPF - Construir por Funcionalidade
(Critérios de entrada Atividades Verificação Critérios de saída)
È realizado o desenvolvimento e em seguida ocorre a realização dos testes. Após
ocorre a junção das funcionalidades para preparar o produto de entrega funcional.
FDD - Feature Driven Development
O que o FDD pode proporcionar?
• Inovação continua
• Adaptabilidade do produto
• Cronogramas reduzidos de entrega
• Adaptabilidade das pessoas e processos e
• Resultados confiáveis
FDD - Feature Driven Development
FDD - Feature Driven Development
O FDD possui um processo bem simples de ser
compreendido, é possível notar. O processo começa com a
modelagem abrangente seguido pela construção da lista de
features ou funcionalidades e seu planejamento, após esses
processos é iniciada a fase de construção que está divida em
dois processos, detalhar por funcionalidade e construir por
funcionalidade, sendo que essa fase é executada para cada
funcionalidade. A fase de concepção e planejamento é
executada uma vez para todo o projeto, já a fase de
construção é realizada para cada funcionalidade.
FDD - Feature Driven Development
Vantagens
• Recomendado para qualquer tipo de desenvolvimento
• Foco em característica de valor para o cliente
• FDD prioriza aquilo que o cliente prioriza
• Possui requisitos mais formais
FDD - Feature Driven Development
Desvantagens
• Questionamento sobre a eficácia, aplicabilidade FDD
O caso inicial de aplicação de FDD foi no desenvolvimento de uma aplicação
bancária. Entretanto, relatos confiáveis de uso bem-sucedido ainda não são
encontráveis, questionando a eficácia/aplicabilidade de FDD.
• Escalabilidade do time
Controvérsias sobre o tamanho mínimo de um time FDD;
• Manutenção
Ainda que FDD pressuponha um ciclo completo de documentação, a
especificação original da metodologia não comenta sobre sua aplicabilidade
à manutenção de sistemas.

Fdd feature driven development (slide ) do trabalho

  • 1.
    FDD - FeatureDriven Development
  • 2.
    FDD - FeatureDriven Development O FDD foi criado em 1997 num grande projeto em Java para o United Overseas Bank, em Cingapura. Nasceu a partir da experiência de análise e modelagem orientadas por objetos de Peter Coad e de gerenciamento de projetos por Jeff de Luca. Foi inicialmente publicada em 1999, no capítulo 6 do livro “Java Modeling in Color with UML”, de Peter Coad, Eric Lefebvre e Jeff de Luca.
  • 3.
    FDD - FeatureDriven Development Jeff de Luca Peter Coad
  • 4.
    FDD - FeatureDriven Development O que e FDD Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) È uma das seis metodologias ágeis originais, cujos representantes redigiram o Manifesto Ágil para Desenvolvimento de Software, em 2001. O representante doFDD foi Jon Kern, que trabalhava na TogetherSoft, substituindo Peter Coad quem foi o desenvolvedor da metodologia juntamente com Jeff de Luca.
  • 5.
    FDD - FeatureDriven Development A FDD é uma metodologia ágil para gerenciamento e desenvolvimento de Software, com foco na entrega frequente de “software funcionando” para os clientes e na utilização de boas práticas durante o ciclo de seu desenvolvimento. Ela combina as melhores práticas do gerenciamento ágil de projetos com uma abordagem completa para Engenharia de Software orientada a objetos.
  • 6.
    FDD - FeatureDriven Development • Com relação às outras metodologias de desenvolvimento de software, esta numa posição intermediária entre as abordagens mais prescritivas (Processo Unificado, Cascata tradicional - Waterfall) e as abordagens Ágeis (XP - Programação Extrema, Scrum, Crystal, etc.). • Oferece um conjunto de princípios e práticas tanto para a Gestão de Projetos e para a Engenharia de Software, convive bem com abordagens mais especialistas, como Scrum. • Apesar de algumas divergências com a XP, várias práticas propostas pelo XP são utilizadas por equipes usando FDD, como os testes unitários, refatoração, programação em pares, integração contínua, entre outras. Apenas a ênfase na FDD é que não é tão grande quanto na XP. A FDD também propõe práticas como inspeção formal (de desenho e de código) e posse individual/situacional de código/classe, que podem contrastar com algumas das práticas fundamentais da XP.
  • 7.
    O que sãoFeatures Features são funcionalidade para o detalhamento e uma característica pequena para ser implementada, no máximo em um iteração, oferecendo assim o valor ao cliente <ação><resultado><objeto> <action><result><object> Exemplo: Calcular o total de uma venda. ação resultado objeto
  • 8.
    FDD - FeatureDriven Development • Os papéis principais são: • Gerente de Projeto, Arquiteto Chefe, Gerente de Desenvolvimento, Programador Chefe, Proprietário de Classe e Especialista de Domínio. • Os papéis de apoio são: • Gerente de Domínio, Gerente de Versão, Especialista (Guru) da Linguagem, Coordenador de Construção, Ferramenteiro (toolsmith) e Administrador de Sistema. • Os papéis adicionais são: • Testador, Desenvolvedores e Escritor Técnico.
  • 9.
    FDD - FeatureDriven Development Padrões do FDD Segundo Jeff de Luca todas as fases do FDD devem seguir o padrão “ETVX”: • Entry – Entrada: define e especifica critérios de entrada para as fases do FDD; • Task – Tarefa: é composto por uma lista de tarefas a ser realizada a cada uma das fases;
  • 10.
    • Verification –Verificação: especifica tipos de avaliações e inspeções de projeto e códigos “testes”; • Exit – Saída: especifica os critérios de saída ou seja os critérios de “pronto” da fase;
  • 11.
    FDD - FeatureDriven Development Caracteristicas A FDD chama a atenção por algumas características peculiares: • .Fornece a estrutura suficiente para equipes maiores. • Modelagem Orientada a Objetos do Domínio • Desenvolvimento por funcionalidade • Resultados úteis a cada duas semanas ou menos
  • 12.
    • Blocos bempequenos de funcionalidade valorizada pelo cliente, chamados "Features" • Planejamento detalhado e guia para medição • Rastreabilidade e relatórios com incrível precisão • Classe proprietária, ou seja, a unidade é feita individualmente, evitando-se assim conflitos na equipe; • Monitoramento detalhado dentro do projeto, com resumos de alto nível para clientes e gerentes, tudo em termos de negócio
  • 13.
    • Inspeção érealizada constantemente para garantir a boa qualidade do código e do projeto • Gerenciamento de configuração • Integração contínua para demonstrar constantemente as funcionalidades ao cliente e • Visibilidade de progressos e resultados.
  • 14.
    FDD - FeatureDriven Development A FDD é uma metodologia muito objetiva que possui duas etapas e essas podem ser divididas cinco fases :
  • 15.
    FDD - FeatureDriven Development Etapas • Concepção e Planejamento: Pensar no modelo, criar uma lista de características e planejar através delas. Essa fase é executada apenas uma vez e dura de uma a duas semanas. • Construção: Desenvolvimento iterativo e incremental durante um período de tempo de no máximo 2 semanas.
  • 16.
    FDD - FeatureDriven Development Fases A FDD é dividida em cinco processos principais bem definidos e integrados: • DMA - Desenvolver um Modelo Abrangente (Critérios de entrada, Atividades, Verificação , Critérios de saída) Estudos detalhados sobre o domínio do negocio para as partes do produto a serem modeladas, podendo ser em forma de análise de requisitos, orientado por objetos e outras técnicas. • CLF - Construir a Lista de Funcionalidades (Critérios de entrada, Atividades, Verificação , Critérios de saída) Pode ser chamado de product backlog, consiste na decomposição funcional do domínio, em áreas de negocio, atividades de negocio e funcionalidades.
  • 17.
    FDD - FeatureDriven Development • PPF - Planejar por Funcionalidade (Critérios de entrada Atividades Verificação Critérios de saída) Planejamento, ordenação e estimativa das atividades a serem implementadas baseando-se em fatores como carga de trabalho da equipe e complexidade. • DPF - Detalhar por Funcionalidade (Critérios de entrada Atividades Verificação Critérios de saída) Dentro de uma iteração ocorre o detalhamento dos requisitos e outros artefatos refinando os modelos de objetos com a definição de padrões e esqueletos de código. • CPF - Construir por Funcionalidade (Critérios de entrada Atividades Verificação Critérios de saída) È realizado o desenvolvimento e em seguida ocorre a realização dos testes. Após ocorre a junção das funcionalidades para preparar o produto de entrega funcional.
  • 18.
    FDD - FeatureDriven Development O que o FDD pode proporcionar? • Inovação continua • Adaptabilidade do produto • Cronogramas reduzidos de entrega • Adaptabilidade das pessoas e processos e • Resultados confiáveis
  • 19.
    FDD - FeatureDriven Development
  • 20.
    FDD - FeatureDriven Development O FDD possui um processo bem simples de ser compreendido, é possível notar. O processo começa com a modelagem abrangente seguido pela construção da lista de features ou funcionalidades e seu planejamento, após esses processos é iniciada a fase de construção que está divida em dois processos, detalhar por funcionalidade e construir por funcionalidade, sendo que essa fase é executada para cada funcionalidade. A fase de concepção e planejamento é executada uma vez para todo o projeto, já a fase de construção é realizada para cada funcionalidade.
  • 21.
    FDD - FeatureDriven Development Vantagens • Recomendado para qualquer tipo de desenvolvimento • Foco em característica de valor para o cliente • FDD prioriza aquilo que o cliente prioriza • Possui requisitos mais formais
  • 22.
    FDD - FeatureDriven Development Desvantagens • Questionamento sobre a eficácia, aplicabilidade FDD O caso inicial de aplicação de FDD foi no desenvolvimento de uma aplicação bancária. Entretanto, relatos confiáveis de uso bem-sucedido ainda não são encontráveis, questionando a eficácia/aplicabilidade de FDD. • Escalabilidade do time Controvérsias sobre o tamanho mínimo de um time FDD; • Manutenção Ainda que FDD pressuponha um ciclo completo de documentação, a especificação original da metodologia não comenta sobre sua aplicabilidade à manutenção de sistemas.