From: Nathan Dire (ndire_at_cs.washington.edu)
Date: Tue Jan 06 2004 - 23:26:08 PST
In "The Structure of the 'THE'-Multiprogramming System", Dijkstra presents a
multiprogramming system designed to process user programs for the
Technological University on a machine called the EL X8. He outlines the
implementation of the system, from the guiding principles to the basic
structure to the method of verification.
This paper include design principles that remain quite relevant today. The
layering approach shown in the "hierarchy of sequential processes" remains a
core principle of modern software engineering. The storage system seems to
have much in common with modern virtual memory implementations. The notion of
"relevant states" seems very similar to what I hear commonly referred to as
"boundary conditions", an important idea in software verification. Lastly,
Dijkstra appears to make a reference to the notion of portability when he
advises, "try to keep the specific properties of the configuration for which
are preparing the system out of your considerations as long as possible."
Although I think that the design principles outlined in the paper seem
impressive even in today's context, I see much to criticize in the methodology
that's presented. Dijkstra suggests that testing the "relevant states" at each
level of the hierarchy has some inductive power to test all possible states of
the system. He goes so far as to say "At the time this was written the
testing had not yet been completed, but the resulting system is guaranteed to
be flawless." This seems to go against the conventional wisdom of software
verification, and I find it very hard to believe.
Another problem with the methodology of the paper is the omission of any
concrete evaluation of the results. Dijkstra mentions four specific objectives
related to the purpose of the system, yet makes no effort to measure how well
the system met those objectives. Without any concrete results, it's
difficult to evaluate the usefulness of the system or the design principles
that Dijkstra uses.
In conclusion, I see many principles of modern systems and software
engineering methods in Dijkstra's explanation of "THE" that seem quite
ingenious given the historical context, but the methodology of the paper does
not to measure up to what I would expect from current research.
This archive was generated by hypermail 2.1.6 : Tue Jan 06 2004 - 23:26:10 PST