Upload
lemon-lopes-leite
View
49
Download
0
Embed Size (px)
Citation preview
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, nocapí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 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
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
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
• 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é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.
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.
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çã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.