Abstract
One of the major obstacles in reverse engineering legacy object-oriented systems is the identification of aggregation relationships. An aggregation relationship, also called whole–part relationship, is a form of association relationship where an object is considered as a part of another object. This characteristic is mostly of semantic nature; therefore, it is difficult to distinguish aggregation from association relationships by implementation mechanism. Most reverse engineering methods for aggregation relationships are based on the lifetime dependence of an object on another object since many implementations of aggregation relationships result in such dependence. However, research literature shows that lifetime dependence is not really a primary property of the aggregation relationships. A reverse engineering approach is proposed on the basis of a primary characteristic for aggregation relationship—propagation of operations. To compare the propagation-based method with the lifetime-based method, we apply both methods to ten class libraries, collect their output, and perform statistical analysis to determine the effectiveness of the two methods. The analysis results show that the propagation-based method performs significantly better than the lifetime-based method and by combining both methods simultaneously the complete aggregation relationships can be uncovered for the class libraries in our experiment.
Similar content being viewed by others
References
Antoniol G, Casazza G, Di Penta M, Fiutem R (2001) Object-oriented design patterns recovery. J Syst Softw 59(2):181–196
Balanyi Z, Ferenc R (2003) Mining design patterns from C++ source code. In: Proceedings of the international conference on software maintenance. IEEE Computer Society Press, Silver Spring, MD, pp 305–314
Barbier F, Henderson-Sellers B (2001) The whole–part relationship in object modelling: a definition in cOlOr. Inf Softw Technol 43:19–39
Barbier F, Henderson-Sellers B, Le Parc-Lacayrelle A, Bruel J (2003) Formalization of the whole–part relationship in the unified modeling language. IEEE Trans Softw Eng 29:459–470
Baxter ID, Mehlich M (2000) Reverse engineering is reverse forward engineering. Sci Comput Program 36:131–147
Booch G, Rumbaugh J, Jacobson I (1999) The unified modeling language user guide. Addison-Wesley, Reading, MA
Briand L, Bunse C, Daly J (2001) A controlled experiment for evaluating quality guidelines on the maintainability of object-oriented designs. IEEE Trans Softw Eng 27:513–530
Chidamber SR, Kemerer CF (1994) A metrics suite for object oriented design. IEEE Trans Softw Eng 20:467–493
Chikofsky EJ, Cross JH (1990) Reverse engineering and design recovery: a taxonomy. IEEE Softw 23:13–17
Daly J, Brooks A, Miller J, Roper M, Wood M (1996) Evaluating inheritance depth on the maintainability of object-oriented software. Empirical Software Engineering, An International Journal 1:109–132
Di Lucca GA, Fasolino AR, De Carlini U (2000) Recovering class diagrams from data-intensive legacy systems. In: Proceedings of international conference on software maintenance. IEEE Computer Society Press, Silver Spring, MD, pp 52–63
Duggan D (2001) Finite subtype inference with explicit polymorphism. Sci Comput Program 39:57–92
Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements of reusable object-oriented software. Addison-Wesley, Reading, MA
Henderson-Sellers B, Barbier F (1999) What is this thing called aggregation. In: Proceedings of TOOL EUROPE’99. IEEE Computer Society Press, Silver Spring, MD, pp 236–250
Juristo N, Moreno AM (2001) Basics of software engineering experimentation. Kluwer, Boston
Motschnig-Pitrik R, Kaasboll J (1999) Part–whole relationship categories and their application in object-oriented analysis. IEEE Trans Knowl Data Eng 11:779–797
Niere J, Schafer W, Wadsack JP, Wendehals L, Welsh J (2002) Towards pattern-based design recovery. In: Proceedings of international conference on software engineering. IEEE Computer Society Press, Silver Spring, MD, pp 338–348
Object Management Group (2001) OMG Unified Modeling Language Specification-Version 1.4. Object Management Group
Port D, McArthur M (1999) A study of productivity and efficiency for object-oriented methods and languages. In: Proceedings of the sixth Asia Pacific software engineering conference. IEEE Computer Society Press, Silver Spring, MD, pp 128–135
Prechelt L, Kramer C (1998) Functionality versus practicality: employing existing tools for recovering structural design patterns. Journal of Universal Computer Science 4:866–882
Richner T, Ducasse S (1999) Recovering high-level views of object-oriented applications from static and dynamic information. In: Proceedings of the international conference on software maintenance. IEEE Computer Society Press, Silver Spring, MD, pp 13–22
Rugaber S, Shikano T, Stirewalt REK (2001) Adequate reverse engineering. In: Proceedings of international conference on automated software engineering. IEEE Computer Society Press, Silver Spring, MD, pp 232–241
Saksena M, Franceand RB, Larrondo-Petrie MM (1998) A characterization of aggregation. In: Proceedings of OOIS’98. IEEE Computer Society Press, Silver Spring, MD, pp 11–19
Seemann J, Gudenberg JW (1998) Pattern-based design recovery of Java software. In: Proceedings of FSE’98. ACM, New York, pp 10–16
Sheldon FT, Jerath K, Chung H (2002) Metrics for maintainability of class inheritance hierarchies. Journal of Software Maintenance and Evolution: Research and Practice 14:147–160
Sjoberg DIK, Hannay JE, Hansen O, Kampenes VB, Karahasanovic A, Liborg N-K, Rekdal AC (2005) A survey of controlled experiments in software engineering. IEEE Trans Softw Eng 31(9):733–753, Sept
Tonella P, Antoniol G (2001) Inference of object-oriented design patterns. Journal of Software maintenance and Evolution: Research and Practice 13:309–330
Tonella P, Potrich A (2001) Reverse engineering of the UML class diagram from C++ code in presence of weakly typed containers. In: Proceedings of the International Conference on Software Maintenance. IEEE Computer Society Press, Silver Spring, MD, pp 376–385
Yeh D, Kuo W (2002) Reverse engineering aggregation relationship based on propagation of operations. In: Proceedings of European conference on software maintenance and reengineering. IEEE Computer Society Press, Silver Spring, MD, pp 223–229
Acknowledgement
This work was partially supported by the National Science Council, Taiwan, R.O.C., under Grant NSC 89-2213-E-020-004- and Department of Industrial Technology, Ministry of Economic Affairs, R.O.C. under the grant 96-EC-17-A-02-S1-029.
Author information
Authors and Affiliations
Corresponding author
Additional information
Editor: Mark Harman
Rights and permissions
About this article
Cite this article
Yeh, D., Sun, Pc., Chu, W. et al. An empirical study of a reverse engineering method for the aggregation relationship based on operation propagation. Empir Software Eng 12, 575–592 (2007). https://doi.org/10.1007/s10664-007-9043-7
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10664-007-9043-7