XP - Continuous Integration Leonardo Pereira Demilis
Não XP As equipes são organizadas de modo que uma parte (módulo) fique sob responsabilidade de um desenvolvedor Cabe a esta pessoa efetuar testes e codificação que dizem respeito a sua parte.
Quais as vantagens? Esta estratégia reduz a complexidade e as preocupações de um desenvolvedor. Responde somente pelo seu módulo.
O que diz o XP? Os diversos módulos do software são integrados diversas vezes por dia e todos os testes unitários são executados. O código não passa até obter sucesso em 100% dos testes unitários.
Quais as vantagens? Impede que se crie uma bola de neve que será muito difícil de trabalhar (ter que demorar semanas para integrar) Permite que os desenvolvedores trabalhem sempre com a última versão Não duplicação de funcionalidades que possam ser reaproveitadas Detecção de problemas de integração, dando tempo para sua resolução.
Bugs Na integração são detectados muitos problemas que não são identificados por meio de outros tipos de teste. O período em que as partes são integradas e testadas são extremamente longos. Quanto mais tempo durarem os bugs de integração, mais difíceis serão de eliminar
Ferramentas Ferramentas de controle de versão como CVS ou Visual Source Safe, são necessárias Ferramenta de script de compilação também (um exemplo para Java é o ANT. Mas o make é também muito utilizado)
Cruise Control Thought Works (empresa do Martin Fowler) Automatiza o processo de integração contínua. Como funciona...
Cruise Control Desenvolvedor-robô que verifica o repositório de fontes (CVS, ClearCase, Perforce, StarTeam, VSS) periodicamente. Se houve mudança ele faz um checkout, roda todos os testes e publica os resultados em XML (transformado em uma página Web por um servlet).
Cruise Control Se o último commit fez algum dos testes falhar Manda ao desenvolvedor que fez o commit guarda a última cópia 100% funcional Continua a verificar o repositório e quando houver um commit que rode todos os testes, ele incrementa o tag do repositório, publica um novo relatório e atualiza sua cópia.
Conclusão Integração contínua "reduz o tempo passado no inferno da integração" [Martin Fowler]