UH2@PSUVM.BITNET (Lee Sailer) (10/19/89)
I thought of another wrinkle on the question of the difference between the "design" of software and the "engineering" of other stuff. Much of the debate concerns how in some fields, such as civil engineering, many standards already exist can be followed, while in software few such standards or handbooks are regularly used by practitioners. But there is a second related issue. In hard engineering, I think there is sometimes an additional legal or bureaucratic layer of society that tries to keep users from abusing the thing beyond its specs. For example a fire marshall might clear a theater if too many people occupy the balcony, or trucks above a certain weight might be prohibited from using a roadway. Right off hand, it is hard to think of software situations where some quasi-judicial body steps in and says, "Your corporation cannot put that many employee records in that database," or "Sorry, that problem is to big for that spreadsheet." Oh, wait. I just thought of one. Years ago, a friend of mine who was engaged in high-powered cancer research needed a simple t-test to test significance, so he wrote a basic program on his Apple, a program that I am sure any of us could write blindfolded. Science magazine rejected his article until he computed the t-statistic using one of the approved stat packages, which included SPSS, BMDP, and SAS, as I recall.
tada@athena.mit.edu (Michael J Zehr) (10/19/89)
In article <89291.134836UH2@PSUVM.BITNET> UH2@PSUVM.BITNET (Lee Sailer) writes: >I thought of another wrinkle on the question of the difference between >the "design" of software and the "engineering" of other stuff. >[legal controls like max people per building or max vehicle weight per >bridge, etc.] There's another difference i've thought of. "Real" structures are much less likely to be used for a purpose other than intended. on the humorous side, bridges are very rarely picked up and moved somewhere else to be used for a different reason. :-) (there are of course times when buildings are renovated, but that often costs close to (or more!) than the cost of building it in the first place, so it's treated as a serious project. too often software is supposed to be reused and it's expected to take no time to tailor something for a different environment.) here's a concrete example of something i found in a production system i was maintaining once upon a time: there was a sort procedure which was copied (almost) verbatim from K&R (or so a comment said -- i didn't check it for accuracy) that was o(n^2) in time-execution and was being used to sort arrays that were 7000 elements long. i told someone to replace all calls to it with a call to a library sort routine, drastically speeding up all the operations which required that sort. there was a mistake here in taking a "toy" sorting program that was designed for maybe 50 elements and scaling it up by a factor of 100. and that mistake shouldn't be overlooked... but such mistakes are made because they're *possible* in software-enginerring. you simply can't arbitrarily copy something and scale it to whatever size you want in "hard" engineering disciplines. and though it's this characteristic of software-enginerring which allows for major mistakes, it also allows for major successes. (can you imagine a contractor saying "well, we built a similar highway/bridge/bypass system for another city, so we can do one for you in 1/10 the time and 1/4 the cost." ??? this is the sort of thing that can be done and is being done in software-enginerring today.) -michael j zehr