Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!uwm.edu!cs.utexas.edu!uunet!bloom-beacon!CALSTATE.BITNET!PAAAAAR From: PAAAAAR@CALSTATE.BITNET Newsgroups: comp.software-eng Subject: Computer Scientist Publishes 865 Errors Message-ID: <8910091549.AA17481@mitre.arpa> Date: 9 Oct 89 15:50:10 GMT Sender: daemon@bloom-beacon.MIT.EDU Organization: The MITRE Corp., Washington, D.C. Lines: 100 QUICK REVIEW "The Errors of \TEX(TM)" by Donald Knuth Software - Practice and Experience, Volume 17, No. 7, July 1989, pp607-685. This is an interesting paper. Donald Knuth has spent the last 10 years developing what has grown to be a 14,000 statement Pascal Program (\TEX) which allows the user to markup a text for printing. >From March 1977 through September 88 he recorded every change he made to both the original system(written in SAIL) and the later one ( written using WEB). He as prepared this List for publication and prefixed his comments. His humility is to be commended. His data fits much of what Frederick P. Brooks said in the "Mythical Man Month" in 1975 For example Brooks said, "Plan to throw one away". Knuth says: > It soon became clear what ought to be done: > the original version of [\TEX and METAFONT] should be > scrapped, [when we had ] enough user experience. DETAILS: (*else search for OPINION *) Here are some more detailed comments and quotes: I started a "BugLog" in 1971. It was replaced by an Lab Note Book two years later. They both taught me much. I still have them and re-read them. He has 15 categories of change. 9 of these are Bugs and 6 are Design Enhancements. They range from "A for Algorithm" through to "S for Surprise" with some gaps in the alphabet. He noted that only 1.4% of the errors were associated with goto statements - and concludes: >"Every feature of a programming language can be harmful if it is misused." His original design was reviewed by others and implemented by 2 graduate students while he was outside the country - when he returned he took over the implementation and conludes: >"Important policy decisions had to be made at every turn[...]. The designer of > a new kind of system must participate in the implementation[...]." >"The designer should also write the first user manual" Later he makes it clear that he believes that it is the newness of the \TEX idea that lead to the need for the designer to be involved in implementation and documentation. In the original version there were 500 errors in 4.5K statements. The commonest types of change where: I: Improvement of Interactive User Interface G: Generalization Q: Quest for Quality = better looking output F: Forgotten Function C: Clean up for Clarity and Consistency B: Blunder and Botch - (what I call a "Brain Parity Failure") In the later version (300 errors) the commonest types of errors were C, G, I (as above) R: Robustness Reinforcement. (Note. I could be wrong with these lists since the figures and tables are (deliberately?) not statistical summaries) It is clear that for 10 years he thought that \TEX was 90% to 100% complete. He had 850 entries in May 87, and 865 entries in Sept 88 however - the new ones being mainly Surprises. He pays people who report problems - and doubles the prize each year - this seems a little overconfident. He describes how he selected test data - he uses the words "Torture Test". He notes that a burst of changes resulted from his presenting the code in class. The addendum, to the paper is the complete list of 850+ errors (which I did not read in detail). His conclusion is that keeping a log of changes (a BugLog) has taught him to accept and enjoy his errors. OPINION The paper is a comfort to me. It indicates that Software Engineering (SE) has something to offer the programmer and computer scientist. There is no mention of SE techniques. However Knuth's data supports three or four pieces of SE lore. He is an intelligent programmer using structured programming and complex tools - and making mistakes which SE aims to avoid. (\TEX is a symbol for a trademark of the American Mathematics Society) Dr. Richard J. Botting, Department of Computer Science, 5500 State University Parkway, San Bernardino CA 92407 "where smog of LA, is blown away, and the sun shines bright all the day"! PAAAAAR@CCS.CSUSCC.CALSTATE paaaaar@calstate.bitnet PAAAAAR%CALSTATE.BITNET@CUNYVM.CUNY.EDU voice:714-880-5326 (on odd thursdays) Disclaimer:These are my own opinions, nobody else wants to be responsible.