• Nenhum resultado encontrado

O sistema IMS está bem dividido por camadas lógicas. Qualquer pedido feito ao IMS, quer através do website, quer através da aplicação móvel, é construído e tratado da mesma maneira. Uma vez feito o pedido, existe um módulo responsável por encaminhar o tipo de pedido para o módulo correto para que possa ser processado. Todos os dados do sistema estão centralizados numa base de dados apenas, por isso todos os módulos acedem à mesma base de dados. Existe apenas a distinção entre o sistema do Porto e o sistema de Lisboa. A interface apresentada aos utilizadores é muito semelhante e as funcionalidades das aplicações são iguais, no entanto os servidores correm em máquinas separadas. A máquina do Porto está ligada a uma base de dados só com dados do Porto e a máquina de Lisboa está ligada a uma base de dados só com dados de Lisboa. Depois de terminado o processamento do pedido, é retornada uma resposta ao cliente com os resultados pretendidos. Cada um dos módulos do sistema IMS representa um webservice, não sendo assim necessário executar todos os módulos na mesma máquina. Assim é possível passar um módulo que necessite de mais poder de processamento para uma máquina diferente sem que seja necessário alterar a estrutura dos programas desenvolvidos.

Implementação

Figura 4.1: Esquematização da arquitetura lógica horizontal do sistema IMS da OPT.

Relativamente à arquitetura lógica horizontal horizontal, a camada mais baixa é constituída por uma base de dados Oracle que contém os dados de toda a rede, incluindo dados sobre os ope- radores, linhas, vigências e zoneamento. A próxima camada (superior) é constituída pela lógica de negócio na parte do servidor. É nesta camada onde a construção da rede e o algoritmo de cálculo de rotas será executado. Na camada de lógica de negócio na parte do cliente são recebidos os pe- didos feitos pelas aplicações e são encaminhados para o servidor. É também nesta camada que os pedidos são convertidos para formatos que possam ser entendidos pelo servidor e pela aplicação. Na camada mais superior está a interface (UI), ou a camada de apresentação. Os utilizadores in- teragem diretamente com esta camada. A parte web está construída em ASP.NET e a parte móvel está construída em C#. A arquitetura lógica horizontal está esquematizada na figura4.1.

Em relação à arquitetura lógica vertical, esquematizada na fgura4.2, o primeiro módulo é o WebClient, que é aquele com o qual os utilizadores interagem diretamente. É neste módulo que os utilizadores podem fazer pedidos ao sistema relativos às próximas partidas, ao cálculo de rotas, aos horários das linhas por operadores e à pesquisa de pontos de interesse num determinado raio, especificado pelo utilizador. Quando o pedido é executado é reencaminhado para o ProxyService. Todos os módulos do sistema devem estar ligados a este. Este módulo é responsável por encami-

Implementação

nhar os pedidos para os módulos corretos, de acordo com a sua especificidade. Todos os pedidos feitos pelos utilizadores passam invariavelmente por este módulo.

Todos os outros módulos são responsáveis por fazerem o core das funções do sistema IMS. Nenhum utilizador das aplicações tem acesso direto a estes módulos. O módulo BITA é utilizado para se extrair informação relativa à constituição física da rede. É este módulo que dá acesso à listagem dos operadores, às linhas por operadores, aos horários de cada linha, aos pontos de interesse, às variantes de cada linha e às horas de passagem em cada paragem, por linha. É a este módulo que o programa desenvolvido durante a dissertação recorre para construir e armazenar a rede em memória.

O módulo PADA é o módulo responsável pelo cálculo de rotas. Qualquer pedido do tipo Rou- teFinderou RouteBuilder é encaminhado para este módulo através do ProxyService. O módulo PADAtambém acede ao BITA mesmo depois de ter armazenado a rede em memória, para fazer os pedidos relativamente às informações em tempo real. O BITA recorre ao módulo ProviderR- TAccesspara consultar os operadores que disponibilizam informação em tempo real e para extrair as próximas partidas em tempo real. Estes dados são depois retornados para o PADA através do módulo BITA, que por sua vez são retornados ao ProxyService, até serem apresentados ao utiliza- dor. O módulo FARE é responsável por retornar o custo de uma viagem. Recebe como input um cojunto de paragens que constituem uma viagem e retorna o preço da viagem. Para além disso ainda é capaz de retornar a assinatura necessária para se completar a viagem.

O módulo MONIT é responsável por gerar logs sobre tudo o que passa pelo ProxyService. Este módulo pode ser útil para se identificar a origem de erros que eventualmente possam estar a acon- tecer, ou pode também ser utilizado para validar pedidos feitos pelo PADA, uma vez que todos os pedidos e respostas deste módulo são registados pelo MONIT. Finalmente, o módulo WebAdmin é um módulo dedicado à administração do sistema. Neste módulo é possível acrescentar alertas para serem apresentados aos utilizadores, é possível atualizar a informação da rede de transportes (informações como os horários e as linhas dos operadores) e é ainda possível consultador infor- mação relacionada com a estatística dos pedidos. Permite aos operadores carregarem atualizações de dados, bem como consultar os dados em vigor.

Como foi dito no capítulo anterior o sistema que irá substituir o PADA atual é capaz de guardar toda a informação da rede em ficheiros XML, com vista a permitir um carregamento mais rápido dos dados em memória. Quando for necessário é possível renovar a rede em memória, acrescen- tando novos dias e opcionalmente removendo ficheiros com dias mais antigos. Este processo é executado num thread à parte uma vez que é o processo mais moroso. Quando a rede para os novos dias estiver calculada então a execução de pedidos ao algoritmo é interrompida durante uns segundos para que os novos dados possam ser acrescentados ou removidos do programa. Este processo evita que o algoritmo tente aceder a uma posição em memória que possa estar a ser atualizada no momento. O algoritmo não deve estar indisponível durante mais de 1 minuto.

O programa desenvolvido durante a dissertação está preparado para lidar com alterações na rede. Sempre que tenta fazer a renovação da rede em memória é feito um pedido ao BITA que retorna todas as linhas que fazem parte da rede de transportes. Se os novos dias que são carrega-

Implementação

Implementação

dos em memória acrescentarem novas linhas que nunca foram utilizadas antes, então o programa acrescenta as linhas em falta ao conjunto total de linhas e atualiza a estrutura de dados que indica as linhas que passam em cada paragem. Neste passo também é necessário criar os caminhos a pé para cada uma das novas paragens acrescentadas à rede. Finalmente, todas as viagens associadas às novas linhas são guardadas em memória.

Documentos relacionados