Path: utzoo!utgpu!news-server.csri.toronto.edu!qucis!skill From: skill@qucis.queensu.CA (David Skillicorn) Newsgroups: comp.software-eng Subject: Overengineering Software Message-ID: <1828@qusunita.queensu.CA> Date: 26 Apr 91 14:17:10 GMT Organization: Queen's University, Kingston, Ontario, Canada Lines: 26 A number of people have used metaphors for the robustness of software based on physical processes such as bridge building. Such metaphors contain some dangers since they tend to suggest that building software is much like building bridges, and building in a little extra something will increase the of the software. The problem is that (all things being equal) real world systems are continuous and have the property that a little bit more of something in the building results in a little bit more of a nice property in the final system. Software is not continuous and such properties are uncommon and hard to work with. Two behaviours of the system that are perceived by users to be very close by some appearance metric may be wildly different in some metric suitable to the internal logic of the program. Now it is possible to talk about the robustness of software in terms of the size of the set of input/output states for which the software is well-behaved; and hence in terms of predicates which can be "weaker" or "stronger". But this doesn't seem to be quite what people mean when they talk about "pushing the software". And, as I've already suggested, it doesn't necessarily correspond very directly to the external appearance of a "stronger" piece of software. David Skillicorn Queen's University