Last changed: Ago 11, 2008 12:56 by
Lucimara Benigno de Lima
Há um tempo atrás eu e uma amiga recebemos a seguinte missão onde trabalhamos: pesquisar algo sobre INTEGRAÇÃO CONTÍNUA. Fazemos parte de uma equipe de desenvolvimento de sistemas web em Java, composta por 7 membros. Visitamos vários sites, estudamos bastante e depois de um tempo a gente fez uma apresentação para todos.
Houve uma palestra no CCT onde o assunto era sobre INTEGRAÇÃO CONTÍNUA. Mas quero expor aqui sobre esse assunto para ajudar aqueles que estão querendo aprender e / ou implantar a INTEGRAÇÃO CONTÍNUA onde trabalham.
O que é INTEGRAÇÃO CONTÍNUA? Quais as vantagens? Quais as ferramentas? Como usar?
A INTEGRAÇAO CONTÍNUA é uma prática que consiste em integrar o código várias vezes ao dia, assegurando sua consistência ao final de cada integração.
Imagine só: a equipe onde trabalho é composta de sete membros. Cada um elabora casos de usos e envia o que foi produzido para o repositório. Antes disso, testamos o que foi gerado, mas é freqüente nos depararmos com erros na máquina do nosso colega.
A Integração Contínua é uma das práticas introduzida com o eXtreme Programming.
Se cada programador integrar o seu código pelo menos uma vez por dia, no final do dia teremos várias integrações.
Algumas vantagens da Integração contínua:
- eliminação de longas sessões de integração;
- os problemas de integração são detectados tão breve quanto o possível;
- as pessoas criam um sentimento de interdependência.
Para uma melhor prática da implementação da IC, Martin Fowler cita 10 práticas que são fundamentais:
- Manter um repositório de código-fonte unificado;
- Automatizar a construção do executável;
- Usar testes automatizados;
- Todos os membros da equipe devem atualizar o repositório diariamente.
- Cada atualização do repositório deve iniciar a construção do executável;
- Manter a construção do executável rápida;
- Testar em um clone do ambiente de produção;
- Tornar fácil que qualquer um obtenha o mais recente executável;
- Transparência (qualquer um pode saber o que está acontecendo);
- Implantação automatizada.
Para que a integração ocorra sem muitas dores, faz-se necessário o uso de algumas ferramentas. São elas:
* Ferramentas de build: essas ferramentas são utilizadas para agilizar o processo de build de um sistema, automatizando tarefas como: compilação do código do sistema, compilação e execução dos teste unitários e de aceitação; geração de relatórios dos testes, de cobertura e de análise estática do código; quaisquer outras atividades que sejam definidas como necessárias para o build.
* Ferramentas de controle de versão: ferramentas que armazenam e mantém a versão de todo código-fonte. É também conhecida como repositório. Essas ferramentas automatizam as seguintes tarefas: identificação de mudanças locais, exibição das diferenças entre o código de um arquivo local e uma de suas versões; identificação de quem realizou determinada alteração; incorporação de uma mudança em um arquivo armazenado no repositório; sincronização do código local com uma das versões do sistema ou de um arquivo armazenado no repositório. Temos alguns exemplos de ferramentas de controle de versão: Subversion, CVS, entre outros. Apesar de haver essas ferramentas, vale ressaltar que a integração só valerá a pena se não houver erros. Para tanto, faz-se necessário a automatização dos testes e que as ferramentas simplifiquem e automatizem o processo de integração contínua.
Há duas formas de se realizar a integração contínua:
- forma síncrona:não há a utilização de ferramentas que automatizem a integração. Cada programador integra seu trabalho de cada vez. Após o término da integração do código, o próximo programador poderá integrar o seu.
- forma assíncrona: Há a utilização de ferramentas que automatizam a integração. Alguns exemplos: CruiseControl, AnthillPro, Continnum, Team City, Luntbuild, Hudson, Scons, Bitten, Gump, TinderBox, Final Builder, Build Forge, Beetle Juice, entre outros. Essa prática só se torna viável quando a equipe mantém sempre o código fonte que existir no repositório funcionando.
A seguir, estão alguns links falando mais sobre IC: Improveit
, Programação, Analise de Sistemas e Gerencia de Projetos
.
Clique aqui para saber como configurar o CruiseControl com o Subversion
