Good questions right up to "where any failure is simply not acceptable?"

This moves us from the difficult to the excruciatingly improbable (or impossible if I can use the word loosely).

No fluff intended at this point.
Assume all good problem definition has been done, the code is written and tested by the coder to validate that it meets the specifications.

list all possible uses.
list all possible failure points,
list all the uses you have not thought of.
list failure points you have not considered.

Test the list above.

Now a few guarantees need to be in place.

All uses of said software will be run on the exact same hardware, OS, and supporting environment it has been tested on. (please note the Hardware, OS and environment will never fail in any way. No guarantee needed since it will not fail)

Let us leave the ridiculous, and splash our face with a bit of reality. What say we make the specification attainable and personal. What procedure would you put in place to test software that, if it fails you (or if you are a parent - your child) will die a slow, horrible death (other than old age).

Neat, tidy question, with definite consequences that are high enough to put most people on their toes. Now, where do we start?

Define the requirements, environment of use, who the users will be, budget, time constraints, who else can be brought in to test, how long can we put the software in the field with real users before the test period is said to end. Will death due to failure be enforced if the flaw is not in the software but due to hardware, or environment?

Now let's hash some of this around.

Hardware - Make it as redundant as possible. Power - back up generators and batteries. software - oh oh, 2 options here.
1) do we make it simple, bare bones, and as easy as possible to spot potential errors.
OR
2) do we build the software to run across multiple hardware platforms running validations across the platforms that all are in sync, allowing the majority to rule in case of a difference in responses? Coding all statements to handle unforeseen values? The list can go on.

Your question is not a programming question but a philosophical question, because life is fraught with failures. In what situation would "any failure simply not be acceptable"? People die all the time for stupid reasons, so that will not do. Any life activity has risks, both objective and subjective. To remove all risk of failure from a life , one must remove life. To write a program with all possibilities of failure removed is to not have a program.

I know, this is a bunch of metaphorical fluff that can not be directly applied, but it is a question that is worth some thought because it stretches the bounds of how we could scope a project, and may help us in our attempts at qwality.

Enjoy
dageek

Excellence is our realm, perfection is God's


In reply to Re: Software Design Resources by johndageek
in thread Software Design Resources by Anonymous Monk

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.