Integrating Model Driven and Model Checking to Mine Design Patterns

The use of Design Patterns has constantly grown in the development of Object Oriented systems, due to the well-known advantage they offer to improve the quality of software design. However, lack of documentation about which Design Patterns are actually adopted and implemented in the code and about the code components involved in the implementation of each Design Pattern instance can make harder any operation of maintenance, reuse, or evolution impacting those components. Thus, several Design Pattern Mining approaches and tools have been proposed to identify the instances of Design Pattern implemented in an Object oriented system. Nevertheless, the results produced by these approaches can be not fully complete and precise because of the presence of false positive/negative. In this paper we propose to integrate a Model Driven based Design Pattern mining approach with a Formal Method technique to automatically refine and improve the precision of results of traditional mining tool. In particular Model checking is used to refine the results of the Design Pattern Finder (DPF) tool implementing a Model Driven based approach to detect Design Pattern instances Object Oriented systems. To verify and validate the feasibility and effectiveness of the proposed approach we carried out a case study regarding four open source OO systems. The results from the case study showed that actually the technique allowed to raise significantly the precision of the instances that the DPF tool was able to identify.

[1]  Yongtao Sun,et al.  A Matrix-Based Approach to Recovering Design Patterns , 2009, IEEE Transactions on Systems, Man, and Cybernetics - Part A: Systems and Humans.

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

[3]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[4]  Antonella Santone,et al.  Analysing Wiki Quality Using Probabilistic Model Checking , 2015, 2015 IEEE 24th International Conference on Enabling Technologies: Infrastructure for Collaborative Enterprises.

[5]  Giuliano Antoniol,et al.  Design pattern recovery in object-oriented software , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[6]  Michele Risi,et al.  Design pattern recovery through visual language parsing and source code analysis , 2009, J. Syst. Softw..

[7]  Francesca Arcelli Fontana,et al.  A tool for design pattern detection and software architecture reconstruction , 2011, Inf. Sci..

[8]  Tommaso Bolognesi,et al.  Tableau methods to describe strong bisimilarity on LOTOS processes involving pure interleaving and enabling , 1994, FORTE.

[9]  Jing Dong,et al.  Architecture and Design Pattern Discovery Techniques - A Review , 2007, Software Engineering Research and Practice.

[10]  Yann-Gaël Guéhéneuc,et al.  P-MARt : Pattern-like Micro Architecture Repository , 2007 .

[11]  Steffen Becker,et al.  Combining clustering and pattern detection for the reengineering of component-based software systems , 2011, QoSA-ISARCS '11.

[12]  Federico Bergenti IMPROVING UML DESIGNS USING AUTOMATIC DESIGN PATTERN DETECTION , 2001 .

[13]  Ghulam Rasool,et al.  A Survey on Design Pattern Recovery Techniques , 2011 .

[14]  Roberto Barbuti,et al.  Selective Mu-Calculus and Formula-Based Equivalence of Transition Systems , 1999, J. Comput. Syst. Sci..

[15]  Yann-Gaël Guéhéneuc,et al.  Improving design-pattern identification: a new approach and an exploratory study , 2010, Software Quality Journal.

[16]  Dirk Beyer,et al.  Relational programming with CrocoPat , 2006, ICSE.

[17]  Roberto Barbuti,et al.  Reduced Models for Efficient CCS Verification , 2005, Formal Methods Syst. Des..

[18]  Marco Torchiano,et al.  Empirical studies in reverse engineering: state of the art and future trends , 2007, Empirical Software Engineering.

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

[20]  Andres Flores,et al.  A Formal Model of Object-Oriented Design and GoF Design Patterns , 2001, FME.

[21]  Ghulam Rasool,et al.  Design pattern recovery based on annotations , 2010, Adv. Eng. Softw..

[22]  Edmund M. Clarke,et al.  Model Checking , 1999, Handbook of Automated Reasoning.

[23]  Jing Dong,et al.  Verifying Behavioral Correctness of Design Pattern Implementation , 2008, SEKE.

[24]  Gabriela N. Aranda,et al.  A formal model for verifying compound design patterns , 2002, SEKE '02.

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

[26]  Antonella Santone,et al.  Model checking to improve precision of design pattern instances identification in OO systems , 2015, 2015 10th International Joint Conference on Software Technologies (ICSOFT).

[27]  Antonella Santone,et al.  An Eclipse-Based Editor to Support LOTOS Newcomers , 2014, 2014 IEEE 23rd International WETICE Conference.

[28]  Mario Luca Bernardi,et al.  Design pattern detection using a DSL‐driven graph matching approach , 2014, J. Softw. Evol. Process..

[29]  Mario Luca Bernardi,et al.  A model-driven graph-matching approach for design pattern detection , 2013, 2013 20th Working Conference on Reverse Engineering (WCRE).

[30]  Radu Mateescu,et al.  CADP 2011: a toolbox for the construction and analysis of distributed processes , 2012, International Journal on Software Tools for Technology Transfer.

[31]  Stephan Merz,et al.  Model Checking , 2000 .

[32]  Ioannis Stamelos,et al.  A methodology to assess the impact of design patterns on software quality , 2012, Inf. Softw. Technol..

[33]  Colin Stirling,et al.  An Introduction to Modal and Temporal Logics for CCS , 1991, Concurrency: Theory, Language, And Architecture.

[34]  Juan José Moreno-Navarro,et al.  Stepwise Refinement Validation of Design Patterns Formalized in TLA+ using the TLC Model Checker , 2009, J. Object Technol..

[35]  Antonella Santone,et al.  Infer Gene Regulatory Networks from Time Series Data with Probabilistic Model Checking , 2015, 2015 IEEE/ACM 3rd FME Workshop on Formal Methods in Software Engineering.

[36]  Michele Risi,et al.  Improving Behavioral Design Pattern Detection through Model Checking , 2010, 2010 14th European Conference on Software Maintenance and Reengineering.

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

[38]  Anssi Karhinen,et al.  Software Metrics by Architectural Pattern Mining , 2000 .