Objetivo A empresa já utiliza um sistema para gerenciamento de seus projetos de desenvolvimento – o redmine. O sistema no entanto apresenta problemas de desempenho. O objetivo desse projeto foi iniciar o desenvolvimento de um sistema semelhante, utilizando uma arquitetura desenvolvida para conseguir um bom desempenho. Escopo do Projeto Arquitetura Casos de Uso Protótipos Requisitos O projeto implementa um subconjunto do sistema que é hoje utilizado, com algumas modificações que melhor se adéquam ao cliente. Os requisitos dessa primeira versão irão permitir avaliar as funcionalidades mínimas para que os sistema seja operacional na nova plataforma. Issue Workflow Tracker IssueStatus ProjectRole Priority Project Módulos Para conseguir esse mínimo de funcionalidades, foi implementado o controle de tarefas. Uma tarefa é controlada com um fluxo de trabalho configurável pela aplicação, e os usuários só podem alterar os status das tarefas para outros status que seu perfil no projeto permita. Os casos de uso foram escolhidos para permitir que esse mecanismo pudesse ser implementado. Administração Manter Usuários Projeto Relatórios Gerenciar Projeto Gerar Relatório de Tarefas por Projeto, Situação e Responsável Manter Papéis Manter Tipos de Tarefas Manter Status Tarefas Manter Fluxo de Trabalho Listar Tarefas por Projeto, Situação e Responsável Criar Tarefa Atualizar Tarefa Manter Prioridades Manter Permissões Gerar Relatório de Projetos Associar Membro Gerar Relatório de Tarefa Linguagem e Bibliotecas O projeto foi desenvolvido em Java, utilizando a tecnologia de servlets e JSP. O sistema utiliza o framework Spring para controle de transações, injeção de dependência, abstração JDBC via JPA, geração de código com Spring Roo, construção de páginas com Apache Tiles e segurança da aplicação. Os relatórios foram feitos com JasperReports. Spring Core Jasper Reports Spring Security Java / AspectJ Spring Roo Tiles JPA / Hibernate Servidor O sistema apresenta uma interface web fornecida por um servidor de aplicação Tomcat. O banco de dados utilizado é o mesmo da aplicação que está sendo substituída, MySQL. Ubuntu Uma apliance Ubuntu funcionando em uma máquina virtual hospeda o servidor de aplicação, o servidor de banco e o servidor web Apache. Tomcat MySQL Apache Ambiente de Desenvolvimento A IDE utilizada foi eclipse, versão SpringSource Tool Suite 2.8. O projeto está disponível no Google Code e utiliza o subversion como controlador de versão. Eclipse Hudson GoogleCode A construção e gerenciamento de dependências foi feito com o Maven. O Hudson foi utilizado como servidor de integração contínua. Junit Subversion Diagrama de Classes Ator: Administrador do Sistema O administrador do sistema irá manter as configurações básicas e o cadastro de usuários e permissões. Ele também será responsável por configurar o fluxo de trabalho dos tipos de tarefas cadastrados no sistema. Atores : Gerente e Membro do Projeto O Gerente de Projeto será responsável por cadastrar membros no projeto, o que irá configurar o que eles podem fazer nos projetos. Ele também poderá criar e alterar tarefas, e gerar relatórios. Os membros do projeto criam e atualizam as tarefas. Os status das tarefas são controlados pelos papéis atribuídos pelo gerente a esses membros, e pelo fluxo de trabalho configurado para aquele tipo de tarefa. Criação de Projetos Listagem de Tarefas