Uma iteração envolve as atividades de desenvolvimento que levam ao release de um produto - uma versão estável e
executável do produto, junto com qualquer outro elemento periférico necessário para utilizar esse release. Portanto,
uma iteração de desenvolvimento é, de alguma forma, uma passagem completa por pelo menos todas as disciplinas:
Requisitos, Análise e Design, Implementação e Teste. É como um pequeno projeto cascata em si mesmo. Observe que os
critérios de avaliação são estabelecidos quando cada iteração é planejada. O release terá planejado a capacidade que é
demonstrável. A duração de uma iteração variará de acordo com o tamanho e a natureza do projeto, mas é provável que
várias construções sejam feitas em cada iteração, conforme
especificado no Plano de Construção de Integração para a iteração. Essa é uma
conseqüência da abordagem de integração contínua recomendada no RUP (Rational Unified Process): conforme os componentes
testados da unidade ficam disponíveis, eles são integrados, em seguida, uma construção é produzida e sujeita ao teste
de integração. Dessa maneira, a capacidade do software integrado cresce quando a iteração continua, em direção às metas
definidas quando a iteração foi planejada. Pode ser demonstrado que cada build representa uma mini-iteração por si
mesmo; a diferença está no planejamento necessário e na formalidade da avaliação realizada. Pode ser apropriado e
conveniente em alguns projetos fazer construções diariamente, mas isso não representará as iterações como o RUP as
define - exceto, talvez, para um projeto muito pequeno de uma única pessoa. Mesmo em projetos pequenos com várias
pessoas (por exemplo, envolvendo cinco pessoas criando 10.000 linhas de código), seria muito difícil alcançar uma
duração de iteração de menos de uma semana. Para obter uma explicação do motivo, consulte Diretriz: Plano de Desenvolvimento de Software.
Tradicionalmente, os projetos foram organizados para percorrer cada disciplina em seqüência apenas uma vez. Isso leva
ao ciclo de vida em cascata:
Freqüentemente, ele resulta em um acúmulo de integração tardia na implementação, quando, pela primeira vez, o produto é
criado e o teste começa. Aparecem os problemas que permaneceram ocultos por todo o processo de Análise, Design e
Implementação, e o projeto é paralisado enquanto começa um longo ciclo de correção de erros.
Uma maneira mais flexível (e menos arriscada) de continuar é percorrer várias vezes as diversas disciplinas de
desenvolvimento, construindo um melhor entendimento dos requisitos, planejando uma arquitetura robusta, elevando a
organização do desenvolvimento e, por fim, liberando uma série de implementações que são gradualmente mais completas.
Isso se chama ciclo de vida iterativo. Cada passagem pela seqüência de disciplinas do processo é chamada de
iteração.
Portanto, de uma perspectiva de desenvolvimento o ciclo de vida do software é uma sucessão de iterações, através
da qual o software é desenvolvido incrementalmente. Cada iteração é concluída com o release de um produto
executável. Esse produto pode ser um subconjunto da visão completa, mas mesmo assim ser útil do ponto de vista da
engenharia ou do usuário. Cada release é acompanhado por produtos de trabalho de suporte: descrição do release,
documentação do usuário, planos, etc., e modelos atualizados do sistema.
A conseqüência principal dessa abordagem iterativa é que os produtos de
trabalho, descritos anteriormente, crescem e amadurecem com o tempo, conforme mostrado no diagrama a seguir.
Evolução do conjunto de informações ao longo das fases de desenvolvimento.
Marco menor
Cada iteração é concluída por um marco menor, onde o resultado da iteração é avaliado em relação aos critérios de êxito
do objetivo dessa iteração específica.
|