Conceito: Iteração
Esta orientação descreve o conceito básico de "iteração" e sua finalidade, particularmente em desenvolvimento de software.
Relacionamentos
Elementos Relacionados
Descrição Principal

O Que é uma Iteração?

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.

Por Que Iterar?

Tradicionalmente, os projetos foram organizados para percorrer cada disciplina em seqüência apenas uma vez. Isso leva ao ciclo de vida em cascata:

Diagrama mostra uma iteração indo da Modelagem de Negócios para Implementação

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.

Diagrama mostra 3 iterações sucessivas, cada uma indo da Modelagem de Negócios para Implementaçã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.

Diagrama descrito no texto associado.

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.