Accurate Design Pattern Detection Based on Idiomatic Implementation Matching in Java']Java Language Context

被引:0
|
作者
Xiong, Renhao [1 ]
Li, Bixin [1 ]
机构
[1] Southeast Univ, Sch Comp Sci & Engn, Nanjing, Jiangsu, Peoples R China
基金
国家重点研发计划; 中国国家自然科学基金;
关键词
Design Pattern Detection; Reverse Engineering; Software Comprehension; Knowledge Representation; RECOVERY; RECOGNITION; TOOL;
D O I
10.1109/saner.2019.8668031
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Design patterns (DPs) are widely accepted as solutions to recurring problems in software design. While numerous approaches and tools have been proposed for DP detection over the years, the neglect of language-specific mechanism that underlies the implementation idioms of DPs leads to false or missing DP instances since language-specific features are not captured and similar characteristics are not distinguished. However, there is still a lack of research that emphasizes the idiomatic implementation in the context of a specific language. A vital challenge is the representation of software systems and language mechanism. In this work, we propose a practical approach for DP detection from source code, which exploits idiomatic implementation in the context of Java language. DPs are formally defined under the blueprint of the layered knowledge graph (LKG) that models both language-independent concepts of DPs and Java language mechanism. Based on static analysis and inference techniques, the approach enables flexible search strategies integrating structural, behavioral and semantic aspects of DPs for the detection. Concerning emerging patterns and pattern variants, the core methodology supports pluggable pattern templates. A prototype implementation has been evaluated on five open source software systems and compared with three other approaches. The evaluation results show that the proposed approach improves the accuracy with higher precision (85.7%) and recall (93.8%). The runtime performance also supports its practical applicability.
引用
收藏
页码:163 / 174
页数:12
相关论文
共 50 条
  • [31] Design, and implementation of a Java']Java execution environment
    Chen, FG
    Hou, TW
    1998 INTERNATIONAL CONFERENCE ON PARALLEL AND DISTRIBUTED SYSTEMS, PROCEEDINGS, 1998, : 686 - 692
  • [32] Java']JavaDL: Automatically Incrementalizing Java']Java Bug Pattern Detection
    Dura, Alexandru
    Reichenbach, Christoph
    Soderberg, Emma
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2021, 5 (OOPSLA):
  • [33] McJava']Java - A design and implementation of Java']Java with mixin-types
    Kamina, T
    Tamai, T
    PROGRAMMING LANGUAGES AND SYSTEMS, PROCEEDINGS, 2004, 3302 : 398 - 414
  • [34] XML, reflective pattern matching, and Java
    Dwelly, Andrew
    Dr. Dobb's Journal, 2000, 25 (06):
  • [35] A universal vector graphics editing system based on design pattern and Java']Java
    Ao, LM
    Xia, PP
    Jia, YF
    Wang, YC
    Artificial Intelligence Applications and Innovations II, 2005, 187 : 469 - 475
  • [36] Design and implementation of a Java']Java-based meeting space over Internet
    Lee, BS
    Yeo, CK
    Soon, IY
    Lee, KK
    Sun, W
    MULTIMEDIA TOOLS AND APPLICATIONS, 2003, 20 (02) : 179 - 195
  • [37] Design and Implementation of JAVA']JAVA-based Piano Teaching Management System
    Nie, Zhuo
    EDUCATIONAL SCIENCES-THEORY & PRACTICE, 2018, 18 (05): : 1660 - 1669
  • [38] Design and Implementation of App System for Legal Consulting Based on JAVA']JAVA Technology
    Huang, Tian Ming
    PROCEEDINGS OF THE 3RD INTERNATIONAL CONFERENCE ON MECHATRONICS AND INTELLIGENT ROBOTICS (ICMIR-2019), 2020, 166 : 99 - 103
  • [39] Implementation of the Java']Java language in a persistent DSM operating system
    Schoettner, M
    Schirpf, O
    Wende, M
    Schulthess, P
    INTERNATIONAL CONFERENCE ON PARALLEL AND DISTRIBUTED PROCESSING TECHNIQUES AND APPLICATIONS, VOLS I-V, PROCEEDINGS, 1999, : 2101 - 2107
  • [40] Design, Implementation, and Application of GPU-Based Java']Java Bytecode Interpreters
    Celik, Ahmet
    Nie, Pengyu
    Rossbach, Christopher J.
    Gligoric, Milos
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2019, 3 (OOPSLA):