Software Assumptions Failure Tolerance: Role, Strategies, and Visions

At our behest or otherwise, while our software is being executed, a huge variety of design assumptions is continuously matched with the truth of the current condition. While standards and tools exist to express and verify some of these assumptions, in practice most of them end up being either sifted off or hidden between the lines of our codes. Across the system layers, a complex and at times obscure web of assumptions determines the quality of the match of our software with its deployment platforms and run-time environments. Our position is that it becomes increasingly important being able to design software systems with architectural and structuring techniques that allow software to be decomposed to reduce its complexity, but without hiding in the process vital hypotheses and assumptions. In this paper we discuss this problem, introduce three potentially dangerous consequences of its denial, and propose three strategies to facilitate their treatment. Finally we propose our vision towards a new holistic approach to software development to overcome the shortcomings offered by fragmented views to the problem of assumption failures.

[1]  Bertrand Meyer,et al.  Applying 'design by contract' , 1992, Computer.

[2]  Jean-Marc Jézéquel,et al.  Reflective Model Driven Engineering , 2003, UML.

[3]  Amit P. Sheth,et al.  Semantics to energize the full services spectrum , 2006, CACM.

[4]  Barry W. Johnson Design & analysis of fault tolerant digital systems , 1988 .

[5]  Paul A. Green The art of creating reliable software-based systems using off-the-shelf software components , 1997, Proceedings of SRDS'97: 16th IEEE Symposium on Reliable Distributed Systems.

[6]  Lloyd W. Massengill,et al.  SINGLE EVENT EFFECTS , 2002 .

[7]  Highly reliable spaceborne memory subsystem , 1981 .

[8]  Jean Bézivin,et al.  On the unification power of models , 2005, Software & Systems Modeling.

[9]  Douglas C. Schmidt,et al.  Guest Editor's Introduction: Model-Driven Engineering , 2006, Computer.

[10]  Nancy G. Leveson,et al.  Safeware: System Safety and Computers , 1995 .

[11]  John Calcote Autotools: A Practioner's Guide to GNU Autoconf, Automake, and Libtool , 2010 .

[12]  R. Ramaswami,et al.  Book Review: Design and Analysis of Fault-Tolerant Digital Systems , 1990 .

[13]  Fabio Massacci,et al.  Security-by-Contract: Toward a Semantics for Digital Signatures on Mobile Code , 2007, EuroPKI.

[14]  Michael R. Lyu Reliability-oriented software engineering: design, testing, and evaluation techniques , 1998, IEE Proc. Softw..

[15]  Peter Baumann,et al.  A Framework for the Specification of Reactive and Concurrent Systems in Z , 1995, FSTTCS.

[16]  Douglas C. Schmidt,et al.  Model-Driven Engineering , 2006 .

[17]  Stuart Kent,et al.  Model Driven Engineering , 2002, IFM.

[18]  Giuliano Antoniol,et al.  Compiler Hacking for Source Code Analysis , 2004, Software Quality Journal.

[19]  Richard D. Schlichting,et al.  FTAG: A Functional and Attribute Based Model for Writing Fault-TolerantSoftware , 1996 .

[20]  Arnulf Mester ACM fellow profile: James Jay (Jim) Horning , 1998, SOEN.

[21]  Andrea Bondavalli,et al.  A Mechanism for Discriminating Transient from Intermittent/Permanent Faults , 1996 .

[22]  Andrea Bondavalli,et al.  Threshold-Based Mechanisms to Discriminate Transient from Intermittent Faults , 2000, IEEE Trans. Computers.

[23]  Hong Sun,et al.  ACCADA: A Framework for Continuous Context-Aware Deployment and Adaptation , 2009, SSS.

[24]  Rudy Lauwereins,et al.  The EFTOS voting farm: a software tool for fault masking in message passing parallel environments , 1998, Proceedings. 24th EUROMICRO Conference (Cat. No.98EX204).

[25]  M. R. Lyu Workshop B. Dependable Computing Systems Keynote Speech Design, Testing, And Evaluation Techniques For Software Reliability Engineering , 1998, Proceedings. 24th EUROMICRO Conference (Cat. No.98EX204).

[26]  Wouter Joosen,et al.  Security Middleware for Mobile Applications , 2009, Middleware for Network Eccentric and Mobile Applications.

[27]  K. Boulding General Systems Theory---The Skeleton of Science , 1956 .

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

[29]  Michael R. Lyu Design, testing, and evaluation techniques for software reliability engineering , 1998, Proceedings. 24th EUROMICRO Conference (Cat. No.98EX204).

[30]  Matteo Frigo A Fast Fourier Transform Compiler , 1999, PLDI.