Esse artigo faz parte da revista Clube Delphi Edição 71. Clique aqui para ler todos os artigos desta edição

img

Integração Contínua

Criação de um Processo de Build

O desenvolvimento de software, normalmente é formado por conjuntos de procedimentos, sejam no âmbito gerencial do projeto ou no ponto de vista técnico. Seja como for, os procedimentos que não dão bons resultados, são comumente abandonados e trocados por outras abordagens. No entanto, quando um procedimento dá resultados, ele é reutilizado e aprimorado, tornando-se assim uma prática; ou melhor, uma best practice.

Quando alguns visionários divulgam e advogam em favor dessas best practices, acabam criando um processo, que é a reunião de boas práticas em favor do desenvolvimento de software com maior qualidade, consistência e organização.

Sob esse ponto de vista, podemos destacar a Integração Contínua (Continuous Integration), que é um dos pilares fundamentais do Extreme Programming (XP). Como logo veremos, a Integração Contínua tem um papel fundamental no XP, em virtude de que viabiliza e potencializa a utilização de outras práticas propostas pelo XP.

Sem discutir em detalhes, o XP é um processo simples e ágil baseado no contato direto com o usuário final. Os requerimentos são capturados em estórias (user stories) e o software é desenvolvido em pequenas iterações onde essas estórias são escalonadas. O código é escrito seguindo padrões previamente definidos e pode ser escrito por pares de programadores. Adicionalmente, utiliza-se o desenvolvimento dirigido a testes, criando assim um ambiente perfeito para otimização e eliminação de duplicações por meio de Refactoring.

A partir dessa perspectiva, percebe-se que o XP propõe uma infra-estrutura onde o software é desenvolvido em “pedacinhos”, mas no entanto, cada pedacinho é submetido a todas as fases do ciclo de vida do software, da concepção ao teste. Nessa estratégia, cada pedacinho construído em cada iteração é testado pelo usuário, viabilizando assim, a identificação e correção de erros de concepção e programação nas fases iniciais da construção do software (e poupando muito tempo e dinheiro, afinal, quanto mais tarde um erro for detectado, maior será o custo e o tempo para corrigi-lo).

Nesse contexto, a proposta da Integração Contínua é a criação de um ambiente separado e independente do ambiente de desenvolvimento, onde as modificações individuais são unificadas ao projeto principal. O projeto é compilado, os testes são rodados, a documentação é gerada e assim por diante, como pode ser visto na Figura 1.


img

Figura 1. Integração Contínua em ação


Características

Entre as principais características da Integração Contínua, podemos destacar as seguintes:

- Independência: As tarefas de integração são realizadas otimizadamente sem terem que concorrer com outros aplicativos que normalmente estão rodando num computador de desenvolvimento. Além disso, a utilização de um ambiente independente fomenta o descobrimento de vários problemas, como por exemplo, problemas de dependência (arquivos, DLLs, chaves de registro) que fazem o software funcionar no computador de desenvolvimento, mas provavelmente não funcionaria no computador do cliente;

- Freqüência: Quanto mais cedo uma modificação puder ser integrada ao projeto principal e testada, mais cedo os erros serão detectados e corrigidos. A freqüência em que as tarefas de integração serão realizadas, sem dúvida, vão depender do software que estiver sendo desenvolvido. Em certos casos, onde os projetos são pequenos, o processo poderá ser iniciado assim que o desenvolvedor enviar as modificações para o repositório do controle de versões. Porém, quando o software é grande e demora horas só para compilar, as tarefas de integração deverão ser rodadas à noite ou duas vezes por dia;

- Sincronização: A sincronização das modificações freqüente e contínua, serve como um termômetro para identificar a qualidade dos esforços da equipe de desenvolvimento. Além disso, integrações bem sucedidas aumentam a moral de todos os membros da equipe;

- Automação: Entre outros benefícios, a Integração Contínua fornece um meio de automatizar processos manuais e repetitivos, evitando que os processos sejam esquecidos ou que algum passo importante não seja executado. Assim, você poderá realmente ter confiança de que essas tarefas serão realizadas com precisão e consistência todas as vezes que for preciso;

...

Quer ler esse conteúdo completo? Tenha acesso completo