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 Analistas de Negócios 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 retrabalho 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 analistas de neógiocs, 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 fazê-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 Analistas de Negócios 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 retrabalho 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 apresenta vantagens em relação à abordagem em cascata:
-
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 Analistas de Negócios 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.
|