Introdução Processo Fases Atividades Definições        
Fases

Atividades da Engenharia:

>> Planejar Release
>> Planejar Iteração
>> Escrever Testes
>> Desenvolver Feature
>> Integrar
>> Realizar Testes de Aceitação

Fases > Prospecção do Negócio > Pré Engenharia > Engenharia > Transição > Suporte

A fase de Engenharia é o que se pode chamar de hands on do processo, pois nesta fase é quando todo o planejamento antevisto é revisado para ser efetivamente colocado em prática. O marco desta fase é a liberação do release de um conjunto de histórias.

Planejar Release Planejar Iteração Escrever Testes Desenvolver Feature Integrar Realizar Testes
Planejar Release:

O objetivo do Planejamento da Release é fazer o planejamento das customizações que vão ser entregues no próximo release do produto. Este planejamento também pode ser revisado e alterado caso mudem as prioridades do cliente e de acordo com o andamento do projeto. O time de desenvolvimento utiliza as histórias escritas anteriormente para estimar a sua dificuldade de implementação. A prática "o jogo do planejamento" descreve que um release deve conter as histórias que agregam maior valor para o negócio do cliente, ou seja, as de maior prioridade para o cliente, de acordo com as prioridades que o Gerente atribui a cada um dos clientes, e o time de desenvolvimento então estima quantas histórias eles poderão implementar nas diversas iterações do release com base na experiência que possuem sobre a sua velocidade de trabalho e com base nas estimativas de dificuldade de cada história. O planejamento do release deve levar em conta estimativas e fatores de risco. As histórias de alto risco devem ser escaladas primeiramente para amenizar o risco. As histórias de investigação também são consideradas de alto risco, pois pouco se sabe sobre sua implementação, por isso devem ser escaladas nas primeiras iterações.

Top    >>

Atividades
Fazer Estimativas
Objetivo: Estimar esforço para realização das atividades do release. 
Passos: Escolher histórias do release e estimar esforço necessário para implementação de cada uma das histórias.
Escolher e Priorizar Requisitos
Objetivo: Como parte da definição de trabalho Fazer Estimativas esta atividade tem como foco escolher e priorizar os requisitos que estarão no próximo release.
Passos: Rever e validar prioridades. Escolher histórias com maior prioridade.
Planejar Iteração:

Neste fluxo de trabalho é onde acontece o planejamento da iteração. Em um único release de um conjunto de features do produto podem ocorrer várias iterações. O planejamento da iteração procura refinar as estimativas feitas no planejamento do release e verificar quantas e quais histórias serão implementadas na iteração. A análise de cada história é realizada como parte de cada iteração. O objetivo da análise de cada história é finalizar o detalhamento da mesma. Cada história é destrinchada em pequenas tarefas e durante esta análise o time pode julgar necessário dividir uma ou mais histórias alocadas para a iteração corrente ou ainda criar uma história de pesquisa quando não houver informações suficientes para estimar a história. O time de desenvolvimento tenta medir o esforço de uma forma mais precisa e melhorar cada estimativa feita anteriormente no planejamento da release. O Gerente de Implantação é que tem a responsabilidade de escolher as histórias a serem implementadas. Todo este processo deve ser orientado pela prática do jogo do planejamento. O engenheiro de software é o responsável pelas estimativas do esforço necessário na implementação de cada história, enquanto o cliente, junto com o Gerente de Implantação, é responsável pela atribuição de prioridades para cada história com base em seu valor de negócio. As prioridades de cada história são definidas com base nas prioridades do cliente e nas prioridades do projeto. Ou seja, os clientes definem suas prioridades e o Gerente decide que clientes têm mais prioridades.

Top    >>

Atividades
Estimar Iteração
Objetivo: Analisar cenário de cada história, Estimar esforço para realização das atividades da iteração. 
Passos: Estimar esforço necessário para implementação de cada uma das histórias. Verificar se é necessário quebrar histórias ou criar histórias de pesquisa.
Escolher Requisitos
Objetivo: Como parte da definição de trabalho Estimar Iteração esta atividade tem como objetivo escolher os requisitos que farão parte da iteração corrente.
Passos: Escolher os requisitos que farão parte da iteração corrente com base nas prioridades que foram definidas.
Escrever Testes:

Neste fluxo de trabalho são escritos os testes funcionais do sistema. Os testes funcionais são escritos com base nos requisitos que estão definidos no Documento de Mudanças (CDD). Este documento serve como entrada para a atividade chave deste fluxo de trabalho. Nesta abordagem os testes são escritos pelo Engenheiro de Testes com o auxílio dos Engenheiros de Software. O cliente não participa diretamente da escrita dos testes, pois nestes projetos o tipo de relacionamento com o cliente e a sua localidade normalmente inviabilizam a utilização da abordagem padrão que considera que sempre haverá um único cliente on-site. O produto final deste fluxo é a definição dos Cenários de Testes utilizados para validar as funcionalidades do sistema. Estes Cenários podem ser na forma de testes automatizados ou não. Esta decisão cabe ao time de engenharia. O objetivo dos testes funcionais é testar as funcionalidades mais complexas do sistema, enquanto os testes unitários visam testar métodos de classes.

Top    >>

Atividades
Escrever Testes Funcionais
Objetivo: Analisar cada requisito descrito no CDD e escrever os Cenários de Testes que serão utilizados para testar as funcionalidades do sistema como um todo. 
Passos: Analisar requisitos, Decidir se os testes serão automatizados ou não, Escrever testes com base na decisão tomada.
Artefatos: Cenários de Testes
Desenvolver Feature:

O desenvolvimento de uma feature compreende as atividades de projeto, implementação e testes de uma unidade de trabalho. No contexto de Customização de Produtos de Software um dos principais objetivos do processo é evitar mudanças às funcionalidades core do produto. Portanto, decisões de projeto que venham a impactar a arquitetura e a lógica de negócios base do sistema devem estar fora do contexto da customização. Quando alterações de base forem identificadas como sendo necessárias, deve haver um consenso entre a equipe de campo e a equipe do produto no sentido de minimizar os esforços individuais para cada cliente. Caso uma nova feature seja identificada como uma necessidade comum que poderá ser compartilhada por vários clientes, a mudança pode ser escalada para a equipe do produto. Cabe à equipe de campo a decisão de esperar por uma nova versão do produto ou realizar uma adaptação na versão corrente para atender às necessidades do cliente. Cada uma das features deve ser desenhada de maneira a minimizar ao máximo grandes mudanças às funcionalidades padrão do sistema. Em seguida as features são especificadas, implementadas e testadas individualmente. A especificação da feature é realizada através de testes unitários. Os esforços devem ser concentrados nas tarefas de maior importância para o cliente. A depender do nível de controle desejado pelo time, pode ser interessante incluir como parte do documento de projeto todas as alterações realizadas no código durante o desenvolvimento da feature (ex. classes e métodos alterados, mudanças na base de dados, triggers, procedures, tabelas, etc.).

Top    >>

Atividades
Fazer Projeto
Objetivo: Modelar feature. Projetar módulos ou classes. 
Passos: Obter entendimento da feature, fazer projeto.
Artefatos: Documento de Projeto
Fazer Testes de Unidade
Objetivo: Especificar feature e testar eficientemente a unidade de trabalho desenvolvida.
Passos: Escrever testes de unidade, Executar Testes.
Implementar
Objetivo: Construir a feature de acordo com as decisões de projeto.
Passos: Realizar alterações necessárias de acordo com especificações do projeto. Implementar novas classes ou módulos quando necessário.
Artefatos: Código e Documento de Projeto (atualizado)
Integrar:

A integração contínua do código gerado com o repositório de código deve acontecer com freqüência e idealmente as mudanças nunca devem passar mais do que um dia para serem integradas ao repositório. Cada engenheiro de software é responsável por integrar o seu próprio código e sempre que for possível quebrar a feature em unidades lógicas. Isto deve acontecer quando 100% dos testes de unidade forem executados ou quando uma pequena parte da funcionalidade planejada for finalizada. A integração das funcionalidades compreende a realização dos testes funcionais. Isto significa que as funcionalidades que forem integradas devem estar 100% testadas pelos engenheiros de software através dos testes unitários para evitar que uma nova funcionalidade quebre alguma feature do sistema que já esteja testada funcionalmente.

Top    >>

Atividades
Integrar Funcionalidades
Objetivo: Realizar integração das funcionalidades concluídas para que os testes funcionais possam ser realizados. 
Passos: Realizar build do produto com as novas funcionalidades.
Realizar Testes de Sistema
Objetivo: Realizar testes funcionais das novas features.
Passos: Seguir Cenários de Testes.
Artefatos: Planilha de Resultados.
Realizar Testes de Aceitação:

A intenção dos testes de aceitação é garantir que os requisitos do cliente foram atendidos e que o sistema é aceitável, ou seja, o objetivo deste fluxo de trabalho é verificar se as funcionalidades estão de acordo com as necessidades e expectativas do cliente. Estes testes são críticos para o sucesso da aplicação porque durante este estágio é que será determinado se a aplicação pode ser liberada para os usuários finais. Os testes de aceitação são criados a partir das histórias que devem ser selecionadas a cada nova iteração e traduzidas em testes de aceitação. Uma história só é considerada finalizada quando os testes de aceitação são concluídos com sucesso. Os cenários de teste escritos servem para guiar a realização dos testes que podem ou não ser automatizados. O formato da reportagem dos resultados dos testes é decidido pela Engenharia. Estes resultados podem ser reportados através de uma ferramenta de controle de bugs, como o Bugzilla, por exemplo. Ou em forma de planilha de resultados. O ideal, porém, é uma combinação das duas opções, a utilização da planilha seguida do registro de bugs na ferramenta. Os testes de aceitação, considerados como testes caixa-preta, também são usados como teste de regressão que antecede um release de produção.

Top    >>

Atividades
Executar Testes
Objetivo: Permitir ao cliente validar as funcionalidades implementadas. 
Passos: Realizar testes e reportar os resultados.

Copyright © 2004 CPS-Pro. Todos os direitos reservados.
Contato: hmm@cin.ufpe.br.