Fdd feature driven development (slide ) do trabalho

22
FDD - Feature Driven Development

Transcript of Fdd feature driven development (slide ) do trabalho

Page 1: Fdd   feature driven development (slide ) do trabalho

FDD - Feature Driven Development

Page 2: Fdd   feature driven development (slide ) do trabalho

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, nocapítulo 6 do livro “Java Modeling in Color with UML”, de Peter Coad, Eric Lefebvre e Jeff de Luca.

Page 3: Fdd   feature driven development (slide ) do trabalho

FDD - Feature Driven Development

Jeff de Luca

Peter Coad

Page 4: Fdd   feature driven development (slide ) do trabalho

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.

Page 5: Fdd   feature driven development (slide ) do trabalho

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.

Page 6: Fdd   feature driven development (slide ) do trabalho

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.

Page 7: Fdd   feature driven development (slide ) do trabalho

O que são FeaturesFeatures são funcionalidade para o detalhamentoe uma característica pequena para ser implementada, no máximo em umiteraçã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

Page 8: Fdd   feature driven development (slide ) do trabalho

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.

Page 9: Fdd   feature driven development (slide ) do trabalho

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;

Page 10: Fdd   feature driven development (slide ) do trabalho

• 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;

Page 11: Fdd   feature driven development (slide ) do trabalho

FDD - Feature Driven Development

CaracteristicasA 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

Page 12: Fdd   feature driven development (slide ) do trabalho

• 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

Page 13: Fdd   feature driven development (slide ) do trabalho

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

Page 14: Fdd   feature driven development (slide ) do trabalho

FDD - Feature Driven Development

A FDD é uma metodologia muito objetiva que possui duas etapas e essas podem ser divididas cinco fases :

Page 15: Fdd   feature driven development (slide ) do trabalho

FDD - Feature Driven Development

Etapas• Concepção e Planejamento: Pensar no modelo,

criar uma lista de características e planejar atravésdelas. Essa fase é executada apenas uma vez e durade uma a duas semanas.

• Construção: Desenvolvimento iterativo e incremental durante um período de tempo de no máximo 2 semanas.

Page 16: Fdd   feature driven development (slide ) do trabalho

FDD - Feature Driven Development

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

Page 17: Fdd   feature driven development (slide ) do trabalho

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.

Page 18: Fdd   feature driven development (slide ) do trabalho

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

Page 19: Fdd   feature driven development (slide ) do trabalho

FDD - Feature Driven Development

Page 20: Fdd   feature driven development (slide ) do trabalho

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.

Page 21: Fdd   feature driven development (slide ) do trabalho

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

Page 22: Fdd   feature driven development (slide ) do trabalho

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çãoAinda 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.