Eliminating Exception Handling Errors with Dependability Cases: A Comparative, Empirical Study

Programs fail mainly for two reasons: logic errors in the code and exception failures. Exception failures can account for up to two-thirds of system crashes, hence, are worthy of serious attention. Traditional approaches to reducing exception failures, such as code reviews, walkthroughs, and formal testing, while very useful, are limited in their ability to address a core problem: the programmer's inadequate coverage of exceptional conditions. The problem of coverage might be rooted in cognitive factors that impede the mental generation (or recollection) of exception cases that would pertain in a particular situation, resulting in insufficient software robustness. This paper describes controlled experiments for testing the hypothesis that robustness for exception failures can be improved through the use of various coverage-enhancing techniques: N-version programming, group collaboration, and dependability cases. N-version programming and collaboration are well known. Dependability cases, derived from safety cases, comprise a new methodology based on structured taxonomies and memory aids for helping software designers think about and improve exception handling coverage. All three methods showed improvements over control conditions in increasing robustness to exception failures but dependability cases proved most efficacious in terms of balancing cost and effectiveness.

[1]  G. Rotter,et al.  Group and Individual Effects in Problem Solving. , 1969 .

[2]  E.,et al.  GROUPS : INTERACTION AND PERFORMANCE , 2001 .

[3]  Tom Gilb,et al.  Principles of software engineering management , 1988 .

[4]  Les Hatton,et al.  N-Version Design vs. One Good Version , 1997, IEEE Softw..

[5]  Barry W. Boehm,et al.  Software Engineering Economics , 1993, IEEE Transactions on Software Engineering.

[6]  A. D. Swain,et al.  Handbook of human-reliability analysis with emphasis on nuclear power plant applications. Final report , 1983 .

[7]  Roger Shaw,et al.  Safety Cases — How Did We Get Here? , 1997 .

[8]  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).

[9]  Chris Chatfield,et al.  Statistics for Technology-A Course in Applied Statistics. , 1984 .

[10]  Norman F. Schneidewind,et al.  An Experiment in Software Error Data Collection and Analysis , 1979, IEEE Transactions on Software Engineering.

[11]  Peter G. Bishop Software Fault Tolerance by Design Diversity , 1995 .

[12]  Roger Shaw Safety and Reliability of Software Based Systems , 1997, Springer London.

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

[14]  Mary T. Dzindolet,et al.  Perception of Performance in Group Brainstorming: The Illusion of Group Productivity , 1993 .

[15]  Jean-Claude Laprie,et al.  Dependability — Its Attributes, Impairments and Means , 1995 .

[16]  Liming Chen,et al.  N-VERSION PROGRAMMINC: A FAULT-TOLERANCE APPROACH TO RELlABlLlTY OF SOFTWARE OPERATlON , 1995, Twenty-Fifth International Symposium on Fault-Tolerant Computing, 1995, ' Highlights from Twenty-Five Years'..

[17]  Wayne A. Wickelgren,et al.  Learning and memory , 1978 .

[18]  Lorenzo Strigini,et al.  Adjudicators for diverse-redundant components , 1990, Proceedings Ninth Symposium on Reliable Distributed Systems.

[19]  W. James,et al.  The Principles of Psychology. , 1983 .

[20]  G. W. Hill Group versus individual performance: are n + 1 heads better than one?" psychological bulletin , 1982 .

[21]  Watts S. Humphrey,et al.  A discipline for software engineering , 2012, Series in software engineering.

[22]  Edward Kit,et al.  Software testing in the real world - improving the process , 1995 .

[23]  Nancy G. Leveson,et al.  An experimental evaluation of the assumption of independence in multiversion programming , 1986, IEEE Transactions on Software Engineering.

[24]  John J. Bertin,et al.  The semiology of graphics , 1983 .

[25]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[26]  W E Vesely,et al.  Fault Tree Handbook , 1987 .

[27]  Robert L. Glass,et al.  Science and substance: a challenge to software engineers , 1994, IEEE Software.

[28]  Peter G. Bishop,et al.  The SHIP Safety Case Approach , 1995, SAFECOMP.

[29]  H. C. Wilson,et al.  Hazop and Hazan: Identifying and Assessing Process Industry Hazards, 4th edition , 2001 .

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

[31]  日本規格協会,et al.  Guide to quality control and company standardization , 1984 .

[32]  Flaviu Cristian,et al.  Exception Handling and Tolerance of Software Faults , 1995 .

[33]  W.N. Toy,et al.  Fault-tolerant design of local ESS processors , 1978, Proceedings of the IEEE.

[34]  Michael J. Maher,et al.  Statistics for Technology. , 1979 .

[35]  Iain D. Craig,et al.  Principles of Software Engineering Management by Tom Gilb with Susannah Pinzi, Addison-Wesley, Wokingham, UK, 442 pages (incl. index) (£17.95) , 1989, Robotica (Cambridge. Print).

[36]  Marilyn W. Bush,et al.  Improving software quality: the use of formal inspections at the Jet Propulsion Laboratory , 1990, [1990] Proceedings. 12th International Conference on Software Engineering.

[37]  Marilyn W. Bush Improving software quality: the use of formal inspections at the JPL , 1990, ICSE '90.

[38]  Edward Yourdon,et al.  Structured walkthroughs , 1978 .

[39]  James Reason,et al.  Human Error , 1990 .

[40]  Trevor A. Kletz,et al.  Hazop & Hazan: Identifying and Assessing Process Industry Hazards, Fouth Edition , 1999 .

[41]  E. N. Corlett,et al.  Handbook of human reliability analysis with emphasis on nuclear power plant applications: A.D. Swain and H.E. Guttmann Draft report for interim use and comment. Office of Nuclear Regulatory Research, US Regulatory Commission, Washington DC 20555, pp 440 , 1981 .

[42]  J. Klayman,et al.  Confirmation, Disconfirmation, and Informa-tion in Hypothesis Testing , 1987 .