Conceito: Demonstrar o Valor Iterativamente
Esse princípio demonstra o valor do Desenvolvimento repetitivo.
Descrição Principal

Introdução

Esse princípio explica porque o desenvolvimento de software beneficia em muito quando é repetitivo. Um processo repetitivo torna possível acomodar facilmente as alterações, para obter feedback e o fator dentro do projeto, para reduzir os riscos inicialmente, e  ajustar o processo dinamicamente.

        
Benefícios
  • Redução inicial dos riscos
  • Maior previsibilidade no decorrer do projeto
  • Confiança entre os investidores
Padrão
  1. Ativar o feedback fornecendo um valor incremental do usuário em cada iteração.
  2. Adaptar seus planos utilizando um processo repetitivo.
  3. Adotar e gerenciar alterações
  4. Atacar inicialmente os principais riscos técnicos, comerciais e programáticos.
Antipadrões
  • Planejar o ciclo de vida total detalhadamente, trilhar os variantes contra o plano (que podem efetivamente contribuir para a falha do projeto).
  • Avaliar o status nos dois primeiros terços do projeto confiando em revisões das especificações, em vez de avaliar o status dos resultados do teste e as demonstrações de trabalho com o software.

Discussão  

Existem várias obrigações subjacentes a esse princípio. A primeiro é que precisamos fornecer o valor incremental para ativar o feedback inicial e contínuo. Isso é feito conduzindo nosso projeto dentro de conjunto de iterações. Em casa iteração, executamos alguns requisitos, design, implementação e teste de nosso aplicativo, produzindo assim uma distribuível, que é a etapa mais próxima da solução final. Isso permite demonstrar o aplicativo aos usuários finais e a outros investidores, ou permite a eles utilizarem o aplicativo diretamente, possibilitando que forneçam um rápido feedback sobre como estamos indo. Estamos na direção certa? Os investidores estão satisfeitos com o fizemos até agora? Precisamos alterar os recursos implementados até agora?   E finalmente, quais recursos adicionais precisamos implementar para aumentar o valor comercial? Respondendo satisfatoriamente a todas as perguntas, é mais provável que possamos criar confiança entre os investidores que o sistema que estamos desenvolvendo atenderá suas necessidades. Será também menos provável precisar sobre-arquitetar nossa abordagem ou incluir capacidades que não são tão úteis ao usuário final.

A segunda obrigação é alavancar demonstrações e feedback para adaptar nossos planos. Em vez de contar com a avaliação das especificações, como as especificações dos requisitos, modelos do design ou planos, precisamos avaliar o quanto e como o código desenvolvido assim realmente funciona até aqui. Isso significa que precisamos testar resultados e demonstrações do  código de trabalho aos investidores para determinar como estamos indo. Isso fornece um bom conhecimento sobre onde estamos, como a equipe está progredindo e se precisamos fazer correções para concluir com sucesso o projeto. Poderemos então utilizar essas informações para atualizar o plano geral para o projeto e desenvolver planos detalhados para a próxima iteração.

A terceira obrigação subjacente é adotar e gerenciar alterações. Os aplicativos de hoje são muito complexos em requisitos, design, implementação e teste para alinhar-se perfeitamente logo na primeira vez. Entretanto, os métodos de desenvolvimento de aplicativo mais eficientes adotam inevitáveis alterações. Através de um feedback inicial e contínuo, aprendemos como melhorar o aplicativo, e a abordagem repetitiva nos oferece a oportunidade de implementar essas alterações incrementalmente. Todas essas alterações precisam ser gerenciadas tendo os processos e as ferramentas corretas de forma que possamos gerenciar efetivamente sem retardar a criatividade.

A quarta obrigação subjacente é que esse princípio é necessário paraconduzir os principais riscos inicialmente no ciclo de vida, conforme ilustrado no diagrama abaixo... Precisamos endereçar os principais riscos técnicos, comerciais e programáticos o mais cedo possível, em vez de adiar a resolução dos riscos para o final do projeto. Isso é feito através de contínua avaliação dos riscos que precisamos enfrentar, e conduzindo os principais riscos restantes na próxima iteração. Em projetos bem-sucedidos, inicialmente as iterações envolvem a aquisição do investidor em uma visão com requisitos de alto nível, incluindo design arquitetural, implementação e teste para eliminar os riscos técnicos. É importante também manter as informações necessárias para forçar decisões em torno dos principais ativos reutilizáveis ou software COTS (commercial-of-the-shelf) a ser utilizado.

Diagrama ilustrando que um processo repetitivo pode obter uma redução mais rápida dos riscos do que um processo em cascata

Perfis de Redução de Riscos para Desenvolvimento Repetitivo e em Cascata.

Um objetivo principal com o desenvolvimento repetitivo é reduzir risco logo no início. Isso é feito analisando, priorizando e atacando os principais riscos em casa iteração (consulte: Material de Suporte: Desenvolvimento Repetitivo).  Orientação Adicional sobre como ajudar a organizar o ciclo de vida do desenvolvimento em torno das iterações é oferecida em  Conceito: Iteração e  Conceito: Fase.