Parte Técnica

 

1. O Trabalho

Em tudo que foi feito no estágio, predominou o trabalho individual. Tinham-me como único responsável pela realização de todas as tarefas e atividades em que fui envolvido. Por isso, a equipe era simples:

Os outros funcionários só se relacionavam com os meus projetos quando realizavam o lançamento das horas de trabalho no GerProj, ou seja, como usuários.

Devido ao porte da empresa (pequeno), cabe salientar uma grande vantagem desfrutada por mim: a diretoria acompanhou o trabalho de perto, com feedback em tempo real de ambas as partes. Conforme se mostraram necessárias, mudanças foram realizadas nos requisitos e/ou especificações. Além disso, diante da proximidade do término de uma atividade, outras futuras já iam sendo cogitadas. Isto garantiu a ausência de standby e também garantiu a possibilidade de reflexão nos próximos problemas, de forma antecipada. Com isso, o aprendizado se desenrolou de modo contínuo e eficaz.

2. Estimativas Iniciais

Ao ingressar na empresa, houve uma breve conversa sobre o que era planejado para mim até o fim do módulo (março a novembro, mês de entrega da monografia) - até porque, isto era necessário para pincelar a minha proposta de estágio. O que ficou acertado foi, aproximadamente, o seguinte:

(nos 8 meses de duração)

Mês
Atividade
1
Preparação da Infra-Estrutura
2
Imersão no GerProj - Primeiras modificações
3
Manutenção e Modificações do GerProj
4
5
GanttProject
6
7
Exo Portal
8

Esse era o planejamento superficial das minhas atividades. Notem que não há qualquer detalhamento de nenhuma atividade. Isto foi prudente, pois de acordo com a evolução do quadro e com a possibilidade de acompanhamento estreito, era realizado o planejamento mais detalhado dos passos.

3. Métricas Post-Mortem

Com o passar do tempo, verificou-se o quanto esta estimativa inicial se aderia ao que realmente estava acontecendo. Assim como em qualquer projeto, foi observado que não tínhamos como prever exatamente todos os passos futuros e, claro, essa chance diminuiu proporcionalmente à ousadia de nossa tentativa de previsão (pela sua extensão temporal dilatada).

Para facilitar a compreensão e aproveitar para mostrar um pouco mais do GanttProject, projeto em que figuro no quadro de desenvolvedores, preparei um cronograma Gantt acompanhado dos respectivos relatórios deste cronograma. Estes resumem de forma objetiva e simples todas as atividades desempenhadas até o começo da preparação desta monografia (sinopses + localização temporal).

O leitor pode encontrar o material que foi descrito acima (relatórios) aqui:

versão HTML (padrão) versão PDF (personalizada por mim - usando XSL)

O .xml utilizado pelo Gantt para gerar tudo isso pode ser descarregado aqui.

(obs: é claro que eu não me utilizei de todos os recursos possíveis do Gantt para elaborar o cronograma - eles não eram necessários).

4. GerProj - Sistema de Gerenciamento de Projetos

Como já foi dito, o GerProj faz essencialmente o papel de administrador de atividades na empresa, controlando as horas trabalhadas de cada um, a evolução do trabalho e outros.

Praticamente todas as tecnologias utilizadas são baseadas na tecnologia J2EE da Sun. E todo o ambiente de desenvolvimento utiliza Linux.

As principais tecnologias utilizadas foram:

As principais funcionalidades do sistema podem ser assim relacionadas:

Vamos a um use-case do GerProj que, sendo acompanhado pelo diagrama, retrata muito bem a utilização usual do sistema:

Um cliente contrata a empresa. Esse cliente gostaria que desenvolvessemos um ou mais projetos. Cada projeto pode ser dividido em algumas tarefas ou metas principais, de responsabilidade de determinados funcionários. Porém, cada meta ou tarefa pode ser dividida em atividades ou ordens de serviço - que são desempenhadas por um ou mais usuários (desenvolvedores). Cada um desses desenvolvedores pode gerar acompanhamentos (textos explicativos) e lançar horas de trabalho para as atividades de sua responsabilidade (de forma que o(s) responsável(is) pela tarefa-mãe desta atividade possa(m) analisar o status do desenvolvimento). Cada atividade e tarefa traz a sua situação (aberta, concluída, cancelada ou reaberta). O Projeto pode-se dizer concluído quando todas as atividades e tarefas planejadas para ele estiverem com o status concluído ou cancelado.

No sistema também temos os usuários administradores, que carregam poderes de superusuário. Porém, mesmo para os superusuários, a função de eliminar entidades do banco de dados não foi incorporada. Isto porque interessa manter um histórico de projetos realizados na empresa, para uma possível análise de rentabilidade.

Aqui se apresenta um diagrama simplificado de relacionamentos das entidades do GerProj. Esse diagrama tem a finalidade de facilitar a compreensão do sistema. É possível clicar em cada entidade para visualizar a sua tela de criação WEB.

Lista dos exemplos de telas:

ACESSÍVEIS PELO DIAGRAMA

NÃO ACESSÍVEIS PELO DIAGRAMA

obs: Existem várias outras telas no GerProj (principalmente de administração [relatórios]), mas as que estão aqui são as principais e já retratam o sistema razoavelmente bem.

5. A Integração do GerProj com o GanttProject

Em contrapartida à grande utilidade do GerProj como ferramenta administrativa do presente e do passado da empresa, havia a sua pouca versatilidade para a visualização temporal das atividades e, portanto, para o planejamento do futuro dos projetos.

Assim, é natural que tenha surgido a necessidade de sanar esta deficiência. Depois de alguma pesquisa, foi encontrada, no sourceforge, uma ferramenta chamada GanttProject. Apesar de alguns bugs (que obrigaram que um bom tempo fosse gasto em seu código), esta ferramenta parecia ser a solução perfeita para suprir tal deficiência do GerProj, através da visualização temporal dos projetos.

Foi feita uma integração deste software opensource com o GerProj, de forma que o Gantt facilitasse a vida dos administradores, suprindo as principais falhas do sistema. Essa integração, enfim, trouxe o seguinte:

O GanttProject foi incorporado também no sistema, através de JavaWebStart. Nas páginas, pode-se clicar no link GanttApplet e trabalhar no GanttProject um projeto/tarefa, com tarefas/atividades.

A figura a seguir resume o esquema da integração:

 

 

6. Outros

É uma espécie de arca de aplicações. O portal faz o papel de repositório dessas aplicações, unificando-as a partir de utilidades como single-sign-on e uma camada bem estruturada de serviços web.

Minha tarefa foi instalá-lo (o que já não é tão simples por ser uma coisa muito nova e não ter muita documentação a respeito) e elaborar um portlet para o lançamento de horas do gerproj, dentro dele.

Para ver um exemplo de portal liferay: http://www.liferay.com

Trata-se de um repositório de documentos com compartilhamento inteligente e controle de versionamento. Todos na empresa passaram a desfrutar de um login e uma senha que os autorizavam a visualizar/editar/administrar as mais variadas seções do repositório.

Para conhecer o xwiki : http://www.xwiki.org

 

7. Bibliografia/Ferramentas Utilizadas

Quanto às ferramentas, o Eclipse e seus plugins (mavenide, lomboz, etc) tiveram um papel fundamental. Todos os dias, ao chegar no trabalho, o primeiro programa a ser aberto era o eclipse. Praticamente todo o trabalho de programação foi realizado nele.

Também serviram de fonte alguns sites de javascript e CSS. Além de um editor padrão de HTML e o DIA (ferramenta para desenhar diagramas). Há também alguns relatórios elaborados com o GanttProject.

E, finalmente, a bibliografia principal:

Java 2 Platform, Enterprise Edition (J2EE) - http://java.sun.com/j2ee
JBoss - http://www.jboss.org
The Apache Maven Project - http://maven.apache.org
The Apache Struts Web Application Framework - http://jakarta.apache.org/struts
Liferay site - http://www.liferay.com
GanttProject Site - http://sourceforge.net/projects/ganttproject/
MARINESCU, Floyd - "EJB Design Patterns - Advanced Patterns, Processes, and Idioms".

Além de sites de fórums e variados.