Case Study

Renovação de sistemas de bilhética

Person inserting a ticket on a vending machine

Indústria
  • Transportes e Logística
  • Operador responsável pela gestão e exploração comercial de uma linha de transporte em Portugal
  • Responsável por cerca de 85 mil deslocações diárias

Desafio

A empresa de transportes decidiu iniciar um projeto de modernização dos seus sistemas de gestão devido à evolução do negócio e à obsolescência de alguns dos seus sistemas.


Com este projeto, a empresa procura alcançar os seguintes objetivos:

  • Atualizar o sistema central e as máquinas automáticas de venda de bilhetes para acompanhar a evolução do negócio ao longo do tempo e reduzir os custos de manutenção futuros;
  • Maximizar o investimento feito anteriormente em equipamentos de bilhética, evitando gastos adicionais;
  • Integrar os novos sistemas com os sistemas/equipamentos antigos para garantir o funcionamento contínuo e minimizar qualquer impacto para os clientes da empresa durante a transição;
  • Manter o investimento total dentro do orçamento inicialmente estabelecido pela empresa.

Solução e arquitetura

A solução passa pela implementação de uma arquitetura que concretiza as tecnologias, os protocolos e os fluxos de informação do sistema de bilhética. 


Na imagem abaixo estão espelhados os módulos funcionais desenvolvidos e o seu enquadramento com as interfaces/sistemas existentes:

 

Architecture

 

  • User Interface (UI): A UI da máquina foi desenvolvida de raiz. A apresentação e a navegação são locais, no entanto o controlo da navegação e as regras subjacentes ao comportamento são geridos pelo sistema central através de chamadas API;
  • Back-end: montámos um submódulo responsável pela comunicação dos periféricos constituintes da máquina com as partes integrantes da mesma (User Interface e User Interface Manutenção).

Boas práticas e metodologias

Foi utilizada a abordagem Agile com técnicas de Scrum e XP. Adicionalmente, foram utilizadas as seguintes práticas:

  • Desenvolvimento Orientado a Testes (TDD): a implementação do TDD foi fundamental para garantir a qualidade do código. Foram escritos testes automatizados antes da implementação, assegurando que novas funcionalidades ou alterações não comprometessem o funcionamento existente.
    Exemplo: Foram implementados testes unitários para verificar a lógica de negócios crítica, garantindo a estabilidade do sistema.

  • Design patterns: o uso de padrões de design contribuiu para uma arquitetura sólida e flexível. Nomeadamente, o padrão Observer foi empregue para atualizar automaticamente a UI em tempo real com as alterações no sistema central, proporcionando uma experiência contínua aos utilizadores finais.
    Exemplo: o padrão Factory Method foi utilizado na criação de instâncias de objetos, promovendo a manutenibilidade e a extensibilidade do código.

  • Clean Code: a adoção de Clean Code foi essencial para tornar o código claro, conciso e facilmente compreensível. Através do uso de nomenclatura significativa, funções modularizadas e comentários claros, a manutenção do código foi simplificada.
    Exemplo: evitou-se a duplicação de código, promovendo a coesão e a legibilidade do código-fonte.

Tecnologias

Java
  • Desenvolvimento do sistema central: o núcleo do sistema responsável por coordenar e gerir todas as operações foi desenvolvido em Java. A escolha desta linguagem proporcionou uma plataforma robusta e altamente escalável, fundamental para lidar com a complexidade das operações de bilhética em grande escala.

  • Back-end das máquinas automáticas de venda de bilhetes: A versatilidade e o desempenho eficiente do Java permitem uma comunicação suave entre os periféricos da máquina e as interfaces do utilizador.

 

Angular
  • Desenvolvimento da UI das máquinas automáticas: a escolha do Angular para a criação da UI garante uma experiência de utilizador moderna e responsiva. A arquitetura orientada a componentes do Angular alinha-se perfeitamente com a natureza modular da aplicação, facilitando a manutenção e o aprimoramento contínuo.

  • Integração com o sistema central: o Angular foi adotado para garantir uma integração eficiente entre a UI local nas máquinas automáticas e o sistema central. As chamadas API permitem uma comunicação fluida, mantendo a consistência e a segurança das transações.

Resultados

Com a implementação deste projeto, espera-se que a empresa de transportes realize uma modernização eficaz dos seus sistemas de bilhética, promovendo uma operação mais eficiente e adaptável ao crescimento do negócio.


Adicionalmente, ao atender diariamente milhares de utilizadores do sistema de transporte, a capitalização do investimento prévio e a integração suave dos sistemas deverão resultar em benefícios económicos e operacionais significativos para a empresa.


Assim, preveem-se os seguintes resultados:

  • Renovação do sistema central e dos equipamentos de venda;
  • Capitalização do investimento anterior;
  • Integração dos sistemas novos com os sistemas/equipamentos prévios.

Tempo e recursos

Projeto ainda em fase de desenvolvimento. A equipa envolvida inclui:

  • 1 Tech Lead;
  • 1 Full-Stack developer (Java/Angular);
  • 1 Back-end developer;
  • 1 Front-end developer;
  • 1 Quality Assurance (QA).