Extending object-oriented languages with backward error recovery integrated support

One of the requirements of software robustness is controlling and managing runtime errors that might arise at certain points of application execution. In most object-oriented programming languages, this requirement is commonly implemented by means of exception handling. Although exception handling is a powerful tool to avoid system failure arising, there are still many situations where it is not sufficient to restore the system to a consistent state. Exception handling allows the developer to detect and locate errors, but it gives no information or tools to cover the error recovering task. Therefore, we propose an extension of the semantics of common object-oriented languages to restore the previous consistent state of the system in the presence of runtime errors, avoiding some of the tasks that exception-handling mechanisms delegate to developers. Our proposed solution is centered in the concept of ''reconstructor'', a declarative component oriented to automatically return the system to its last stable state. Based on this concept, we develop a non-intrusive code enrichment tool for Java, and we apply it to a real application in order to check the feasibility of the proposal. We evaluated the performance of the resulting code, obtaining reasonable and viable rates and overload.

[1]  M. Patiño-Martínez,et al.  Implementing transactions using Ada exceptions: which features are missing? , 2001, ALET.

[2]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

[3]  Robert J. Walker,et al.  An initial assessment of aspect-oriented programming , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[4]  Michael Leyton,et al.  Interoperability and objects , 2006 .

[5]  Jørgen Lindskov Knudsen,et al.  Advances in Exception Handling Techniques , 2001, Lecture Notes in Computer Science.

[6]  Lionel C. Briand,et al.  A Unified Framework for Coupling Measurement in Object-Oriented Systems , 1999, IEEE Trans. Software Eng..

[7]  Kent L. Beck Smalltalk best practice patterns , 1996 .

[8]  Flaviu Cristian A Recovery Mechanism for Modular Software , 1979, ICSE.

[9]  Nicolas Guelfi,et al.  Designing fault-tolerant mobile systems , 2003 .

[10]  James E. Rumbaugh Relations as semantic constructs in an object-oriented language , 1987, OOPSLA 1987.

[11]  Jarrett Rosenberg,et al.  Some misconceptions about lines of code , 1997, Proceedings Fourth International Software Metrics Symposium.

[12]  R. Castanedo RDM: arquitectura software para el modelado de dominios en sistemas informáticos , 2002 .

[13]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[14]  Herbert Hecht Fault-Tolerant Software , 1979, IEEE Transactions on Reliability.

[15]  Scott Nettles,et al.  Transactions for Java , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[16]  Acauan Pereira Fernandes,et al.  Reflective implementation of an object recovery design pattern , 2001 .

[17]  Terry A. McKee,et al.  OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications , 1989 .

[18]  Ali Mili,et al.  Towards a Theory of Forward Error Recovery , 1985, IEEE Transactions on Software Engineering.

[19]  Barbara Liskov,et al.  Reliable object storage to support atomic actions , 1983, SOSP 1985.

[20]  Barbara Liskov,et al.  Reliable object storage to support atomic actions , 1983, SOSP '85.

[21]  José Alves Marques,et al.  Customizable Object Recovery Pattern , 2007 .

[22]  James E. Rumbaugh,et al.  Relations as semantic constructs in an object-oriented language , 1987, OOPSLA '87.

[23]  Andreas Krall,et al.  Efficient JavaVM just-in-time compilation , 1998, Proceedings. 1998 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.98EX192).

[24]  Bertrand Meyer,et al.  Object-Oriented Software Construction, 2nd Edition , 1997 .

[25]  Stephan Philippi Scientific Engineering for Distributed Java Applications , 2003, Lecture Notes in Computer Science.

[26]  Kai Li,et al.  Memory Exclusion: Optimizing the Performance of Checkpointing Systems , 1999, Softw. Pract. Exp..

[27]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[28]  Kai Li,et al.  Memory exclusion: optimizing the performance of checkpointing systems , 1999 .

[29]  Dirk Riehle,et al.  Pattern Languages of Program Design 3 , 1997 .