Please enable JavaScript.
Coggle requires JavaScript to display documents.
FDD - Feature Driven Development - Coggle Diagram
FDD - Feature Driven Development
Etapas de Desenvolvimento: Padrão ETVX
Entrada: Especifica e define os critérios de entradas para as etapas.
Tarefa: É composto por uma lista com as tarefas que deverão ser realizadas.
Validação: Especifica tipos de avaliações (internas e externas) e inspeções de projeto e código.
Saída: Especifica os critérios de saída, definindo os produtos tangíveis.
Fases e Processos
Duas Fases: no FDD, o planejamento é realizado por processos, onde o conjunto de
processos se divide em duas fases:
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). Está sendo eficaz para projetos em que o processo de desenvolvimento é uma incógnita, cheio de mudanças. Aqui, o projeto como um todo tem muita importância, mas o processo é separado por áreas.
Cinco Processos: os cinco processos do FDD são bem definidos e integrados:
DMA (Desenvolver um Modelo Abrangente): Análise orientada por objetos o primeiro momento é de conhecer para analisar o sistema e o contexto em que ele está inserido, estudados os domínios do sistema e um modelo geral é desenvolvido com base nesses estudos. Criado o modelo geral, pequenas equipes são responsáveis por criar uma modelagem superficial para cada área de domínio do sistema.
CLF (Construir a Lista de Funcionalidades): Decomposição Funcional nesta fase é criada uma lista de funcionalidades do sistema, descrevendo e identificando a área de domínio de cada uma delas. São importantes para o processo porque cada uma é uma pequena tarefa que precisa ser implementada ao projeto, não devem levar mais de duas semanas para serem concluídos e são ordenados na lista por ordem de prioridade no desenvolvimento.
PPF (Planejar por Funcionalidade): Planejamento Incremental, de acordo com a lista de funcionalidades é feito o planejamento de desenvolvimento delas. Para cada funcionalidade são designados programadores-chefe que ficarão responsáveis por algumas classes ou códigos. A partir disso são formadas as equipes de planejamento e cada integrante da equipe é encarregado de uma parte do projeto.
DPF (Detalhar por Funcionalidade): Desenho (Projeto) orientado por objetos nessa etapa é criada uma modelagem com as funcionalidades a serem desenvolvidas. A diferença dessa modelagem é que o programador chefe a cria de acordo com uma funcionalidade específica e a divide em classes, métodos e atributos. Quando finalizada, a funcionalidade passa por testagens da equipe desenvolvedora.
CPF (Construir por Funcionalidade): Programação e Teste Orientados por Objetos o código
começa a ser implementado no sistema. Dessa forma, as funcionalidades são incorporadas e já podem ser colocadas em prática. Efetivado o código, ele é escrito e essa funcionalidade é concluída. Fazem parte dessa fase a implementação das regras de negócio das classes, a inspeção do código, a condução dos testes unitários e o release da funcionalidade.
Papeis (Cargos)
Gerente de Projeto: É o líder administrativo e financeiro do projeto: tem a palavra final no que se trata de escopo, cronograma e recursos do projeto. É quem trata das questões administrativas, Possui autonomia para decidir o que deverá ser feito, Prioriza toda e qualquer funcionalidade que entregue valor e consiga ser realizada durante um período de tempo pré-determinado. É o responsável também por toda a equipe, assegurando boas condições de trabalho para aumentar o rendimento de todos os envolvidos, além de decidir o que será realizado durante a iteração definida.
Gerente de Desenvolvimento: É o líder nas atividades diárias do desenvolvimento. É responsável por resolver qualquer tipo de conflito que venha a ocorrer dentro da equipe. Responsável por retirar qualquer impedimento que a equipe possua, Faz com que as reuniões necessárias aconteçam (principalmente com os clientes/usuários finais), Deve avaliar se o código realizado pelo time de desenvolvimento está nos padrões do projeto. Caso não esteja, ele deverá apontar melhorias ou sugestões que colaborem no amadurecimento da equipe, em relação ao código e também de time.
Arquiteto-Chefe: É responsável pela modelagem do projeto. Deve auxiliar a equipe de desenvolvedores e contribuir na construção do software. É responsável por questões relacionadas à definição dos componentes de software, suas propriedades externas, e seus relacionamentos com outros softwares. Busca facilitar a organização dos componentes de um software e melhorar a flexibilidade e portabilidade do sistema, gerando mais facilidade de manutenção.
Proprietários de Código (Programadores-Chefe): São os responsáveis pela modelagem e desenvolvimento de novas funcionalidades de um software. A principal atividade de um desenvolvedor/programador é a implementação das features definidas ou pelo Gerente de Projetos ou pelo Gerente de Desenvolvimento. O código deve ser realizado apenas por um desenvolvedor, ou seja, iniciado e terminado pelo mesmo programador.
Especialistas de Domínio (Negócio): Pode ser qualquer pessoa que tenha o melhor conhecimento sobre o software em particular, e pode ajudar as Equipes a entendê-lo. Sua responsabilidade é de adquirir e transmitir informações a respeito do funcionamento dos requisitos do sistema. Podem ser usuários, clientes, patrocinadores (servem como base de conhecimento dos desenvolvedores).
Cargos Usados em Certas Ocasiões
Gerente de Domínio: É o líder do domínio, resolve divergências de opinião com relação aos requisitos do sistema.
Gerente de Versão: Controla a evolução do projeto através da análise de relatórios e reuniões curtas com os gerentes.
Guru da Linguagem: Um membro da equipe com amplo conhecimento na
linguagem ou tecnologia usada no desenvolvimento do sistema.
Administrador de Sistema: Configura, gere e resolve problemas nos servidores e redes utilizados durante o desenvolvimento.
FDD (Feature-Driven Development) significa desenvolvimento guiado a funcionalidades, seu principal objetivo é entregar ao cliente um software funcional com agilidade, seguindo o modelo iterativo e incremental. Propõe um equilíbrio entre filosofias tradicionais e
ágeis, é prático para o trabalho com projetos iniciais, com grandes equipes, ou projetos com codificações já existentes. Lema do FDD: “Resultados frequentes e funcionais”
Um projeto que segue a metodologia FDD deve ser estruturado de acordo
com as seguintes premissas:
Desenvolvimento por funcionalidades: ○ Com base na lista de funcionalidades, deve-se planejar por funcionalidade, mas este planejamento é incremental.
Um único programador é responsável pela funcionalidade desenvolvida ○ ATENÇÃO: Esse é um ponto que diverge do XP!!! ○ No FDD é incentivado que UM desenvolvedor seja o único responsável pela funcionalidade que este desenvolve, já no XP, o código deve ser comunitário.
Uma feature é uma funcionalidade com valor para o cliente que pode ser desenvolvida em duas ou menos semanas
Em um período fixo de tempo, em geral, duas semanas ou menos. Exemplo: Calcular o valor de uma compra, Calcular itens em estoque, Listar fornecedores locais.