How Does Exception Handling Behavior Evolve? An Exploratory Study in Java and C# Applications
Executable models are increasingly being employed by development teams to implement robust software systems. Modern executable models offer powerful composition mechanisms that allow developers to deliver a running system in small increments and in a time-effective fashion. Such models act like code by providing high-level development abstractions and, as a consequence, it is expected that increased software robustness is achieved. However, existing executable models have a number of limitations on the representation of exceptional behaviour. Similarly to exception handling in programming languages, one of the key problems is that the modelling languages and supporting environments do not allow the explicit specification of global exception flows. They require 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 an innovative exception handling model which provides abstractions to explicitly describe global views of exceptional control flows. The implementation of our proposed model extends the aspect-oriented language constructs and the control-flow analysis of the Motorola WEAVR with the aim of promoting enhanced robustness and program modularization.