Monitorização de Defeitos em Runtime - Carvalho, Bruno Miguel de Figueiredo (2020)
Sistemas de grande dimensão não são facilmente desenvolvidos ou mantidos. Em certos casos é difícil encontrar problemas no código, realizando apenas uma análise estática. A maneira mais comum de lidar com este problema é através do uso de debuggers. No entanto, pode não ser fácil, por exemplo, testar todos os valores de input possíveis ou testar código que interaja com subsistemas complexos ou com código desconhecido. De forma a encontrar problemas na execução de sistemas complexos, é necessário realizar uma monitorização contínua. Grande parte dos sistemas implementa registos de eventos. Estes registos contêm informação acerca do estado de cada subsistema, que podem ser usados para inferir o estado geral do sistema. Nesta dissertação propõe-se uma solução de monitorização modular, flexível e configurável, baseada em registos de eventos de diferentes sistemas. Embora esta solução tenha sido desenvolvida no âmbito de um projeto específico com necessidades específicas, pretende-se que esta possa ser adaptada para outros casos. De modo a facilitar o desenvolvimento futuro, ao longo deste documento, irá ser descrita toda a implementação atual, a sua estrutura e ainda, a análise realizada para a escolha de ferramentas e para outras tomadas de decisão. De modo a avaliar a solução implementada, foram realizados alguns testes, comparando o seu desempenho com uma outra solução semelhante, implementada anteriormente, que se pretendia melhorar. Para avaliar a sua utilidade, foi ainda pedido a algumas pessoas que testassem a nova solução e a comparassem com a solução antiga.