1 |
[en] RECOMMENDER SYSTEM FOR EXCEPTION HANDLING CODE / [pt] SISTEMA DE RECOMENDAÇÃO PARA CÓDIGO DE TRATAMENTO DE EXCEÇÕESEIJI ADACHI MEDEIROS BARBOSA 14 September 2012 (has links)
[pt] Mecanismos de tratamento de exceções são modelos comumente usados em
linguagens de programação para a estruturação do fluxo de execução excepcional
de módulos de software. Tais mecanismos possibilitam a detecção e a sinalização
da ocorrência de exceções, permitindo que módulos de software tomem medidas
corretivas que recuperem o sistema para um estado correto. Estudos recentes
mostram que falhas recorrentes e problemas de desempenho em aplicações de
software estão relacionados à má qualidade do código que implementa o
tratamento de exceções. Os estudos preliminares realizados no contexto desta
dissertação não apenas corroboram esses resultados, como também evidenciam
uma série de outros fatos interessantes que ocorrem durante a evolução de
sistemas de software. Em especial, percebeu-se que é bastante comum nas versões
preliminares de um sistema a implementação de ações de tratamento de exceções
ineficazes. Também se percebeu que pouco (ou nenhum) esforço é realizado em
termos de melhorar o tratamento de exceções durante a evolução do sistema de
software. Os trabalhos recentes que se propõem a auxiliar desenvolvedores de
software a lidar com código de tratamento de exceções falham em auxiliá-los em
uma tarefa primordial: implementar código de tratamento de exceções bem
estruturado desde as primeiras versões de um sistema. Neste contexto, o presente
trabalho propõe um sistema de recomendação capaz de prover exemplos de
código tratando exceções de modo a auxiliar desenvolvedores a implementarem
seu próprio código em suas aplicações. O sistema extrai informações estruturais
do código sob desenvolvimento para buscar por exemplos em um repositório local
a fim de recomendar exemplos de código com contexto parecido ao que o
desenvolvedor está trabalhando. O sistema implementado neste trabalho
recomenda exemplos de código implementados em Java. / [en] Exception handling mechanisms are models commonly used in
programming languages to structure the exceptional execution flow of software
modules. These mechanisms enable the detection and signaling of exception
occurrences, allowing these modules to take corrective actions to recover a
module to a correct state. Recent studies show that recurrent failures and
performance issues in software applications are related to the poor structuring of
exception handling code. The preliminary studies performed in the context of this
dissertation not only confirm these results, but also show other interesting facts
that occur during software evolution. In particular, it was realized that it is often
very common to observe ineffective exception handling actions in the first
releases of a system. It was also realized that little (or no) effort was allocated to
improve the quality of these action during the software evolution. Recent studies
that aim aiding software developers to deal with exception handling elements fail
in assisting them in a crucial task: implementing well-structured exception
handling code since the first release of a system. In this context, this dissertation
proposes a recommender system able to provide code fragments implementing
exception handling code. The proposed strategy aims to assist developers in
implementing their own code in their applications. The system extracts structural
information from the code under development to search for examples in a local
repository in order to recommend code examples that share similar structural
context with the code that the developer is working on. The system implemented
in the context of this dissertation recommends code examples implemented in
Java.
|
2 |
[en] CONTEXT-SENSITIVE EXCEPTION HANDLING / [pt] TRATAMENTO DE EXCEÇÕES SENSÍVEL AO CONTEXTOKARLA NAZARE FERREIRA DAMASCENO 23 October 2006 (has links)
[pt] Tratamento de erros em aplicações móveis sensíveis ao
contexto não é uma
tarefa trivial devido às características peculiares destes
sistemas, como
mobilidade, comunicação assíncrona e aumento de
imprevisibilidade.
Mecanismos convencionais de tratamento de exceções não
podem ser utilizados
por vários motivos. Primeiro, a propagação de erros deve
considerar as mudanças
contextuais que ocorrem constantemente nestes sistemas.
Segundo, as atividades
de recuperação de erros e a estratégia de tratamento de
exceções também precisam
freqüentemente ser selecionadas de acordo com as
informações de contexto.
Terceiro, a própria caracterização de uma exceção pode
depender do contexto dos
dispositivos envolvidos. Embora vários middlewares
orientados a contexto
ofereçam suporte ao desenvolvimento de aplicações móveis,
estes sistemas
raramente fornecem suporte adequado ao tratamento de
exceções. Este trabalho
realiza uma análise das soluções existentes para
tratamento de exceções,
considerando os requisitos de sensibilidade ao contexto.
Além disso, são
propostos um modelo para tratamento de exceções sensível
ao contexto e um
mecanismo implementado a partir de MoCA (Mobile
Collaboration Architecture).
MoCA é um middleware publish-subscribe que oferece suporte
ao
desenvolvimento de aplicações móveis colaborativas através
da incorporação de
serviços de contexto. Finalmente, este trabalho avalia o
mecanismo de exceções
proposto através de sua utilização em alguns protótipos de
aplicações
colaborativas desenvolvidas a partir de MoCA. Através do
mecanismo, foram
implementadas diferentes estratégias de tratamento de
exceções que consideram
as informações de contexto das aplicações. / [en] Context-sensitive exception handling on mobile systems is
not a trivial task
due to their intrinsic characteristics: mobility,
asynchrony and increased
unpredictability. Conventional mechanisms of exception
handling can not be used
for many reasons. First, error propagation needs
considering the contextual
changes that often occur in these systems. Second, error
recovery and exception
handling strategies also frequently need to be selected
according to contextual
information. Third, the characterization of an exception
may depend on the
contextual situation of involved devices. Even though
there are now several
context-oriented middleware systems that provide support
for the development of
mobile applications, they rarely provide explicit and
adequate features for contextsensitive
exception handling. This work presents an analysis of
existing exception
handling mechanisms, which to some extent consider the
context-awareness
requirements. Besides, it proposes a general model for
context-sensitive exception
handling and a supporting mechanism implemented using the
MoCA (Mobile
Collaboration Architecture) infrastructure. MoCA is a
publish-subscribe
middleware supporting the development of collaborative
mobile applications by
incorporating explicit services to empower software agents
with contextsensitiveness.
Finally, this paper reports our experience in implementing
contextaware
exception handling strategies in some prototype
collaborative applications
built with the MoCA system.
|
3 |
[en] GLOBAL-AWARE RECOMMENDATIONS FOR REPAIRING EXCEPTION HANDLING VIOLATIONS / [pt] RECOMENDAÇÕES GLOBAIS PARA REPARAÇÃO DE VIOLAÇÕES DE TRATAMENTO DE EXCEÇÕESEIJI ADACHI MEDEIROS BARBOSA 07 July 2016 (has links)
[pt] Tratamento de exceções e o modo mais comum de lidar com erros no desenvolvimento de software robusto. Tratamento de exceções refere-se ao processo de sinalizar exceções quando erros em tempo de execução são detectados e de tomar ações para responder à ocorrência destas exceções. Apesar de objetivarem a melhoria da robustez de software, sistemas de software ainda são implementados sem se basear em uma política explícita para tratamento de exceções. Cada política define as decisões de projeto que governam como tratamento de exceções deve ser implementado num sistema. Tais políticas não são comumente documentadas e são apenas implicitamente definidas no projeto do sistema. Desta forma, desenvolvedores tendem a introduzir no código fonte violações das políticas implícitas e tais violações comumente causam falhas em sistemas de software. Neste contexto, o objetivo desta tese é apoiar desenvolvedores na detecção e reparação de violações de tratamento de exceções. Para atingir este objetivo, duas soluções complementares foram propostas. A primeira solução é baseada numa linguagem específica de domínio que apoia a detecção de violações ao definir explicitamente políticas de tratamento de exceções que devem ser obedecidas no código fonte. A linguagem proposta foi avaliada num estudo centrado no usuário e num estudo de caso. Com as observações e as experiências coletadas no estudo centrado no usuário, nós identificamos algumas características da linguagem que dificultavam o seu uso e que motivaram novos construtos. Além disso, os resultados do estudo de caso mostraram que violações e falhas costumam ter causas comuns. Portanto, violações de tratamento de exceção podem ser usadas para detectar causas de faltas relacionadas à exceções. Para complementar a detecção de violações, este trabalho também propôs uma solução para apoiar o reparo de violações de tratamento de exceções. Reparar estas violações requer raciocinar sobre o impacto global que mudanças em tratamento de exceções pode ter em diferentes partes do sistema. Desta forma, este trabalho propôs uma estratégia heurística de recomendação que leva em conta o contexto global onde violações ocorrem a fim de produzir recomendações. Cada recomendação produzida consiste em uma sequência de modificações que servem como um plano detalhado de como uma violação de tratamento de exceções pode ser removida do código fonte. A estratégia de recomendação proposta também se beneficia de especificações explícitas de políticas, embora sua disponibilidade não seja obrigatória. Os resultados das nossas avaliações empíricas revelaram que a estratégia de recomendação proposta produziu recomendações capazes de reparar violações em aproximadamente 70 por cento dos casos. Quando especificações de políticas estão disponíveis, a estratégia produziu recomendações capazes de reparar violações em 97 por cento dos casos. / [en] Exception handling is the most common way of dealing with exceptions in robust software development. Exception handling refers to the process of signaling exceptions upon the detection of runtime errors and taking actions to respond to their occurrence. Despite being aimed at improving software robustness, software systems are still implemented without relying on explicit exception handling policies. Each policy defines the design decisions governing how exception handling should be implemented in a system. These policies are often not documented and are only implicitly defined in the system design. Thus, developers tend to introduce in the source code violations of implicit policies and these violations commonly cause failures in software systems. In this context, the goal of this thesis is to support developers in detecting and repairing exception handling violations. To achieve this goal, two complementary solutions were proposed. The first solution is based on a domain-specific language supporting the detection of violations by explicitly defining exception handling policies to be enforced in the source code. The proposed language was evaluated with a user-centric study and a case study. With the observations and experiences gathered in the user-centric study, we identified some language characteristics that hindered its use and that motivated new language constructs. In addition, the results of the case study showed that violations and faults in exception handling share common causes. Therefore, violations can be used to detect potential causes of exceptionrelated failures. To complement the detection of exception handling violations, this work also proposed a solution for supporting the repair of exception handling violations. Repairing these violations requires reasoning about the
global impact that exception handling changes might have in different parts of the system. Thus, this work proposed a recommender heuristic strategy that takes into account the global context of where violations occur to produce recommendations. Each recommendation produced consists of a sequence of modifications that serves as a detailed blueprint of how an exception handling violation can be removed from the source code. The proposed recommender strategy also takes advantage of explicit policy specifications, although their availability is not mandatory. The results of our empirical assessments revealed that the proposed recommender strategy produced recommendations able to repair violations in approximately 70 per cent of the cases. When policy specifications are available, it produced recommendations able to repair violations in 97 per cent of the cases.
|
Page generated in 0.0449 seconds