This post originated from an RSS feed registered with Java Buzz
by Geoffrey Wiseman.
Original Post: Software Re-use and Varied Functionality
Feed Title: Furious Purpose
Feed URL: http://www.jroller.com/diathesis/feed/entries/rss
Feed Description: Thoughts and experiences on technology and software.
It's pleasing to see this article
on software re-use, with which I mostly agree. In particular, the assertion that the problem with
code re-use at higher levels is typically with variability, not with the technical mechanisms that
enable re-use.
Structured and object-oriented programming offer different and, in my opinion, increasingly
useful metaphors for re-use. For instance, object-oriented encapsulation allows you to make
a complicated operation seem simple in ways that are harder to accomplish with a purely
structured software system. Ultimately, though, I have to agree with the author that re-use
in the small is a problem that's been solved, with varying degrees of success, for quite
some time.
Recently, I've seen a number of purported re-use attempts that were not particularly
successful, and many of these were because the underlying functionality varied at the
detailed level. At the highest conceptual level, two systems seemed similar, but in
all the ever-so-important details, they varied. This ends up meaning that the potential
for re-use was primarily at the semantic level, or perhaps as low as some high-level
service interfaces, but rarely in the detailed functional level makes the re-use of
larger components possible.
The myriad differences at the detailed level are not always easy to see
from the perspective of a high-level business stakeholder, who may feel that the two
projects are strikingly similar and that economies of scale should, thus, be possible.
This can lead to some frustrating conflicts between perceived re-use value and
actual re-use value.
I'm a happy proponent of extensive re-use of small components, particularly in a loosely
coupled form that is easy to assemble in different ways, but larger re-use can be
troublesome, and this is often because the problem and the solution vary in significant
ways, even if those are difficult to discern.