Use este identificador para citar ou linkar para este item: https://repositorio.ufrn.br/handle/123456789/24125
Título: Uma abordagem de apoio à extração da política de tratamento de exceções
Título(s) alternativo(s): An approach to aid the extraction of exception handling policy
Autor(es): Sena, Demóstenes Santos de
Orientador: Coelho, Roberta de Souza
Palavras-chave: Tratamento de exceções;Análise do fluxo excepcional;Regras do tratamento de exceções;Política de tratamento de exceções;Análise estática
Data do documento: 13-Fev-2017
Referência: SENA, Demóstenes Santos de. Uma abordagem de apoio à extração da política de tratamento de exceções. 2017. 156f. Tese (Doutorado em Ciência da Computação) - Centro de Ciências Exatas e da Terra, Universidade Federal do Rio Grande do Norte, Natal, 2017.
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.
Abstract: The Exception handling (EH) mechanism is a technique embedded in most of the mainstream programming languages to support the development of robust systems. The exception handling policy is composed by the set of exception handling design rules and which specify the elements (methods, classes and packages) or that contains the elements responsible for raising, propagating and catching of exceptions as well as the handling actions. Empirical studies have demonstrated that an inappropriate exception handling as consequence of undocumented exception handling policy is a source of bug hazards. On the other hand, due to the implicit nature of exception flows, the identification of exception handling code is a complex task. To address the problems resulting from the not-understood or inadequate exception handling, some approaches have been proposed languages to specify exception handling rules as well as a set of support tool to verify the constraints and checking the rules. However, historically, the exception handling policies are postponed or ignored in the software process development. Additionally, none of the proposed approaches provide support to the phase of exception policy definition. This work proposes an approach that helps the architect to extract the EH rules by performing an analysis on the existing code. Doing so, this approach fills the previous gap the EH policy definition. To support the proposed approach, a static tool suite was developed, which performs: (i) the discovery of exception flows and its handling actions; (ii) the definition of compartments; (iii) the semi-automatic rule extraction process; and (iv) the rule checking and identification of rule violation causes. This approach was assessed in two empirical studies. In the first study, 656 libraries from Maven central repository were analyzed. The main goal of this study was to reveal and to characterize the exception handling policy of the analyzed libraries. This study revealed that 80.9% of the analyzed libraries have exception flows that implement at least one exception handling anti-pattern. In the second study, we investigated the benefits of rule extraction process in the definition and checking of exception handling rules. Two web information systems (i.e., IProject and SIGAA) were analyzed in this second study. We found that all set of rules reported by the architects were extracted by our tool and the result of extraction process allowed that new rules were added to the policy. These added rules were not defined by architects and they corresponded to 57.1% (IProject) and 52.8% (SIGAA/Graduação) of the rules of analyzed systems. The checking process of defined rules supported by our approach verified that 35.6% (IProject) and 45.7% (SIGAA/Graduação) of exception flows violated some defined rule.
URI: https://repositorio.ufrn.br/jspui/handle/123456789/24125
Aparece nas coleções:PPGSC - Doutorado em Sistemas e Computação

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
DemostenesSantosDeSena_TESE.pdf4,48 MBAdobe PDFThumbnail
Visualizar/Abrir


Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.