O presente documento contém o relatório referente à disciplina de Estágio, na sua edição 2004/05, da Licenciatura em Engenharia Informática e Computação da Faculdade de Engenharia da Universidade do Porto, efectuado na ParadigmaXis, S.A. com o tema Concorrência e Portabilidade do Sistema GISA.

O GISA (Gestão Integrada de Sistemas de Arquivo) é um sistema de software concebido para gerir as diversas fases do ciclo de informação em sistema de arquivos. Este sistema vai ser lançado no mercado disponibilizando uma gama de produto, entre as quais uma versão servidor.

Com essa versão (servidor) é pretendido que o sistema seja capaz de responder de forma positiva a um funcionamento com vários utilizadores em simultâneo. Neste tipo de sistemas é frequente ocorrerem situações onde vários utilizadores pretendem alterar a mesma informação simultaneamente, ou seja, conflitos de concorrência.

A abordagem a este problema passou, inicialmente, por um estudo onde foram determinadas e ponderadas várias hipóteses e posteriormente a implementação da possibilidade escolhida.

Ainda relacionado com a concorrência, levantou-se uma questão relacionada com a validade da informação armazenada nas aplicações cliente. Devido à arquitectura (desconectada) utilizada, essa informação facilmente deixava de estar actualizada.

Outro dos problemas propostos diz respeito à portabilidade do sistema que abarca dois componentes: o sistema em si que se pretende que seja executável em Windows, Linux e MacOS X; a base de dados que para além da versão em SQLServer, é pretendida uma versão em Oracle e PostgreSQL. No primeiro componente era pretendido um estudo de forma a determinar qual a tecnologia a ser utilizada e a forma como o processo de migração do código é efectuado. Acerca das base de dados foi definido um meta-modelo da base de dados relacional para permitir a sistematização do processo de geração de scripts. Foi igualmente necessário fazer traduções de alguma lógica (procedimentos) existente na base de dados.

Como base tecnológica para a resolução do problema de concorrência foi adoptada a lin- guagem VB.NET e SQLServer como sistema gestor de base de dados. Foi ainda utilizado a framework .NET da Microsoft para o desenvolvimento. No caso do problema da portabilidade foi utilizado XML para o meta-modelo do modelo relacional, XSL para a definição dos scripts, VB.NET e transformador XSL para geração dos scripts e os restantes sistemas gestor de base de dados, Oracle e PostgreSQL. Referente ao estudo das tecnologias para viabilizar a porta- bilidade do sistema foram tomadas em consideração Mono, Gtk#, Glade#, Qt4, wxWidgets e C/C++.

Concluindo, o módulo que trata situações de concorrência foi implementado e integrado no sistema ficando por realizar testes que simulem situações reais de utilização. No que diz respeito ao mecanismo de actualização de dados, a sua integração não foi concluída devido ao facto de serem necessárias alterações profundas na implementação do sistema. Quanto à portabilidade, a sistematização da geração de scripts da base de dados foi concluída bem como a tradução de alguns procedimentos. Relativamente ao estudo, foi aconselhado o Mono.