Recovery of Object-Oriented Design Patterns Using Static and Dynamic

Abstract Maintenance is undoubtedly an effort-consuming activity in the software process. The discovery of a collection of high level building blocks, such as design patterns, in a software artifact represents an important step in program understanding and, hence, can be extremely useful during maintenance. This paper presents a new approach that combines static and dynamic analyses to improve the precision and efficiency of recovering object-oriented design patterns. First, we recover pattern candidates, which adhere to the static structure of different patterns. The static recovery algorithms utilize new abstractions, called basic units, to improve the static identification efficiency. Then, two static constraints are enforced on the recovered candidates to improve the identification precision. Finally, we apply dynamic analysis through profiling to further improve the precision. For each pattern, only relevant methods, which characterize its dynamic behaviour, are traced. The overall analysis approach is automated and evaluated on several large-scale open-source case studies. Results of the case studies and the comparisons demonstrate the improved precision and efficiency of the presented approach.

[1]  Wei Wang,et al.  Design pattern detection in Eiffel systems , 2005, 12th Working Conference on Reverse Engineering (WCRE'05).

[2]  Rudolf Ferenc,et al.  Design pattern mining enhanced by machine learning , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[3]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[4]  Matthias Meyer,et al.  Selective Tracing for Dynamic Analyses , 2005 .

[5]  S.K. Abd-El-Hafiz,et al.  A clustering approach for the identification of object-oriented design patterns , 2004, International Conference on Electrical, Electronic and Computer Engineering, 2004. ICEEC '04..

[6]  Yann-Gaël Guéhéneuc,et al.  Fingerprinting design patterns , 2004, 11th Working Conference on Reverse Engineering.

[7]  Albert Zündorf,et al.  An Interactive and Scalable Approach to Design Pattern Recovery , 2003 .

[8]  Welf Löwe,et al.  Generating design pattern detectors from pattern specifications , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

[9]  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).

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

[11]  Roel Wuyts,et al.  Declarative reasoning about the structure of object-oriented systems , 1998, Proceedings. Technology of Object-Oriented Languages. TOOLS 26 (Cat. No.98EX176).

[12]  Cornelia Boldyreff,et al.  A Method to Recover Design Patterns Using Software Product Metrics , 2000, ICSR.

[13]  Rudolf K. Keller,et al.  Pattern-based reverse-engineering of design components , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[14]  Welf Löwe,et al.  Automatic design pattern detection , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[15]  Rudolf Ferenc,et al.  Mining design patterns from C++ source code , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[16]  Alexander Chatzigeorgiou,et al.  Design Pattern Detection Using Similarity Scoring , 2006, IEEE Transactions on Software Engineering.

[17]  Michele Risi,et al.  Design pattern recovery by visual language parsing , 2005, Ninth European Conference on Software Maintenance and Reengineering.

[18]  Ilka Philippow,et al.  An approach for reverse engineering of design patterns , 2004, Software & Systems Modeling.

[19]  David Chenho Kung,et al.  A reverse engineering approach for software testing of object-oriented programs , 1999, Proceedings 1999 IEEE Symposium on Application-Specific Systems and Software Engineering and Technology. ASSET'99 (Cat. No.PR00122).

[20]  Yann-Gaël Guéhéneuc,et al.  Efficient identification of design patterns with bit-vector algorithm , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[21]  Michael Philippsen,et al.  Two Controlled Experiments Assessing the Usefulness of Design Pattern Documentation in Program Maintenance , 2002, IEEE Trans. Software Eng..

[22]  Tom Mens,et al.  A declarative evolution framework for object-oriented design patterns , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[23]  Lothar Wendehals Improving Design Pattern Instance Recognition by Dynamic Analysis , 2003 .

[24]  Giuliano Antoniol,et al.  Using metrics to identify design patterns in object-oriented software , 1998, Proceedings Fifth International Software Metrics Symposium. Metrics (Cat. No.98TB100262).

[25]  Salwa K. Abd-El-Hafiz,et al.  A Dynamic Approach for the Identification of Object-oriented Design Patterns , 2005, IASTED Conf. on Software Engineering.

[26]  Rudolf K. Keller,et al.  Pattern visualization for software comprehension , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[27]  Michele Risi,et al.  Case studies of visual language based design patterns recovery , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[28]  Jim Welsh,et al.  Towards pattern-based design recovery , 2002, ICSE '02.

[29]  Niklas Pettersson,et al.  Measuring precision for static and dynamic design pattern recognition as a function of coverage , 2005 .

[30]  Lutz Prechelt,et al.  Design recovery by automated search for structural design patterns in object-oriented software , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

[31]  Jiachen Zhang,et al.  Design Pattern Detection from Java Software , 2005, IASTED Conf. on Software Engineering.

[32]  Giuliano Antoniol,et al.  Object-oriented design patterns recovery , 2001, J. Syst. Softw..

[33]  Forrest Shull,et al.  AN INDUCTIVE METHOD FOR DISCOVERING DESIGN PATTERNS FROM OBJECT-ORIENTED SOFTWARE SYSTEMS , 1998 .

[34]  Giuliano Antoniol,et al.  Inference of object-oriented design patterns , 2001, J. Softw. Maintenance Res. Pract..