quarta-feira, 23 de setembro de 2009

Integração Contínua?

Integração contínua uma prática essencial na engenharia de software atual, e sem ela, não teríamos como garantir qualidade diante da complexidade dos modelos atuais.

Quando falamos de integração contínua, temos que entender que essa prática tem como fundamento o modelo de equipe de desenvolvimento software onde os desenvolvedores fazem "updates" diários em suas estações de trabalho logo ao iniciarem suas atividades, e gerentes de projetos e líderes técnicos, verificarem os logs dos builds do dia anterior. Caso se demore para fazer "updates" ou ninguêm se importe com builds quebrados, integração contínua não faz se faz presente em sua melhor característica: "Capturar rapidamente bugs e também corrigí-los rapidamente".

Temos que entender também, que a partir do uso desse modelo de desenvolvimento ágil com updates diários, surgiu a necessidade de ferramentas de automatização desses builds. Assim surgiram os servidores de integração contínua. Exemplos como Apache Continuum, Bamboo, Hudson, TeamCity, CruiseControl, Selenium, CCTray,CCMenu, Xvfb, e outros.

Outra característica importante a ser explicitada é que servidores de integração contínua estão desacoplados de estratégias de build. Existem várias API's de build no mercado como Maven, Ant, MS-builder e outras.

Cada builder tem um grupo de estratégias de versionamento, componentização, testes mais apropriadas a determinadas necessidades de projetos. Hoje, tenho trabalhado com os builders Maven, Ant, e Ms-build; e cada projeto tem sua estratégia de versionamento.

Os build's diários que basicamente fazem compilação, testes e montagens; estão nos ajudando também a executar de forma automatizada atividades como atualização de ambientes (desenvolvimento, suporte e testes), geração de mídias de instalação, atualização de update sites entre outras.
Quase tudo pode-se automatizar nesses servidores de integração contínua e principalmente trabalhar de forma integrada com ferramentas de bug tracking como por exemplo Jira.

Outro pilar importante em todo esse processo de integração contínua, são as ferramentas de controle de fontes. Saber utilizar ferramentas fontes é essencial pois suas estratégias básicas devem representar os planos de produto.
Então planejar produto de forma clara é o insumo principal do uso dessa ferramenta. Para equipe de produto, isso não significa ter que saber tudo sobre linhas base de fontes, marcações e apavorantes merges.
Com esse plano de produto os integradores podem planejar e controlar melhor as linhas bases de fontes de seus projetos e como representá-lo corretamente diante desse ciclo de vida do produto, definido no plano de produto.
Falta de planejamento, tanto de equipe de produto como de equipe de integradores, significa dores de cabeça na hora dos merges.

Em seguida estarei escrevendo um pouco mais sobre estratégias de versionamento dependendo do builder escolhido no projeto.

Felicidades e t+;