The author, Dan Bricklin, is quite a pioneer in computing. He's one of the saner voices out there.

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.


In reply to Re: (OT): 200-year software by husker
in thread (OT): 200-year software by dragonchild

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.