Joining Forces for Higher Precision and Recall of Design Pattern Detection

Automated design pattern detection (DPD) is a challenging reengineering task that has been shown to require combination of complex structural and behavioural analyses for good results. Still, the detection quality (precision and recall) of existing tools has so far been insufficient to make DPD integral part of current IDEs and development practices. In this paper we present a novel approach and a related tool, DPJF. For all implemented pattern detectors and all projects used for evaluation, DPJF provides competitive performance while achieving the best recall of all evaluated tools (with a median of 89%) and 100% precision. These results lay the basis for routine application of DPD in program comprehension and software quality assesment. The high detection quality is achieved by a well-balanced combination of structural and behavioural analysis techniques whereas the good performance is achieved by emprically validated simplifications of the individual techniques.

[1]  Manu Sridharan,et al.  Refinement-based context-sensitive points-to analysis for Java , 2006, PLDI '06.

[2]  Jens Palsberg,et al.  Scalable propagation-based call graph construction algorithms , 2000, OOPSLA '00.

[3]  Jing Dong,et al.  A Review of Design Pattern Mining Techniques , 2009, Int. J. Softw. Eng. Knowl. Eng..

[4]  Günter Kniesel,et al.  A comparison of logic-based infrastructures for concern detection and extraction , 2007, LATE@AOSD.

[5]  Peter F. Linington,et al.  Tool support for development using patterns , 2001, Proceedings Fifth IEEE International Enterprise Distributed Object Computing Conference.

[6]  Tibor Gyimóthy,et al.  Towards a Benchmark for Evaluating Design Pattern Miner Tools , 2008, 2008 12th European Conference on Software Maintenance and Reengineering.

[7]  Joakim Nivre,et al.  Evaluation of Accuracy in Design Pattern Occurrence Detection , 2010, IEEE Transactions on Software Engineering.

[8]  Yann-Gaël Guéhéneuc,et al.  A reverse engineering tool for precise class diagrams , 2004, CASCON.

[9]  J. Ng Identification of behavioral and creational design patterns through dynamic analysis , 2008 .

[10]  P. David Stotts,et al.  SPQR: flexible automated design pattern extraction from source code , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

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

[12]  Krzysztof Stencel,et al.  Detection of Diverse Design Pattern Variants , 2008, 2008 15th Asia-Pacific Software Engineering Conference.

[13]  Dirk Riehle Describing and Composing Patterns Using Role Diagrams , 1996 .

[14]  Alessandro Orso,et al.  Recognizing behavioral patterns atruntime using finite automata , 2006, WODA '06.

[15]  Francesca Arcelli Fontana,et al.  A Benchmark Platform for Design Pattern Detection , 2010 .

[16]  Günter Kniesel,et al.  Standing on the shoulders of giants - A data fusion approach to design pattern detection , 2009, 2009 IEEE 17th International Conference on Program Comprehension.

[17]  Manu Sridharan,et al.  Refinement-Based Program Analysis Tools , 2007 .

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

[19]  Jing Dong,et al.  DP-Miner: Design Pattern Discovery Using Matrix , 2007, 14th Annual IEEE International Conference and Workshops on the Engineering of Computer-Based Systems (ECBS'07).

[20]  David Stotts,et al.  Elemental Design Patterns and the ρ-calculus : Foundations for Automated Design Pattern Detection in SPQR , 2003 .

[21]  Claudia Raibulet,et al.  Design patterns: a survey on their micro‐structures , 2013, J. Softw. Evol. Process..

[22]  Krzysztof Stencel,et al.  Towards a Comprehensive Test Suite for Detectors of Design Patterns , 2009, 2009 IEEE/ACM International Conference on Automated Software Engineering.

[23]  Yann-Gaël Guéhéneuc,et al.  DPDX--Towards a Common Result Exchange Format for Design Pattern Detection Tools , 2010, 2010 14th European Conference on Software Maintenance and Reengineering.

[24]  W. Bruce Croft,et al.  Search Engines - Information Retrieval in Practice , 2009 .

[25]  Robert B. France,et al.  A role-based metamodeling approach to specifying design patterns , 2003, Proceedings 27th Annual International Computer Software and Applications Conference. COMPAC 2003.

[26]  Yann-Gaël Guéhéneuc,et al.  Meta-modeling Design Patterns: application to pattern detection and code synthesis , 2001 .

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

[28]  Cyril S. Ku,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[29]  Yann-Gaël Guéhéneuc,et al.  DPDX-A Common Exchange Format for Design Pattern Detection Tools , 2009 .

[30]  MengChu Zhou,et al.  Role-based collaboration and its kernel mechanisms , 2006, IEEE Transactions on Systems, Man, and Cybernetics, Part C (Applications and Reviews).

[31]  Lothar Wendehals Struktur- und verhaltensbasierte Entwurfsmustererkennung , 2007, Softwaretechnik-Trends.