Computer Science Department
School of Computer Science, Carnegie Mellon University
Making Robust Programs
Craig Fulmer Everhart
October 1985 - Thesis
I develop a technique for the diagnosis and treatment of many types of robustness failures , which are defined as failures in a system caused by differences in how its designer and its user extend the system's published specifications. A user of this technique employs a decision procedure to classify a robustness failure into one of twenty-four categories. Associated with each category is a set of handling strategies, which may be applied to treat the original failure. I motivate and describe the twenty-four categories. I present a discrimination network as a decision procedure for classifying robustness failures, and I give a collection of handling strategies for the categories. Experimental evidence demonstrates that the programmers can use the discrimination network to classify failures reasonably well and that the handling strategies associated with the categories are excellent.
Because the categories cover a large collection of robustness failures and because a category's handling strategies apply to all the failures that fall within it, I conclude that the technique embodies knowledge about making robust programs. I use the technique's categories and handling strategies as the basis for a coherent presentation of this knowledge in a helpful compendium.
The knowledge embedded in the technique and in the general lessons may be useful both to conventional practicing programmers and to the developers of program-building systems that create and maintain programs.