CrashAwareDev: apoiando o desenvolvimento a partir da mineração e análise de crash reports

Detalhes bibliográficos
Ano de defesa: 2019
Autor(a) principal: Beserra, Leandro Dias
Orientador(a): Coelho, Roberta de Souza
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Não Informado pela instituição
Programa de Pós-Graduação: PROGRAMA DE PÓS-GRADUAÇÃO EM SISTEMAS E COMPUTAÇÃO
Departamento: Não Informado pela instituição
País: Brasil
Palavras-chave em Português:
Área do conhecimento CNPq:
Link de acesso: https://repositorio.ufrn.br/jspui/handle/123456789/26826
Resumo: Os mecanismos de tratamento de exceções são uma característica comum de linguagens de programação convencionais. Exceções não capturadas (do inglês, uncaught exceptions) são a principal causa de crashes em sistemas de software. Um crash é um comportamento anormal de um sistema que leva à interrupção de sua execução. Esta é uma das razões que têm motivado a utilização de ferramentas de crash reports, que podem armazenar informações de falhas que ocorreram no sistema para facilitar a localização, priorização e depuração de falhas. Contudo, podemos pensar em uma outra utilidade para tais ferramentas. Estas informações poderiam ser utilizadas para apoiar o desenvolvedor durante a codificação do sistema. Neste trabalho foi realizado um estudo em um relatório de falhas de um sistema Web real, onde foram documentadas causas de crashes em um determinado período e identificados alguns padrões de erros. Além disso, foram observadas informações do relatório que poderiam apoiar programadores em suas atividades do dia a dia. A partir desta análise, foi implementada uma ferramenta, chamada CrashAwareDev, integrada ao ambiente de desenvolvimento Eclipse, com objetivo de aproximar o ambiente de desenvolvimento ao crash report. Um estudo de caso foi realizado e mostrou que a ferramenta pode apoiar o desenvolvimento de software através (i) da exibição de alertas de bug patterns diretamente no código-fonte, (ii) do rastreamento de classes envolvidas em falhas recentes e (iii) da agilidade em localizar crashes dentro do próprio ambiente de desenvolvimento.