19
FDD FDD

FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

Embed Size (px)

Citation preview

Page 1: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

FDDFDD

Page 2: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

O que é FDD? O que é FDD? Feature Driven DevelopmentFeature Driven Development

(Desenvolvimento Guiado por (Desenvolvimento Guiado por Funcionalidades) é uma metodologia Funcionalidades) é uma metodologia ágil para gerenciamento e ágil para gerenciamento e desenvolvimento de software. desenvolvimento de software.

O approach do FDD não abrange todo O approach do FDD não abrange todo o processo de desenvolvimento de o processo de desenvolvimento de software, mas se concentra nas fases software, mas se concentra nas fases de design e construção. de design e construção.

Possui mais requisitos formais e Possui mais requisitos formais e passos que outras metodologias ágeis passos que outras metodologias ágeis como o XP.como o XP.

Page 3: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

Lema do FDDLema do FDD

"Resultados freqüentes, tangíveis e "Resultados freqüentes, tangíveis e funcionais."funcionais."

Adail RentamalAdail Rentamal

Page 4: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

HistóricoHistórico

Page 5: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

PrincípiosPrincípios

“ “Estamos descobrindo maneiras melhores de Estamos descobrindo maneiras melhores de desenvolver software fazendo-o nós mesmos e desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através desse trabalho, ajudando outros a fazê-lo. Através desse trabalho, passamos a valorizar:passamos a valorizar:

Indivíduos e interação entre eles mais que Indivíduos e interação entre eles mais que processosprocessos e ferramentas; e ferramentas;

Software em funcionamento mais que Software em funcionamento mais que documentação abrangente; documentação abrangente;

Colaboração com o cliente mais que negociação de Colaboração com o cliente mais que negociação de contratos; contratos;

Responder a mudanças mais que seguir um plano. Responder a mudanças mais que seguir um plano. Ou seja, mesmo havendo valor nos itens à direita, Ou seja, mesmo havendo valor nos itens à direita,

valorizamos mais os itens à esquerda.”valorizamos mais os itens à esquerda.”

Page 6: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

AplicabilidadeAplicabilidade

O FDD é a mais formal que todas as O FDD é a mais formal que todas as outras metodologias ágeis e é outras metodologias ágeis e é recomendado para projetos maiores recomendado para projetos maiores com mais de dez desenvolvedores. com mais de dez desenvolvedores.

Page 7: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

CaracterísticasCaracterísticas Fornece a estrutura suficiente para equipes Fornece a estrutura suficiente para equipes

maioresmaiores Enfatiza a produção de software de qualidadeEnfatiza a produção de software de qualidade Entrega resultados freqüentes, tangíveis e Entrega resultados freqüentes, tangíveis e

funcionaisfuncionais Realiza trabalho significativo desde o início, Realiza trabalho significativo desde o início,

antes de tornar-se altamente iterativaantes de tornar-se altamente iterativa Fornece informação de estado e progresso de Fornece informação de estado e progresso de

forma simples e compreensívelforma simples e compreensível Agradam a clientes, gerentes e Agradam a clientes, gerentes e

desenvolvedores.desenvolvedores.

Page 8: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

EstruturaEstrutura

Page 9: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

ProcessosProcessos DMA (Desenvolver um Modelo Abrangente): DMA (Desenvolver um Modelo Abrangente):

Análise Orientada por Objetos Análise Orientada por Objetos CLF (Construir a Lista de Funcionalidades): CLF (Construir a Lista de Funcionalidades):

Decomposição Funcional Decomposição Funcional PPF (Planejar por Funcionalidade): PPF (Planejar por Funcionalidade):

Planejamento Incremental Planejamento Incremental DPF (Detalhar por Funcionalidade): Desenho DPF (Detalhar por Funcionalidade): Desenho

(Projeto) Orientado por Objetos (Projeto) Orientado por Objetos CPF (Construir por Funcionalidade): CPF (Construir por Funcionalidade):

Programação e Teste Orientados por objetosProgramação e Teste Orientados por objetos

Page 10: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

ProcessosProcessos

Processo 1: DMA-Desenvolver um Modelo Abrangente

•Diagramas de classes com foco na forma do modelo, isto é, quais classes estão no domínio, como estão conectadas umas às outras e sob quais restrições;•Métodos e atributos identificados são colocados nas classes;•Diagrama(s) de seqüência e/ou de máquina de estados, se houver;•Comentários sobre o modelo para registrar o motivo pelo qual uma forma de modelo foi escolhida e/ou quais alternativas foram consideradas.

Page 11: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

ProcessosProcessos

Processo 2: CLF-Construir a Lista de Funcionalidades

•Uma lista de áreas de negócio;•Para cada área, uma lista de atividades de negócio dentro daquela área;•Para cada passo da atividade de negócio, uma funcionalidade que satisfaça ao passo.

Page 12: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

ProcessosProcessos

Processo 3: PPF-Planejar por Funcionalidade

•Atividades de negócio com datas de término (mês e ano); •Programadores-líderes atribuídos a atividades de negócio; •Áreas com datas de término (mês e ano), derivadas da data do último término de suas respectivas atividades de negócio; •Lista das classes e seus respectivos desenvolvedores proprietários

Page 13: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

ProcessosProcessos

Processo 4: DPF-Detalhar por Funcionalidade•Uma capa com comentários, que completa e descreve o pacote de projeto de tal forma a ser suficiente para futuros revisores; •Os requisitos referenciados (se houver) na forma de documentos e de todos os memorandos de confirmação relacionados, e documentação de apoio; •O(s) diagrama(s) de seqüência; Alternativas de projeto (design) (se houver); •O modelo de objetos com classes, métodos e atributos novos/atualizados; •A saída gerada pela <sua ferramenta>para os prefácios de classes e métodos, criados ou modificados por esse projeto (design);•Lista de tarefas e agendamentos para itens de ação nas classes afetadas para cada membro da equipe.

Page 14: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

ProcessosProcessos

Processo 5: CPF-Construir por Funcionalidade

•Classe(s) e/ou método(s) que passaram na inspeção de código com sucesso;•Classe(s) que foi(ram) promovida(s) à versão atual (build);•O término de uma função com valor para o cliente (funcionalidade).

Page 15: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

Casos de sucessoCasos de sucessoUnited Overseas Bank, em Singapura.United Overseas Bank, em Singapura.Após 2 anos de consultoria, 3500 Após 2 anos de consultoria, 3500

paginas de casos de uso e um modelo paginas de casos de uso e um modelo com centenas de casos de uso, a com centenas de casos de uso, a entrega do projeto no prazo que entrega do projeto no prazo que havia sido determinado foi avaliado havia sido determinado foi avaliado como impossível.como impossível.

Mas após a implantação do FDD, em 15 Mas após a implantação do FDD, em 15 meses a equipe entregou 2000 meses a equipe entregou 2000 features por uma equipe de 50 features por uma equipe de 50 pessoas, demonstrando a total pessoas, demonstrando a total eficiência da metodologia. eficiência da metodologia.

Page 16: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

FerramentasFerramentas UML em coresUML em cores

Page 17: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

FDD progress FDD progress reportreport

FerramentasFerramentas

Page 18: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

Work Package Progress ReportWork Package Progress Report

FerramentasFerramentas

Page 19: FDD. O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento

Vantagens Vantagens 1.1. Gerenciamento de projetoGerenciamento de projeto2.2. Reporte de status do projetoReporte de status do projeto3.3. EstimativaEstimativa4.4. Controle de mudançaControle de mudança5.5. Uma metodologia ágil para aplicações críticasUma metodologia ágil para aplicações críticas6.6. Foco em “funcionalidades de valor para o cliente”Foco em “funcionalidades de valor para o cliente”

Detalhar por funcionalidade (DPF)Detalhar por funcionalidade (DPF) Construir por funcionalidade (CPF)Construir por funcionalidade (CPF)

WalkthrougWalkthroughh

DesenvolvimeDesenvolvimentonto

Inspeção do Inspeção do desenvolvimedesenvolvimentonto

CodificaçãoCodificação Inspeção de Inspeção de codificaçãocodificação

Inspeção de Inspeção de codificaçãocodificação

1%1% 40%40% 3%3% 45%45% 10%10% 1%1%