www.devmedia.com.br
[versão para impressão]
Link original: http://www.devmedia.com.br/articles/viewcomp.asp?comp=21086

Integração Contínua - Artigo .net Magazine 85

Este artigo trata de integração contínua, um termo cunhado por Kent Beck em seu livro sobre Extreme Programming, que define uma prática aplicada na indústria há muito tempo.





.net Magazine 85

[Artigo disponível no Leitor Digital DevMedia. Clique aqui para acessá-lo]

> Clique aqui para ler todos os artigos da .net Magazine 85


De que se trata o artigo:

Este artigo trata de integração contínua, um termo cunhado por Kent Beck em seu livro sobre Extreme Programming, que define uma prática aplicada na indústria há muito tempo. Consiste, basicamente, em diminuir o ciclo de integração e torná-la tão frequente quanto possível.

Para que serve:

Numa equipe com muitas pessoas, gerenciar as mudanças de forma razoável pode ser muito difícil, visto que as diversas mudanças podem conflitar entre si. Quanto mais tempo se leva entre o desenvolvimento e a integração, mais difícil ela se torna. A integração contínua visa resolver esse problema, introduzindo práticas e ferramentas que facilitem a verificação e correção de erros de integração.

Em que situação o tema é útil:

Este tema é especialmente útil ao se trabalhar com equipes com muitas pessoas, onde frequentemente as mudanças feitas por um membro impactam todos os outros. Em muitas empresas, definem-se esquemas antiquados para evitar erros de integração, como a aplicação de locks exclusivos no controle de versão. A integração contínua tenta resolver esse problema sem tirar a fluidez necessária a um processo de desenvolvimento saudável.

Integração Contínua

Trabalhar em equipe pode ser uma tarefa complicada, pois envolve integrar o trabalho de diversos profissionais em um produto coerente. Quanto mais isolados os profissionais e equipes trabalham, mais difícil pode se tornar essa tarefa. Neste artigo, serão abordadas várias práticas que compõem a integração contínua. Um princípio que consiste basicamente em diminuir o ciclo de integração para aumentar a comunicação, a transparência e evitar acumular a complexidade envolvida na tarefa. Serão descritas diversas práticas de automatização de processos manuais para facilitar a integração. Também irão ser abordados os pontos fortes e fracos de algumas ferramentas de integração contínua e as vantagens que essas práticas trazem a curto e médio prazo.

Em um projeto de software, desenvolvedores trabalham gerando código-fonte e outros artefatos que compõem um sistema maior. Cada desenvolvedor realiza um conjunto de tarefas que normalmente têm relação com as tarefas que outros desenvolvedores estão realizando. Apesar de um software ser um sistema determinístico, o resultado da relação entre cada um dos componentes de um programa pode ser imprevisível.

Sabendo isso, fica claro o quão complicado pode ser trabalhar num software em equipe. Quanto maior a equipe, maior é o desafio. Em um projeto de grande porte, o processo de integração do trabalho de pessoas em várias equipes pode levar dias, semanas ou até meses.

Quanto mais tempo um desenvolvedor ou equipe trabalha sem integrar seu trabalho com o de seus colegas, mais difícil será essa integração quando acontecer. Nesse ponto entra a integração contínua, que visa diminuir esse problema, ao tentar realizar essa integração com a maior frequência possível. Nem sempre essa é uma tarefa fácil.

O termo “Integração Contínua” foi documentado pela primeira vez como um dos 12 princípios da Extreme Programming. Desde então, muito tem se falado sobre ele nos mais diversos contextos. Isso acontece porque a prática deste princípio permeia quase todos os processos do desenvolvimento de software, alimentando ou recebendo feedback de outras práticas.

Nota do DevMan

XP é Extreme Programming, uma metodologia ágil de desenvolvimento de software. Ela é baseada em uma série de princípios que se complementam, por exemplo, pair programming, TDD, iterações curtas etc. Foi descrita por Kent Back, em seu livro sobre o assunto. Desde então, XP tornou-se uma das metodologias ágeis mais famosas. Apesar de relativamente nova, seus princípios vêm sendo discutidos há muito tempo na indústria e na comunidade científica.

Muitos desenvolvedores argumentam que aplicar integração contínua se revela muito custoso no processo de desenvolvimento e que, para ter sucesso, muitas mudanças precisam ser feitas. De fato, muitas vezes isso é verdade. Mas aplicar a integração contínua, assim como o TDD, não é o motivo de tal dificuldade, mas sim a negligência de outras boas práticas complementares.

A integração contínua não é só uma prática, mas um princípio. Não é possível implantar integração contínua por si só. Ela deve ser alcançada através da implantação de outras práticas. Várias delas serão discutidas neste artigo.

Um ciclo de integração sustentável

É comum acreditar que a integração contínua acontece num servidor de build. Entretanto, a maior parte das práticas deve acontecer no dia-a-dia do desenvolvedor. E para que tudo isso funcione, deve existir um ciclo comum que defina como integrar o código.

Deve existir um repositório comum, acessado por todos os membros da equipe, que contenha todo o código já integrado até certo momento da vida de um software. Esse repositório central é chamado de “mainline”. Existem muitas estratégias sobre como gerenciar a mainline e as várias versões que ela armazena. Isso será discutido mais à frente.

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

Juan Lopes

Guru .net e tecnologias MS