Artigo no estilo: Curso

De que se trata o artigo:

O artigo trata de ferramentas úteis no desenvolvimento de sistemas e de sua integração a um ambiente completo para este desenvolvimento, baseado na IDE. É o segundo artigo da série, abordando nesta parte as atividades de automação da construção (com Ant e Maven), gerenciamento de dependências (com Ivy e Maven) e testes unitários (com JUnit). Como parte central do ambiente de desenvolvimento são utilizadas as IDEs Eclipse e NetBeans.


Para que serve:

As ferramentas apresentadas servem para automatizar e facilitar as atividades de construção do projeto (compilação, testes, empacotamento, documentação, etc.), gerenciamento de dependências (frameworks e ferramentas existentes utilizadas pelo software que está sendo desenvolvido) e execução de testes unitários.


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

O tema é útil para desenvolvedores em geral, em especial para aqueles com menos experiência e que ainda não conheçam as ferramentas apresentadas ou não utilizem um ambiente de desenvolvimento completo e integrado. Gerentes de projeto poderão também beneficiar-se do conteúdo do artigo para avaliar ferramentas que poderiam aumentar a produtividade de sua equipe.

Resumo DevMan:

Continuando a série sobre a configuração de um ambiente completo para desenvolvimento de software, apresentamos outras atividades comuns em um processo de desenvolvimento e ferramentas que facilitam ou automatizam sua execução, aumentando, assim, a produtividade do desenvolvedor. Começamos com a automação da construção, que consiste em integrar em um processo único tarefas como compilação, empacotamento, testes, implantação, etc. Para este fim, são apresentados o Ant (Figuras 1 e 2, Listagem 1) e o Maven (Figuras 3 e 4). Em seguida, descrevemos uma atividade bastante relacionada à construção automatizada: o gerenciamento de dependências de um projeto. O Maven aparece novamente como ferramenta pra este fim (Figuras 5 a 7), enquanto para os que preferem o Ant é preciso integrar uma ferramenta externa, o Ivy (Listagens 2 e 3). Por fim, abordamos a atividade de testes unitários, para a qual comumente, em projetos Java, se utiliza o framework JUnit (Listagens 4 a 9, Figuras 8 e 9).

Esta é a segunda parte de uma série de artigos sobre a construção de um ambiente completo para desenvolvimento de software. Na primeira parte, publicada na edição 92 de Java Magazine, foram abordados a IDE (peça central da maioria dos ambientes de desenvolvimento), o servidor Web ou de aplicação (para implantar e testar aplicações Web ou corporativas), o servidor de banco de dados relacional (grande parte dos sistemas de informação atualmente utiliza-o para persistência de objetos) e uma ferramenta para gerenciamento das bases de dados.

Para a continuação desta série, há ainda uma extensa gama de ferramentas que podem ser integradas a este ambiente de desenvolvimento, trazendo benefícios diversos aos desenvolvedores. Já citamos muitas delas no primeiro artigo da série, como por exemplo: ferramentas de construção (build), gerenciamento de dependências, testes unitários, controle de versão, gerenciamento de falhas (bugs) e novas funcionalidades, análise de desempenho, integração contínua, etc.

O foco deste artigo será nas seguintes atividades/ferramentas:

  • Automação da construção: permite automatizar tarefas relativas à construção (build) da aplicação, como compilação, empacotamento, geração de documentação, etc. Serão abordadas as ferramentas Maven e Ant;
  • Gerenciamento de dependências: controla as dependências de um projeto, no caso do mesmo requerer diversos frameworks, que possivelmente por sua vez dependem de outros frameworks, formando uma cadeia de dependências complexa. Maven e Ivy são as ferramentas citadas para esta atividade;
  • Testes unitários: consiste na elaboração de testes específicos para cada método da aplicação e sua integração ao processo de construção automatizada do sistema. A presença de testes unitários pode auxiliar o desenvolvedor a descobrir mais rapidamente quando uma alteração no sistema adicionou uma falha em módulos que já foram testados. O foco aqui será o framework JUnit.

O projeto EngeSoft, iniciado na primeira parte da série, continuará a ser utilizado nos exemplos deste artigo. Quando for mais conveniente, projetos de teste poderão ser criados somente para demonstrar determinadas abordagens. Também continuarão a ser usadas as IDEs Eclipse 3.6 (Helios) e NetBeans 7.0.

Automação da construção (build automation)

Em projetos de desenvolvimento de software de médio e grande porte é muito comum automatizar uma série de atividades relativas à construção (build) da aplicação, como por exemplo:

  • Compilação do código-fonte;
  • Empacotamento das classes compiladas;
  • Execução de testes unitários;
  • Implantação no servidor (no caso de aplicações distribuídas);
  • Geração de documentação;
  • Etc.

Uma das primeiras ferramentas deste tipo a ser amplamente utilizada foi o Make, criado em 1977 para automatizar a compilação de arquivos de código-fonte em arquivos objeto e a subsequente ligação de vários arquivos objeto (módulos do sistema) em um único executável. O Make foi desenvolvido para o Unix e até hoje versões modernas da ferramenta são utilizadas em sistemas Unix e Linux, tendo crescido em versatilidade. Hoje o mesmo é utilizado não só para compilação, mas para as mais variadas tarefas, como acessar repositório de controle de versão, instalar/desinstalar o programa compilado no sistema, etc.

No entanto, atualmente as duas ferramentas de automação da construção de projetos Java mais utilizadas são o Ant e o Maven (veja Links), ambos desenvolvidos pela fundação Apache. De maneira bastante resumida, pode-se dizer que o Ant é bem similar ao Make, porém portável entre diferentes plataformas e com a configuração do processo de construção via XML. O Maven vai além e provê diversas outras funcionalidades (dentre elas destaca-se o gerenciamento de dependências, sobre o qual falaremos em seguida), definindo-se como uma “ferramenta de gerenciamento e compreensão de projetos”.

...
Quer ler esse conteúdo completo? Tenha acesso completo