METODOLOGIA ÁGEIS
FDD
FEATURE DRIVEN
DEVELOPMENT
Prof. Fabiano Papaiz
IFRN
FDD
Feature Driven Development = Desenvolvimento Guiado
por Funcionalidades
FDD é uma metodologia ágil para gerenciamento e
desenvolvimento de software, criada em 1997 durante um
grande projeto de um banco de Singapura, com uma
equipe de aproximadamente 50 pessoas e que estava
atrasado e condenado ao fracasso
Esse projeto foi “salvo” graças a Peter Coad (Análise e
Projeto OO) e a Jeff De Luca (Gerência de Projetos)
FDD
A FDD é focada na entrega regular de funcionalidades
valiosas para o cliente (já vimos isso em algum lugar!)
Possui uma estrutura mais elaborada que o XP, podendo
ser aplicada a equipes maiores (entre 10 a 250 pessoas),
porém é mais “enxuta” que o RUP, não necessitando de
tantos artefatos, atividades e papeis
É uma metodologia bastante objetiva, possuindo apenas:
2 Fases
5 Processos
FDD
FDD - Visão Geral (Fases e Processos)
FDD
FDD – Fases
Concepção e Planejamento
Planejar (pensar) um pouco antes de fazer (tipicamente de 1 a 2
semanas)
Construção
Implementar de forma iterativa e incremental, com ciclos de
aproximadamente 2 semanas
FDD
FDD – Processos
Concepção e Planejamento
Desenvolver um Modelo Abrangente: Análise OO
Construir a Lista de Funcionalidades: Decomposição Funcional
Planejar por Funcionalidade: Planejamento Incremental
Construção
Detalhar por Funcionalidade: Design (Projeto) OO
Construir por Funcionalidade: Implementação e Testes
FDD
Processo #1: Desenvolver um Modelo Abrangente
Este processo abrangerá todo o projeto, o que significa que ele será executado uma única vez no projeto
Será montado a Equipe de Modelagem (especialistas de negócio, analistas, programadores e arquitetos experientes)
Os especialistas de negócio realizarão apresentações focadas em pequenas partes do negócio
Após cada apresentação a equipe será dividida em pequenos grupos que elaborarão um modelo (sem detalhamento) para aquela parte específica do negócio que foi apresentada
Os modelos elaborados serão apresentados e um deles, ou uma combinação deles, será escolhido
As atividades vão se repetindo até que se obtenha um modelo que cubra todos os requisitos de negócio do software
FDD
Processo #2: Construir a Lista de Funcionalidades
Também será realizada apenas uma vez no início do projeto,
tendo o objetivo de identificar todas as funcionalidades que
satisfaçam aos requisitos definidos no processo anterior
Será formado a Equipe da Lista de Funcionalidades, composta
pelos Programadores Chefes que participaram do 1º processo
Cada requisito de negócio será decomposto em funcionalidades
(Decomposição Funcional), as quais formarão a Lista de
Funcionalidades do software
Similar ao Product Backlog do Scrum
A lista será agrupada por Área, Atividades de Negócio e
Funcionalidades
FDD
Processo #3: Planejar por Funcionalidade
Realizada apenas uma vez no início do projeto, tendo o objetivo de produzir o Plano de Desenvolvimento do software
Será formado a Equipe de Planejamento, composta pelo Gerente do Projeto, o Gerente de Desenvolvimento e os Programadores Chefes, que juntos irão planejar a ordem de implementação e o esforço necessário para cada uma das funcionalidades
Baseando-se nas dependências entre elas, na carga de trabalho da equipe de desenvolvimento e na complexidade de implementação
O Plano de Desenvolvimento será composto de:
Cronograma de implementação das funcionalidades
Programadores Chefes atribuídos às funcionalidades
Lista das classes e seus respectivos desenvolvedores proprietários (Lista de Proprietários de Classes) (o código não será de todos!)
FDD
Processo #4: Detalhar por Funcionalidade
Este processo será executado uma vez para cada funcionalidade
O Programador Chefe responsável irá formar a Equipe da Funcionalidade, identificando os proprietários das classes que provavelmente irão implementar as funcionalidades selecionadas
A equipe desenvolverá os Diagramas de Sequência referentes às funcionalidades, os quais serão usados pelo Programador Chefe para refinar e completar o Modelo de Classes (atributos, métodos etc)
Uma inspeção final da modelagem deverá ser realizada pela equipe
Será gerado um Pacote de Trabalho inspecionado e pronto para ser implementado
FDD
Processo #5: Construir por Funcionalidade
Este processo será executado uma vez para cada
funcionalidade
A partir do Pacote de Trabalho, os programadores proprietários
das classes irão implementar os itens necessários para que
suas classes suportem o projeto (design) da funcionalidade
O código desenvolvido deverá ser testado e inspecionado e,
somente depois, poderá ser um candidato a integrar a versão
atual do software (release)
Ao final deste processo, uma funcionalidade com valor para o
cliente deverá ter sido criada
FDD
Papeis Chaves do FDD
Especialista do Negócio (Domain Experts)
Gerente de Projetos (Project Manager)
Arquiteto Chefe (Chief Architect)
Gerente de Desenvolvimento (Development Manager)
Programadores Chefes (Chief Programmers)
Desenvolvedores (Class Owners)
Outros papeis podem ser inseridos de acordo com a
complexidade do projeto
FDD
Equipes/Times do FDD
Equipe de Modelagem (Processo #1)
Equipe da Lista de Funcionalidades (Processo #2)
Equipe de Planejamento (Processo #3)
Equipe da Funcionalidade (Processo #4)
FDD
Organização da Lista de Funcionalidades (Features)
FDD
Definição das Funcionalidades (Features)
FDD
Trabalho:
Pesquisar quais são as atividades que estão definidas dentro de
cada um dos 5 processos definidos pelo FDD. Ao final, crie um
documento contendo uma tabela com as seguintes informações:
Em grupo com até 3 pessoas
Enviar o documento em formato PDF para o e-mail do professor
([email protected]), contendo os integrantes do grupo
e com o assunto = “Trabalho sobre FDD”
Processo Atividade Responsável(eis)
Desenvolver um Modelo
Abrangente
Atividade-1 Gerente de Projeto
Atividade-n Programador Chefe
Construir a Lista de
Funcionalidades
Atividade-1 Gerente de Desenv.
Atividade-n Todos
FIM