Gerenciamento
3.1.Build Automatizado
Uma das prticas que mais claramente define o conceito de evitar o
desperdcio de tempo o build automatizado. Em XP, a construo do produto
final incluindo a execuo de todos os testes deve ser feita de forma rpida e
automatizada.
A automao do build uma prtica relativamente recente. A engenharia de
software tradicional foi fundada em uma poca em que os computadores eram
extraordinariamente caros. Nesta poca, encontrar e corrigir problemas na
compilao dos lotes de programas era muito devagar. At a metade dos anos 80,
programas grandes demoravam muitas horas para serem compilados (McBreen,
2002). Nos ltimos anos, no entanto, esta situao mudou. O poder computacional
aumentou bastante e tornou-se cada vez mais barato, ao ponto de a maioria dos
programas poderem ser recompilados em poucos segundos. raro, at mesmo
para aplicaes muito grandes, demorar mais do que dez minutos para terminar o
build (McBreen, 2002).
De forma simples, a automao do build pode ser descrita como o ato de
automatizar (por meio de ferramenta ou script) o processo de compilar o cdigofonte na sua forma binria. Com um processo de build manual, uma pessoa efetua
mltiplas tarefas que so normalmente entediantes e passveis de erro. O build
automatizado envolve a automao de uma variedade de tarefas que o
desenvolvedor de software precisa fazer nas suas atividades dirias, incluindo o
Gerenciamento
29
15
disponibilizado para uso (isso inclui compilao, construo, instalao e ativao, por exemplo).
16
Gerenciamento
30
atividade. Algum erro foi cometido? s executar o build e verificar (Beck &
Andres, 2004).
Se o processo de build no for automatizado, partes importantes do sistema
podem ser construdas e testadas inadequadamente. Por isso, esta a primeira
prtica que deve ser empregada em qualquer tipo de projeto, pois realmente
indispensvel. A automao do build tambm obrigatria para o funcionamento
da integrao contnua do sistema. Segundo a definio proposta em (Beck &
Andres, 2004), builds automatizados devem construir o sistema inteiro e test-lo
em dez minutos. Se demorar muito mais do que isso, o build no ser feito com a
freqncia necessria, limitando a oportunidade de obteno de feedback.
Mais do que simplesmente compilar o cdigo, algumas ferramentas de build
vo alm e permitem a gerncia do projeto em vrios sentidos. Algumas
ferramentas integram funcionalidades de verificao do cdigo de acordo com um
PUC-Rio - Certificao Digital N 0511002/CA
Gerenciamento
31
para que as outras prticas funcionem. Uma restrio na ferramenta pode impedir
a utilizao de outras prticas.
Alm de ser completa naquilo que faz, importante que a ferramenta de
build se integre bem com o ambiente de desenvolvimento (IDE), mas que ao
mesmo tempo no seja dependente deste. Caso contrrio, muita perda de tempo
pode ocorrer.
Para o desenvolvimento Java, duas ferramentas so muito utilizadas para
automao: Ant e Maven.
3.2.1.Ant18
O Ant uma ferramenta que possibilita a automatizao do processo de
build. Neste sentido, o Ant muito parecido com a ferramenta Make19, mas ao
http://ant.apache.org/
19
cdigo fonte de um programa. Este utiliza instrues contidas num arquivo chamado "Makefile" e
capaz de resolver as dependncias do programa que se pretende compilar.
20
padres estabelecidos por um software para utilizao de suas funcionalidades. De modo geral, a
API composta por uma srie de funes acessveis somente por programao e que permitem
utilizar caractersticas do software menos evidentes ao usurio tradicional.
Gerenciamento
32
limpar, compilar
empacotar.
empacotar.
http://maven.apache.org/
Gerenciamento
33
Layout dos projetos bem definido: A maioria dos projetos adere ao layout
bsico de um projeto, o que torna muito mais fcil para o desenvolvedor
navegar e procurar por itens em qualquer projeto. Projetos que seguem a
estrutura padro de diretrios precisam de menos configuraes.
Gerenciamento
34
Sistemas que seguem essa abordagem declarativa tendem a ser mais transparentes,
mais reusveis e mais fceis de serem mantidos e compreendidos. Logo, se voc
pode construir um projeto usando o Maven, voc capaz de construir qualquer
outro projeto que use o Maven; se voc pode aplicar um plug-in de testes para um
projeto, ento possvel aplicar para todos os projetos. Voc descreve o seu
projeto usando um modelo do Maven e ganha acesso a particularidades e boas
prticas de uma comunidade inteira (Massol & Van Zyl, 2006).
A seguir, um arquivo POM (sigla para Project Object Model), modelo para
descrio de projetos do Maven:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>meu.grupo</groupId>
<artifactId>projeto-exemplo</artifactId>
<version>1.0</version>
<name>Projeto de Exemplo</name>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Gerenciamento
35
Gerenciamento
36
clean, clear
ou
limpa.
Com o
No se repetir (do ingls Dont Repeat Yourself). Esse uma das frases
adotadas pela turma de XP que implica em no permitir duplicao. No
caso dos builds, isso significa no ficar repetindo as mesmas configuraes
em vrios projetos. Algumas ferramentas, como o Maven, por exemplo,
permitem que a lgica de build seja reaproveitada por meio de herana das
configuraes.
Gerenciamento
37