Este artigo apresenta o TRAC, uma ferramenta open source, sob licença BSD, baseada em web, que usa uma abordagem minimalista para o gerenciamento de projetos de software, provendo uma forte integração com o Subversion (SVN), um motor Wiki poderoso e facilidades na geração de relatórios. Serão apresentados também plugins que potencializam as utilidades dessa ferramenta.
Em que situação o tema é útil:
O Trac ajuda nos processos de gerenciamento de configuração e mudanças de projetos de software, ajudando no controle de atividades do dia a dia, provendo suporte a métodos de desenvolvimento, preservação da integridade do produto e auditoria, que nos permitirá identificar por que, quando e por quem um artefato foi alterado.
Resumo DevMan:
Neste artigo conheceremos o TRAC, uma ferramenta simples e leve para o gerenciamento de projetos, de interface web e escrita em Python. Serão apresentados os passos necessários para sua instalação, configuração e integração com o controlador de versões SVN.
Outra característica importante que será demonstrada é a possibilidade de estender suas funcionalidades com a adição de plugins, onde serão listados alguns de grande utilidade. Será apresentada também a utilização dessa ferramenta em um projeto Java, integrada diretamente ao Eclipse, fazendo uso de marcações wiki nas descrições de atividades e nas mensagens de commit do SVN, onde serão criados automaticamente links e referências entre tickets (atividades), changesets (conjuntos de alterações no SVN), arquivos e páginas wiki. Através destas funcionalidades, poderemos consultar todos os eventos do projeto de forma ordenada em uma linha do tempo, e em relatórios personalizáveis, possibilitando assim acompanhar o progresso do projeto facilmente.
O Gerenciamento de Configuração e Mudanças é um dos principais fatores que influenciam no sucesso de um projeto de desenvolvimento de software, sendo considerado uma boa prática de mercado e adotado por modelos de processos consolidados como RUP, MPS-BR e CMMI. Segundo Roger Pressman, em seu livro Software Engineering: A Practitioner's Approach, o Gerenciamento de Configuração e Mudanças pode ser definido como: “um conjunto de atividades projetadas para controlar as mudanças pela identificação dos produtos do trabalho que serão alterados, estabelecendo um relacionamento entre eles, definindo o mecanismo para o gerenciamento de diferentes versões destes produtos, controlando as mudanças impostas, e auditando e relatando as mudanças realizadas.”.
Mas porque adotar uma estratégia de gerenciamento de configuração e mudanças? Pelo fato de que ao longo do processo de desenvolvimento de um software, surgem obstáculos que, se não forem devidamente gerenciados, podem resultar no fracasso do projeto. Esses obstáculos se originam principalmente pela necessidade de atualização simultânea de artefatos por mais de um desenvolvedor, pela notificação ineficiente dessas alterações para todos os membros da equipe e pela existência de várias versões do software sendo desenvolvido. Problemas como defeitos que já foram corrigidos e voltam a acontecer, funcionalidades implementadas e testadas que param de funcionar ou indefinição sobre o que deve ou não ser disponibilizado em produção são comuns em um ambiente sem um controle adequado.
Dessa forma, com a adoção de uma estratégia de gerenciamento de configuração e mudanças, podemos responder questões cruciais em um projeto de software, como:
· Quais mudanças ocorreram no projeto e quando elas ocorreram?
· Por que essas mudanças foram necessárias?
· Quem solicitou e quem efetivamente realizou a mudança?
· Podemos reproduzir esta mudança caso necessário?
· O software desenvolvido continua estável mesmo depois das mudanças?
Essas questões podem ser respondidas pelas atividades do Gerenciamento de Configuração e Mudanças. Com o controle de versões podemos saber quais artefatos foram alterados, quando as alterações ocorreram e quem as realizou. Já com o controle de mudanças podemos rastrear as necessidades que originaram essas mudanças e quem as solicitou.
Nos tópicos a seguir, apresentaremos conceitos inerentes à disciplina de gerenciamento de configuração e mudanças e das ferramentas utilizadas como o Trac e SVN. Depois veremos o processo de instalação e configuração dessas ferramentas para que possam trabalhar de forma integrada. Por fim, criaremos um projeto de exemplo e nos aprofundaremos na utilização das funcionalidades do Trac, assim como sua integração com o Eclipse por meio de plugins.
Controle de Versões
O controle de versões é a principal ferramenta do Gerenciamento de Configuração e Mudanças, uma vez que gerencia as diferentes versões dos artefatos do projeto como códigos-fonte e documentos. Além disso, durante o processo de desenvolvimento do software, forma um histórico completo de todas as alterações efetuadas, possibilitando ainda a comparação entre versões, identificação dos responsáveis pelas alterações, marcação de versões específicas e ramificações do projeto.
Controle de Mudanças
Uma das poucas constantes no desenvolvimento de software é o fato de que mudanças ocorrerão. O controle de mudanças ajuda justamente a coordenar essas mudanças em todos os seus estágios, desde sua proposição, passando pela decisão de quais serão efetuadas ou não, e pelo acompanhamento de sua execução até a sua conclusão.
Trabalhando de forma integrada ao controle de versões, o controle de mudanças permite a rastreabilidade de quais artefatos foram ou serão alterados a partir de uma mudança específica, nos fornecendo subsídios para análises mais detalhadas sobre o impacto dessas mudanças no projeto.
SVN
O SVN ou Subversion é um sistema de controle de versão open-source que tem por objetivos gerenciar arquivos e diretórios, e as modificações feitas neles ao longo do tempo. Com isso podemos recuperar versões antigas dos dados armazenados, examinarmos o histórico de suas alterações e quem as realizaram.
Em seu núcleo está o repositório, que é a central de armazenamento de dados e atua de forma centralizada no compartilhamento de informações, muito semelhante a um servidor de arquivos.
Seu surgimento foi inspirado pela necessidade de apresentar um sucessor aprimorado e compatível com o CVS (Concurrent Versions System), e hoje está entre os controladores de versão mais utilizados no mercado.
Trac
Trac é uma ferramenta open source, escrita em Python e de interface web, para controle de mudanças em projetos de desenvolvimento de software. O seu objetivo é ajudar o desenvolvedor a rastrear as mudanças, entender o porquê de cada uma e qual o seu impacto no projeto como um todo.
A ferramenta disponibiliza recursos interessantes como controle de mudanças por sistema de tickets e wiki para documentação colaborativa. Por intermédio da integração com o SVN, funciona também como um navegador do repositório, além de acompanhamento da evolução do projeto e notificação via e-mail de modificações em tickets.
Entre seus principais benefícios, podemos destacar a melhoria considerável na qualidade do produto final e também do processo de análise e desenvolvimento do software. O controle de mudanças ocorridas no ciclo de desenvolvimento também é outro fator de destaque, pois possibilita uma visão completa dos fatos ocorridos com alto nível de rastreabilidade, conseguida principalmente pela integração com o controle de versões. Por meio destas informações, o acompanhamento da evolução do projeto é facilitado, a partir de relatórios e gráficos, e com a utilização do módulo Wiki, uma documentação mais completa do projeto é desenvolvida devido à sua natureza colaborativa e evolutiva, que incentiva a participação de todos os membros da equipe.
Configuração
Assim como o SVN, o Trac pode ser instalado na maioria dos sistemas operacionais do mercado, porém pode ser necessária a utilização de procedimentos diferentes de instalação para cada um desses sistemas operacionais. Com o intuito de facilitar o entendimento deste artigo, optaremos por instalar o Trac em conjunto com o SVN no sistema operacional Windows, utilizando uma ferramenta denominada VisualSVN Server. Essa ferramenta agrega em um único pacote de instalação os componentes necessários para a configuração de um servidor SVN em ambiente Windows, e contém um módulo opcional com o Trac, simplificando bastante o processo de instalação e integração entre as duas ferramentas.
No momento em que este artigo é escrito, a versão estável do Trac é a 0.12, e o VisualSVN Server encontra-se na versão 2.5.5, a qual embarca o SVN 1.7.5 e o servidor Apache HTTP Server 2.2.22, que nos permitirá acessar o repositório via Web.
Na seção Links podem ser encontrados endereços para mais informações sobre a instalação do Trac e do SVN para outros sistemas operacionais, assim como para o download do VisualSVN Server e do módulo Trac do VisualSVN Server.
Instalando o VisualSVN Server
O processo de instalação do VisualSVN Server é bem simples e
possibilita a configuração de um servidor SVN com apenas alguns cliques. Existe
também a versão Enterprise (versão comercial) que oferece funcionalidades
adicionais como autenticação pelo Active
Directory do Windows e administração remota do repositório. Para iniciar
sua instalação, execute o arquivo baixado do site da ferramenta, clique em ...