Title
Detecting the Behavior of Design Patterns through Model Checking and Dynamic Analysis.
Abstract
We present a method and tool (ePAD) for the detection of design pattern instances in source code. The approach combines static analysis, based on visual language parsing and model checking, and dynamic analysis, based on source code instrumentation. Visual language parsing and static source code analysis identify candidate instances satisfying the structural properties of design patterns. Successively, model checking statically verifies the behavioral aspects of the candidates recovered in the previous phase. We encode the sequence of messages characterizing the correct behaviour of a pattern as Linear Temporal Logic (LTL) formulae and the sequence diagram representing the possible interaction traces among the objects involved in the candidates as Promela specifications. The model checker SPIN verifies that candidates satisfy the LTL formulae. Dynamic analysis is then performed on the obtained candidates by instrumenting the source code and monitoring those instances at runtime through the execution of test cases automatically generated using a search-based approach. The effectiveness of ePAD has been evaluated by detecting instances of 12 creational and behavioral patterns from six publicly available systems. The results reveal that ePAD outperforms other approaches by recovering more actual instances. Furthermore, on average ePAD achieves better results in terms of correctness and completeness.
Year
DOI
Venue
2018
10.1145/3176643
ACM Trans. Softw. Eng. Methodol.
Keywords
Field
DocType
Design pattern recovery, reverse engineering, software maintenance
Sequence diagram,Model checking,Computer science,Source code,Correctness,Static analysis,Algorithm,Software design pattern,Theoretical computer science,Linear temporal logic,Promela
Journal
Volume
Issue
ISSN
26
4
1049-331X
Citations 
PageRank 
References 
6
0.45
49
Authors
4
Name
Order
Citations
PageRank
Andrea De Lucia14432217.26
Vincenzo Deufemia244940.96
Carmine Gravino372147.71
Michele Risi440340.98