How big should a reusable component be?

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.


Ted J. Biggerstaff, Ph.D.


One Response to “How big should a reusable component be?”

  1. Eduardo Almeida Says:

    I agree with Ted and I think that some aspects should be considered. I think that one direction can be related to the goal with this component or piece of design.

    What are we looking for? A reusable component? A component with a good maintenability? A component with a good complexity? I think that some of these insights can be useful to aid to answer it.

    However, we have few empirical data about it, especially, considering these related goals/issues.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: