Chapter 6
Clues from the World of computer programming
At the system level
There are two, even more significant, consequences that has come out of this new way to design software. Firstly, as the OOP system is designed within a messaging framework, the messages can be intercepted and redirected to new modules. This allows faulty, redundant or outdated modules to be by-passed; isolating them from the main system. The intercepted messages can then be redirected to a replacement module that is fault free or to an updated version of the original.
This is somewhat similar to the way in which complex equipment like television sets are designed. Their design splits the electronic circuitry up into plug-in modules. This means that when a fault occurs, a television repair man doesn't have to spend time checking all the circuitry for the fault, he simply locates the fault to a particular module and then replaces the module. As it usually costs more to track down the fault in a particular module than to buy a new module, modules are treated as disposables and simply thrown away when they develop a fault.
This attitude of treating system modules as disposables can also be applied to software objects in object oriented systems. Moreover, there is not even a need to remove the old modules: messages can simply be diverted around them. In this way the modules can still be ready to be reconnected if the replacement module isn't working properly. Also, a simple switching arrangement can allow switching between the old and the new modules. This leads to switching between different kinds of modules to allow the system to react differently to different situations. Simply by including message switching objects, which respond to messages, systems can become intelligently flexible. Adapting to environmental stimuli simply by re-routing messages to appropriate alternative modules.
This modular system of communicating objects also provides a simple way to change, modify or improve the system itself; new modules can easily be inserted into a finished system, this is typified by the plug-ins that are used with Web browsers. Here, new software module tap into the browser's internal messaging system and give the browser new or extended capabilities.
What this seemingly innocuous change in design strategy has accomplished is to allow complex rigid and inflexible systems to become highly flexible. Systems can be built that can easily and inexpensively be changed or adapted to cope with any new situation, specification or environmental vagary.