Recovering design patterns to support program comprehension

This paper presents a design pattern directed software clustering approach to support program comprehension. First, the code is parsed to recover the design pattern information. Second, the code is clustered considering design patterns. Classes/interfaces are grouped into clusters based on their inter-role relationship of design patterns. Finally, a cluster-level view of the original code is constructed to support understanding the code. A prototype tool TasteJ was implemented to support the automation of proposed approach. Experiments are conducted to evaluate the effectiveness of the approach. The experimental results show that the approach is encouraging and promising.

[1]  M.Y. Javed,et al.  Evolution Strategy Based Automated Software Clustering Approach , 2008, 2008 Advanced Software Engineering and Its Applications.

[2]  Richard C. Holt,et al.  ACCD: an algorithm for comprehension-driven clustering , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[3]  Spiros Mancoridis,et al.  On the automatic modularization of software systems using the Bunch tool , 2006, IEEE Transactions on Software Engineering.

[4]  Nicolas Anquetil,et al.  Experiments with clustering as a software remodularization method , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[5]  Periklis Andritsos,et al.  Information-theoretic software clustering , 2005, IEEE Transactions on Software Engineering.

[6]  Spiros Mancoridis,et al.  Comparing the decompositions produced by software clustering algorithms using similarity measurements , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[7]  Dirk Beyer,et al.  Clustering software artifacts based on frequent common changes , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[8]  Jonathan I. Maletic,et al.  Automatic software clustering via Latent Semantic Analysis , 1999, 14th IEEE International Conference on Automated Software Engineering.

[9]  Emden R. Gansner,et al.  Using automatic clustering to produce high-level system organizations of source code , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[10]  Vassilios Tzerpos,et al.  Evaluating similarity measures for software decompositions , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[11]  Richard C. Holt,et al.  MoJo: a distance metric for software clusterings , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

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

[13]  Giuseppe Scanniello,et al.  An approach for architectural layer recovery , 2010, SAC '10.

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

[15]  Abdelwahab Hamou-Lhadj,et al.  Software Clustering Using Dynamic Analysis and Static Dependencies , 2009, 2009 13th European Conference on Software Maintenance and Reengineering.

[16]  Renuka Sindhgatta,et al.  Identifying Software Decompositions by Applying Transaction Clustering on Source Code , 2007, 31st Annual International Computer Software and Applications Conference (COMPSAC 2007).

[17]  Ronald A. Olsson,et al.  Reverse Engineering of Design Patterns from Java Source Code , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[18]  Vassilios Tzerpos,et al.  An effectiveness measure for software clustering algorithms , 2004, Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004..

[19]  Mark Shtern,et al.  Methods for selecting and improving software clustering algorithms , 2009, 2009 IEEE 17th International Conference on Program Comprehension.

[20]  Xin Chen,et al.  Design pattern directed clustering for understanding open source code , 2009, 2009 IEEE 17th International Conference on Program Comprehension.

[21]  Nicolas Anquetil,et al.  File clustering using naming conventions for legacy systems , 1997, CASCON.

[22]  Xin Yao,et al.  Software Module Clustering as a Multi-Objective Search Problem , 2011, IEEE Transactions on Software Engineering.