by Aniello Cimitile and Giuseppe A. Di Lucca
Reuse of existing software is one of the most successful ways to improve software productivity and quality. At the Department "Informatica e Sistemistica" of the University of Naples "Federico II", a Reuse Re-engineering activity, - RE2 - is under way, as part of the CNR Project "Information Systems and Parallel Computation". The aim is to search an existing software system for reusable software components with which to populate a repository. Considerable attention has been given to the definition of criteria that can be used to identify such software components and of quality attributes to evaluate the efficiency of the process.
Setting up a successful Reuse Re-engineering process implies a well defined organisational paradigm. This is needed to identify, delimit and classify the theoretical, methodological and technological problems involved so that the advantages and disadvantages of any solutions adopted can be identified and evaluated. The paradigm adopted for RE2 models the process in five successive phases:
The activities of RE2 are currently focused on the first three of these phases, i.e. the identification and extraction of reusable abstractions from the source code. The criteria applied to search the code for reusable components to cluster into reusable modules can identify both functional and data abstractions. Three search primitives were used to define suitable criteria:
The criteria defined are based on:
The candidate components have then to be submitted to a `Concept Assignment Process' (CAP) to associate them with the meaning they will assume in the application domain. This is a very expensive activity, and requires human intervention. This process must be started for large systems only when there is a high probability that a meaning can be assigned to the components identified by a criterion, i.e. only when it is expected that the components identified will actually be `elected' for reuse. This is not always possible, either because some of the candidate components cannot be associated with an abstraction (a meaning) in the application domain, or because it could be too expensive to re-engineer them.
In order to evaluate the efficiency of a candidate criterion, two quality attributes were defined: Completeness and Adequacy. Completeness measures the ability of a criterion to identify all the potentially reusable components; Adequacy measures its ability to identify only those components that will actually be elected for reuse. Both Completeness and Adequacy depend on the criterion used and the characteristics of the software system to which it is applied. The closer the criterion fits the system characteristics, the higher the probability of obtaining a successful reuse re-engineering process. For example, if a system is based on functional decomposition, it is preferable to use a criterion that identifies functional abstraction. For this reason, the validation of a candidate criterion, before applying it to a large system, is a compulsory step in a reuse re-engineering process. This can be done by applying the criterion to a representative sample of the system in 5 steps:
Other quality attributes which can be used to validate candidate criteria (such as Purity, Concept Assignable, Module Completeness, Granularity) are now being defined and tested, as are the relationships among these attributes.