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.