When the idea of software reuse appeared in 1968,
new horizons for software design were open. But some major
problems appeared and most of the expectations were not
met. One of the problems encountered is the selection of
the right software component. This is related not only
to the similarity between the desired functionality and
the function delivered by the retrieved software component,
but also to the effort needed to modify the chosen component
to accommodate the desired functionality. Most of the research
done in the case-based reasoning area has been in developing
accurate and efficient retrieval algorithms. We think that
case-based reasoning retrieval concepts and ideas can be
successfully applied to software reuse. In this article
we propose a metric to assess similarity between software
cases supported on functional and behavioral knowledge.
One important aspect of this metric is that reusability
is taken into account to estimate the amount of effort
needed to reuse retrieved software cases. We also present
experimental work that shows that similarity at the functional
level is the most important aspect of the similarity metric
proposed.