Exception handlers for healing component-based systems

To design effective exception handlers, developers must predict at design time the exceptional events that may occur at runtime, and must implement the corresponding handlers on the basis of their predictions. Designing exception handlers for component-based software systems is particularly difficult because the information required to build handlers is distributed between component and application developers. Component developers know the internal details of the components but ignore the applications, while application developers own the applications but cannot access the details required to implement handlers in components. This article addresses the problem of automatically healing the infield failures that are caused by faulty integration of OTS components. In the article, we propose a technique and a methodology to decouple the tasks of component and application developers, who will be able to share information asynchronously and independently, and communicate implicitly by developing and deploying what we call healing connectors. Component developers implement healing connectors on the basis of information about the integration problems frequently experienced by application developers. Application developers easily and safely install healing connectors in their applications without knowing the internal details of the connectors. Healing connectors heal failures activated by exceptions raised in the OTS components actually deployed in the system. The article defines healing connectors, introduces a methodology to develop and deploy healing connectors, and presents several case studies that indicate that healing connectors are effective, reusable and efficient.

[1]  George Candea,et al.  Microreboot - A Technique for Cheap Recovery , 2004, OSDI.

[2]  Christof Fetzer,et al.  Automatic detection and masking of nonatomic exception handling , 2003, IEEE Transactions on Software Engineering.

[3]  Cecília M. F. Rubira,et al.  Architecting Fault Tolerance with Exception Handling: Verification and Validation , 2009, Journal of Computer Science and Technology.

[4]  P. M. Melliar-Smith,et al.  A program structure for error detection and recovery , 1974, Symposium on Operating Systems.

[5]  Leonardo Mariani,et al.  In-field healing of integration problems with COTS components , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[6]  P. Y. A. Ryan Towards an Engineering Approach to Component Adaptation , 2006 .

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

[8]  R. Kerr,et al.  Recovery blocks in action: A system supporting high reliability , 1976, ICSE '76.

[9]  Cristina V. Lopes,et al.  A study on exception detection and handling using aspect-oriented programming , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[10]  Jie Xu,et al.  Coordinated exception handling in distributed object systems: from model to system implementation , 1998, Proceedings. 18th International Conference on Distributed Computing Systems (Cat. No.98CB36183).

[11]  Cecília M. F. Rubira,et al.  A Dependable Architecture for COTS-Based Software Systems Using Protective Wrappers , 2003, WADS.

[12]  David Garlan,et al.  Architectural Mismatch or Why it's hard to build systems out of existing parts , 1995, 1995 17th International Conference on Software Engineering.

[13]  Max Jacobson,et al.  A Pattern Language: Towns, Buildings, Construction , 1981 .

[14]  Gang Huang,et al.  Failure Analysis of Open Source J2EE Application Servers , 2007, Seventh International Conference on Quality Software (QSIC 2007).

[15]  Sunghun Kim,et al.  Toward an understanding of bug fix patterns , 2009, Empirical Software Engineering.

[16]  Giovanni Denaro,et al.  ACM Transactions on Software Engineering and Methodology : Volume 22, Nomor 4, 2013 , 2014 .

[17]  Paulo Marques,et al.  Exception Handling: A Field Study in Java and .NET , 2007, ECOOP.

[18]  Anand R. Tripathi,et al.  Issues with Exception Handling in Object-Oriented Systems , 1997, ECOOP.

[19]  Andreas Zeller,et al.  Mining temporal specifications from object usage , 2011, Automated Software Engineering.

[20]  Saurabh Sinha,et al.  Criteria for testing exception-handling constructs in Java programs , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[21]  Alexander Romanovsky Exception handling in component-based system development , 2001, 25th Annual International Computer Software and Applications Conference. COMPSAC 2001.

[22]  Hermann Kopetz,et al.  Fault tolerance, principles and practice , 1990 .

[23]  Tomás Vojnar,et al.  Healing data races on-the-fly , 2007, PADTAD '07.

[24]  Roy A. Maxion,et al.  Improving software robustness with dependability cases , 1998, Digest of Papers. Twenty-Eighth Annual International Symposium on Fault-Tolerant Computing (Cat. No.98CB36224).

[25]  David S. Rosenblum Towards A Method Of Programming With Assertions , 1992, International Conference on Software Engineering.

[26]  Arnaud Gotlieb,et al.  Improving Constraint-Based Testing with Dynamic Linear Relaxations , 2007, The 18th IEEE International Symposium on Software Reliability (ISSRE '07).

[27]  Nenad Medvidovic,et al.  Towards a taxonomy of software connectors , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[28]  Brian Demsky,et al.  Bristlecone: Language Support for Robust Software Applications , 2011, IEEE Transactions on Software Engineering.

[29]  Martin P. Robillard,et al.  Static analysis to support the evolution of exception structure in object-oriented systems , 2003, TSEM.

[30]  Albert L. Baker,et al.  Preliminary design of JML: a behavioral interface specification language for java , 2006, SOEN.

[31]  Fernando Castor Filho,et al.  Specification of exception flow in software architectures , 2006, J. Syst. Softw..

[32]  Flaviu Cristian,et al.  Exception Handling and Software Fault Tolerance , 1982, IEEE Transactions on Computers.

[33]  Mauro Pezzè,et al.  Software testing and analysis - process, principles and techniques , 2007 .

[34]  Martin Rinard,et al.  Automatic detection and repair of errors in data structures , 2003, OOPSLA 2003.

[35]  Kent M. Pitman Condition Handling in the Lisp Language Family , 2000, Advances in Exception Handling Techniques.

[36]  Tzilla Elrad,et al.  Designing an aspect-oriented framework in an object-oriented environment , 2000, CSUR.

[37]  Brian Randell,et al.  System structure for software fault tolerance , 1975, IEEE Transactions on Software Engineering.

[38]  苦咖啡 Windows Update 你好烦 , 2003 .

[39]  하수철,et al.  [서평]「Component Software」 - Beyond Object-Oriented Programming - , 2000 .

[40]  Judith A. Stafford,et al.  CMEH: Container Managed Exception Handling for Increased Assembly Robustness , 2004, CBSE.

[41]  Frederic P. Miller,et al.  Apache Maven , 2010 .

[42]  Martin C. Rinard Automated Techniques for Surviving (Otherwise) Fatal Software Errors , 2007, Electron. Notes Theor. Comput. Sci..

[43]  Flaviu Cristian,et al.  Exception Handling , 1989 .

[44]  Carl E. Landwehr,et al.  Basic concepts and taxonomy of dependable and secure computing , 2004, IEEE Transactions on Dependable and Secure Computing.

[45]  Kishor S. Trivedi,et al.  A comprehensive model for software rejuvenation , 2005, IEEE Transactions on Dependable and Secure Computing.

[46]  James M. Bieman,et al.  Software architecture classification for estimating the cost of COTS integration , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[47]  Maria Grazia Fugini,et al.  Exception Handling for Repair in Service-Based Processes , 2010, IEEE Transactions on Software Engineering.

[48]  Andreas Zeller,et al.  Automated Fixing of Programs with Contracts , 2014 .

[49]  Cecília M. F. Rubira,et al.  A comparative study of exception handling mechanisms for building dependable object-oriented software , 2001, J. Syst. Softw..

[50]  Cecília M. F. Rubira,et al.  Exception handling in the development of dependable component‐based systems , 2005, Softw. Pract. Exp..

[51]  R. Keshav,et al.  Towards a taxonomy of architecture integration strategies , 1998, ISAW '98.

[52]  L. Alvisi,et al.  A Survey of Rollback-Recovery Protocols , 2002 .

[53]  Roy A. Maxion,et al.  Eliminating Exception Handling Errors with Dependability Cases: A Comparative, Empirical Study , 2000, IEEE Trans. Software Eng..

[54]  Rod Johnson,et al.  J2EE Development Frameworks , 2005, Computer.

[55]  Alessandra Gorla,et al.  Automatic workarounds for web applications , 2010, FSE '10.

[56]  Dhiraj K. Pradhan,et al.  Roll-Forward Checkpointing Scheme: A Novel Fault-Tolerant Architecture , 1994, IEEE Trans. Computers.

[57]  Russ Abbott,et al.  Resourceful systems for fault tolerance, reliability, and safety , 1990, CSUR.

[58]  Chen Fu,et al.  Robustness testing of Java server applications , 2005, IEEE Transactions on Software Engineering.

[59]  Alessandra Gorla,et al.  Handling Software Faults with Redundancy , 2008, WADS.

[60]  Algirdas Avizienis,et al.  The N-Version Approach to Fault-Tolerant Software , 1985, IEEE Transactions on Software Engineering.

[61]  Cecília M. F. Rubira,et al.  An exception handling mechanism for developing dependable object-oriented software based on a meta-level approach , 1999, Proceedings 10th International Symposium on Software Reliability Engineering (Cat. No.PR00443).

[62]  Paulo Marques,et al.  A Case for Automatic Exception Handling , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[63]  Leonardo Mariani,et al.  Towards Self-Protecting Enterprise Applications , 2007, The 18th IEEE International Symposium on Software Reliability (ISSRE '07).