Uma abordagem de apoio à extração da política de tratamento de exceções

Detalhes bibliográficos
Ano de defesa: 2017
Autor(a) principal: Sena, Demóstenes Santos de
Orientador(a): Coelho, Roberta de Souza
Banca de defesa: Não Informado pela instituição
Tipo de documento: Tese
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/24125
Resumo: Os mecanismos de tratamento de exceções são recursos fornecidos pelas principais linguagens de programação para auxiliar no desenvolvimento de sistemas robustos. A política de tratamento de exceções corresponde ao conjunto de regras de design do tratamento excepcional e definem os elementos de código (métodos, classes ou pacotes) responsáveis pela sinalização, propagação, captura das exceções e as respectivas ações de tratamento. Alguns estudos empíricos demonstraram que o tratamento inadequado de exceções, consequência da falta da política documentada, é uma possível fonte de defeitos. Por outro lado, devido à natureza implícita dos fluxos de exceções, a identificação e correção dos tratamentos de exceções tornam-se tarefas complexas. Para amenizar os problemas decorrentes do tratamento inadequado devido à falta de documentação do tratamento de exceções, algumas abordagens definiram linguagens de especificação das regras de tratamento com suporte ferramental para auxiliar na definição e checagem das regras. Entretanto, historicamente, as políticas de tratamento de exceções dos sistemas são postergadas ou ignoradas no processo de desenvolvimento. Adicionalmente, nenhuma das abordagens propostas oferece suporte à definição das regras, de forma a auxiliar o arquiteto a extrair as regras a partir da análise de código fonte pré-existente, e este é o objetivo da abordagem apresentada neste trabalho. Para apoiar a execução da abordagem proposta, foi desenvolvida uma ferramenta de análise estática que permite: (i) a coleta dos fluxos excepcionas e das respectivas ações de tratamentos; (ii) a identificação e definição dos agrupamentos, que são os elementos de código que possuem os mesmos comportamentos em relação ao tratamento de exceções; (iii) a extração das regras; e, (iv) a checagem das regras e identificação das causas das violações à política. A abordagem é demonstrada em dois estudos empíricos. No primeiro estudo empírico foram analisadas 656 bibliotecas (libs) Java do repositório central Maven com objetivo de extrair e caracterizar a política de tratamento de exceções destas libs. Este estudo revelou que 80,9% das bibliotecas possuem fluxos excepcionais que implementam pelo menos um anti-pattern do tratamento excepcional. O segundo estudo empírico teve como objetivo investigar os benefícios da extração das regras excepcionais a partir do código pré-existente no processo de definição e checagem da política de tratamento de exceções. Dois sistemas de informação Web (i.e., IProject e SIGAA) foram utilizados neste segundo estudo. Neste estudo pudemos observar que todas as regras reportadas pelos arquitetos foram extraídas pelo suporte ferramental, e que os resultados do processo de extração permitiram que novas regras fossem adicionadas pelos arquitetos. Essas regras adicionadas foram as regras não definidas pelos arquitetos e corresponderam à 57,1% (IProject) e 52,8% (SIGAA/Graduação) das regras da política dos sistemas analisados. O processo de checagem das regras definidas com o apoio da abordagem mostrou que 35,6% e 45,7% dos fluxos excepcionais do IProject e SIGAA/Graduação, respectivamente, violavam alguma das regras de tratamento de exceções.