Shob Logo Última Atualização: 08 de Dezembro de 2002 20:17 BRST

Trabalho de Formatura

    Esse trabalho de formatura é um projeto de software, desenvolvido em dupla pelos alunos Tiago M. Silveira (tminc at linux.ime.usp.br) e Cesar R. Olmos (crolmos at linux.ime.usp.br), sob a orientação do professor Paulo Silva e Silva (rsilva at ime.usp.br).

O projeto

    Nosso projeto chama-se SharedObjects, e consiste num middleware para desenvolvimento de aplicações distribuídas. A página do projeto pode ser vista aqui, e contém todas as informações necessárias para entender do que ele se trata.

    SharedObjects é uma reformulação de um projeto anterior, que começamos a desenvolver para a disciplina Sistemas Operacionais Distribuídos. Este projeto anterior tinha como foco a memória compartilhada distribuída: um pouco mais genérico e menos poderoso. Já havia a noção de objetos replicados, que era intrínseca à idéia de memória compartilhada, mas não havia suporte ao uso compartilhado do objeto na forma que vemos hoje.

    No semestre seguinte, já tínhamos desenvolvido uma visão macroscópica de onde o projeto poderia chegar, e resolvemos criar um sistema automárico de geração de proxies. Esse foi nosso EP para a disciplina Sistemas de Objetos Distribuídos, que acabou transformando-se no Configurator.

    Paralelamente, traçamos um roteiro de como transformar nosso sistema de memória distribuída num sistema de objetos distribuídos e saímos à caça de um orientador. O professor Paulo mostrou-se muito disposto a participar, e foi de grande ajuda na formalização dos objetivos e escolha das metas que teríamos que atender.

    Assim nasceu o SharedObjects, que hoje está no Sourceforge e terá continuidade após o fim desta disciplina.

A equipe

    Nossa equipe não contou com muita divisão de tarefas. Toda a engenharia de software foi feita em dupla, e mais de 90% do código foi feito por programação pareada (um micro, dois programadores). O restante foi desenvolvido com ajuda do CVS e trata-se de correções, refatoramento e aplicações de teste.

Andamento do projeto

    Tivemos considerável facilidade na estimativa de prazos, uma vez que tínhamos metas claras a cumprir e alguma experiência decorrente do primeiro projeto (memória compartilhada). Além disso, o conhecimento mútuo das capacidades de cada um e a confiança no código e no compromisso do outro foram cruciais. Para nós, bastou reservarmos as tardes de sexta-feira para o projeto. Muita coisa foi reaproveitada do código já existente, mas em diversos momentos foi necessário acelerar o desenvolvimento nos fins de semana.

Ferramentas utilizadas

    Durante o desenvolvimento foram utilizados editores de texto como o GNU Emacs, e IDE´s, como o Sun ONE Studio (antigo Forte), e o JEdit. A utilização dessas IDE´s acelerou bastante o processo de desenvolvimento, pois elas permitem um acesso rápido à documentação, visualização da estrutura das classes, e outras funcionalidades.

    Como ferramenta de construção foi utilizado o ANT do projeto Jakarta. Essa ferramenta também auxiliou bastante o desenvolvimento, pois ao invés de Makefiles utiliza-se um arquivo XML que é multiplataforma, o que permitiu que o projeto fosse desenvolvido tanto em plataforma Linux quanto Windows.

    Para o controle de versão foi utilizado CVS, permitindo que partes do projeto fossem desenvolvida separadamente por cada um dos membros.