[ Parte I - Especificação do Projeto ]  
Parte II - Experiência Pessoal

Aluno: Stefan Neusatz Guilhen
Orientador: Prof. Dr. Fábio Kon

Desafios e dificuldades

 A maior dificuldade que eu encontrei durante o desenvolvimento do projeto foi a adaptação com a parte do sistema que já havia sido desenvolvida no ano passado. Como a documentação do sistema era bem escassa, foi bastante difícil entender o que cada classe fazia e como elas se relacionavam para prover as funcionalidades desenvolvidas. Além disso, a versão inicial do sistema fazia uso de um arcabouço para persistência dos dados que era totalmente desconhecido por mim – o Prevayler. Isso dificultou e emperrou a continuação do projeto porque tivemos que estudar a arquitetura e o funcionamento do Prevayler para poder continuar a desenvolver os demais módulos do sistema.

 Superada a fase inicial, as dificuldades começaram a aumentar à medida que a Flávia e eu tentávamos implementar as demais funcionalidades, pois a arquitetura que havia sido desenvolvida teria que ser refatorada para suportar os novos módulos. Esse trabalho de refatoração foi muito longo e exaustivo e tomou uma proporção ainda maior quando substituímos o Prevayler por um sistema de persistência através de EJB usando o JBoss. Essa dificuldade poderia ter sido minimizada se a versão inicial do sistema tivesse testes para todas as funcionalidades implementadas. Dessa forma, a cada refatoração poderíamos re-testar o sistema para garantir que a mesma não “quebrou” nada que já estava funcionando.

 Também vale ressaltar que durante a maior parte do ano trabalhamos sem cvs e isso trouxe novas dificuldades, pois tínhamos que nos organizar muito bem para não atrapalhar um ao outro na hora de mexer no código. Em outubro, quando o projeto foi incluído no arca [1], pudemos trabalhar com o cvs do arca e essa dificuldade foi anulada.

 Foi também um pouco difícil conciliar o tempo que eu tinha que dedicar às matérias de graduação e ao meu estágio com o tempo que eu tinha que despender com o projeto. Diversas vezes os eps e provas que se espalharam pelos semestres consumiram um tempo que poderia ter sido alocado para o projeto.


Realizações

 Justamente por termos encontrado várias dificuldades, a maior realização foi ter conseguido superar essas dificuldades e produzir um sistema funcional, bem documentado e testado. Cada etapa que superamos me rendeu um aprendizado. A experiência de continuar um trabalho que já havia sido começado foi única e eu acredito que isso contribuiu para me tornar um profissional mais completo.

Trabalho em Equipe

 O relacionamento com a minha companheira de equipe, a Flávia, foi muito bom durante todo o desenvolvimento do projeto. Como já trabalhamos juntos anteriormente e já conhecíamos o estilo de trabalho um do outro, pudemos começar o projeto e delinear os objetivos mais rapidamente. Todas as decisões sobre o projeto foram discutidas amplamente entre nós dois, de maneira que ambos sabiam exatamente tudo o que estava se passando com o qualquer parte do trabalho que estávamos desenvolvendo. Sempre estivemos abertos às idéias um do outro, levando-as seriamente em conta na hora de tomar as decisões. Isso foi um fator-chave para a manutenção de um bom relacionamento durante toda a duração do projeto.

 Também gostaria de destacar a presença dos funcionários da biblioteca – que serão os clientes do nosso projeto – sempre que foi solicitada. Eles se mostraram muito interessados pelo nosso trabalho e quiseram se envolver com o projeto, opinando e dando idéias para aperfeiçoá-lo. Com isso tínhamos uma equipe que não era só formada pela Flávia e eu – os programadores – como também pelo professor coordenador Fábio Kon e pelos futuros clientes do sistema. Essa foi uma experiência realmente positiva, uma vez que eu nunca tinha tido a oportunidade de trabalhar em equipe com os clientes do projeto que eu estava desenvolvendo. Isso por si só já tornou o trabalho de formatura diferente de todos os trabalhos que eu já havia desenvolvido até então.


O Curso e o Projeto

 Diversas disciplinas foram importantes para a realização desse projeto em particular, mas de uma forma geral todas as disciplinas do nosso currículo são importantes para a formação de um senso crítico que é essencial para o nosso desenvolvimento profissional. Gostaria de citar aqui as disciplinas que foram mais importantes para a realização do projeto:

MAC0323 – Estrutura de Dados. A todo momento temos que tomar decisões com respeito às estruturas de dados mais adequadas para a situação que estamos modelando e essa disciplina foi fundamental para decidirmos pelas estruturas que melhor podiam representar as abstrações que nós necessitávamos.
MAC441 e MAC413 – Programação Orientada a Objetos e Tópicos de POO. Como todo o projeto foi desenvolvido utilizando linguagem Java e o paradigma orientado a objetos, essas duas matérias foram muito importantes, pois me ajudaram a construir um conhecimento sólidos dos conceitos mais importantes de programação orientada a objetos. Especialmente Tópicos de POO, pois as discussões promovidas a respeito de arcabouços e padrões de design contribuíram diretamente para uma melhoria da qualidade do código que eu estava escrevendo.
• MAC338 – Análise de Algoritmos. Na minha opinião uma das matérias mais importantes do curso. Essa disciplina estimulou meu senso crítico com relação à eficiência, clareza e elegância do código que eu tive que desenvolver. Posso dizer que meu modo de programar mudou significativamente após essa disciplina.
MAC440 – Sistemas de Objetos Distribuídos. Como o projeto desenvolvido trata-se de um sistema distribuído, essa disciplina ajudou muito nas decisões a respeito da arquitetura que íamos construir, bem como na resolução de problemas que encontramos durante o desenvolvimento do projeto.

Além dessas, outras disciplinas também contribuíram de alguma forma para o desenvolvimento do projeto: MAC426 – Sistemas de Bancos de Dados, MAC332 - Engenharia de Software e MAC438 – Programação Concorrente.


O Estágio e o Projeto
 

 O principal motivo pelo qual escolhi como trabalho de formatura o desenvolvimento de um projeto em detrimento do meu estágio foi a possibilidade de aprendizado. Desenvolver um projeto longo, enfrentando as dificuldades que iriam aparecer me beneficiaria mais do que simplesmente relatar minha experiência de estágio, que, de certa forma, já estava estagnada.

 Entretanto, a experiência do estágio também contribuiu para o sucesso do desenvolvimento do projeto de formatura, principalmente com relação às tecnologias utilizadas. Um exemplo disso é o desenvolvimento da parte web do projeto baseado no arcabouço Struts do projeto Jakarta [2]. O uso desse arcabouço foi motivado pela experiência que tive com ele no ambiente de estágio, onde ele se mostrou uma ótima solução para implementação do padrão MVC para web.

 

Conclusão

 Considerei a confecção do trabalho de formatura uma peça muito importante para minha formação como bacharel em ciência da computação. Eu tive a possibilidade de escolher como trabalho de formatura relatar a minha experiência adquirida no estágio ou desenvolver um novo projeto e escolhi o último. E acredito que essa tenha sido a melhor decisão, pois enquanto no estágio eu já não estava mais aprendendo nada valioso para minha formação, o projeto me proporcionou uma experiência única e todas as dificuldades que encontrei durante o desenvolvimento do mesmo só me trouxeram benefícios.

 Além disso, o projeto foi uma boa oportunidade de aplicar os conceitos adquiridos durante a graduação. Nosso curso nos dá uma base firme e geral, estimulando nosso raciocínio e nosso senso crítico e permitindo que nos aprofundemos em qualquer área de interesse. Isso ficou muito evidente para mim durante a execução do projeto, quando tive que resolver problemas específicos da aplicação que estava sendo construída. Para isso tive que pesquisar e estudar tecnologias específicas, mas a base do conhecimento necessário para o correto entendimento e aplicação das tecnologias já tinha sido construído.

 Tenho um grande interesse de me aprofundar na área de sistemas de objetos distribuídos e pretendo fazer mestrado nessa área a partir do ano que vem. Também pretendo estudar algumas tecnologias relacionadas por conta própria a fim de aprimorar meus conhecimentos.

 
Referências

 1 - Arca - www.arca.ime.usp.br

 2 - Struts - Open source framework for building Java applications
         jakarta.apache.org/struts/index.html

 
Valid HTML 4.01! Valid CSS!
[ voltar ]|[ topo ]