Reverse engineering aggregation relationship based on propagation of operations

One of the major obstacles in reverse engineering legacy object-oriented systems is the identification of aggregation relationships. An aggregation relationship is a special kind of an association relationship. Their distinction is mostly of semantic nature and little by implementation mechanism. Most reverse engineering methods on aggregation relationships are based on the lifetime dependence. Since lifetime dependence is not really a primary property of the aggregation relationship, many relationships could not be recovered. We propose a different reverse engineering approach based on a primary characteristic of aggregation relationships, propagation of operations, apply it to some class libraries, and compare the experimental data with the lifetime-based method. The result shows that the propagation-based method performs better than the lifetime-based method and should be adopted for reverse engineering aggregation relationships.

[1]  Giuseppe A. Di Lucca,et al.  Recovering class diagrams from data-intensive legacy systems , 2000, Proceedings 2000 International Conference on Software Maintenance.

[2]  Giuliano Antoniol,et al.  Design pattern recovery in object-oriented software , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[3]  Lutz Prechelt,et al.  Functionality versus Practicality: Employing Existing Tools for Recovering Structural Design Patterns , 1998, J. Univers. Comput. Sci..

[4]  Norman Wilde,et al.  Maintenance Support for Object-Oriented Programs , 1992, IEEE Trans. Software Eng..

[5]  Renate Motschnig,et al.  Part-Whole Relationship Categories and Their Application in Object-Oriented Analysis , 1999, IEEE Trans. Knowl. Data Eng..

[6]  Stéphane Ducasse,et al.  Recovering high-level views of object-oriented applications from static and dynamic information , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[7]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[8]  Jürgen Wolff von Gudenberg,et al.  Pattern-based design recovery of Java software , 1998, SIGSOFT '98/FSE-6.

[9]  Giuliano Antoniol,et al.  Object oriented design pattern inference , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[10]  Monique Snoeck,et al.  Existence Dependency: The Key to Semantic Integrity Between Structural and Behavioral Aspects of Object Types , 1998, IEEE Trans. Software Eng..

[11]  Brian Henderson-Sellers,et al.  What is this thing called aggregation? , 1999, Proceedings Technology of Object-Oriented Languages and Systems. TOOLS 29 (Cat. No.PR00275).