Em meus estudos sobre CMMI, a técnica que mais impactou o meu processo de desenvolvimento é o modo como ele sugere que façamos o build dos aplicativos. Vejamos:

image
Diariamente nós temos vários checkins que modificam nosso produtos sendo correções ou melhorias. Para preparamos nosso sistema para ficar sempre pronto para entrar no ar devemos liberar builds diários dos aplicativos e claro, devemos automatizar isso.

Como nós temos uma sequência de builds ocorrendo no processo a equipe de testes precisa escolher uma versão para testar (geralmente a última), essa versão é escolhida e isolada em um ambiente de testes. E se aprovada para seguir a iteração o build é levado para um ambiente de homologação.

Esse mini processo ocorre em todo o tempo e ao final nós temos um build que representa uma fase de um projeto e pode ser o responsável por fechar uma iteração do produto.

E todo esse grande processo ocorre repetidamente até termos um produto final. Agora em mais detalhes:

image

Cada iteração possui alguns builds associados, e esse processo repete-se até chegarmos ao produto final. O principal fator de aprendizado é que esse é um processo demorado e que deve ser automatizado.