[comp.arch] What is your idea of an ideal specification development system?

jbn@glacier.STANFORD.EDU (John B. Nagle) (02/16/89)

      Well, Parnas-type formal specifications aren't it.  We used SRI's
SPECIAL language extensively in the Kernalized Secure Operating System
effort (1978-1982), and as it turns out, the specifications for an
interesting system are only a factor of 2 to 4 smaller than the code
itself.  Worse, they are less comprehensible.  Parnas has backed off
from his original idea that specs should have meaningless variable
names so that people would be compelled to follow the math, but even
with useful variable names, formal specs are still very hard to read.
Also, since you can't run them, there's no way to test them.  Structured
walkthroughs help, but are very expensive and still only find some of the
errors.

      The fundamental problem with formal specifications is that if behavior
is well enough specified that the outputs for a given sequence of inputs
are uniquely determined, the specification has essentially the same
information content as the program.  Any so-called "implementation detail"
that can affect the output in any way must be formalized in the specification.
This leads to large specifications for systems with complex behavior.

      What a formal spec turns out to be is a sort of inefficient program
to do the job.  Given this, it would make more sense to have a means of
writing simple but inefficient programs to get the desired behavior and then
constructing more efficient programs with provably identical behavior.

					John Nagle