|
Introdução
Minha monografia será baseada em estágio realizado na empresa Touch Tecnologia e Informática durante
o período de Maio/02 a Dezembro/03. O foco principal do meu estágio foi o sistema Motion, um sistema
desenvolvido para a empresa Diagnósticos da América S/A com o objetivo de automatizar todo o processo
operacional dos laboratórios adquiridos pela empresa - Delboni Auriemo, Lavoisier, Club DA, Bronstein,
Lâmina e Santa Casa - em 11 cidades, nos estados de São Paulo, Rio de Janeiro, Paraná e Minas Gerais.
O sistema Motion foi baseado na tecnologia J2EE [1] e utiliza muitas ferramentas
baseadas em Java para auxiliar o processo do desenvolvimento (como o Struts [2],
JUnit [3], Ant [4], etc.). O escopo do projeto engloba toda a
parte operacional, que vai desde a coleta das amostras para exame até a entrega do laudo para o paciente,
passando pela execução dos exames nos chamados NTO's (Núcleo Técnico Operacional).
Durante o período do estágio, eu participei do grupo responsável pela parte de análise de consistência e
liberação. Estas duas fases do processo ocorrem após o resultado de um exame ter sido obtido e antes dele
ser colocado no laudo. Elas funcionam mais ou menos como um filtro, verificando se o resultado obitdo é
válido e pode ser liberado automaticamente ou se alguma ação automática deve ser tomada (o exame deve ser
repetido ou liberado por um médico especialista, por exemplo).
Objetivos
Meu principal objetivo quando resolvi fazer este estágio foi conhecer na prática como funciona todo o
processo de desenvolvimento de um software num ambiente corporativo, para ver como as coisas vistas
em sala de aula (e no desenvolvimento dos exercícios-programa) podem ser aplicadas num contexto real
de uma empresa. Foi por este motivo que eu decidi entrar na Touch, uma vez que como ela era uma empresa
relativamente pequena desenvolvendo um sistema de grande porte eu poderia ter contato com todas as
fases do processo de desenvolvimento.
Além disso, eu estava muito interessado em aprender um pouco mais sobre sistemas distribuídos e a
tecnologia J2EE e na Touch tive a oportunidade de estudar melhor este assunto ao mesmo tempo que
desenvolvia o Motion. É claro que eu tive que aprender a usar muito mais coisas que eu imaginava,
mas a idéia de um estágio é aprender e eu via que lá tinha bastante campo para isto.
Por fim, um objetivo secundário que eu procurava no estágio era conhecer como funciona o ambiente de
trabalho de uma empresa, para poder ter uma comparação com o ambiente onde desenvolvemos nossos EP's
durante nossa vida no IME.
Atividades Realizadas
Meu estágio começou em Maio de 2002 e eu já realizei algumas tarefas, das quais cito as mais importantes:
-
A primeira fase que passei pelo estágio foi basicamente de treinamento, integração com o resto da
equipe e de familiarização com o projeto Motion - seu escopo e características - além da minha
participação no grupo de análise de consistência. Acredito que esta fase tenha durado aproximadamente
de 2 a 3 meses e foi quando mais aprendi.
-
Após conhecer melhor o projeto, todos os grupos entraram numa fase de desenvolvimento das entidades
EJB do sistema. Elas representam uma camada de abstração que esconde a comunicação com o Banco de
Dados, deixando esta tarefa para o Container do Servidor de Aplicações. Para cada entidade EJB,
criamos um Bean correspondente. Este Bean nada mais é que uma representação mais leve
da entidade - como definido pelo padrão DTO (Data Transfer Object) [5] -
utilizado na comunicação entre as camadas do sistema. Esta fase do estágio durou cerca de 1 a 2 meses.
-
A próxima fase foi fazer as telas de cadastro das entidades. Foi nesta fase que conheci a parte
Web do projeto. Foi quando estudei e aprendi a usar o Struts [2] e JSP. Nesta fase
também tive que fazer as Sessions EJB responsáveis pela lógica do cadastramento das entitades e
da comunicação entre a camada de interface e a camada do Servidor de Aplicações. Esta fase do estágio
durou cerca de 1 a 2 meses também.
-
Por fim, a última fase do estágio começou em meados de dezembro de 2002 e terminou há cerca de 1
mês atrás. Durante esta fase, eu fiquei responsável por um módulo do sistema que tinha começado a ser
feito por outra pessoa, mas não havia sido terminado. Este módulo era responsável pela definição e pela
interpretação de expressões escritas numa linguagem interna do sistema chamada LMotion. Esta linguagem
é utilizada para facilitar o acesso aos dados do modelo como, por exemplo, para acessar o resultado de
um exame ou o peso de um paciente. Durante esta fase, aprendi a utilizar uma ferramenta chamada SableCC
[6], um framework para gerar compiladores em Java.
Cronograma 2º Semestre
É um pouco complicado fazer um cronograma exato das atividades que irei realizar até o fim do próximo semestre,
uma vez que não existe uma cobrança de prazos rígida aqui na empresa. Porém, o que posso adiantar são os projetos
que estou envolvido no momento e quais as próximas metas a serem cumpridas:
-
Atualmente estou desenvolvendo um framework para facilitar a criação de testes automáticos da parte web.
Estes testes serão escritos sobre o StrutsTestCase [7], uma extensão do Cactus
[8] que, por sua vez é uma extensão do JUnit [3] para rodar em servlets.
O StrutsTestCase [7] facilita a criação de testes unitários das telas do sistemas. A idéia
do framework que estou desenvolvendo é gerar o código funcional do teste, baseado no que o usuário faz ao navegar
nas telas do sistema, poupando o tempo de escrever todo o código de navegação nas telas e deixar para que seja
escrito somente o código que valida aquela execução. A idéia para implementar tal framework é utilizar programação
orientada a aspectos (AspectJ [9], em particular) para interceptar as chamadas aos métodos
do Struts enquanto o usuário navega nas páginas. O aspecto então gera o código do que o usuário fez.
Como este novo projeto está numa fase inicial, não tenho idéia de quanto tempo ele levará para ser concluído,
mas foi um desafio que achei bastante interessante para aprender um pouco mais sobre programação orientada a
aspectos e sobre o JUnit.
-
Apesar de ter terminado a parte funcional do ambiente de interpretação do LMotion, muitos de seus elementos
ainda não foram totalmente definidos e a linguagem provavelmente será extendida conforme os usuários do
sistema precisarem de novos métodos de acesso a dados do sistema. Como fiquei responsável por este módulo,
provavelmente ainda irei atualizá-lo no próximo semestre.
-
Por fim, caso consiga terminar os projetos acima citados, ainda restam algumas pendências do grupo de
análise de consistência e liberação. Uma que eu provavelmente irei participar será a definição e implementação
das ações automáticas que podem ser tomadas durante a análise de um resultado anormal como, por exemplo, o
envio para repetição do teste ou a geração de um aviso de urgência (caso o resultado esteja muito fora do normal).
Estrutura Esperada da Monografia
A estrutura que planejo para minha monografia será de duas partes principais: a primeira falando um pouco mais
sobre o escopo geral do sistema, o escopo específico do grupo que participei e das atividades que realizei
durante o estágio - será, portanto uma parte mais técnica. A segunda parte será sobre uma parte mais subjetiva
e tentarei relacionar minha experiência obtida no estágio com a vida do IME.
- Parte Técnica
-
A Empresa
-
O Sistema Motion - Escopo Geral e Escopo Específico de Trabalho (divisão dos grupos de trabalho)
-
Tecnologias Utilizadas
-
Atividades Realizadas (explicando melhor cada uma e a forma que foram realizadas)
-
LMotion (explicar melhor o que é e como funciona)
-
Outras Atividades (que ainda não realizei e podem vir a ser importantes para a monografia)
- Parte Subjetiva
-
Objetivos do estágio, desafios e frustrações encontrados
-
Ambiente de Trabalho (relação com orientador do estágio e com os colegas de equipe)
-
Diferenças entre o ambiente do estágio e o ambiente do IME
-
Relação entre minha formação no IME e o estágio
-
Lista das disciplinas da graduação que foram relevantes para o estágio
-
Considerações Finais e Conclusão
- Referências
Referências
[1] Java 2 Platform, Enterprise Edition (J2EE) -
http://java.sun.com/j2ee
[2] The Apache Struts Web Application Framework -
http://jakarta.apache.org/struts
[3] JUnit Testing Framework -
http://www.junit.org
[4] The Apache Ant Project -
http://ant.apache.org
[5] MARINESCU, Floyd -
"EJB Design Patterns - Advanced Patterns, Processes, and Idioms". John Wiley & Sons, 2002.
[6] SableCC Framework -
http://www.sablecc.org
[7] StrutsTestCase JUnit Extension -
http://strutstestcase.sourceforge.net
[8] The Apache Jakarta Cactus Project -
http://jakarta.apache.org/cactus
[9] Eclipse AspectJ Project -
http://www.eclipse.org/aspectj
|