DPJF - Design Pattern Detection with High Accuracy

Automated design pattern detection (DPD) is a challenging reengineering task. The detection quality (precision and recall) of DPD 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 achieves 100% precision and the best recall of all evaluated tools. Still, its analysis speed competes with the fastest existing tools. 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. Our results lay the basis for routine application of DPD in program comprehension and let DPJF pioneer novel uses of DPD for software quality assesment and improvement.

[1]  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.

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

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

[4]  Günter Kniesel,et al.  Joining Forces for Higher Precision and Recall of Design Pattern Detection , 2012 .

[5]  Christopher G. Lasater,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

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

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

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

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

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

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

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

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

[14]  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.

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

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

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

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

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

[20]  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..

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

[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]  Peter F. Linington,et al.  Tool support for development using patterns , 2001, Proceedings Fifth IEEE International Enterprise Distributed Object Computing Conference.

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

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

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

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

[28]  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.

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