Ted — a colleague at MITRE sent me the following question.
“In particular, I’m looking for design guidance on degree of granularity
for a reusable component that maximizes reuse.”
I remember you were working on this a while back. Any thoughts? She is
looking at this in the context of service oriented architectures.
Reuse is maximized by components that are a single line of code! This is
a smart aleck-y answer, of course. The real answer to the implied question
is far more complex and no one has a really concrete, objectively verifiable
Since there are trade offs between reuse payoff and other factors (range of
reusability, restrictions, expected degree of change), life is not simple.
The article that I wrote for the 1998 Annals of Software Engineering (ed.
William Frakes!) (“A Perspective of Generative Reuse”) addresses this
subject, I think. She might take a look at it.
Lim’s paper in the same volume might also speak to that question but I don’t
recall for sure.
Also, I did some quantitative work on some of these relationships in the
paper “An Assessment of Analysis and Reuse”, Advances in Computers, Vol. 34,
1992, (ed. Marshall Yovits). See section 4 for the formulas. It basically
looks at factors such as percent of reused code, connective or glue code,
and new code in an application and tries to relate these to characteristics
of the libraries (e.g., degree of standardization) and characteristics of
the applications (e.g., average number of fan-in input connections). She
might get some sense of the relationships in that article.
I am afraid that she will not get a concrete or simple, direct answer
because there are a really complex set of interrelated issues. But those
articles might supply some qualitative insights.