Pattern-Driven Maintenance: A Method to Prevent Unhandled Latent Exceptions in Web Applications - Mendonça, Diogo; von Staa, Arndt; Kalinowski, Marcos (Anais Estendidos do Simpósio Brasileiro de Qualidade de Software (SBQS), 2020)
Contexto: Exceções não tratadas afetam a confiabilidade, usabilidade e segurança em aplicações web. Detectar exceções não tratadas latentes de forma automatizada é uma tarefa difícil e específica de cada aplicação. Assim, abordagens gerais para tratar defeitos em aplicações web não tratam exceções não tratadas latentes apropriadamente. Objetivos: Projetar e avaliar um método que possa suportar encontrar, corrigir e prevenir exceções não tratadas em aplicações web. Método: Nós projetamos o método chamado Manutenção Orientada a Padrões (Pattern-Driven Maintenance - PDM), que consiste em identificar padrões de defeitos se baseando em falhas para produzir regras de análise estática que podem ser utilizadas para a prevenção de defeitos. Nós aplicamos PDM em duas aplicações web na indústria medindo a melhoria na confiabilidade das aplicações. Nós também avaliamos o reuso das regras de análise estática produzidas na mesma empresa e em outras empresas. Finalmente, nós estudamos a eficácia, os desafios encontrados e a aceitação de mantenedores novatos aplicando o método PDM. Resultados: Nos dois casos industriais, nós eliminamos completamente as falhas relacionadas a exceções não tratadas latentes melhorando assim a confiabilidade da aplicação. Algumas regras de análise estática produzidas pela aplicação do método PDM foram reutilizadas em software na mesma empresa e em outra empresa. Nós identificamos os conhecimentos e experiências que influenciam em aplicar os passos do método PDM de forma eficaz. Conclusões: O PDM pode ajudar os mantenedores a melhorar a confiabilidade de aplicações existentes. Nós disponibilizamos orientações sobre como utilizar o método, reutilizar as regras de análise estática produzidas, e quais conhecimentos e experiências são necessários para aplicar o PDM com eficácia.