43
FDD Desenvolvimento dirigido a funcionalidades 2 Luiz Fernando Maurício de Souza Sidemar Fidelis Cezario

Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Embed Size (px)

Citation preview

Page 1: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

FDD Desenvolvimento dirigido a funcionalidades

2

Luiz Fernando Maurício de Souza

Sidemar Fidelis Cezario

Page 2: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Agenda

FDD;

Melhores práticas do FDD;

Principais papéis;

Processos.

Page 3: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

FDD

Metodologia interativa e incremental de

gerenciamento e engenharia de software;

Possui ênfase na qualidade em todo o processo e

um monitoramento de progresso direto, preciso e

intuitivo;

Entrega tangível e freqüente de software funcional.

Page 4: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Histórico

Criado em 1997 em projeto para um banco em

Singapura;

Inicialmente publicado em 1999;

Page 5: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

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.

Page 6: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Características da FDD

Fornece a estrutura suficiente para equipes

maiores;

Enfatiza a produção de software de qualidade;

Entrega resultados freqüentes;

Realiza trabalho significativo desde do início;

Agrada cliente, gerentes e desenvolvedores.

Page 7: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

O que é Feature?

Característica ou funcionalidade;

Mapeia passos em uma atividade de negócio;

Conceito muito próximo de requisito funcional.

Page 8: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Melhores práticas da FDD

Modelagem de objetos do domínio;

Desenvolvimento por funcionalidades;

Posse individual de classe;

Equipes de Features;

Page 9: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Melhores práticas da FDD

Inspeções;

Builds regulares;

Gerenciamento de configuração;

Relatório/Visibilidade de resultados.

Page 10: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Modelagem de objetos do domínio

Diagramas de classe com os principais tipos de

objetos no domínio do problema e suas relações;

Auxilia no levantamento e esclarecimento dos

requisitos;

Possibilita um entendimento comum e mais

completo sobre o domínio do problema;

Page 11: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Desenvolvimento por funcionalidade

Pensamento sistêmico, visando o resultado final;

Teste objetivo;

Garante a distribuição organizada de

responsabilidades por meio de classes;

Page 12: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Posse individual de classe

Estimula o responsável final pelo conteúdo de uma

classe;

Especialista para classes complexas ou críticas

para o negócio;

Page 13: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Equipes de Features

Formadas dinamicamente;

Múltiplas mentes projetando;

Membros são os proprietários de classes

relevantes;

Enfatiza o trabalho em equipe.

Page 14: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Inspeções

Quando bem feitas, são muito úteis na melhoria da

qualidade do design e do código;

Recomendadas desde de 1970;

Benefícios secundários.

Page 15: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Inspeções

Detecção antecipada de defeitos

Page 16: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Montagens freqüentes

Ajuda a antecipar erros de integração;

Garante que sempre haverá alguma coisa para

mostrar ao cliente;

Page 17: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Gerenciamento de configuração

Disciplina que suporta e controla as evoluções e

modificações em artefatos chaves;

Facilita o desenvolvimento de software;

Garantir a integridade dos produtos;

Controlar as modificações;

Page 18: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Gerenciamento de configuração

Tarefas rotineiras do gerenciamento de

configuração

Versionamento;

Gestão de mudanças;

Gestão de tarefas;

Page 19: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Gerenciamento de configuração

Tarefas rotineiras do gerenciamento de

configuração

Gerenciamento de processos;

Gerenciamento de montagens;

Gerenciamento de liberação.

Page 20: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Relatório /Visibilidade de resultados

Ter método simples, de baixa sobrecarga, para

coletar informações de progresso de forma

acurada e confiável;

Formatos de relatórios objetivos e intuitivos, para

todos interessados no projeto.

Page 21: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Principais papéis

Page 22: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Principais papéis

Gerente de Projeto

Coordena as ações da equipe do projeto;

Responsável pelo gerenciamento;

Responsável por todos os assuntos administrativos do

projeto.

Page 23: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Principais papéis

Gerente de Desenvolvimento

Possui habilidades técnicas e gerenciais para coordenar

as ações da equipe de desenvolvimento;

Lidera o desenvolvimento do produto;

Possui boa experiência no desenvolvimento de software

e nas tecnologias que estarão sendo

utilizadas no projeto.

Page 24: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Principais papéis

Especialista no domínio de negócio

Responsável por informar a equipe do projeto o que

deve ser feito para que o produto seja adequado às

necessidades dos usuários;

Compreende as regras e a dinâmica do domínio do

problema;

Page 25: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Principais papéis

Arquiteto Líder

Profissional com experiência em análise e modelagem

orientada a objetos;

Possui habilidade para atuar como facilitador na

absorção das regras de negócio;

Page 26: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Principais papéis

Programador Líder

Coordena o desenvolvimento das features, monta as

equipes de features e participa das definições técnicas;

Normalmente é atribuído ao programador líder a

propriedade das classes mais complexas do sistema;

Page 27: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Principais papéis

Proprietário de Classe

Desenvolvedor da equipe, ao qual foram atribuído

algumas classes do modelo;

Programa, diagrama, testa e documenta as

funcionalidades a ele atribuídas pelo programador

chefes da equipe;

Page 28: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Fases da FDD

Concepção e planejamento

Pensar um pouco antes de fazer (tipicamente de 1 a 2

semanas);

Construção

Fazer de forma iterativa (tipicamente em iterações de 2

semanas).

Page 29: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Processos

Desenvolver um modelo abrangente;

Construir a lista de features;

Planejar por features;

Detalhar por features;

Construir por features.

Page 30: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Desenvolver um modelo abrangente

Modelagem do processos de negócio;

Levantamento de requisitos;

Análise orientada por objetos;

É uma atividade inicial de estudo, análise e

modelagem do sistema.

Page 31: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Desenvolver um modelo abrangente

Artefatos produzidos

Diagrama de classe, seqüência, atividade, estado e caso

de uso;

Page 32: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Desenvolver um modelo abrangente

Page 33: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Construir a lista de features

Decomposição funcional do domínio do negócio;

Categorizada em 3 níveis:

Áreas de negócio;

Atividades de negócio;

Passos da atividade de negócios.

Page 34: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Construir a lista de features

Artefatos produzidos

Lista de features

Requisitos mais detalhados

Page 35: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Planejar por features

Ordena as funcionalidades que serão

implementadas, tendo como base:

Necessidades do usuário;

Dependências entre elas;

Carga de trabalho da equipe de desenvolvimento;

Complexidade

Page 36: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Planejar por features

Artefatos produzidos

Plano de desenvolvimento;

Pacotes de trabalho;

Lista de classes com seus donos.

Page 37: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Detalhar por features

A equipe de feature será formada pelos

proprietários das classes envolvidas.

Page 38: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Detalhar por features

Artefatos produzidos

Modelos detalhados;

Esqueletos de classes com métodos;

Pacote de trabalho detalhado;

Relatório de inspeção do design e relatório de

progresso atualizado.

Page 39: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Construir por features

Proprietários de classe desenvolvem o código

correspondente a cada feature;

Os testes de unidade e as inspeções são

realizadas;

O código final é promovido ao build atual;

O resultado são funções com valor para o

cliente (features).

Page 40: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Construir por features

Artefatos produzidos

Código fonte testado e integrado;

Relatórios de inspeção e testes;

Lista de alterações feitas ou necessárias;

Relatório de progresso atualiza.

Page 41: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Construir por features

Page 42: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

Referências

FDD - Feature Driven Development. Disponível em:

http://www.sysevolution.com.br/metodologia-agil--software-de-colaboracao/agile--metodo-

agil--desenvolvimento-agil/feature-driven-development-desenvolvimento-guiado-por-

funcionalidades Acesso em: 20/02/2012

Ericb. Projeto de Software com FDD. Disponível em: http://engenharia-de-

software.nuvvo.com/lesson/11129-projeto-de-software-com-fdd Acesso em: 20/02/2012

Métodologia ágil de desenvolvimento de software FDD. Disponível em:

http://htwojsystem.wordpress.com/2011/06/26/metodologia-agil-de-desenvolvimento-de-

software-fdd/ Acesso em: 21/02/2012

O que é FDD?. Disponível em: http://www.heptagon.com.br/fdd-oque Acesso em:

21/02/2012

CALETTI, Eduardo. Um breve estudo sobre a metodologia ágil FDD. Dispinível em:

http://www.webartigos.com/artigos/um-breve-estudo-sobre-a-metodologia-agil-fdd/32061/

Acesso em: 22/02/2012

RETAMAL, ADAIL MUNIZ. Metodologias de Desenvolvimento: UDP, FDD e XP.

Disponível em: http://adailmr.sites.uol.com.br/artigos/fdd-udp-xp.htm Acesso em:

24/02/2012

Page 43: Desenvolvimento dirigido a funcionalidades - IFRN · É uma atividade inicial de estudo, análise e modelagem do sistema. Desenvolver um modelo abrangente ... Desenvolvimento dirigido

FDD Desenvolvimento dirigido a funcionalidades

2

Luiz Fernando Maurício de Souza

Sidemar Fidelis Cezario