Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Engenharia de Software - FDD

No description
by

Rodrigo Teixeira

on 31 March 2011

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Engenharia de Software - FDD

FDD Sobre

A metodologia ágil FDD (Feature Driven Development), é utilizada no gerenciamento e desenvolvimento de softwares. Essa metodologia combina as melhores práticas do gerenciamento ágil de projetos com uma abordagem completa para Engenharia de Software orientada por objetos, conquistando os três principais públicos de um projeto de software: clientes, gerentes e desenvolvedores.

É uma metodologia que oferece estrutura para equipes pequenas e medias, enfatiza a produção de softwares de qualidade e funcionais. Realiza um trabalho significativo desde o início do projeto, antes de tornar-se altamente iterativa. Além disto, fornece informações de estado e progresso de forma simples e compreensível, agradando assim aos gerentes e desenvolvedores.
Como surgiram as metodologias ageis

As metodologias de desenvolvimento ágil surgiram pela necessidade de uma maior maleabilidade em projetos voltados para a área de desenvolvimento de softwares. A maioria dos métodos ágeis tentam minimizar os riscos pelos desenvolvimentos dos softwares em curtos períodos, chamados de iteração, os quais gastam tipicamente entre uma e quatro semanas.
Os planos detalhados são feitos apenas para a fase atual do projeto, enquanto que para as fases futuras são feitos apenas rascunhos, facilitando assim, possíveis mudanças conforme a equipe envolvida vai aprendendo e utilizando melhor as tecnologias envolvidas. História

A metodologia FDD (em português conhecida como Desenvolvimento Guiado por Funcionalidades) surgiu seguindo o mesmo caminho das metodologias ágeis. Ela é uma dessas metodologias de desenvolvimento ágil. A FDD nasceu no ano de 1997 em um grande projeto utilizando a linguagem Java para o United Overseas Bank, um banco localizado num pequeno país do sudeste asiático, chamado Singapura. Aparece da experiência de análise e modelagem orientadas por objetos de Peter Coad, e de gerenciamento de projetos de Jeff De Luca. Inicialmente teve sua publicação no ano de 1999, no capítulo 6 do livro "Java Modeling in Color with UML", de Peter Coad, Eric Lefebvre e Jeff De Luca.
Já no século XXI, no ano de 2002, Stephen Palmer (gerente de desenvolvimento do projeto em Singapura) e John Mac Felsing (arquiteto senior na TogetherSoft) publicaram o livro "A Practical Guide to Feature Driven Development", com a versão completa, atualizada e comentada da metodologia. Caracteristicas FDD

• Resultados úteis a cada duas semanas ou menos;
• Blocos bem pequenos de funcionalidade valorizada pelo cliente, chamados "Features";
• Planejamento detalhado e guia para medição;
• Rastreabilidade e relatórios com incrível 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;

A FDD possui uma metodologia muito objetiva, com apenas duas fases (Concepção & Planejamento e Construção), e cinco processos (DMA, CLF, PPF, DPF e CPF) bem definidos e integrados as fases. As principais práticas da FDD são as seguintes:

- Modelagem de objetos do domínio (negócio);
- Desenvolvimento por funcionalidade;
- Posse individual de classe (código);
- Time de funcionalidades;
- Inspeções de modelo e de código;
- Builds regulares;
- Gerenciamento de configuração;
- Relatório/visibilidade de resultados; 5 processos da metodologia FDD Processo 1: Desenvolvendo um Modelo Abrangente

Neste processo realizaremos um estudo dirigido sobre o escopo do projeto(e integrações) e seu contexto. Então, são realizados estudos mais detalhados sobre o domínio do negócio para cada área do produto(e integrações) a ser modelada. As atividades são realizadas em reuniões de domínio, executadas sequencialmente com a participação dos especialistas de negócio, programadores-chefes e arquiteo-chefe; eventualmente a participação do gerente do projeto pode ser considerada. Essas reuniões devem ser realizadas em ambiente isolado e confortável de forma a não torná-las excessivamente cansativas.

Artefatos produzidos:
Diagramas de classes, sequência, atividades, casos de uso
Lista preliminar de requisitos
Anotações nos modelos Processo 2: Construindo uma Lista de Funcionalidades

Processo realizado geralmente pelos programadores-chefes do processo nº 1, com o intuito de decompor funcionalmente o domínio(negócio) em áreas de negócio, atividades de negócio e funcionalidades.

Artefatos produzidos:
Lista de Features
Requisitos mais detalhados Processo 3: Planejando por Funcionalidade

Este processo tem como finalidade produzir o plano de desenvolvimento. Gerente de projeto e programadores-chefes planejam, ordenam e estimam as funcionalidades que serão implementadas, baseando-se em dependências, carga de trabalho da equipe e complexidade.

Artefatos produzidos:
Plano de desenvolvimento
Pacotes de trabalho
Lista de classes com seus donos Processo 4: Detalhando por Funcionalidade

Este processo é realizado uma vez para cada funcionalidade. O programador-chefe identifica os proprietários das classes (desenvolvedores) que provavelmente serão envolvidos no desenvolvimento da funcionalidade que ele selecionou. Esta equipe produz o(s) diagrama(s) de sequência para a(s) funcionalidade(s) atribuída(s). O programador-chefe, então, refina o modelo de objetos, baseando-se no conteúdo do(s) digrama(s) de sequência. Os desenvolvedores escrevem os prefácios das classes e
métodos. Realiza-se uma inspeção no projeto.

Artefatos produzidos:
Modelos detalhados (classes e seqüência)
Esqueletos de classes com métodos
Pacote de trabalho detalhado
Relatório de inspeção do design
Relatório de progresso atualizado Processo 5: Construindo por Funcionalidade

É uma atividade para cada funcionalidade, para produzir uma função com valor para o cliente (funcionalidade). Começando com o pacote de projeto (design), os proprietários de classes implementam os itens necessários para que suas classes suportem o projeto para esta funcionalidade. O código desenvolvido passa pelo teste de unidade e pela inspeção – a ordem aqui é determinada pelo programador-chefe. Após passar pela inspeção, o código é promovido à versão atual (build).

Artefatos produzidos:
Código fonte testado e integrado
Relatórios de inspeção e testes
Lista de alterações feitas/necessárias
Relatório de progresso atualizado Observação

Então verificamos o seguinte, os processos de 1 a 3 serão realizados uma única vez por projeto, mas lembrando que não necessariamente UM projeto é UM produto, podemos dividir a construção de um produto em vários projetos ou termos um projeto para cada versão, por exemplo. Os processos 4 e 5 serão repetidos uma vez para cada funcionalidade, ou seja, se na fase 2 geramos uma lista com 50 funcionalidades, significa que passaremos 50 vezes pela fase 4 e 5. FDD significa Desenvolvimento Dirigido à Funcionalidades, mas...o que é uma funcionalidade?

É alguma característica do sistema que ofereça valor para o cliente e que possa ser desenvolvida em, no máximo, duas semanas. Para os mais experientes, uma funcionalidade pode ser comparada a um requisito funcional.
O template de uma funcionalidade é: [ação] [resultado] [objeto]
Alguns exemplos de funcionalidades: Calcular o desconto de uma venda, Validar o CPF de um cliente, Ordenar por Cidade e UF o relatório de clientes,... Os papéis da FDD Em projetos maiores e que possuam tal necessidade, outros papéis podem ser incluidos no projeto, tais como:
- Gerente de Versão
- Guru da Linguagem
- Criador de Ferramentas
- Testadores
- Implantadores
- Redator Técnico
É importante ressaltar que é permitida a atribuição de mais de um papel no projeto para a mesma pessoa. FDD x XP

Existem várias outras metodologias ágeis para desenvolvimento de softwares. Entre as mais usadas está a XP (Extreme Programming) que apesar de buscar a agilidades tanto quanto a FDD, possui alguns métodos diferentes
A metodologia XP é mais usada em equipes pequenas, que possuem um foco basicamente voltado ao desenvolvimento do software, enquanto a FDD tem seu foco também em equipes médias, pois há mais controle sobre seus processos Considerações Finais

A metodologia ágil FDD, é uma metodologia que busca o equilíbrio entre a liberdade e o controle, tendo como alvo equipes pequenas a médias, sem que com isso perca sua principal característica que é buscar uma melhor agilidade no desenvolvimento de softwares. Pioneiros Teste Exemplo de projeto com FDD

A Equipe de Tecnologia da UNITY EVENTOS precisa iniciar
um projeto para o desenvolvimento de um sistema que
gerencie o processo de realização e inscrição em eventos
realizados pela empresa.
A equipe optou por utilizar a FDD como metodologia,
juntamente com o ferramental de desenvolvimento já
utilizado pela empresa: Delphi, Together e SQL Server.
Full transcript