ICSE 2012 Workshops
2012 34th International Conference on Software Engineering (ICSE)
Powered by
Conference Publishing Consulting

2012 5th International Workshop on Exception Handling (WEH), June 9, 2012, Zurich, Switzerland

WEH 2012 – Proceedings

Contents - Abstracts - Authors

5th International Workshop on Exception Handling (WEH)

Preface

Title Page


Foreword
The 5th International Workshop on Exception Handling (WEH.12) is an initiative that aims to bring together researchers and practitioners in order to discuss the multi-faceted research on exception handling from a software engineering perspective. With exception handling increasingly becoming a pervasive issue on real-life projects, it is no longer acceptable to consider exception handling only as an implementation matter. Software developers have being faced a number of software engineering challenges towards the effective specification, design, testing, and evolution of exception handling strategies in existing software projects. In order to discuss contemporary software engineering challenges on exception handling, the WEH workshop is strongly focused on discussions, interleaved with short presentations and discussion groups.

Making Exceptions on Exception Handling
Tao Xie and Suresh Thummalapenta
(North Carolina State University, USA; IBM Research, India)
The exception-handling mechanism has been widely adopted to deal with exception conditions that may arise during program executions. To produce high-quality programs, developers are expected to handle these exception conditions and take necessary recovery or resource-releasing actions. Failing to handle these exception conditions can lead to not only performance degradation, but also critical issues. Developers can write formal specifications to capture expected exception-handling behavior, and then apply tools to automatically analyze program code for detecting specification violations. However, in practice, developers rarely write formal specifications. To address this issue, mining techniques have been used to mine common exception-handling behavior out of program code. In this paper, we discuss challenges and achievements in precisely specifying and mining formal exception-handling specifications, as tackled by our previous work. Our key insight is that expected exception-handling behavior may be "conditional" or may need to accommodate "exceptional" cases.

Can Asynchronous Exceptions Expire?
Benjamin Morandi and Bertrand Meyer ORCID logo
(ETH Zurich, Switzerland)
A multitude of asynchronous exception mechanisms have been proposed. They specify where and when an asynchronous exception propagates. We highlight another aspect that has largely been overlooked: can an asynchronous exception expire? We discuss scenarios where it is meaningful for an asynchronous exception to expire. We further elaborate on one of the scenarios, thereby outlining an asynchronous exception mechanism for the SCOOP concurrency model.

Usability Challenges in Exception Handling
Roy Krischer and Peter A. Buhr
(University of Waterloo, Canada)
Two language mechanisms are presented and assessed for assisting understanding of exception complexity. First, passive and active exception assertions dynamically check if the reason for an exception raise matches with the purpose of a matching handler. A passive assertion is a check when an exception propagates out of a block it guards. The active form adds probabilistically injection of exceptions to provide more comprehensive testing. Second, runtime exception information is logged for dynamic query to check current handling status and provide a history of exceptional events.

Handling Exceptions in Programs with Hidden Concurrency: New Challenges for Old Solutions
Alcides Fonseca and Bruno Cabral
(University of Coimbra, Portugal)
Multi-core processors are present in everyone’s daily life. Consequently, concurrent programming has re-emerged as a pressing concern for everyone interested in exploring all the potential computational power in these machines. But, the emergence of new concurrency models and programming languages also brings new challenges in terms of how one can deal with abnormal occurrences, much due to the heterogenous parallel control flow. Unexpectedly, sequential Exception Handling models remain as the most used tool for robustness, even in the most recent concurrent programming languages. Though, the appearance of more complex models, such as programming languages with implicit concurrency, might pose a challenge too big for these sequential mechanisms. In this article we will provide evidences why such models are not generally suited to deal with faults in programs with implicit concurrency and, in the light of more recent advances in concurrent Exception Handling, we will discuss the attributes of a model for addressing this problem.

Modular Fault Handling in a Network-Transparent Programming Language
Géry Debongnie, Raphäel Collet, Sébastien Doeraene, and Peter Van Roy
(Université Catholique de Louvain, Belgium)
A programming language is network-transparent if the same program code executes with the same results, whether it is run in a centralized or distributed setting, provided there is no partial failure. The Erlang programming language is network-transparent and handle failures by message passing. We propose in this paper a generalization of the Erlang failure handling model which can be used for more expressive network-transparent languages.
The new design introduces two concepts: entity fault states and fault streams. The failure of an entity is modeled in the system as a language entity, and is visible to the programmer via its corresponding fault stream. We also describe an implementation in Mozart 1.4.0. Evaluation shows that this model incurs a slight overhead in performance, but yields much more modular program code.

An Implementation Mechanism for Tailorable Exceptional Flow
Steven te Brinke, Mark Laarakkers, Christoph Bockisch, and Lodewijk Bergmans
(University of Twente, Netherlands)
Decomposing software according to the structure of the problem domain makes it easier to manage its complexity. Such a decomposition requires a programming language that supports compositions matching those in the problem domain. However, current programming languages only offer a restricted set of control-flow related composition mechanisms, such as method invocation and exception handling. This limits developers in choosing the desired decomposition.
Previously, we showed that continuations are suitable for implementing various control-flow compositions. However, composing and refining these implementations requires new language features. In this paper, we outline requirements for control-flow composition and show how exception handling can be implemented using continuations, scopes and bindings.

Towards a Formal Model to Reason about Context-Aware Exception Handling
Lincoln S. Rocha and Rossana M. C. Andrade
(Federal University of Ceará, Brazil)
The context-awareness is a central aspect in the design of pervasive systems, characterizing their ability to adapt its structure and behavior. The context-aware exception handling (CAEH) is an existing approach employed to design exception handling in pervasive systems. In this approach, the context is used to define, detect, propagate, and handle exceptions. CAEH is a complex and error prone activity, needing designers' insights and domain expertise to identify and characterize contextual exceptions. However, despite the existence of formal methods to analyze the adaptive behavior of pervasive systems, such methods lack specific support to specify the CAEH behavior. In this paper, we propose a formal model to reason about the CAEH behavior. It comprises an extension of the Kripke Structure to model the context evolution of a pervasive system and a transformation function that derivates the CAEH control flow from that proposed structure.

Handling Contract Violations in Java Card Using Explict Exception Channels
Juliana Araújo, Rafael Souza, Nélio Cacho, Anamaria Martins, and Plácido A. Souza Neto
(Federal University of Rio Grande do Norte, Brazil; Federal Institute of Rio Grande do Norte, Brazil)
Java Card is a version of Java developed to run on devices with severe storage and processing restrictions. The applets that run on these devices are frequently intended for use in critical, highly distributed, mobile conditions. This requires runtime verification approach based on Design by Contract to improve the safety of Java Card applications. However handling contract violation in Java Card applications is challenging due to their communication structure and platform restrictions. Additionally the Java Card exception handling mechanism requires that developers understand the source of an exception, the place where it is handled, and everything in between. As system development evolves, exceptional control flows become less well-understood, with negative consequences for the program maintainability and robustness. In this paper, we claim that such problem can be addressed by implementing an innovative exception handling model which provides abstractions to explicitly describe global views of exceptional control flows.

The Role of Context in Exception-Driven Rework
Xiang Zhao, Barbara Staudt Lerner, and Leon J. Osterweil
(University of Massachusetts at Amherst, USA; Mount Holyoke College, USA)
Exception-driven rework occurs commonly in software development. In this paper, we describe a simple refactoring process, showing the use of the exception-driven rework exception handling pattern within it. We also discuss the important role that context plays in supporting the user during rework in helping the user keep track of the tasks being worked on and to facilitate resumption of normal activities upon completion of the exception handling work. The example process is specified in the Little-JIL process definition language. The use of context information in supporting the user is illustrated using a Data Derivation Graph (DDG), a graph that is automatically generated to document the ways in which artifact values are evolved during execution of a Little-JIL process.

Concrete Error Handling Mechanisms Should Be Configurable
Tero Hasu
(University of Bergen, Norway)
We argue that programmers should not need to decide on a specific error handling mechanism when implementing a C or C++ library. Rather, it should be possible to make that decision at configuration time in order to achieve better portability and more convenient use of libraries.

Separating Exceptional Concerns
Anya Helene Bagge
(University of Bergen, Norway)
Traditional error handling mechanisms, including exceptions, have several weaknesses that interfere with maintainability, flexibility and genericity in software: Error code is tangled with normal code; reporting is tangled with handling; and generic code is locked into specific ways of reporting and handling errors. We need to deal with errors in a declarative way, where the concerns of errors, error reporting and error handling are separated and dealt with individually by the programmer.

A Recommendation System for Exception Handling Code
Eiji Adachi Barbosa, Alessandro Garcia ORCID logo, and Mira MeziniORCID logo
(PUC-Rio, Brazil; TU Darmstadt, Germany)
Even though exception handling mechanisms are part of most mainstream programming languages, software developers still struggle to implement proper exception handling code. In particular, they fail in implementing effective handler actions. This position paper discusses our ongoing work on implementing and assessing a recommendation system for recommending code fragments implementing exception handling code. These fragments are not meant to be reused as-is. Instead, they are meant to be used by the developers as examples of how to possibly handle their exceptions. The goal of the proposed recommendation system is to assist the learning process of software developers by providing concrete examples of exception handling code.

Measurement of Exception-Handling Code: An Exploratory Study
Keith Ó Dúlaigh, James F. Power, and Peter J. Clarke ORCID logo
(National University of Ireland, Ireland; Florida International University, USA)
This paper presents some preliminary results from an empirical study of 12 Java applications from the Qualitas corpus. We measure the quantity and distribution of exception-handling constructs, and study their change as the systems evolve through several versions.

Supporting the Evolution of Exception Handling in Component-Based Product Line Architecture
Bruno de A. Iizuka, Amanda S. Nascimento, Leonardo P. Tizzei, and Cecília M. F. Rubira
(University of Campinas, Brazil)
Separation of concerns is one of the important goals of exception handling in order to keep separated the normal and the exceptional behaviour of a software system. Therefore it promotes both reuse and maintainability of normal and error handling code. In this work, our focus is to present how we can use the notion of aspect-connector for designing software variabilities related to different handling strategies in the context of a software product line. In particular, Connector-VP is used to support choices of different handlers depending on the set of selected features. Thus it realizes the binding between the normal behaviour and the selected exception handler.

proc time: 0.4