Automatic Generation of Runtime Failure Detectors from Property Templates

Fine grained error or failure detection is often indispensable for precise, effective, and efficient reactions to runtime problems. In this chapter we describe an approach that facilitates automatic generation of efficient runtime detectors for relevant classes of functional problems. The technique targets failures that commonly manifest at the boundaries between the components that form the system. It employs a model-based specification language that developers use to capture system-level properties extracted from requirements specifications. These properties are automatically translated into assertion-like checks and inserted in all relevant locations of the systems code. The main goals of our research are to define useful classes of system-level properties, identify errors and failures related to the violations of those properties, and produce assertions capable of detecting such violations. To this end we analyzed a wide range of available software specifications, bug reports for implemented systems, and other sources of information about the developers intent, such as test suites. The collected information is organized in a catalog of requirements-level property descriptions. These properties are used by developers to annotate their system design specifications, and serve as the basis for automatic assertion generation.

[1]  Michael D. Ernst,et al.  Object and reference immutability using Java generics , 2007, ESEC-FSE '07.

[2]  Jeffrey O. Kephart,et al.  The Vision of Autonomic Computing , 2003, Computer.

[3]  Stephen Gilmore,et al.  Mobile Resource Guarantees for Smart Devices , 2004, CASSIS.

[4]  Wolfgang Emmerich,et al.  Precise service level agreements , 2004, Proceedings. 26th International Conference on Software Engineering.

[5]  Gary T. Leavens,et al.  The JML and JUnit Way of Unit Testing and its Implementation , 2004 .

[6]  George S. Avrunin,et al.  User guidance for creating precise and accessible property specifications , 2006, SIGSOFT '06/FSE-14.

[7]  Onn Shehory,et al.  Can self-healing software cope with loitering? , 2007, SOQUA '07.

[8]  Patrícia Duarte de Lima Machado Testing from structured algebraic specifications : the oracle problem , 2000 .

[9]  K. Rustan M. Leino,et al.  The Spec# Programming System: An Overview , 2004, CASSIS.

[10]  Walter F. Tichy,et al.  Proceedings 25th International Conference on Software Engineering , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[11]  Jonathan Aldrich,et al.  Verifying correct usage of atomic blocks and typestate , 2008, OOPSLA.

[12]  Richard G. Hamlet,et al.  Automatically Checking an Implementation against Its Formal Specification , 2000, IEEE Trans. Software Eng..

[13]  Leonardo Mariani,et al.  Automatic generation of software behavioral models , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[14]  David S. Rosenblum A Practical Approach to Programming With Assertions , 1995, IEEE Trans. Software Eng..

[15]  Alexander G. Gray,et al.  On-line anomaly detection of deployed software: a statistical machine learning approach , 2006, SOQUA '06.

[16]  Patrícia Duarte de Lima Machado Testing from Structured Algebraic Specifications , 2000, AMAST.

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

[18]  Hermann Kopetz,et al.  Dependability: Basic Concepts and Terminology , 1992 .

[19]  Jeffrey M. Voas,et al.  Putting assertions in their place , 1994, Proceedings of 1994 IEEE International Symposium on Software Reliability Engineering.

[20]  Jochen Wuttke Runtime failure detection , 2008, ICSE Companion '08.

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

[22]  M. Lam,et al.  Tracking down software bugs using automatic anomaly detection , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

[23]  Jochen Wuttke,et al.  Property Templates and Assertions Supporting Runtime Failure Detection , 2008 .

[24]  Monica S. Lam,et al.  Automatic inference of stationary fields: a generalization of java's final fields , 2008, POPL '08.

[25]  George S. Avrunin,et al.  Patterns in property specifications for finite-state verification , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[26]  Debra J. Richardson,et al.  Specification-based test oracles for reactive systems , 1992, International Conference on Software Engineering.

[27]  Israel Koren,et al.  Fault-Tolerant Systems , 2007 .

[28]  Manuvir Das Formal Specifications on Industrial-Strength Code-From Myth to Reality , 2006, CAV.

[29]  John Tang Boyland,et al.  Promises: limited specifications for analysis and manipulation , 1998, Proceedings of the 20th International Conference on Software Engineering.

[30]  John Tang Boyland,et al.  Connecting effects and uniqueness with adoption , 2005, POPL '05.

[31]  Bertrand Meyer,et al.  Finding Faults: Manual Testing vs. Random+ Testing vs. User Reports , 2008, 2008 19th International Symposium on Software Reliability Engineering (ISSRE).