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

Detalhes bibliográficos
Autor(a) principal: Sena, Demóstenes Santos de
Data de Publicação: 2017
Tipo de documento: Tese
Idioma: por
Título da fonte: Repositório Institucional da UFRN
Texto Completo: 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.
id UFRN_0eb2a87b9f5e5037ce00ba9c3921636a
oai_identifier_str oai:https://repositorio.ufrn.br:123456789/24125
network_acronym_str UFRN
network_name_str Repositório Institucional da UFRN
repository_id_str
spelling Sena, Demóstenes Santos dehttp://lattes.cnpq.br/3949512835562758http://lattes.cnpq.br/9854634275938452Kulesza, Uirahttp://lattes.cnpq.br/0189095897739979Aranha, Eduardo Henrique da Silvahttp://lattes.cnpq.br/9520477461031645Barbosa, Eiji Adachi Medeiroshttp://lattes.cnpq.br/8833409749475821Medeiros Neto, Francisco Dantas dehttp://lattes.cnpq.br/5525562330158282Almeida, Rodrigo Bonifácio dehttp://lattes.cnpq.br/0368311142108150Coelho, Roberta de Souza2017-10-19T19:11:30Z2017-10-19T19:11:30Z2017-02-13SENA, 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.https://repositorio.ufrn.br/jspui/handle/123456789/24125Os 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.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.porCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAOTratamento de exceçõesAnálise do fluxo excepcionalRegras do tratamento de exceçõesPolítica de tratamento de exceçõesAnálise estáticaUma abordagem de apoio à extração da política de tratamento de exceçõesAn approach to aid the extraction of exception handling policyinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisPROGRAMA DE PÓS-GRADUAÇÃO EM SISTEMAS E COMPUTAÇÃOUFRNBrasilinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFRNinstname:Universidade Federal do Rio Grande do Norte (UFRN)instacron:UFRNORIGINALDemostenesSantosDeSena_TESE.pdfDemostenesSantosDeSena_TESE.pdfapplication/pdf4589546https://repositorio.ufrn.br/bitstream/123456789/24125/1/DemostenesSantosDeSena_TESE.pdfdf2234735ada42cbdd6e7ef886e599e3MD51TEXTDemostenesSantosDeSena_TESE.pdf.txtDemostenesSantosDeSena_TESE.pdf.txtExtracted texttext/plain283458https://repositorio.ufrn.br/bitstream/123456789/24125/4/DemostenesSantosDeSena_TESE.pdf.txt2e0a6f59b4d2363e07fa5103e81613cdMD54THUMBNAILDemostenesSantosDeSena_TESE.pdf.jpgDemostenesSantosDeSena_TESE.pdf.jpgIM Thumbnailimage/jpeg2755https://repositorio.ufrn.br/bitstream/123456789/24125/5/DemostenesSantosDeSena_TESE.pdf.jpgb056badc6db054b209bb9e360a1ad5d3MD55123456789/241252022-04-01 15:52:14.739oai:https://repositorio.ufrn.br:123456789/24125Repositório de PublicaçõesPUBhttp://repositorio.ufrn.br/oai/opendoar:2022-04-01T18:52:14Repositório Institucional da UFRN - Universidade Federal do Rio Grande do Norte (UFRN)false
dc.title.pt_BR.fl_str_mv Uma abordagem de apoio à extração da política de tratamento de exceções
dc.title.alternative.pt_BR.fl_str_mv An approach to aid the extraction of exception handling policy
title Uma abordagem de apoio à extração da política de tratamento de exceções
spellingShingle Uma abordagem de apoio à extração da política de tratamento de exceções
Sena, Demóstenes Santos de
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO
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
title_short Uma abordagem de apoio à extração da política de tratamento de exceções
title_full Uma abordagem de apoio à extração da política de tratamento de exceções
title_fullStr Uma abordagem de apoio à extração da política de tratamento de exceções
title_full_unstemmed Uma abordagem de apoio à extração da política de tratamento de exceções
title_sort Uma abordagem de apoio à extração da política de tratamento de exceções
author Sena, Demóstenes Santos de
author_facet Sena, Demóstenes Santos de
author_role author
dc.contributor.authorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/3949512835562758
dc.contributor.advisorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/9854634275938452
dc.contributor.referees1.none.fl_str_mv Aranha, Eduardo Henrique da Silva
dc.contributor.referees1Lattes.pt_BR.fl_str_mv http://lattes.cnpq.br/9520477461031645
dc.contributor.referees2.none.fl_str_mv Barbosa, Eiji Adachi Medeiros
dc.contributor.referees2Lattes.pt_BR.fl_str_mv http://lattes.cnpq.br/8833409749475821
dc.contributor.referees3.none.fl_str_mv Medeiros Neto, Francisco Dantas de
dc.contributor.referees3Lattes.pt_BR.fl_str_mv http://lattes.cnpq.br/5525562330158282
dc.contributor.referees4.none.fl_str_mv Almeida, Rodrigo Bonifácio de
dc.contributor.referees4Lattes.pt_BR.fl_str_mv http://lattes.cnpq.br/0368311142108150
dc.contributor.author.fl_str_mv Sena, Demóstenes Santos de
dc.contributor.advisor-co1.fl_str_mv Kulesza, Uira
dc.contributor.advisor-co1Lattes.fl_str_mv http://lattes.cnpq.br/0189095897739979
dc.contributor.advisor1.fl_str_mv Coelho, Roberta de Souza
contributor_str_mv Kulesza, Uira
Coelho, Roberta de Souza
dc.subject.cnpq.fl_str_mv CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO
topic CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO
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
dc.subject.por.fl_str_mv 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
description 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.
publishDate 2017
dc.date.accessioned.fl_str_mv 2017-10-19T19:11:30Z
dc.date.available.fl_str_mv 2017-10-19T19:11:30Z
dc.date.issued.fl_str_mv 2017-02-13
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/doctoralThesis
format doctoralThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv 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.
dc.identifier.uri.fl_str_mv https://repositorio.ufrn.br/jspui/handle/123456789/24125
identifier_str_mv 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.
url https://repositorio.ufrn.br/jspui/handle/123456789/24125
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.program.fl_str_mv PROGRAMA DE PÓS-GRADUAÇÃO EM SISTEMAS E COMPUTAÇÃO
dc.publisher.initials.fl_str_mv UFRN
dc.publisher.country.fl_str_mv Brasil
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFRN
instname:Universidade Federal do Rio Grande do Norte (UFRN)
instacron:UFRN
instname_str Universidade Federal do Rio Grande do Norte (UFRN)
instacron_str UFRN
institution UFRN
reponame_str Repositório Institucional da UFRN
collection Repositório Institucional da UFRN
bitstream.url.fl_str_mv https://repositorio.ufrn.br/bitstream/123456789/24125/1/DemostenesSantosDeSena_TESE.pdf
https://repositorio.ufrn.br/bitstream/123456789/24125/4/DemostenesSantosDeSena_TESE.pdf.txt
https://repositorio.ufrn.br/bitstream/123456789/24125/5/DemostenesSantosDeSena_TESE.pdf.jpg
bitstream.checksum.fl_str_mv df2234735ada42cbdd6e7ef886e599e3
2e0a6f59b4d2363e07fa5103e81613cd
b056badc6db054b209bb9e360a1ad5d3
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFRN - Universidade Federal do Rio Grande do Norte (UFRN)
repository.mail.fl_str_mv
_version_ 1802117623542972416