MAC 499 - Proposta do Trabalho de Formatura

Aluno: Danilo Toshiaki Sato
Professor Responsável: Carlos Eduardo Ferreira
Orientador: Marco Dimas Gubitoso
Tipo do Trabalho: Estágio

 

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.

  1. 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)
  2. 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
  3. 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


Voltar