SlideShare a Scribd company logo
1 of 54
Download to read offline
FDD – Feature
Driven Development
               Prof. Marcio Sete
                          Alunos:
          Fabiano Nunes Santos
              Guilherme Cekiera
                  Philippe Costa
              Roberson Campos
              Saulo Alves Grego
          Vinícius Silva Andrade
O que é FDD
Feature Driven Development
(Desenvolvimento Guiado por Funcionalidades):
  É uma metodologia ágil para gerenciamento e
  desenvolvimento de software. Ela combina as
  melhores práticas do gerenciamento ágil de
  projetos com uma abordagem completa para
  Engenharia de Software orientada por
  objetos.
O que é Feature?
Funcionalidade
É uma funcionalidade para o detalhamento
 e uma característica pequena para ser
 implementada, no máximo em um
 iteração, oferecendo assim o valor ao
 cliente
          <ação><resultado><objeto>
História da FDD
 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      Jeff de Luca
 Coad e de gerenciamento de projetos por Jeff
 de Luca.
 Foi inicialmente publicada em 1999, no
 capítulo 6 do livro “Java Modeling in Color
 with UML”, de Peter Coad, Eric Lefebvre e
 Jeff de Luca.                                  Peter Coad
 Seu lema é: “Resultados frequentes,
 tangíveis e funcionais.”
Características
 A FDD chama a atenção por algumas características
 peculiares:
   Resultados úteis a cada duas semanas ou menos
   Blocos bem pequenos de funcionalidade valorizada pelo cliente,
   chamados "Features“
   Não existem restrições quanto à complexidade do sistema e
   tamanho da equipe
   Planejamento detalhado e guia para medição
   Rastreabilidade e relatórios com precisão
   Monitoramento detalhado dentro do projeto, com resumos de
   alto nível para clientes e gerentes, tudo em termos de negócio
   Fornece uma forma de saber, dentro dos primeiros 10% de um
   projeto, se o plano e a estimativa são sólidos
Padrões do FDD
 Segundo 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;
Práticas do FDD
 Modelagem dos objetos de domínio;
 Desenvolvendo através de funcionalidades;
 Propriedade individual das classes;
 Equipes de funcionalidades;
 Inspeções;
 Construções regulares;
 Administração de configuração;
 Relatórios de resultados;
Práticas do FDD
Modelagem dos objetos de Domínio
 Construção de diagramas de classes UML (Unified
 Modeling Language) que descrevem os objetos
 relevantes dentro do domínio do problema, bem como
 os relacionamentos entre eles. Para complementar os
 diagramas de classe UML, são desenvolvidos
 diagramas de seqüência UML que descrevem
 explicitamente como os objetos interagem para cumprir
 suas responsabilidades.
Práticas do FDD
Desenvolvendo através de funcionalidades
 É feita a identificação das funcionalidades do sistema
 (definidas pelo cliente). Após isso, inicia-se o projeto e a
 construção de cada uma delas. Uma vez identificadas,
 as funcionalidades serão utilizadas para guiar o
 desenvolvimento no FDD, tendo como objetivo mostrar o
 progresso através da implementação das mesmas.
 A execução das funcionalidades, ou conjunto delas, não
 deve exceder de duas semanas.
Práticas do FDD
Propriedade individual das classes
 Cada classe ou conjunto de classes é de
 responsabilidade de um indivíduo.
 Isso pode ser uma vantagem e uma grande
 desvantagem em alguns pontos de vista, pois a saída do
 programador proprietário da classe pode gerar perda de
 tempo no projeto.
Práticas do FDD
Equipes de funcionalidades
A prática da propriedade individual da classe atribui
  classes a desenvolvedores específicos. Contudo, sabe-
  se que o desenvolvimento deve ser por funcionalidade.
  Por isso, são definidas equipes, com seus respectivos
  desenvolvedores líderes, onde os componentes
  possuem as propriedades das classes, e é atribuído a
  eles um conjunto de funcionalidades.
  A equipe de funcionalidades deve ter no mínimo 3 e no
  maximo 6 programadores envolvidos.
Práticas do FDD
Inspeções
 Devem ser feitas durante e ao final de cada iteração,
 para assegurar a qualidade do projeto e do código. O
 objetivo principal das inspeções é a detecção de
 defeitos. É uma ferramenta para eliminação de erros e
 uma grande oportunidade de aprendizado.
Práticas do FDD
Construções regulares
 Devem ocorrer durante as iterações, na execução de um
 conjunto    de    funcionalidades,    para    detectar,
 prematuramente, erros de integração. Uma construção
 regular assegura também que haja sempre um sistema
 atual e executável para ser apresentado ao cliente.
Práticas do FDD
Administração de configuração
 Utilização de um sistema de controle de versões para
 datar e manter um histórico das alterações feitas em
 cada classe. Bem como, no que se refere aos requisitos,
 análise e o projeto de modo que facilite a visualização
 das modificações feitas.
Práticas do FDD
Relatórios de resultados
 O FDD sugere que todos os resultados ocorridos
 durante o projeto sejam disseminados para todos os
 membros da equipe e clientes.
Papéis
  Principais
  Apoio
  Adicionais
Papéis principais
 Gerente de projeto
 Arquiteto chefe
 Gerente de desenvolvimento
 Programador chefe
 Proprietário de classe
 Especialista do domínio
Papéis principais
Gerente de projeto
 Responsável financeiro e administrativo do projeto. Uma
 de suas responsabilidades é gerenciar a viabilidade do
 projeto oferecendo todas as condições necessárias à
 equipe para o desenvolvimento do trabalho. No FDD, a
 “última palavra” é dada por ele.
Papéis principais
Arquiteto chefe
 Elabora o projeto geral do software a ser desenvolvido,
 tomando decisões finais em relação ao projeto técnico.
 Essa função poderá ser dividida entre o Projetista de
 Domínio e o Projetista Técnico.
Papéis principais
Gerente de desenvolvimento

 Responsável por gerenciar as atividades diárias do
 projeto resolvendo problemas que poderão ocorrer com
 a equipe. Pode combinar as atividades desenvolvidas
 pelo Arquiteto Principal e Gerente de Projeto.
Papéis principais
Proprietário de classe

 Geralmente é o programador com maior experiência
 dentro da equipe, participando na análise dos requisitos
 e no projeto do software. Considerado como um dos
 papéis mais importantes no projeto FDD. Atua
 principalmente nas duas últimas etapas do processo.
Papéis principais
Proprietário de classe

 Subordinado do Programador Chefe, tendo como tarefas
 projetar, codificar, testar e documentar. Responsável
 pelo desenvolvimento das classes atribuídas a ele.
Papéis principais
Especialista do domínio
 Pode ser um usuário, analista de negócios, cliente ou
 qualquer pessoa que conheça bem o domínio do
 problema. Sua tarefa é informar as funcionalidades que
 deverão ser atendidas pelo software e entender como os
 requisitos estão sendo desenvolvidos.
Papéis de apoio
 Gerente do domínio
 Gerente de versão
 Especialista (guru) de linguagem
 Coordenador de construção
 “Ferramenteiro” (toolsmith)
 Administrador de sistema
Papéis de apoio
Gerente do domínio
 Conduz os peritos de domínio a resolver as diferenças
 de opinião relativa aos requisitos do sistema.
Papéis de apoio
Gerente de versão
 Responsável     por    controlar  o progresso   no
 desenvolvimento através de constantes revisões em
 conjunto com o Programador Chefe. Informa suas
 atividades ao Gerente de Projeto.
Papéis de apoio
Especialista (guru) de linguagem

 Membro da equipe responsável por possuir um
 conhecimento completo de uma linguagem de
 programação específica ou tecnologia. Este papel é
 particularmente importante quando é usada uma nova
 tecnologia.
Papéis de apoio
Coordenador de construção
 Pessoa responsável pelas tarefas de administração do
 sistema de controle de versão e a publicação da
 documentação, durante a atividade de construção.
Papéis de apoio
“Ferramenteiro” (toolsmith)
 Responsável por construir ferramentas de suporte para
 o desenvolvimento, teste e conversão de dados no
 projeto. Também pode trabalhar com modelagem e
 manutenção de bancos de dados e websites para
 propósitos específicos do projeto.
Papéis de apoio
Administrador de sistema
 Possui a tarefa de configurar, administrar e diagnosticar
 os servidores, estações de trabalho e desenvolvimento e
 testar os ambientes usados pela equipe do projeto.
Papéis adicionais
 Testador
 Desenvolvedores
 Escritor técnico
Papéis adicionais
Testador
 Verificam se o sistema que está sendo produzido
 satisfará os requisitos do cliente.
Papéis adicionais
Desenvolvedor
 Responsáveis por converter dados existentes ao
 formato requerido pelo novo sistema e participar no
 desenvolvimento de novos lançamentos.
Papéis adicionais
Escritor técnico
 Responsável pela documentação de usuário.
Time
 Formados dinamicamente: única forma de
 desenvolver por feature (funcionalidade) e
 manter a posse do código;
 Sob a coordenação de um programador chefe;
 Múltiplas mentes projetando;
 Membros são os Donos de Classes relevantes;
 Enfatiza o trabalho em equipe;
Fases do FDD
 A FDD é uma metodologia muito objetiva que
 possui cinco fases e essas podem ser divididas
 em duas etapas:
   Concepção & Planejamento: Pensar no modelo,
   criar uma lista de características e planejar através
   delas. Essa fase é executada apenas uma vez e dura
   de uma a duas semanas.
   Construção: Desenvolvimento iterativo e incremental
   durante um período de tempo de no máximo 2
   semanas.
Fases do FDD
Concepção & Planejamento
 Desenvolver um modelo abrangente
 Construir a lista de funcionalidades
 Planejar por funcionalidade
Desenvolver modelo abrangente

 Formar o time de modelagem.
 Conduzir o Domain Walkthrough.
 Estudar documentação.
 Desenvolver modelos de pequenos grupos.
 Desenvolver modelo da equipe.
 Refinar o Modelo Abrangente.
 Escrever Notas.
Desenvolver modelo abrangente

O     Modelo de Domínio Criado               Será
    decomposto por 3 camadas:

    Área de Negócio.
    Atividade de Negócio.
    Automatização da Atividade (Funcionalidade).
Construir a lista de funcionalidades

Construção de uma lista de funcionalidades
 importantes para o cliente onde a lista
 representara o produto final a ser
 desenvolvido, podendo ser necessário a
 inclusão de novas funcionalidades no
 modelo de domínio a cada iteração.
Construir a lista de funcionalidades

                     Sistema ou Aplicação




  Área de Negócio                               Área de Negócio



             Atividade de Negócio                     FBS
                                            (Feature Breakdown Structure)
             Atividade de Negócio

                             Funcionalidade

                             Funcionalidade
Planejar por funcionalidade
 Determinar a seqüência do
 desenvolvimento .

 Atribuir atividades de Negócio aos
 Programadores-chefes.

 Atribuir Classes aos Desenvolvedores.
Construção
 Detalhar por funcionalidade
 Construir por funcionalidade
Detalhar por funcionalidade
Já dentro de uma iteração de construção, a equipe
  detalha os requisitos e outros artefatos para a
  codificação de cada funcionalidade, incluindo os
  testes. O projeto para as funcionalidades é
  inspecionado e o modelo abrangente é
  atualizado. O resultado é o modelo de domínio
  mais detalhado e os esqueletos de código como
  declaração de métodos, tipagem, atributos e
  parâmetros prontos para serem preenchidos.
Construir por funcionalidade
Cada esqueleto de código é preenchido, testado e
 inspecionado de acordo com o modelo
 abrangente. O resultado é um incremento do
 produto integrado ao repositório principal do
 código após ter sido devidamente testado por
 um outro membro da equipe se necessário, com
 qualidade e potencial para ser usado pelo
 cliente.
Processo
FDD x Scrum
 Eles são compatíveis?
 Qual é o papel de cada um no
 desenvolvimento de software?
 Eles são complementares?
Combinando Scrum x FDD
Vantagens
 Recomendado para qualquer tipo de desenvolvimento;
 Foco em “características de valor para o cliente”;
 FDD prioriza aquilo que o cliente prioriza;
 FDD possui requisitos mais formais;
 Seus princípios e práticas proporcionam um equílibrio
 entre as filosofias tradicionais e as mais extremas,
 proporcionando uma transição mais suave para
 organizações mais conservadoras;
Desvantagens
 Ainda existem questionamento sobre a
 eficácia / aplicabilidade de FDD;
 Controvérsias sobre o tamanho mínimo de
 um time FDD;
Conclusão
 É um método ágil e altamente adaptativo;
 Oferece vantagens dos métodos pesados;
 Oferece vantagens dos métodos
 extremamente ágeis;
 É orientada às necessidades dos clientes,
 gerentes e desenvolvedores;
Referencias
 Feature Driven Development; 2007; Setti Rodrigo,
 Gameiro Lucas, Boscariol Lendro, Leal Flavio
 http://www.featuredrivendevelopment.com/
 Modelagem da Interação do usuário com o sistema em
 métodos ágeis; 2009; Cecilia Giuffra Palomino
 FDD Numa Casca de banana, Um guia de rápido
 aprendizado para a Feature Driven Development; Mar
 2007; Alexandre Magno Figueiredo
Perguntas?

More Related Content

What's hot

1 requisitos funcionais e não funcionais ok
1  requisitos funcionais e não funcionais ok1  requisitos funcionais e não funcionais ok
1 requisitos funcionais e não funcionais okMarcos Morais de Sousa
 
Treinamento de Scrum
Treinamento de ScrumTreinamento de Scrum
Treinamento de ScrumLuiz Duarte
 
Curso de Microsoft Project 2010 - Completo
Curso de Microsoft Project 2010 - CompletoCurso de Microsoft Project 2010 - Completo
Curso de Microsoft Project 2010 - CompletoFernando Dantas
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaFernando Palma
 
Aula 1 - Gestão de Projetos
Aula 1 - Gestão de ProjetosAula 1 - Gestão de Projetos
Aula 1 - Gestão de ProjetosFernando Dantas
 
Avaliação de Desempenho com foco em Competências
Avaliação de Desempenho com foco em CompetênciasAvaliação de Desempenho com foco em Competências
Avaliação de Desempenho com foco em CompetênciasAlvaro Mello
 
Fdd feature driven development (slide ) do trabalho
Fdd   feature driven development (slide ) do trabalhoFdd   feature driven development (slide ) do trabalho
Fdd feature driven development (slide ) do trabalhoLemon Lopes Leite
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de RequisitosCloves da Rocha
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareelliando dias
 
Modelo V - Desenvolvimento de Software
Modelo V - Desenvolvimento de SoftwareModelo V - Desenvolvimento de Software
Modelo V - Desenvolvimento de SoftwareBruno Bitencourt Luiz
 
Aps lista de exercícios
Aps lista de exercíciosAps lista de exercícios
Aps lista de exercíciosGuilherme
 
Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareDanilo Sousa
 
Engenharia de Software Ágil (Scrum e FDD)
Engenharia de Software Ágil (Scrum e FDD)Engenharia de Software Ágil (Scrum e FDD)
Engenharia de Software Ágil (Scrum e FDD)Rildo (@rildosan) Santos
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentaçãoerysonsi
 
Diagrama de Estados
Diagrama de EstadosDiagrama de Estados
Diagrama de EstadosMaikynata
 
Aula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOK
Aula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOKAula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOK
Aula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOKDaniela Brauner
 

What's hot (20)

FDD
FDDFDD
FDD
 
1 requisitos funcionais e não funcionais ok
1  requisitos funcionais e não funcionais ok1  requisitos funcionais e não funcionais ok
1 requisitos funcionais e não funcionais ok
 
Modelo Espiral
Modelo EspiralModelo Espiral
Modelo Espiral
 
Treinamento de Scrum
Treinamento de ScrumTreinamento de Scrum
Treinamento de Scrum
 
Curso de Microsoft Project 2010 - Completo
Curso de Microsoft Project 2010 - CompletoCurso de Microsoft Project 2010 - Completo
Curso de Microsoft Project 2010 - Completo
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
 
Metodologia Ágil
Metodologia ÁgilMetodologia Ágil
Metodologia Ágil
 
Kanban
KanbanKanban
Kanban
 
Aula 1 - Gestão de Projetos
Aula 1 - Gestão de ProjetosAula 1 - Gestão de Projetos
Aula 1 - Gestão de Projetos
 
Avaliação de Desempenho com foco em Competências
Avaliação de Desempenho com foco em CompetênciasAvaliação de Desempenho com foco em Competências
Avaliação de Desempenho com foco em Competências
 
Fdd feature driven development (slide ) do trabalho
Fdd   feature driven development (slide ) do trabalhoFdd   feature driven development (slide ) do trabalho
Fdd feature driven development (slide ) do trabalho
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de software
 
Modelo V - Desenvolvimento de Software
Modelo V - Desenvolvimento de SoftwareModelo V - Desenvolvimento de Software
Modelo V - Desenvolvimento de Software
 
Aps lista de exercícios
Aps lista de exercíciosAps lista de exercícios
Aps lista de exercícios
 
Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de Software
 
Engenharia de Software Ágil (Scrum e FDD)
Engenharia de Software Ágil (Scrum e FDD)Engenharia de Software Ágil (Scrum e FDD)
Engenharia de Software Ágil (Scrum e FDD)
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentação
 
Diagrama de Estados
Diagrama de EstadosDiagrama de Estados
Diagrama de Estados
 
Aula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOK
Aula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOKAula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOK
Aula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOK
 

Viewers also liked

FDD (Feature Driven Development)
FDD (Feature Driven Development)FDD (Feature Driven Development)
FDD (Feature Driven Development)urumisama
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven developmentKhanh Nguyen
 
Aula FDD CESAR Recife GAP
Aula FDD CESAR Recife GAPAula FDD CESAR Recife GAP
Aula FDD CESAR Recife GAPJorge Bublitz
 
Cursos Agile Think - Feature Driven Development (FDD) - 4/4
Cursos Agile Think - Feature Driven Development (FDD) - 4/4Cursos Agile Think - Feature Driven Development (FDD) - 4/4
Cursos Agile Think - Feature Driven Development (FDD) - 4/4André Vidal
 
Metodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y EmergentesMetodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y EmergentesMiguel Rodríguez
 
Engenharia de Software 100% Agil (SCRUM, FDD e XP)
Engenharia de Software 100% Agil (SCRUM, FDD e XP)Engenharia de Software 100% Agil (SCRUM, FDD e XP)
Engenharia de Software 100% Agil (SCRUM, FDD e XP)Rildo (@rildosan) Santos
 
FDD vs XP vs SCRUM
FDD vs XP vs SCRUMFDD vs XP vs SCRUM
FDD vs XP vs SCRUMfredcobain
 
Feature Driven Development – Desenvolvimento Guiado por Funcionalidades
Feature Driven Development – Desenvolvimento Guiado por FuncionalidadesFeature Driven Development – Desenvolvimento Guiado por Funcionalidades
Feature Driven Development – Desenvolvimento Guiado por FuncionalidadesHiury Araújo
 
Reuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de FeaturesReuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de FeaturesThiago Pereira
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven DevelopmentUlas Karademir
 
Gestão Ágil de Projetos com Scrum e FDD - Manoel Pimentel
Gestão Ágil de Projetos com Scrum e FDD - Manoel PimentelGestão Ágil de Projetos com Scrum e FDD - Manoel Pimentel
Gestão Ágil de Projetos com Scrum e FDD - Manoel PimentelManoel Pimentel Medeiros
 
Fdd em uma casca de banana
Fdd em uma casca de bananaFdd em uma casca de banana
Fdd em uma casca de bananaejedelmal
 
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De ProcessoUma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processocrc1404
 
Reuso de software
Reuso de softwareReuso de software
Reuso de softwarerebekinha
 

Viewers also liked (20)

FDD (Feature Driven Development)
FDD (Feature Driven Development)FDD (Feature Driven Development)
FDD (Feature Driven Development)
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven development
 
Ejemplo de fdd
Ejemplo de fddEjemplo de fdd
Ejemplo de fdd
 
Aula FDD CESAR Recife GAP
Aula FDD CESAR Recife GAPAula FDD CESAR Recife GAP
Aula FDD CESAR Recife GAP
 
Cursos Agile Think - Feature Driven Development (FDD) - 4/4
Cursos Agile Think - Feature Driven Development (FDD) - 4/4Cursos Agile Think - Feature Driven Development (FDD) - 4/4
Cursos Agile Think - Feature Driven Development (FDD) - 4/4
 
Fdd presentation
Fdd presentationFdd presentation
Fdd presentation
 
Metodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y EmergentesMetodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y Emergentes
 
Engenharia de Software 100% Agil (SCRUM, FDD e XP)
Engenharia de Software 100% Agil (SCRUM, FDD e XP)Engenharia de Software 100% Agil (SCRUM, FDD e XP)
Engenharia de Software 100% Agil (SCRUM, FDD e XP)
 
FDD vs XP vs SCRUM
FDD vs XP vs SCRUMFDD vs XP vs SCRUM
FDD vs XP vs SCRUM
 
Feature Driven Development – Desenvolvimento Guiado por Funcionalidades
Feature Driven Development – Desenvolvimento Guiado por FuncionalidadesFeature Driven Development – Desenvolvimento Guiado por Funcionalidades
Feature Driven Development – Desenvolvimento Guiado por Funcionalidades
 
Reuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de FeaturesReuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de Features
 
Rup e metodos ágies
Rup e metodos ágiesRup e metodos ágies
Rup e metodos ágies
 
Reúso
ReúsoReúso
Reúso
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
 
Gestão Ágil de Projetos com Scrum e FDD - Manoel Pimentel
Gestão Ágil de Projetos com Scrum e FDD - Manoel PimentelGestão Ágil de Projetos com Scrum e FDD - Manoel Pimentel
Gestão Ágil de Projetos com Scrum e FDD - Manoel Pimentel
 
Que tal fdd
Que tal fddQue tal fdd
Que tal fdd
 
Fdd em uma casca de banana
Fdd em uma casca de bananaFdd em uma casca de banana
Fdd em uma casca de banana
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
 
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De ProcessoUma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
 
Reuso de software
Reuso de softwareReuso de software
Reuso de software
 

Similar to FDD - Feature Driven Development

Este trabalho trata
Este trabalho trataEste trabalho trata
Este trabalho trataRoni Reis
 
Feature Driven Development (FDD)
Feature Driven Development (FDD)Feature Driven Development (FDD)
Feature Driven Development (FDD)Vitor Pacheco
 
1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCPFrank Coelho
 
1 apresentacao metodologia rcp
1  apresentacao metodologia rcp1  apresentacao metodologia rcp
1 apresentacao metodologia rcpFrank Coelho
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
Texto de Apoio2_Síntese de Metodologias Ageis.ppt
Texto de Apoio2_Síntese de Metodologias Ageis.pptTexto de Apoio2_Síntese de Metodologias Ageis.ppt
Texto de Apoio2_Síntese de Metodologias Ageis.pptHurgelNeto
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Rennan Martini
 

Similar to FDD - Feature Driven Development (20)

38484931 questionario-es
38484931 questionario-es38484931 questionario-es
38484931 questionario-es
 
Feature Driven Development - FDD
Feature Driven Development - FDDFeature Driven Development - FDD
Feature Driven Development - FDD
 
Rational Unified Process (RUP)
Rational Unified Process (RUP)Rational Unified Process (RUP)
Rational Unified Process (RUP)
 
Este trabalho trata
Este trabalho trataEste trabalho trata
Este trabalho trata
 
Desenvolvimento Ágil
Desenvolvimento ÁgilDesenvolvimento Ágil
Desenvolvimento Ágil
 
Metodologias Ageis
Metodologias AgeisMetodologias Ageis
Metodologias Ageis
 
Metodologias Ageis
Metodologias AgeisMetodologias Ageis
Metodologias Ageis
 
Métodos ágeis de desenvolvimento2
Métodos ágeis de desenvolvimento2Métodos ágeis de desenvolvimento2
Métodos ágeis de desenvolvimento2
 
Métodos Ágeis
Métodos ÁgeisMétodos Ágeis
Métodos Ágeis
 
Feature Driven Development (FDD)
Feature Driven Development (FDD)Feature Driven Development (FDD)
Feature Driven Development (FDD)
 
1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP
 
1 apresentacao metodologia rcp
1  apresentacao metodologia rcp1  apresentacao metodologia rcp
1 apresentacao metodologia rcp
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
ageis2003.ppt
ageis2003.pptageis2003.ppt
ageis2003.ppt
 
ageis2003.ppt
ageis2003.pptageis2003.ppt
ageis2003.ppt
 
IBM Rational Unified Process
IBM Rational Unified ProcessIBM Rational Unified Process
IBM Rational Unified Process
 
Texto de Apoio2_Síntese de Metodologias Ageis.ppt
Texto de Apoio2_Síntese de Metodologias Ageis.pptTexto de Apoio2_Síntese de Metodologias Ageis.ppt
Texto de Apoio2_Síntese de Metodologias Ageis.ppt
 
Aula2 processos sw
Aula2 processos swAula2 processos sw
Aula2 processos sw
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)
 
Subm_SamuelPereira_FINAL
Subm_SamuelPereira_FINALSubm_SamuelPereira_FINAL
Subm_SamuelPereira_FINAL
 

More from Engenharia de Software Ágil

OCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechadoOCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechadoEngenharia de Software Ágil
 

More from Engenharia de Software Ágil (20)

Sap – stablility and abstract principle
Sap – stablility and abstract principleSap – stablility and abstract principle
Sap – stablility and abstract principle
 
Sap – stablility and abstract principle
Sap – stablility and abstract principleSap – stablility and abstract principle
Sap – stablility and abstract principle
 
Sap – stablility and abstract principle
Sap – stablility and abstract principleSap – stablility and abstract principle
Sap – stablility and abstract principle
 
Common closure principle
Common closure principleCommon closure principle
Common closure principle
 
Common closure principle
Common closure principle Common closure principle
Common closure principle
 
Acyclic dependencies principle
Acyclic dependencies principleAcyclic dependencies principle
Acyclic dependencies principle
 
Acyclic dependencies principle (adp)
Acyclic dependencies principle  (adp)Acyclic dependencies principle  (adp)
Acyclic dependencies principle (adp)
 
Reuse release equivalence principle
Reuse release equivalence principleReuse release equivalence principle
Reuse release equivalence principle
 
Rep reuse release equivalence principle
Rep reuse release equivalence principleRep reuse release equivalence principle
Rep reuse release equivalence principle
 
OCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechadoOCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechado
 
Sdp – stable dependencies principles
Sdp – stable dependencies principlesSdp – stable dependencies principles
Sdp – stable dependencies principles
 
principio de reutilização comum
principio de reutilização comumprincipio de reutilização comum
principio de reutilização comum
 
Princípio law of demeter
Princípio law of demeterPrincípio law of demeter
Princípio law of demeter
 
Lod law of demeter
Lod law of demeterLod law of demeter
Lod law of demeter
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
(ISP) - Interface Segregation Principle
(ISP)  - Interface Segregation Principle(ISP)  - Interface Segregation Principle
(ISP) - Interface Segregation Principle
 
LSP – The Liskov Substitution Principle
LSP – The Liskov Substitution PrincipleLSP – The Liskov Substitution Principle
LSP – The Liskov Substitution Principle
 
SRP - Single Responsability Principle
SRP - Single Responsability PrincipleSRP - Single Responsability Principle
SRP - Single Responsability Principle
 

FDD - Feature Driven Development

  • 1. FDD – Feature Driven Development Prof. Marcio Sete Alunos: Fabiano Nunes Santos Guilherme Cekiera Philippe Costa Roberson Campos Saulo Alves Grego Vinícius Silva Andrade
  • 2. O que é FDD Feature Driven Development (Desenvolvimento Guiado por Funcionalidades): É uma metodologia ágil para gerenciamento e desenvolvimento de software. Ela combina as melhores práticas do gerenciamento ágil de projetos com uma abordagem completa para Engenharia de Software orientada por objetos.
  • 3. O que é Feature? Funcionalidade É uma funcionalidade para o detalhamento e uma característica pequena para ser implementada, no máximo em um iteração, oferecendo assim o valor ao cliente <ação><resultado><objeto>
  • 4. História da FDD 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 Jeff de Luca Coad e de gerenciamento de projetos por Jeff de Luca. Foi inicialmente publicada em 1999, no capítulo 6 do livro “Java Modeling in Color with UML”, de Peter Coad, Eric Lefebvre e Jeff de Luca. Peter Coad Seu lema é: “Resultados frequentes, tangíveis e funcionais.”
  • 5. Características A FDD chama a atenção por algumas características peculiares: Resultados úteis a cada duas semanas ou menos Blocos bem pequenos de funcionalidade valorizada pelo cliente, chamados "Features“ Não existem restrições quanto à complexidade do sistema e tamanho da equipe Planejamento detalhado e guia para medição Rastreabilidade e relatórios com precisão Monitoramento detalhado dentro do projeto, com resumos de alto nível para clientes e gerentes, tudo em termos de negócio Fornece uma forma de saber, dentro dos primeiros 10% de um projeto, se o plano e a estimativa são sólidos
  • 6. Padrões do FDD Segundo 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;
  • 7. Práticas do FDD Modelagem dos objetos de domínio; Desenvolvendo através de funcionalidades; Propriedade individual das classes; Equipes de funcionalidades; Inspeções; Construções regulares; Administração de configuração; Relatórios de resultados;
  • 8. Práticas do FDD Modelagem dos objetos de Domínio Construção de diagramas de classes UML (Unified Modeling Language) que descrevem os objetos relevantes dentro do domínio do problema, bem como os relacionamentos entre eles. Para complementar os diagramas de classe UML, são desenvolvidos diagramas de seqüência UML que descrevem explicitamente como os objetos interagem para cumprir suas responsabilidades.
  • 9. Práticas do FDD Desenvolvendo através de funcionalidades É feita a identificação das funcionalidades do sistema (definidas pelo cliente). Após isso, inicia-se o projeto e a construção de cada uma delas. Uma vez identificadas, as funcionalidades serão utilizadas para guiar o desenvolvimento no FDD, tendo como objetivo mostrar o progresso através da implementação das mesmas. A execução das funcionalidades, ou conjunto delas, não deve exceder de duas semanas.
  • 10. Práticas do FDD Propriedade individual das classes Cada classe ou conjunto de classes é de responsabilidade de um indivíduo. Isso pode ser uma vantagem e uma grande desvantagem em alguns pontos de vista, pois a saída do programador proprietário da classe pode gerar perda de tempo no projeto.
  • 11. Práticas do FDD Equipes de funcionalidades A prática da propriedade individual da classe atribui classes a desenvolvedores específicos. Contudo, sabe- se que o desenvolvimento deve ser por funcionalidade. Por isso, são definidas equipes, com seus respectivos desenvolvedores líderes, onde os componentes possuem as propriedades das classes, e é atribuído a eles um conjunto de funcionalidades. A equipe de funcionalidades deve ter no mínimo 3 e no maximo 6 programadores envolvidos.
  • 12. Práticas do FDD Inspeções Devem ser feitas durante e ao final de cada iteração, para assegurar a qualidade do projeto e do código. O objetivo principal das inspeções é a detecção de defeitos. É uma ferramenta para eliminação de erros e uma grande oportunidade de aprendizado.
  • 13. Práticas do FDD Construções regulares Devem ocorrer durante as iterações, na execução de um conjunto de funcionalidades, para detectar, prematuramente, erros de integração. Uma construção regular assegura também que haja sempre um sistema atual e executável para ser apresentado ao cliente.
  • 14. Práticas do FDD Administração de configuração Utilização de um sistema de controle de versões para datar e manter um histórico das alterações feitas em cada classe. Bem como, no que se refere aos requisitos, análise e o projeto de modo que facilite a visualização das modificações feitas.
  • 15. Práticas do FDD Relatórios de resultados O FDD sugere que todos os resultados ocorridos durante o projeto sejam disseminados para todos os membros da equipe e clientes.
  • 16. Papéis Principais Apoio Adicionais
  • 17. Papéis principais Gerente de projeto Arquiteto chefe Gerente de desenvolvimento Programador chefe Proprietário de classe Especialista do domínio
  • 18. Papéis principais Gerente de projeto Responsável financeiro e administrativo do projeto. Uma de suas responsabilidades é gerenciar a viabilidade do projeto oferecendo todas as condições necessárias à equipe para o desenvolvimento do trabalho. No FDD, a “última palavra” é dada por ele.
  • 19. Papéis principais Arquiteto chefe Elabora o projeto geral do software a ser desenvolvido, tomando decisões finais em relação ao projeto técnico. Essa função poderá ser dividida entre o Projetista de Domínio e o Projetista Técnico.
  • 20. Papéis principais Gerente de desenvolvimento Responsável por gerenciar as atividades diárias do projeto resolvendo problemas que poderão ocorrer com a equipe. Pode combinar as atividades desenvolvidas pelo Arquiteto Principal e Gerente de Projeto.
  • 21. Papéis principais Proprietário de classe Geralmente é o programador com maior experiência dentro da equipe, participando na análise dos requisitos e no projeto do software. Considerado como um dos papéis mais importantes no projeto FDD. Atua principalmente nas duas últimas etapas do processo.
  • 22. Papéis principais Proprietário de classe Subordinado do Programador Chefe, tendo como tarefas projetar, codificar, testar e documentar. Responsável pelo desenvolvimento das classes atribuídas a ele.
  • 23. Papéis principais Especialista do domínio Pode ser um usuário, analista de negócios, cliente ou qualquer pessoa que conheça bem o domínio do problema. Sua tarefa é informar as funcionalidades que deverão ser atendidas pelo software e entender como os requisitos estão sendo desenvolvidos.
  • 24. Papéis de apoio Gerente do domínio Gerente de versão Especialista (guru) de linguagem Coordenador de construção “Ferramenteiro” (toolsmith) Administrador de sistema
  • 25. Papéis de apoio Gerente do domínio Conduz os peritos de domínio a resolver as diferenças de opinião relativa aos requisitos do sistema.
  • 26. Papéis de apoio Gerente de versão Responsável por controlar o progresso no desenvolvimento através de constantes revisões em conjunto com o Programador Chefe. Informa suas atividades ao Gerente de Projeto.
  • 27. Papéis de apoio Especialista (guru) de linguagem Membro da equipe responsável por possuir um conhecimento completo de uma linguagem de programação específica ou tecnologia. Este papel é particularmente importante quando é usada uma nova tecnologia.
  • 28. Papéis de apoio Coordenador de construção Pessoa responsável pelas tarefas de administração do sistema de controle de versão e a publicação da documentação, durante a atividade de construção.
  • 29. Papéis de apoio “Ferramenteiro” (toolsmith) Responsável por construir ferramentas de suporte para o desenvolvimento, teste e conversão de dados no projeto. Também pode trabalhar com modelagem e manutenção de bancos de dados e websites para propósitos específicos do projeto.
  • 30. Papéis de apoio Administrador de sistema Possui a tarefa de configurar, administrar e diagnosticar os servidores, estações de trabalho e desenvolvimento e testar os ambientes usados pela equipe do projeto.
  • 31. Papéis adicionais Testador Desenvolvedores Escritor técnico
  • 32. Papéis adicionais Testador Verificam se o sistema que está sendo produzido satisfará os requisitos do cliente.
  • 33. Papéis adicionais Desenvolvedor Responsáveis por converter dados existentes ao formato requerido pelo novo sistema e participar no desenvolvimento de novos lançamentos.
  • 34. Papéis adicionais Escritor técnico Responsável pela documentação de usuário.
  • 35. Time Formados dinamicamente: única forma de desenvolver por feature (funcionalidade) e manter a posse do código; Sob a coordenação de um programador chefe; Múltiplas mentes projetando; Membros são os Donos de Classes relevantes; Enfatiza o trabalho em equipe;
  • 36. Fases do FDD A FDD é uma metodologia muito objetiva que possui cinco fases e essas podem ser divididas em duas etapas: Concepção & Planejamento: Pensar no modelo, criar uma lista de características e planejar através delas. Essa fase é executada apenas uma vez e dura de uma a duas semanas. Construção: Desenvolvimento iterativo e incremental durante um período de tempo de no máximo 2 semanas.
  • 38. Concepção & Planejamento Desenvolver um modelo abrangente Construir a lista de funcionalidades Planejar por funcionalidade
  • 39. Desenvolver modelo abrangente Formar o time de modelagem. Conduzir o Domain Walkthrough. Estudar documentação. Desenvolver modelos de pequenos grupos. Desenvolver modelo da equipe. Refinar o Modelo Abrangente. Escrever Notas.
  • 40. Desenvolver modelo abrangente O Modelo de Domínio Criado Será decomposto por 3 camadas: Área de Negócio. Atividade de Negócio. Automatização da Atividade (Funcionalidade).
  • 41. Construir a lista de funcionalidades Construção de uma lista de funcionalidades importantes para o cliente onde a lista representara o produto final a ser desenvolvido, podendo ser necessário a inclusão de novas funcionalidades no modelo de domínio a cada iteração.
  • 42. Construir a lista de funcionalidades Sistema ou Aplicação Área de Negócio Área de Negócio Atividade de Negócio FBS (Feature Breakdown Structure) Atividade de Negócio Funcionalidade Funcionalidade
  • 43. Planejar por funcionalidade Determinar a seqüência do desenvolvimento . Atribuir atividades de Negócio aos Programadores-chefes. Atribuir Classes aos Desenvolvedores.
  • 44. Construção Detalhar por funcionalidade Construir por funcionalidade
  • 45. Detalhar por funcionalidade Já dentro de uma iteração de construção, a equipe detalha os requisitos e outros artefatos para a codificação de cada funcionalidade, incluindo os testes. O projeto para as funcionalidades é inspecionado e o modelo abrangente é atualizado. O resultado é o modelo de domínio mais detalhado e os esqueletos de código como declaração de métodos, tipagem, atributos e parâmetros prontos para serem preenchidos.
  • 46. Construir por funcionalidade Cada esqueleto de código é preenchido, testado e inspecionado de acordo com o modelo abrangente. O resultado é um incremento do produto integrado ao repositório principal do código após ter sido devidamente testado por um outro membro da equipe se necessário, com qualidade e potencial para ser usado pelo cliente.
  • 48. FDD x Scrum Eles são compatíveis? Qual é o papel de cada um no desenvolvimento de software? Eles são complementares?
  • 50. Vantagens Recomendado para qualquer tipo de desenvolvimento; Foco em “características de valor para o cliente”; FDD prioriza aquilo que o cliente prioriza; FDD possui requisitos mais formais; Seus princípios e práticas proporcionam um equílibrio entre as filosofias tradicionais e as mais extremas, proporcionando uma transição mais suave para organizações mais conservadoras;
  • 51. Desvantagens Ainda existem questionamento sobre a eficácia / aplicabilidade de FDD; Controvérsias sobre o tamanho mínimo de um time FDD;
  • 52. Conclusão É um método ágil e altamente adaptativo; Oferece vantagens dos métodos pesados; Oferece vantagens dos métodos extremamente ágeis; É orientada às necessidades dos clientes, gerentes e desenvolvedores;
  • 53. Referencias Feature Driven Development; 2007; Setti Rodrigo, Gameiro Lucas, Boscariol Lendro, Leal Flavio http://www.featuredrivendevelopment.com/ Modelagem da Interação do usuário com o sistema em métodos ágeis; 2009; Cecilia Giuffra Palomino FDD Numa Casca de banana, Um guia de rápido aprendizado para a Feature Driven Development; Mar 2007; Alexandre Magno Figueiredo