FEATURE DRIVEN DEVELOPMENT – FDD
Por: Juliana2017 • 25/2/2018 • 3.086 Palavras (13 Páginas) • 287 Visualizações
...
- Iterativo;
- Enfatiza a qualidade;
- Entrega de resultados tangíveis freqüentes;
- Prove relatórios de progressos precisos e significativos, requerendo pouca sobrecarga de trabalho por parte dos programadores;
- É apreciado pelos clientes, gerentes e desenvolvedores.
O FDD é largamente aceito por toda equipe do projeto, pois fornece para cada grupo envolvido informações funcionalidades ou informações relevantes. Os gerentes conseguem ter um status preciso do progresso do projeto; os desenvolvedores podem trabalhar com pequenos incrementos, melhorando a sensação de produtividade. Consequentemente o FDD torna-se de fácil aceitação para os clientes porque possibilita que os resultados sejam obtidos mais cedo, além de possibilitar um acompanhamento seguro do projeto por meio de relatórios de progresso.
Para Figueiredo (p. 2), o FDD não é uma metodologia aplicada diretamente ao gerenciamento do projeto, embora as práticas relacionarem atividades que tenham este foco. Sendo assim, o foco principal da referida metodologia aplica-se principalmente a garantir o processo da engenharia de software durante o processo. Assim, o FDD pode ser utilizado em grandes, médios ou pequenos projetos, para projetos de novos softwares como para a evolução de softwares já existentes. Primeiramente é feita a Lista dos requisitos funcionais, sendo que esses devem ser os que realmente irão agregar valor para o negócio e que seja de fácil entendimento por parte dos clientes e usuários. Os requisitos funcionais, chamados de features, serão usados para o planejamento e gerenciamento do projeto.
A metodologia é composta por cinco processos:
- DESENVOLVER UM MODELO ABRANGENTE - envolve desenvolvimento de requisitos, análise orientada por projetos, modelagem lógica dos dados e técnicas para o entendimento do negócio, resulta em um modelo de objeto que servirá de guia os ciclos de construção.
- CONSTRUIR UMA LISTA DE FEATURES – divisão do modelo de domínio em três camadas, áreas de negócio, atividades de negócio e passos automatizados da atividade (funcionalidades). Resulta na hierarquia de funcionalidades que serão construídas para compor o produto (product backlog ou lista de espera do produto).
- PLANEJAR POR FEATURES – estima-se a complexidade e dependência das funcionalidades, levando em consideração o que é prioridade no projeto. Resulta no plano de desenvolvimento, com os pacotes de trabalho na seqüência apropriada para construção.
- DETALHAR POR FEATURES – em uma iteração de construção, a equipe detalha os requisitos e artefatos para codificação de cada funcionalidades incluindo os testes. Resulta no modelo de domínio mais detalhado e os esqueletos dos códigos prontos para serem preenchidos (o que seria as classes com seus métodos e atributos a serem atribuídos).
- CONSTRUIR POR FEATURES – cada método e atributo da classe são devidamente preenchidos, testados e inspecionados. Resulta na construção do produto integrado ao repositório principal do código, com potencial e qualidade para ser utilizado pelo cliente /usuário.
Os processos serão vistos mais a frente, com o detalhamento de cada um deles.
---------------------------------------------------------------
- PAPÉIS
A equipe que participará do projeto também é de suma importância para o sucesso e qualidade do desenvolvimento do software. Contando assim com a capacidade de cada um para o mesmo.
O Feature Driven Development define seis papéis principais para o projeto e mais papéis adicionais. Os papéis definem grupos de responsabilidades que um profissional pode ter no projeto, lembrando que um profissional pode exercer mais de um papel. Sendo assim, cada papel é descrito a seguir.
- PAPÉIS PRINCIPAIS
- Gerente de Projeto: exerce função administrativa, como por exemplo, preparação de relatórios, gerenciamento de recursos materiais e financeiros. Mantêm um ambiente agradável e favorável para que a equipe possa trabalhar produtivamente. Gerencia as dificuldades financeiras e administrativas. Sendo assim, o gerente do projeto é o responsável por fornecer subsídios para que fatores externos ao projeto prejudiquem a produtividade da equipe.
- Arquiteto Chefe: responsabiliza-se por todo projeto técnico, realiza sessões referentes ao projeto técnico, com a participação da equipe para definição da arquitetura. O arquiteto precisa ter boa capacidade técnica e em modelagem, possuir habilidades que tornem reativamente fácil a absorção das regras de negócios além de precisar administrar as dificuldades técnicas inerentes ao projeto.
- Gerente de Desenvolvimento: gerencia as atividades diárias de desenvolvimento. Deve ser organizado, ter boa capacidade técnica e saber lidar com conflitos. É responsável por direcionar as dificuldades de recursos que surgem.
- Programador Chefe: participa das atividades de alto nível de análise de requisitos e do projeto técnico. É responsável também na chefia das atividades de baixo nível de análise, projeto técnico e programação. Assim como o Gerente de Desenvolvimento, ele deve ter habilidade para liderar pessoas e coordenar as atividades diárias.
- Donos das Classes (Class Owner): são membros da equipe de desenvolvimento, liderados pelo programador chefe. Trabalham no projeto técnico, programação, testes e documentação das features do sistema.
- Especialistas de Domínio: são os especialistas que representam os clientes, usuários e patrocinadores. Esse especialista repassa para os desenvolvedores tudo que foi dito pelo cliente, pois o mesmo tem um alto nível de conhecimento, detalhando então, as funcionalidades que o sistema precisa adquirir para desempenhar os processos de negócio.
- PAPÉIS DE SUPORTE
- Gerente de Liberação: acompanha a produção dos relatórios de progresso. É subordinado ao gerente de projeto e deve acompanhar as features a cada iteração.
- Engenheiro de Build: prepara, mantém e roda o processo de build. Controlam as versões do sistema, as publicações dos relatórios, as documentações e a codificação de scripts de implantação.
- Ferramenteiro: Ele cria ferramentas que são específicas para o projeto. Desenvolvendo ferramentas para teste, desenvolvimento e conversão de dados.
- Administrador
...