in reply to (OT): 200-year software
However, I am of the opinion that his article is nothing but a pipe dream. Analogies between software "engineering" and civil engineering are enlightening, but mainly only enlighten us as to how different building a brick wall is with writing a firewall. Software firewalls are more complicated than brick walls, not only when considered as single entity (a "wall), but when viewed at the component level.
Brick wall: composed of multiple, functionally identical bricks. Bricks are interchangable. Must be properly designed by a qualified engineer, but can be documented in often one or two relatively simple blueprints. Can be assembled according to blueprint by adequately trained bricklayers. Such training can be accomplished in a matter of weeks to obtain basic competence. Relevant properties of the bricks, mortar, and wall (dimensions, location, strength, etc) can be easily measured. Failed brick walls leave physical evidence which can be examined and analyzed to determine cause of failure. Walls are built in the physical world, which is like an OS with a non-changing spec: gravity, mass, intertia, momentum, etc, are all constants. The tools used to build the walls are also fairly simple, easy to operate, and well-understood.
software firewall: Made of numerous unique bricks (software components or lines of code). Not only is each brick different, we have to make our own bricks, and each brick has it's own unique failure mode. Each individual "brick" must be tested. Bricks are not interchangable. Built in a "virtual world" defined by an operating system or a hardware system, which themselves change frequently and exhibit unpredictable or anamolous behavior on occasion. Documents which describe the wall are complex, and the wall cannot typically be built from these documents by someone who doesn't also possess intimate knowledge concerning walls, bricks, and the "world".
To me, the biggest problem is that of the "world". For brick walls, we have a consistent, predictable system on which we build brick walls. A brick wall built 100 years ago works on the same physical principles as a brick wall built today, or 1000 years ago, because the world of physics itself has not changed over that time. The software world, however, didn't even exist 100 years ago and is basically impervious to our attempts to guess what it will be like 20 years from now. Whatever we "know" about the "world" now is likely going to be obsolete and worthless in the medium, if not near, future. We cannot develop "best practices" because only experience teaches which practices are best, and since everything in computing changes so fast, there's no opportunity to gain that kind of experience.
Dan has it right ... to make software work like brick walls, the things in his article need to happen. I just am doubtful that those things could actually happen.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: (OT): 200-year software
by BrowserUk (Patriarch) on Jul 15, 2004 at 15:56 UTC | |
by Theo (Priest) on Jul 15, 2004 at 22:35 UTC | |
by Solo (Deacon) on Jul 16, 2004 at 03:19 UTC | |
by ggg (Scribe) on Jul 16, 2004 at 14:27 UTC | |
Re^2: (OT): 200-year software
by JanneVee (Friar) on Jul 15, 2004 at 16:22 UTC | |
Re^2: (OT): 200-year software
by freddo411 (Chaplain) on Jul 15, 2004 at 18:41 UTC | |
by graff (Chancellor) on Jul 16, 2004 at 04:47 UTC | |
by freddo411 (Chaplain) on Jul 16, 2004 at 20:41 UTC |