Case Study
Renovação de sistemas de bilhética
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:
- 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).