Os Desafios |
Tive dois grandes desafios durante esse
ano para fazer o meu trabalho de formatura.
O primeiro foi a dificuldade que tive para conciliar o meu
estágio com o trabalho de formatura. O tempo era curto. Gastei
muitos finais de semana e noites trabalhando no projeto, mas tenho
certeza de que valeu a pena. Também foi difícil desenvolver
o sistema com poucas reuniões com o cliente. O cliente é
muito importante para tirar dúvidas e indicar que caminho
seguir. Os clientes estavam sempre dispostos para faze reuniões,
mas o problema de disponibilidade de horário dos programadores
foi um fator decisivo no número de reuniões realizadas
durante o ano. Apesar disso, as poucas reuniões que tivemos
com os clientes e com o professor surpervisor Dr. Fábio Kon
foram muito produtivas. A colaboração dos clientes
foi muito estimulante para mim.
O segundo foi a dificuldade que tivemos para lidar com o sistema
original, em particular, a dificuldade para lidar com o Prevayler.
Tivemos que aprender muito antes de chegar à conclusão
de que ele não era adequado às necessidades do Jefras.
Foi perdido muito tempo e um grande desafio foi superar isso. Foi
necessário empenho, para conseguir implementar as funcionalidades
que ainda restavam, tendo substituído o Prevayler por J2EE
no segundo semestre. |
|
O que mais gostei |
Gostei muito da experiência de
desenvolver um sistema que será colocado em uso.
É interessante ver o cliente satisfeito com o sistema,
sugerindo melhorias e fazendo perguntas a respeito do sistema. Tivemos
que organizar o desenvolvimento de um software extenso, diferente
dos eps que estamos acostumados a fazer no IME. Isso exigiu mais
organização.
Além disso, é uma experiência totalmente
diferente da vivência que tive no estágio, pois pudemos
gerenciar o desenvolvimento do sistema e tomar decisões à
nossa maneira, aplicando os conceitos que aprendemos no curso. |
|
A influência do meu estágio |
O meu estágio influenciou muito
o projeto e de duas formas diferentes.
A primeira delas foi a escassez de tempo. A falta de disponibilidade
de horário influenciou bastante, o que tornou o desenvolvimento
do Jefras um verdadeiro desafio para mim, como já disse anteriormente.
Por outro lado, o meu estágio contribuiu muito com
a minha preparação para desenvolver o Jefras. Adquiri,
no último ano, muita experiência nas tecnologias que
foram empregadas no Jefras. Entrei em contato com a tecnologia J2EE
(Java 2 Enterprise Edition), com o projeto Struts do Jakarta, entre
muitos outros. |
|
A influências das disciplinas do IME |
Essas são as disciplinas do IME
que considerei mais importantes para o desenvolvimento desse projeto:
• Estruturas de Dados (MAC 323): essa é
a disciplina mais importante do IME, pois fornece a base do raciocínio
algorítmico ao aluno. Todas as pessoas que programam, deveriam
ter uma boa base em Estruturas de Dados, do mesmo modo que é
feito no IME.
• Programação Orientada a Objetos (MAC
441): essa é uma disciplina que deveria ser obrigatória.
É essencial que um aluno que está se formando nos
dias de hoje tenha conhecimentos do paradigma orientado a objetos.
Essa disciplina auxiliou muito na estrutura da arquitetura de classes,
de modo que todas as funcionalidades do sistema fossem bem modularizadas
e encapsuladas.
• Programação Concorrente (MAC 438):
essa disciplina passa ao aluno, a noção de que um
sistema distribuído ou paralelo pode apresentar falhas, devido
à concorrência no acesso a dados e a variáveis
do sistema. Isso foi muito importante no desenvolvimento do Jefras.
Por ser um sistema distribuído, tivemos que refletir muito
em situações de acesso concorrente a dados do sistema.
Por exemplo: o que acontece se dois administradores do sistema criarem
simultaneamente uma lista de compras?
• Sistemas de Objetos Distribuídos (MAC 440):
essa disciplina fornece os fundamentos da programação
distribuída e do conceito de middleware, o que me deu desenvoltura
para escolher ferramentas e tecnologias que deveríamos utilizar
no sistema.
|
|
Conceitos do curso utilizados |
Pude aplicar, nesse projeto, muitos conceitos
que adquiri no decorrer do curso.
Para começar, há o conceito de eficiência
do código. A noção de que, se você codificar
de um modo, o seu programa será lento e, se codificar de
outro, será muito rápido, foi utilizada o tempo todo
no desenvolvimento no sistema. Na verdade, utilizo esse conceito
sempre que estou programando.
Outro conceito é o de legibilidade e de elegância
do código. Isso é algo que eu considero essencial
e vem antes de tudo. Acho que todo código tem que ser limpo,
claro e documentado (no caso do Jefras, todas as classes e métodos
do sistema apresentam comentários javadoc e nomes de variáveis
intuitivos).
Além desses conceitos, com os quais entrei em contato
no primeiro ano do curso, existem outros. O conceito de modularização
das funcionalidades em uma boa arquitetura de classes foi amplamente
aplicado no projeto. Entrei em contato com esse conceito na minha
iniciação científica com o Prof. Dr. Allan
Durham e ao cursar a disciplina MAC 441. O Jefras
foi refatorado inúmeras vezes, só para manter esse
conceito de arquitetura de classes intacto.
Há ainda o conceito de programação concorrente
segura, ou seja, escrever programas que não apresentam falhas
de concorrência. Esse, eu adquiri no último ano e o
considero fundamental para o desenvolvimento de sistemas distribuídos.
Existem muitos outros conceitos do curso que aplico sempre
que programo. Afinal, o nosso curso é muito forte em conceitos
e é isso que dá base, a fim de que cada aluno do IME
consiga se especializar em qualquer área que queira. |
|
Conclusão |
Foi muito interessante desenvolver o
Jefras e ficarei muito feliz, quando ele for colocado em uso.
Foi um modo de aplicar tudo o que aprendi em muitas disciplinas
que tive no IME e, ao mesmo tempo, foi uma nova experiência
desenvolver um sistema extenso e completo.
Desenvolver um projeto como trabalho de formatura adicionou
muito a mim como profissional e tenho certeza de que irei aplicar
muito do que aprendi em outros projetos, dos quais participarei
ao longo da minha carreira.
Por fim, espero ter a oportunidade de continuar desenvolvendo
o Jefras no futuro, além de expandir os conhecimentos que
adquiri nos últimos meses. |
|