Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Re: Software Design Resources

by johndageek (Hermit)
on Aug 22, 2003 at 19:58 UTC ( #285902=note: print w/replies, xml ) Need Help??

in reply to Software Design Resources

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.
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.


Excellence is our realm, perfection is God's

Replies are listed 'Best First'.
Re: Re: Software Design Resources
by Anonymous Monk on Aug 23, 2003 at 03:14 UTC
    Excellence is our realm, perfection is God's

    How much does this God person charge per hour? ;-)


      As the story goes: The scientists were excited, they had created life! A challange was issued to God, and God accepted. The scientists and God met at the agreed upon place. The contest began, God scooped up a hand full of dust, the scientists reached for a handful of dust. God paused, and said "Hold on there, get your own dust.".

      John :)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://285902]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (2)
As of 2021-06-17 17:06 GMT
Find Nodes?
    Voting Booth?
    What does the "s" stand for in "perls"? (Whence perls)

    Results (84 votes). Check out past polls.