can be interpreted at several levels:
it is both a fascinating book for children and a biting political
("my principal Design was to Inform, and not to amuse thee,"
said Jonathan Swift).
Similarly there at least two
levels of answer about the distinction between management and
control of devices or networks. First there is a clear
Management is carried out by an operator sitting at a management
station. He or she enters commands to reconfigure equipment and
those commands are carried out.
Control, by contrast, is carried out autonomously by the
network, without operator intervention in response to some external
stimulus. For example, a link fails and the network automatically
reconfigures equipment to route around it. I pick up my telephone
and dial a number in Vancouver. The network detects this without
operator intervention and reconfigures equipment to route my
There is, however, a deeper level at which these operations are
similar, if not identical. Both can be thought of as a stimulus
(which could be an operator command)
changes to the
There is a classical joke comparing "real"
with which you are probably
familiar. In case you are not, with acknowledgements to the
anonymous author, here goes.
Once upon a time a king decided to test his two chief advisors.
He showed them a toaster and asked them to design an embedded
computer for it.
The first advisor, an engineer, replied, "Using a four-bit
microcontroller, I would write a program that reads the
knob and quantises its position from snow white to coal black. The
program would use that level as the index to a table of timer
values. It would turn on the heating elements and start the timer
with the initial value selected from the table. At the end of the
time delay, it would
off the heat and pop up the
week, and I'll show you a working prototype."
The second advisor, a computer specialist with object-oriented
design training, immediately recognised the danger of such
short-sighted thinking. He said, "Toasters don't just turn bread
into toast; they are also used to warm frozen
. What you see
before you is really a breakfast food cooker. As your subjects
become more sophisticated, they will demand more functionality.
They will need a
food cooker that can also cook sausages,
fry bacon, and scramble eggs. A toaster that only makes toast will
soon be obsolete. If we don't look to the future, we will have to
redesign the toaster completely in just a few
"With this in mind, let's
to the problem. First, create a class of breakfast
Specialise this class into subclasses: grains, pork, and poultry.
The specialisation process should be repeated with grains divided
into toast, muffins, pancakes and waffles; pork divided into
sausage and bacon; and poultry divided into scrambled eggs,
hard-boiled eggs, poached eggs, fried eggs and various omelette
"The ham and cheese omelette class is worth special attention
because it must inherit characteristics from the pork,
poultry classes. Thus, we see that the problem cannot be properly
without multiple inheritance. At run time, the program must
create the proper object and send a message to it that says, 'Cook
yourself.' The semantics of this message depend, of course, on the
kind of object, so they have a different meaning to a piece of
toast than to scrambled eggs.
"Reviewing the process so far, we see that the analysis phase
has revealed that the primary requirement is to cook any kind of
breakfast food. In the design phase, we have
derived requirements. Specifically, we need an object-oriented
language with multiple inheritance. Of course, users don't want the
eggs to get cold while the bacon is frying, so concurrent
processing is required, too.
"Don't forget the user interface. The lever that lowers the food
lacks versatility, and the darkness knob is confusing. Users won't
buy the product unless it has a
-friendly graphical interface.
When the breakfast cooker is plugged in, users should see the
company logo appear on the screen, and when they click on it, the
message 'Booting Linux 2.8' appears (Linux 2.8 should be available
by the time the product gets to the market). Users can use a menu
to select the foods they want to cook.
"Having made the wise decision of specifying the software first
in the design phase, all that remains is to pick an adequate
hardware platform for the implementation phase. A 1.2-GHz processor
with 128 MB of memory, a 30-GB hard disk and a colour VGA monitor
should be sufficient. If you select a multitasking, object-oriented
language that supports multiple inheritance and has a built-in GUI,
writing the program will be a snap. (Imagine the difficulty we
would have had if we had foolishly allowed a hardware-first design
strategy to lock us into a four-bit microcontroller!)"
The king had the computer specialist beheaded, and they all
lived happily ever after.
I hope that, as you travel through this book, savouring its
object-oriented flavour, you will keep your head.