FDD O que é FDD? Feature Driven Development (Desenvolvimento Guiado por Funcionalidades) é uma metodologia ágil para gerenciamento e desenvolvimento de software. O approach do FDD não abrange todo o processo de desenvolvimento de software, mas se concentra nas fases de design e construção. Possui mais requisitos formais e passos que outras metodologias ágeis como o XP. Lema do FDD "Resultados freqüentes, tangíveis e funcionais." Adail Rentamal Histórico Princípios “Estamos descobrindo maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através desse trabalho, passamos a valorizar: Indivíduos e interação entre eles mais que processos e ferramentas; Software em funcionamento mais que documentação abrangente; Colaboração com o cliente mais que negociação de contratos; Responder a mudanças mais que seguir um plano. Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda.” Aplicabilidade O FDD é a mais formal que todas as outras metodologias ágeis e é recomendado para projetos maiores com mais de dez desenvolvedores. Características Fornece a estrutura suficiente para equipes maiores Enfatiza a produção de software de qualidade Entrega resultados freqüentes, tangíveis e funcionais Realiza trabalho significativo desde o início, antes de tornar-se altamente iterativa Fornece informação de estado e progresso de forma simples e compreensível Agradam a clientes, gerentes e desenvolvedores. Estrutura Processos DMA (Desenvolver um Modelo Abrangente): Análise Orientada por Objetos CLF (Construir a Lista de Funcionalidades): Decomposição Funcional PPF (Planejar por Funcionalidade): Planejamento Incremental DPF (Detalhar por Funcionalidade): Desenho (Projeto) Orientado por Objetos CPF (Construir por Funcionalidade): Programação e Teste Orientados por objetos Processos 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. Processos 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. Processos 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 Processos 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. Processos 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). Casos de sucesso United Overseas Bank, em Singapura. Após 2 anos de consultoria, 3500 paginas de casos de uso e um modelo com centenas de casos de uso, a entrega do projeto no prazo que havia sido determinado foi avaliado como impossível. Mas após a implantação do FDD, em 15 meses a equipe entregou 2000 features por uma equipe de 50 pessoas, demonstrando a total eficiência da metodologia. Ferramentas UML em cores Ferramentas FDD progress report Ferramentas Work Package Progress Report Vantagens 1. 2. 3. 4. 5. 6. Gerenciamento de projeto Reporte de status do projeto Estimativa Controle de mudança Uma metodologia ágil para aplicações críticas Foco em “funcionalidades de valor para o cliente” Detalhar por funcionalidade (DPF) Construir por funcionalidade (CPF) Walkthroug h Desenvolvime nto Inspeção do desenvolvime nto Codificação Inspeção de codificação Inspeção de codificação 1% 40% 3% 45% 10% 1%