Titulo Estágio
Uma Arquitectura e workflow para aquisição de dados em tempo real na plataforma OST
Área Tecnológica
Sistemas de Informação
Local do Estágio
DEI / IPNlis
Enquadramento
A disponibilização de plataformas de serviços é uma via para encontrar novas soluções para o transporte urbano, mais eficientes e integradas, através do uso de tecnologias de informação e comunicação (TIC) que permitam criar eco-sistemas de soluções que convergem para maior eficiência energética, com mais qualidade para o utente, e em coordenação e cooperação com outras iniciativas nacionais.
O projecto TICE.mobilidade em que este estágio está integrado resulta de um esforço conjunto de 29 parceiros que se predispõem a criar um ecossistema de aplicações para a mobilidade, suportadas numa Arquitectura Baseada em Serviços(SOA).
A plataforma de serviços do TICE.mobilidade disponibilizará interfaces avançados com o utilizador, tirando partido da Web 2.0 e da elevada taxa de penetração de dispositivos móveis com acesso à internet. O projecto pretende explorar os benefícios da comunicação bidireccional entre o fornecedor de serviços e o cliente. Por exemplo, o utilizador poderá ter no seu telemóvel um plano intermodal actualizado ao minuto, receber sugestões de mobilidade e segurança, verificar a disponibilidade de parques de estacionamento, ou enviar informações sobre comodidades da cidade, eventos, notícias e fotos.
A plataforma integrará dados heterogéneos nas operações de planeamento, proveniente de operadoras de comunicações (localização e fluxos), de autoridades locais (fluxo de trânsito, zonas de trânsito condicionado), e concessionárias de auto-estradas, entre outros.
Características do Sistema
As componentes a desenvolver no âmbito do projecto enquadram-se numa arquitectura orientada a serviços em ambiente distribuído e heterogéneo. Algumas características:
- Arquitectura RESTful;
- Modelação de informação georreferenciada;
- Desenho e análise funcional em função de critérios de performance, disponibilidade e escalabilidade;
- Interface Web e WebGIS de backend (fortes requisitos ao nível de UX e acessibilidade);
- Interface móvel de acesso a algumas funcionalidades, de forma ubíqua (iOS, Android, etc.);
- Controlo, monitorização e taxação do acesso a dados;
- Mecanismos de reporting;
- Forte componente de quality assurance com recurso a testes unitários, funcionais e de integração;
- Implementação de módulos e componentes segundo padrões de encapsulamento e loose-coupling;
- Desenho e implementação de API’s e interfaces de comunicação (producer-consumer, publish-subscribe, real-time / assynchronous message queueing, push, etc.);
- Linguagens de programação Java e Python.
Ferramentas de desenvolvimento
- PostgreSQL e PostGIS;
- Eclipse IDE (ou qualquer outro editor de texto inteligente);
- RabbitMQ, Redis;
- Django e GeoDjango;
- XMPP;
- Git;
- Apache, Nginx.
Metodologia
O processo de desenvolvimento de software será baseado em SCRUM.
Os orientadores de ambas as partes (IPN e DEI), poderão participar nas reuniões de Sprint Planning e Sprint Retrospective. A documentação resultante das reuniões será disponibilizada ao orientador e júri do estágio.
Objetivo
As componentes a desenvolver no âmbito do estágio enquadram-se numa arquitectura orientada a serviços em ambiente distribuído e heterogéneo
O estagiário será responsável por conferir à plataforma One.Stop.Transport a capacidade de receber, transformar e disponibilizar dados relativos à caracterização de trânsito em rodovias. A plataforma deverá suportar mecanismos síncronos e assíncronos de recepção e disponibilização de dados, com uma forte componente para a comunicação em tempo real. Exemplos de informação que deverá ser suportada:
- Informação de trânsito (concentração, estado, flow, etc.);
- Informação relativa a incidentes rodoviários (acidentes, obstruções, obras, etc.);
- Informação descritiva da qualidade das infraestruturas (pavimento, sinais, etc.)
Com base nestes dados, será possível criar e novas heurísticas para o cálculo de rotas eficientes para o utilizador final, de uma forma dinâmica e em tempo real: segurança, densidade de circulação, propensão à ocorrência de acidentes, entre outras. Também com base nestes dados é expectável que venha a ser desenvolvido um motor de análise e processamento de eventos, que permita detectar padrões relevantes e gerar alarmes, tais como:
- Concentração elevada de acidentes num raio de 1km;
- Evolução do estado de circulação numa rodovia;
- etc.
Paralelamente à recepção e disponibilização de dados, deverá haver uma componente de linked data, ou seja, processamento offline dos dados armazenados tendo em vista a criação de novos dados que fomentem serviços futuros da plataforma: actualização de pesos de heurísticas, cálculo de métricas e dados estatísticos, entre outros.
Por fim, a plataforma deverá suportar o enriquecimento dos dados oriundos de fontes oficiais com dados crowd sourced submetidos por utilizadores, recorrendo assim ao desenvolvimento de uma componente de crowdsourcing. Para validar esta vertente, o aluno irá desenvolver uma aplicação móvel que permita ao cidadão comum reportar eventos rodoviários significantes - acidentes, filas de trânsito, entre outros - alimentando, desta forma, a plataforma. Esta aplicação deverá ser entendida como prova de conceito e base de desenvolvimentos futuros.
De entre as funcionalidades a implementar apresentam-se aquelas que dizem respeito à plataforma de serviços de mobilidade e que constituem o objecto deste estágio:
- Importação, transformação e armazenamento de datasets Datex2
o Validação com recurso a dados reais
- Modelação de APIs de disponibilização de dados (pull)
- Mecanismos de difusão de dados em tempo real (publish-subscribe, push)
- Enquadramento e contextualização dos dados de forma georreferenciada
- Desenvolvimento de componente crowdsource na plataforma e de aplicação móvel como prova de conceito
- Análise e processamento de eventos com recurso a um motor de regras como base do mecanismo de alarmística
- Processamento offline de dados com o objectivo de gerar novos dados (linked data)
- Logging e reporting
Alguns aspectos a ter em conta durante o desenvolvimento:
• Desenho e análise funcional em função de critérios de performance, disponibilidade e escalabilidade
• Fortes requisitos ao nível da elegância e modularidade da arquitectura
• Workflow incremental com deployments frequentes e iterativos
• Forte componente de quality assurance com recurso a TDD (test driven development) e BDD (behaviour driven development), em toda a sua extensão: testes unitários, funcionais e de integração
• Implementação de módulos e componentes segundo padrões de encapsulamento e loose-coupling.
Plano de Trabalhos - Semestre 1
Durante o 1º semestre, o projecto será composto pelas seguintes fases de desenvolvimento: F1 – Análise do estado da arte (25% do semestre) – Análise de soluções, boas práticas e as tecnologias a usar no projecto.
• F2 – Levantamento de requisitos (25% do semestre) – esta tarefa consiste no levantamento de requisitos do módulos a desenvolver.
• F3 – Desenho (50% do semestre) – será desenvolvido um protótipo dos módulos aplicação e o desenho de arquitectura.
Plano de Trabalhos - Semestre 2
F4 – Implementação (70% do semestre) – fase de desenvolvimento onde serão implementados os requisitos e funcionalidades determinadas em F2.
• F5 – Testes (20% do semestre) – fase em que será testada a robustez da aplicação desenvolvida. Serão feitas as correcções aos bugs que forem detectados.
• F6 – Deploy final e relatório de projecto (10% do semestre) – Revisão final da aplicação desenvolvida e disponibilizada para produção.
Condições
Não existem condições específicas.
Observações
Este estágio pode ser remunerado. Remuneração sujeita a concurso de bolsa de investigação de acordo com as normas da FCT.
Orientador
Carlos Bento (UC); Miguel Laginha (IPNlis)
bento@dei.uc.pt 📩