Conceito: Iteração |  |
Uma iteração é um período de tempo definido dentro de um projeto em que você produz uma versão estável e executável do produto, junto com toda a documentação de apoio, scripts de instalação e artefatos similares, necessários para usar a liberação.
Relacionamentos
Elementos Relacionados | Ciclo de Vida de Iteração Fase de Concepção Fase de Construção Fase de Elaboração Fase de Transição Planejar a Iteração Planejar o Projeto Plano de Iteração
Descrição Principal
# O que é uma iteração Uma iteração é um período de tempo definido dentro de um projeto em que você produz uma versão estável e executável do produto, junto com toda a documentação de apoio, scripts de instalação e artefatos similares, necessários para usar a liberação. O executável é demonstrável, permitindo à equipe demonstrar um real progresso aos Stakeholders e obter feedback sobre o que eles estão fazendo de forma que eles possam melhorar o seu entendimento de quais necessidades devem ser atendidas e como construí-las. Cada iteração é construída com base no resultado da iteração prévia, e irá produzir um incremento no produto, um passo mais perto do produto final. As iterações têm duração limitada, significando que o cronograma para uma iteração deve ser tido como fixo, e o escopo do conteúdo da iteração, ativamente controlado para atender o cronograma. Em cada iteração, os artefatos são atualizados. Diz-se que isto parece com o "crescimento" do software. Em vez de desenvolver os artefatos um após o outro, de forma encadeada, eles deverão evoluir através do ciclo, embora com taxas de crescimento diferentes. O desenvolvimento iterativo é muito disciplinado: o tamanho da iteração é fixo; os objetivos das iterações são cuidadosamente planejados; os critérios de avaliação são estabelecidos quando cada iteração é planejada; e as tarefas e as responsabilidades dos participantes são claramente definidas. Adicionalmente, as medidas objetivas de progresso são capturadas. Algum re-trabalho pode ocorrer de uma iteração para a seguinte, mas este também é feito de forma estruturada. Cada iteração deve tratar os riscos mais críticos e implementar os itens de trabalho de prioridade mais elevada. Isto assegura que cada iteração adiciona valor máximo aos stakeholder, reduzindo a incerteza. O desenvolvimento iterativo é normalmente combinado com a integração freqüente ou contínua: à medida que os componentes testados unitariamente tornam-se disponíveis, eles são integrados e então uma configuração é produzida e submetida ao teste de integração. Desta forma, a capacidade do software integrado cresce à medida que a iteração prossegue na direção dos objetivos definidos quando do planejamento da iteração. As construções regulares, tais como as diárias ou as mais freqüentes, permitem a divisão dos problemas de integração e teste e a sua distribuição através do ciclo de desenvolvimento. Estes problemas têm sido frequentemente o motivo da queda de grandes projetos, porque todos os problemas são descobertos de uma só vez durante a única etapa maciça de integração, que ocorre muito tarde no ciclo e onde um único problema mobiliza a equipe inteira. # Quais São Os Problemas Que As Iterações Tratam? As atuais aplicações de software são muito complexas para permitir que você, sequencialmente, defina os requisitos, elabore uma arquitetura e um design, execute a implementação, realize os testes e faça tudo direito. Com o desenvolvimento em cascata, você normalmente não obtém um retorno significante sobre quais melhorias podem ser feitas até que seja muito tarde no projeto e demasiadamente caro faze-las. Ao contrário, dividir o projeto em uma série de iterações com limite de tempo fixo permite que você entregue as funcionalidades que podem ser avaliadas pelos stakeholders no final de cada iteração. Esta abordagem fornece ciclos de feedback rápidos e oportunos permitindo que os problemas sejam tratados e as melhorias sejam feitas com um custo mais baixo enquanto o orçamento e o tempo ainda permitem, antes que o projeto vá muito adiante de forma que um grande re-trabalho seja necessário. # Duração da Iteração As iterações têm normalmente a duração de 4 semanas, embora algumas equipes trabalhem com iterações curtas de uma semana ou longas de seis semanas. Para os fatores que orientam a duração da iteração, veja a Tabela a seguir.
Fatores que conduzem a uma duração reduzida da iteração | Fatores que conduzem a uma duração maior da iteração
--- | ---
Pequenas equipes | Grandes equipes
Equipes co-localizadas | Equipes distribuídas
Sistemas de gestão de configuração fortes | Sistemas de gestão de configuração pobres
Recursos dedicados em tempo integral | Recursos alocados em parte do tempo
Testes automatizados | Falta de testes automatizados
Ambiente com ferramenta integrada | Ausência de boa automação e de ferramenta integrada
Equipe com experiência em desenvolvimento iterativo | Equipe sem experiência em desenvolvimento iterativo
Tomada de decisão rápida | Políticas e burocracia que impedem a tomada de decisão rápida
Requisitos confusos | Requisitos bem compreendidos
Arquitetura confusa ou frágil | Arquitetura bem definida e estável
Tecnologia nova e mal compreendida | Tecnologia Bem compreendida
# Por que Iterar? A abordagem iterativa provou-se superior à abordagem em cascata por várias razões: Veja [KRO05] para mais detalhes: Você deverá construir uma aplicação que trata as necessidades dos usuários, envolva o cliente no projeto de desenvolvimento e implemente e valide as funcionalidades definidas como mais essenciais em cada iteração. A integração não é um "big bang" ao final de um projeto. Cada iteração envolve código executável que é continuamente integrado para permitir rápido feedback e minimizar revisões tardias. Os riscos normalmente são descobertos ou direcionados durante as primeiras iterações. Implemente as funcionalidades mais essenciais parcialmente e demonstre-as aos principais Stakeholders para certificar que você está no caminho certo. Sua capacidade para trabalhar eficazmente é ajustada. Durante as primeiras iterações, os membros da equipe percorrem todas as atividades do ciclo de vida, o que assegura que eles têm as ferramentas, habilidades, estrutura organizacional, etc para trabalhar eficazmente. A gestão tem uma forma de fazer mudanças táticas no produto. O desenvolvimento iterativo permite que você faça implementações parciais do produto final rapidamente e use estas para uma rápida liberação de um produto com escopo reduzido, para antecipar-se a um concorrente. A reutilização é facilitada. As discussões e as revisões do design nas primeiras iterações permitem que os membros da equipe descubram oportunidades potenciais para reuso e desenvolvam então um código comum maduro para estas oportunidades em iterações subseqüentes. Os defeitos podem ser encontrados e corrigidos em várias iterações. As falhas são detectadas nas primeiras iterações, ao invés de serem durante uma fase de testes maciços ao final. O pessoal do projeto é usado de uma melhor forma. Um processo iterativo incentiva o aumento do conhecimento dos membros da equipe, tornando-os aptos a executar vários papéis, permitindo ao gerente de projeto fazer melhor uso da equipe de funcionários e removendo simultaneamente envios problemáticos. Os membros da equipe aprendem ao longo do caminho. Os membros do projeto têm diversas oportunidades dentro de um ciclo de desenvolvimento para aprender a partir de seus erros e melhorar suas habilidades de uma iteração para outra. O próprio processo de desenvolvimento é melhorado durante o projeto. O fim da avaliação da iteração inclui uma onde a equipe identifica o que pode ser melhorado na próxima iteração, tanto na organização como no processo.
Este programa e o material que o acompanha são disponibilizados sob a Eclipse Public License v1.0 que acompanha esta distribuição. Direitos Autorais do OpenUP.