What Differentiates UHR - Discussion

Go Back - (Bolding added by Jack)


Date: Mon, 19 Apr 1999 13:40:26 -0400
From: "Marc Merlin" <mmerlin@acm.org>
To: "Jack Harich" <mailto:jack@jcon.org>

Monday, 19 April 1999

Jack,

Thanks for the update on the UHR page.  Although I can't say whether your
tabulation of meta-concepts is definitive or not, I do think that your take
on Component Based Development is more complete than it was in your original
meta-concept table.

It's not clear to me how one goes about doing an accurate enumeration of
fundamental concepts, though.  In my opinion the two most significant
concepts in the history software engineering are Parnas' definition of the
module as instrument of information hiding and Wirth's advocacy of
decomposition of systems by stepwise refinement.  These aren't complex
notions in that they don't consist of many subsidiary concepts, but their
impact on the practice of engineering software systems can not be
underestimated.

Now do these foundational concepts stand on their own or would they be
subsumed in some other category or categories?  Some would say that stepwise
refinement - although not introduced by the structured programming
"revolution" - was certainly part of the procedural abstraction
instrumentation that came part and parcel with the advent of structured
programming languages.  Likewise abstract data typing - sans encapsulation -
certainly reared its head during that epoch.  Does that concept get an
honorable mention somewhere?  Similarly, reuse gets emphasized in component
methodologies and, of course, in UHR, but, as has been noted by many
authors, procedural libraries - a legacy of the structured programming
movement, if not an objective - represent the most successful example of
reuse in the tattered history of software engineering.

Most component advocates would say that configurable component properties
are an essential ingredient of their idea of a component based development.
Likewise they would aspire to a zero-coding approach where possible.  Many
would include some sort of scripting or "glue" language to allow for the
composition of components where ready-made solutions are simply not
available.  Does CBD get to claim declarative knowledge or scripts as
fundamental concepts?  What about genericity ala Ada or C++ templates?  Some
people would claim that it is a concept fundamental to any genuine
conception of reuse (see D'Souza and Willis, "Objects, Components and
Frameworks") others would say that it is the spawn of the devil (see anyone
of a number of critics of C++ ).  Who gets to claim or disown genericity?

All in all, I'm saying that this type of "feature" comparison is fraught
with difficulty.  It also invites us to short change approaches that we are
not familiar with - imagine seeing some else's presentation of your table
with a single item under the UHR entry saying "reuse is the way" - or
selectively lump methodologies together or break them apart.  For example, a
reasonable person - not necessarily me - could claim that UHR is a plan for a
mature and specialized component-based architecture and does not merit an
entry of it's own in such a table.

I feel that you have made a very good case for pursuing the UHR in the JSL
mailing list and else where.  I know that it has a myriad of things to
recommend it.  I just don't think that the meta-concept comparison table
does very much in demonstrating its superiority.

That's all for now.

Cheers,
Marc