quinta-feira, 26 de julho de 2012

Gerenciando projetos com Redmine

Há algumas semanas começamos a usar o Redmine para auxiliar no desenvolvimento de um sistema Web.  Precisávamos de uma ferramenta que pudesse nos auxiliar a planejar as atividades e registrar novas requisições e pendências que fossem surgindo com o tempo (algo como um issue tracking tool). Sugeriram o MS Project para montar o cronograma, mas não seria nada tão trivial compartilhar o cronograma com  pessoas da equipe vivendo em outros países, e algumas delas (os usuários) com pouca familiaridade com o MS Project.Ficou claro para mim que a melhor solução seria uma aplicação Web para nos ajudar no acompanhamento do projeto. Algo simples, mas ao mesmo tempo eficaz, e depois de procurar pela Internet por ferramentas do gênero, eu acabei encontrando o Redmine.

Redmine

O Redmine é uma ferramenta Web open-source para gerenciamento de projetos de desenvolvimento de software. Ele cobre os principais aspectos do desenvolvimento de sistemas e é bastante flexível – pode ser instalado em diversos sistemas operacionais, com opções de bancos de dados e a própria ferramenta pode ser estendida através de plug-ins. Eu listei abaixo os principais recursos do Redmine que me chamaram a atenção: Suporte a múltiplos projetos, subprojetos e versões; Planejamento de tarefas; Registro de tarefas (bugs, modificações, novos requisitos, etc); Controle de acesso por perfil de usuário; Gráfico de Gantt e calendário de eventos; Repositório de documentação do projeto e arquivos; Suporte a Wikis e Foruns por projeto; Traduzido em vários idiomas; Integração com os principais repositórios de código fonte (SVN, CSV ,Git, etc); Extensível através de plug-ins;


Projetos, Subprojetos e versões

Como o Redmine é voltado para o desenvolvimento de software, um projeto pode ter várias versões. Isso facilita o planejamento de tarefas, pois novos requisitos podem ser incluídos em versões futuras, ou até mesmo registrar ideias de futuras implementações em versões como “Versão de longo prazo” ou “versão futura”.Um projeto também pode ser dividido em subprojetos. Um subprojeto é como qualquer projeto, porém está vinculado a outro projeto. No meu caso, como desenvolvemos um produto, criamos um subprojeto para cada cliente onde o sistema está sendo implantado. A grande vantagem é que recursos dos subprojetos são compartilhados com o projeto pai, como por exemplo, tarefas, atividades, calendário, etc.

Planejamento de tarefas

O planejamento do projeto é feito através das tarefas de cada versão. Para um projeto recém-iniciado é natural existir uma única versão, mas outras podem surgir com a conclusão da versão atual. Um recurso que gostei bastante foi a barra de progressão, mostrando um percentual das tarefas que já foram concluídas para cada versão, dando uma boa noção de quanto ainda falta para concluir.O Redmine também gera gráfico de Gantt, mostrando as tarefas em uma linha do tempo. Caso seja estabelecida a data de início e fim de cada tarefa, elas serão destacadas como uma linha horizontal no período estabelecido.

Registro de tarefas

Talvez esta seja a função mais utilizada durante o projeto. Uma tarefa pode ser uma atividade a ser realizada durante o projeto, mas pode ser também o registro de bugs ou falhas encontradas durante os testes. Caso o serviço de e-mail esteja configurado no Redmine, ao cadastrar uma nova tarefa, os usuários responsáveis receberão um e-mail de notificação.Um recurso que não testei, mas que consta na documentação do redmine, é o cadastro automático de novas tarefas ao enviar um e-mail para uma conta reconhecida pelo Redmine.

Controle de acesso por perfil de usuário

É possível criar perfis de usuários. Cada perfil tem um conjunto de permissões que indica o que o usuário associado ao perfil poderá fazer no Redmine. O Redmine já vem com três perfis cadastrados: Manager, Developer e Reporter.E falando de permissões, um projeto pode ter visão pública, isto é, pode ser visto por qualquer um sem a necessidade de autenticação; porém, é possível definir quais informações do projeto serão públicas (por exemplo, apenas a consulta de atividades, planejamento e tarefas podem tem visão pública em um projeto).

Foruns e Wikis

O Redmine também dá suporte à criação de fóruns e páginas Wikis por projeto, sem dever em nada para qualquer ferramenta equivalente, mas é importante mencionar os recursos de formatação de textos destas ferramentas. O Redmine contém uma vasta gama de opções de formatação, desde textos em negrito e itálico, passando por links e imagens, até formatação automática de trechos de código fonte. Para isso, basta colocar caracteres especiais ao lado do texto. Por exemplo, para exibir o texto “maçã” em negrito, basta escrever *maçã* (entre asteriscos). A princípio parece um tanto complexo, mas se acostuma muito rápido (graças ao help on-line nas páginas de entrada de textos). O mesmo princípio de formatação se aplica nas descrições das tarefas.

Integração com repositórios de código fonte

O Redmine suporta uma variedade de repositórios de código fonte. No nosso caso caiu como uma luva pois usamos o SVN, onde é exibido no Redmine as últimas alterações feitas no repositório e um simples relatório de estatísticas (nada além disso). Se a conta do usuário no repositório for igual a conta no Redmine, ele é reconhecido pelo Redmine e exibido com o seu nome completo. Outra característica importante no Redmine é a possibilidade de relacionar os comentários feitos pelos usuários no repositório de código fonte com as tarefas no Redmine - Ao enviar as mudanças do código para o repositório, basta incluir uma hashtag seguida pelo número da tarefa (exemplo, #123). No Redmine, a referência à tarefa será exibida como um link para ela.

Extensível através de plug-ins

Apesar de não ter uma lista muito extensa, e de muitos não estarem atualizados para as versões mais recentes ou mesmo sendo desenvolvidos ainda, é possível estender ou incluir novas funções no Redmine através de plug-ins. No próprio site do Redmine é possível ter uma lista deles. Um plug-in que gostei bastante é o que possibilita colar uma foto do clipboard direto para uma tarefa sendo cadastrada. Facilita muito quando se quer anexar uma foto da tela do sistema a uma tarefa. Este plug-in é o Redmine Attach Screenshot plugin.

Outros recursos

O Redmine é traduzido em vários idiomas, e felizmente está disponível em Português do Brasil. A tradução é bastante honesta e ajustada ao contexto onde são exibidas. No Redmine é possível armazenar documentos e arquivos do projeto, o que facilita o compartilhamento de documentos do projeto, como por exemplo, guia do usuário, documentos técnicos, etc. Outro recurso interessante é o suporte a temas – Basta baixar um tema e copiá-lo para o diretório de temas do Redmine, depois é só selecioná-lo no módulo de administração e muda-se totalmente a aparência do Redmine;

E os contras...

Nem tudo são flores com o Redmine. Existem alguns pontos negativos que encontrei durante este pouco tempo de uso:


1 - Difícil instalação em ambiente Windows – Foi uma surra instalar o Redmine no Windows. Ele foi desenvolvido em Ruby on Rails, e além de ter que instalar a linguagem, é preciso também instalar as versões corretas de cada pacote, caso contrário não funciona. Gastamos uns 2 dias só para instalar o Redmine;


2 - Apesar de todos os recursos, o Redmine ainda não tem uma base instalada muito extensa, e o número de colaboradores também não é muito grande. Isso torna um pouco incerto o futuro da ferramenta, mas nada que mereça tirar o seu sono – se no futuro o Redmine não mais atender, basta substituir uma ferramenta de gerência de projetos por outra. O seu modelo de dados é de fácil acesso e compreensão, o que facilita migrações e consultas externas.
... Mas vale a pena


Os pontos negativos citados acima nem de perto chegam a ofuscar as vantagens que tivemos ao adotar o Redmine no acompanhamento dos projetos. Estamos mais organizados, com procedimentos mais padronizados e nos planejando mais. A consequência disso se resume em mais produtividade e controle. Sei que existem soluções comerciais com mais recursos (como por exemplo, o Jira é um ótimo produto comercial), mas a relação custo x benefício superou em muito as minhas expectativas.