Flexible software is error-enabling software
The late Arthur C. Clark famously once said that any sufficiently advanced technology is indistinguishable from magic.
The term 'magic' is one we ruefully use for IT systems too. Of course we cannot make the system magical but some of the things users ask us to make the machine do automatically? ... Magic. Sorry. Machines don't do magic.
Sit around with a bunch of engineers reading through a set of system requirements documents and sooner or later one of their number will exclaim 'Yeah. Right. And then magic happens!'.
We all have idealized visions of IT systems that are at once totally flexible and totally automated. We want the system to be smart, to know how to do the right thing. Oh, and we want it never to allow users to make mistakes.
Therein lies the problem. To paraphrase Arthur C. Clark: any sufficiently advanced end-user action is indistinguishable from an end-user error.
Let us take a simple example. Imagine a workflow in which three pieces of information are required from the end-user in order to proceed. Let's call them A, B and C and let's imagine that they can be either on or off. That leads to eight combinations. Developers proceed to code for the 8 combinations. That is version 1. Now comes
the flexibility question: 'what if we need another on/off variable, D?' or worse 'what if we want A to have three possible values not two?'. Or even worse 'what if we need to be able to add new variables on the fly?'.
Well, we could try to make the variables completely configurable in terms of what they are called, what values they can take and what logic should be triggered based on the combination of values at any given point. Unfortunately, the only way to cover all possible non-magic configurabilty possibilities would be to allow direct change to the source code. Short of that, the best we can do is make some of these things somewhat open ended. Allow some fields to take arbitrary values. Make some actions scriptable by the end-user. That sort of thing.
Sadly, the result of this is invariably the introduction of the possibility for human error. Locking everything down so that the system is foolproof and fast and correct - and all such good things that appear in most requirements specifications - is fundamentally at odds with having a system that is completely flexible - which also appears in most requirements specifications.
Any system that claims to provide all these at once is - unless I have missed something fundamental - not advanced technology at all. It is pure magic.
ITworld.com
Symantec Backup Exec 12 and Backup Exec System Recovery 8 deliver industry leading Windows data protection and system recovery. Download this whitepaper to find out the top reasons to upgrade and how to get continuous data protection and complete system recovery.
Data and system loss — from a hard drive failure, malicious attack, natural disaster, or simple human error — can happen anytime. Don’t leave your business vulnerable. Make sure you have a secure recovery strategy in place. Symantec's latest backup and system recovery technology can efficiently restore critical applications, individual emails and documents and even restore your entire system in minutes in the event of a loss.
Businesses face a growing challenge to ensure that the IT environment is properly protected. Backup Exec 12 integrates with other applications in the Symantec family of products, to complement your current data protection strategy, keep your data securely backed up and make it recoverable when you need it most.







