Reuters
is reporting that the security guards for Thailand's Finance Minister
had to smash through his limousine windows. Apparently when the BMW's
computer crashes it automatically locks the doors and turns off the
A/C. I mention this because it is important to figure out just what the
right thing to do when there is a problem. Automated homes are much
more complex than a word processing application or check book program
and the consquences of an error does manifest in the physical world.
The errors in the program we write can have major consquences. For
example the Reuter's article mention that the minister and his driver
could hardly breathe for over 10 minutes because the car had turned off
the A/C and ventilation. The question that needs to be asked is what is
the correct way to handle this problem. Should the designer have chosen
to lock up the occupants or not lock them in? Should there have been a
way for them to exit the vehicle without smashing the windows. In the
context of Home Automation you need to ask yourself what should I do
when I get an error. For example at my work we have a major debate
going on about what to do when a command fails to executing our
software. Should we just automatically retry, let the user know and
decide what to do? What would be the best way to handle a disconnect
from the system?
Coincidently, the magazine, Scientific American, released an article about self-repairing computer systems. The researchers take an interesting stance:
Our group of research collaborators at Stanford University and the
University of California at Berkeley has taken a new tack, by accepting
that computer failure and human operator error are facts of life.
Rather than trying to eliminate computer crashes--probably an
impossible task--our team concentrates on designing systems that
recover rapidly when mishaps do occur. We call our approach
recovery-oriented computing (ROC).
They target four principals in their research:
- Speed Recovery - If problems occur the system should recover quitly and automatically
- Tools to spot fault - Vendors need to provide tools to find the source of a problem
- Undo - Programs should have the ability to undo the operations
- Test Errors - Programmers should test their system by injecting errors into the test cases
Take the time to read the article and research. It may help you write better systems for your clients or yourself.