FDD FeatureDriven Development Igor Cavalcanti igor cavalcanticesar org

  • Slides: 37
Download presentation
FDD Feature-Driven Development Igor Cavalcanti igor. cavalcanti@cesar. org. br

FDD Feature-Driven Development Igor Cavalcanti igor. cavalcanti@cesar. org. br

O estado atual dos projetos w Resultados pobres n n n Planejamento pobre ou

O estado atual dos projetos w Resultados pobres n n n Planejamento pobre ou incompleto Falta de entendimento das questões de negócio ou técnico Falha em não colocar as necessidades dos clientes ou dos usuários finais em primeiro lugar w Estouro de cronograma, e entrega de produtos indesejáveis

Feature Driven Development FDD w O que é? n n n é um processo

Feature Driven Development FDD w O que é? n n n é um processo definido para produzir resultados freqüentes, tangíveis e que funcionem É um processo pragmático, centrado no cliente e na arquitetura combina as principais vantagens de outras abordagens ágeis com técnicas centradas no modelo possui iterações curtas e altamente adaptativas introduzido em 1999 por Jeff De. Luca, Peter Coad e Steve Palmer num desenvolvimento de um projeto grande em Singapura descreve uma série de passos a seguir – desde a concepção até a implementação.

Introduzido aqui. . .

Introduzido aqui. . .

Expandido aqui. . .

Expandido aqui. . .

Feature Driven Development FDD w Por que usar? n n n Clientes têm resultados

Feature Driven Development FDD w Por que usar? n n n Clientes têm resultados rápidos e relatório do status numa linguagem que eles entendem Gerentes de projeto têm uma visão completa e exata do status do projeto Desenvolvedores conseguem trabalhar em novas coisas em poucos dias e ficam mais envolvidos em análise, projeto e codificação

Característica – O que é? w São blocos muito pequenos de funcionalidades w São

Característica – O que é? w São blocos muito pequenos de funcionalidades w São organizados em grupos de negócio relacionados: n n Conjuntos de Características (atividades de negócio) Conjuntos de Características Principais (áreas do domínio) w São expressadas na forma <ação> <resultado> <objeto>

Característica - exemplo w Área de Características Principal n Gerenciamento de venda de produtos

Característica - exemplo w Área de Características Principal n Gerenciamento de venda de produtos w Conjunto de Características n n cacl. Total 1 Vender para um cliente w Características n Cliente Calcular o total de vendas Calcular o total de compras de um cliente Estimar o tempo de entrega de uma venda Calcular a taxa de uma venda 0. . * Venda cacl. Total estimativa. Entrega

Os Papéis w Papéis principais n n n Gerente de projeto Arquiteto chefe Especialistas

Os Papéis w Papéis principais n n n Gerente de projeto Arquiteto chefe Especialistas no domínio Gerentes de desenvolvimento Programadores chefes Proprietários de classes

Melhores Práticas do FDD w w w w Modelagem do objeto do domínio Desenvolver

Melhores Práticas do FDD w w w w Modelagem do objeto do domínio Desenvolver por características Propriedade individual de classes Equipes de características Inspeções Construção de builds regulares Gerência de configuração Comunicação dos resultados

Os 5 processos do FDD 1. Desenvolver um Modelo geral Modelo de Objeto (mais

Os 5 processos do FDD 1. Desenvolver um Modelo geral Modelo de Objeto (mais formas do que conteúdo) 2. Construir uma lista de características Uma lista de características categorizada 3. Planejar através de característica Um plano de desenvolvimento (mais conteúdo do que forma) 4. Projetar através de característica 5. Construir através de característica Um pacote de projeto (seqüências) Uma função do cliente completada

Descrição dos Processos de FDD w Cada processo é descrito em não mais do

Descrição dos Processos de FDD w Cada processo é descrito em não mais do que duas páginas de papel tamanho carta, frente-e -verso w Cada descrição do processo apresenta-se de acordo com a estrutura: Entrada, Tarefas, Verificação e Saídas (ETVX)

FDD Processo #1: Desenvolver um modelo geral w Adquirir conhecimento do domínio e construir

FDD Processo #1: Desenvolver um modelo geral w Adquirir conhecimento do domínio e construir o modelo geral n n Estabelecimento do “propósito de negócio” do novo sistema Construção de um “modelo conceitual” do sistema

FDD Processo #1 - Atividades Formar a Equipe de Modelagem Estudo dirigido sobre o

FDD Processo #1 - Atividades Formar a Equipe de Modelagem Estudo dirigido sobre o Domínio Estudar Documentos Desenvolver pequenos Modelos de Grupo Desenvolver um Modelo da Equipe Refinar o Modelo Geral Escrever Anotações do Modelo

FDD Processo #1: Entradas e Saídas w Entrada n Especialistas no domínio, programadores e

FDD Processo #1: Entradas e Saídas w Entrada n Especialistas no domínio, programadores e arquitetos chefes são selecionados w Saídas n n Modelo geral do domínio Diagrama das classes principais com alguns métodos e atributos identificados Diagramas de seqüência de algumas funcionalidades mais complexas (se houver) Comentário sobre o modelo

FDD Processo #2: Construir lista de características w O domínio é decomposto até chegar

FDD Processo #2: Construir lista de características w O domínio é decomposto até chegar nas características w Características são agrupadas e categorizadas w Características são granuladas até ser necessário menos de 2 semanas pro seu desenvolvimento

FDD Processo #2 - Atividades Formar a Equipe da Lista de Características Construir a

FDD Processo #2 - Atividades Formar a Equipe da Lista de Características Construir a lista de características

FDD Processo #2: Entradas e Saídas w Entrada n O processo #1 ter sido

FDD Processo #2: Entradas e Saídas w Entrada n O processo #1 ter sido concluído com sucesso w Saídas n n n Uma lista das áreas do domínio identificadas Para cada área, uma lista de atividades de negócio (conjunto de características) Para cada atividade, os passos a serem realizados (características)

FDD Processo #3: Planejar através de características w Uma data de lançamento é estabelecida

FDD Processo #3: Planejar através de características w Uma data de lançamento é estabelecida para o release inicial w A lista de características priorizadas é refinada w O trabalho técnico é planejado e atribuído – plano de desenvolvimento

FDD Processo #3 - Atividades Formar a Equipe de Planejamento Determinar a Seqüência de

FDD Processo #3 - Atividades Formar a Equipe de Planejamento Determinar a Seqüência de Desenvolvimento Atribuir Conjuntos de Características para Programadores Chefes Atribuir Classes para Desenvolvedores

FDD Processo #3: Entradas e Saídas w Entrada n O processo de construir a

FDD Processo #3: Entradas e Saídas w Entrada n O processo de construir a lista de características (processo #2) ter sido concluído com sucesso w Saídas n n n Atividades de negócio com datas de término Programadores-chefes atribuídos a atividades de negócio A lista de classes e seus donos (desenvolvedores)

FDD Processo #4: Projetar através de características w Regras e transações são identificadas w

FDD Processo #4: Projetar através de características w Regras e transações são identificadas w O modelo da interface do usuário é esboçado w Diagramas de seqüência mais detalhados são produzidos w Especialistas são consultados para descobrir qualquer necessidade específica adicional

FDD Processo #4 - Atividades Formar a Equipe de Características Estudo do Domínio Estudar

FDD Processo #4 - Atividades Formar a Equipe de Características Estudo do Domínio Estudar Documentos de Referências Desenvolver Diagramas de Seqüência Refinar o Modelo Descrever os prefácios de classes e métodos

FDD Processo #4: Entradas e Saídas w Entrada n O processo de planejado (processo

FDD Processo #4: Entradas e Saídas w Entrada n O processo de planejado (processo #3) ter sido concluído com sucesso w Saídas n n n Diagramas de seqüência Projetos alternativos (caso exista) O modelo de objeto com classes, métodos e atributos novos ou atualizados A documentação da API do sistema Lista de tarefas (calendário/ To-Do)

FDD Processo #5: Construir através de características w Características são construídas implementando todas as

FDD Processo #5: Construir através de características w Características são construídas implementando todas as classes e métodos necessários w Testes de unidades w Características são inseridas no build quando o teste resulta em sucesso

FDD Processo #5 - Atividades Codificar Testar Unidades Inspecionar Código Promover à versão atual

FDD Processo #5 - Atividades Codificar Testar Unidades Inspecionar Código Promover à versão atual (Build) Ponto de integração para a funcionalidade inteira

FDD Processo #5: Entradas e Saídas w Entrada n O processo anterior ter sido

FDD Processo #5: Entradas e Saídas w Entrada n O processo anterior ter sido concluído com sucesso w Saídas n n n Classe(s) e/ou método(s) que passaram na inspeção de código com sucesso Classes inseridas no build A conclusão da funcionalidade do cliente

Divulgando Resultados w Cada característica é uma unidade planejada de trabalho que pode ser

Divulgando Resultados w Cada característica é uma unidade planejada de trabalho que pode ser devolvida w A soma de características entregues é igual ao status do projeto

Os seis marcos do FDD Projetar pelas características Construir pelas características Análise do domínio

Os seis marcos do FDD Projetar pelas características Construir pelas características Análise do domínio Projeto Inspeção do projeto Código Inspeção do código Geração de build 1% 40% 3% 45% 10% 1%

Relatando resultados KEY: Work In Progress Attention Completed Not Started

Relatando resultados KEY: Work In Progress Attention Completed Not Started

Relatando resultados

Relatando resultados

Relatando resultados CP-1 Status Geral: Trabalhos em progresso Atenção (ie, atrasado) Completo Fazendo avaliação

Relatando resultados CP-1 Status Geral: Trabalhos em progresso Atenção (ie, atrasado) Completo Fazendo avaliação de produtos (14) Não iniciado Porcentagem completa: 75% Completo MY Mês de conclusão Conjunto de características: Fazendo avaliação de produtos – Trabalho em progresso CP-1 é o programador chefe inicial (14) esse conjunto de características possui 14 características Conjunto de características está 75% completado Barra de progresso Status Completo: Exemplo: Dez 2001 A conclusão é para dezembro de 2001

Relatando resultados Product Sale Management (PS) CP-1 CP-3 CP-1 Selling Products Shipping Products Delivering

Relatando resultados Product Sale Management (PS) CP-1 CP-3 CP-1 Selling Products Shipping Products Delivering Products Invoicing Sales (22) (19) (10) (33) 99% 10% 3% Nov 2001 Dec 2001 CP-2 Setting up Product Agreements (13) CP-2 Dec 2001 Inventory Mgmt (IM) CP-2 CP-3 Opening New Accounts (11) Logging Account Transactions (30) Establishing Storage Units (26) Accepting Movement Requests (18) 95% 100% 82% 100% 97% Oct 2001 Nov 2001 Work In Progress Nov 2001 Attention Completed CP-3 Evaluating Account Applications (23) KEY: Making Product Assessments (14) 75% Customer A/C Mgmt (CA) CP-2 CP-1 Progress Bar Moving Content (19) 82% Nov 2001 Not Started

Relatando resultados

Relatando resultados

Conclusão w FDD n n n n Fornece clareza Eleva o controle Facilita a

Conclusão w FDD n n n n Fornece clareza Eleva o controle Facilita a comunicação – reporta resultados Status do projeto completo é determinado pelas características entregues Características quebram o trabalho em entregas menores e mais gerenciáveis Builds regulares É bom para os desenvolvedores, gerentes e clientes. . .

Referências w A Practical Guide to Feature-Driven Development n Stephen R. Palmer, John M.

Referências w A Practical Guide to Feature-Driven Development n Stephen R. Palmer, John M. Felsing w http: //www. featuredrivendevelopment. com/ w http: //www. nebulon. com/fdd/ w http: //br. groups. yahoo. com/group/gufdd/ w http: //www. fddmanager. com/ w http: //fddtools. sourceforge. net/ w http: //www. agilemodeling. com/essays/fdd. htm w http: //en. wikipedia. org/wiki/Feature_Driven_Development

Feature-Driven Development Dúvidas ? ?

Feature-Driven Development Dúvidas ? ?