[comp.sw.components] Multiple implementations of a specification

dwiggins@atsun.a-t.com (Don Dwiggins) (12/02/89)

In article <130200023@p.cs.uiuc.edu> johnson@p.cs.uiuc.edu writes:

   Since several people have misunderstood my position, I guess I didn't
   describe it very well.  I am strongly in favor of separating specification
   from implementation as much as possible.  My complaint was against the
   claim that one of the main reasons for separating them was so that
   each specification could have a set of implementations, each of which
   had different performance characteristics.  My observation is that,
   except for general purpose data structures, there doesn't seem to be
   much need for a component to have a variety of implementations that
   vary in performance characteristics.

To me, the "variation in performance characteristics" is a major reason for
having multiple implementations.  The variation can occur for several
reasons, one of which is a difference in the algorithms used.  In choosing a
component implementation, I will probably want to have a choice of (e.g.)
memory-speed tradeoffs.

There's another interesting issue here.  Given that the spcification
language doesn't comment on performance characteristics, how are component
suppliers and consumers to communicate about these matters?  For example,
should there be a (semi-)formal language for this purpose, or are English
descriptions enough?  What needs to be expressible in this language?  As an
example, Johnson's example of a user interface module seems to imply that
the user-visible characteristics should be described either in the
specification language or in the putative "performance language".  One could
envision the need to talk about secondary storage use, realtime issues,
interprocess characteristics, etc.

In another message, Bill Wolfe writes:
    [ P.S. -- Ralph Johnson and I are having an interesting discussion 
      of specification vs. implementation topics via e-mail ...

I'd be interested in a summary of that discussion at some point, by either
(or both) of you.


--
Don Dwiggins				"Solvitur Ambulando"
Ashton-Tate, Inc.
dwiggins@ashtate.a-t.com
dwiggins@ashtate.uucp

amull@Morgan.COM (Andrew P. Mullhaupt) (12/06/89)

Has any work been done on specifying lower bounds on performance and
upper bounds on resource demands for implementations? Engineers often
need to distinguish between feasible and infeasible implementations
on the basis of cost. One can even conceive of cases where the
resource in question is program development time, which might skew
towards using 'off the shelf' components as opposed to end-use
specifications which try to conserve run-time resources.

Later,
Andrew Mullhaupt