Software design patterns are standard solutions to common problems in software design and architecture. Knowing that a particular module implements a design pattern is a shortcut to design comprehension. Manually detecting design patterns is a time consuming and challenging task; therefore, researchers have proposed automatic design patterns detection techniques to facilitate software developers. However, these techniques show low performance for certain design patterns. In this work, we introduce an approach that improves the performance over the state-of-the-art by using code features with machine learning classifiers to automatically train a design pattern detection. We create a semantic representation of source code from the code features and the call graph, and apply the Word2Vec algorithm on the semantic representation to construct the word-space geometric model of the Java source code. DPD_F then uses a Machine Learning approach trained using the word-space model and identifies software design patterns with 78% Precision and 76% Recall. Additionally, we have compared our results with two existing design pattern detection approaches namely FeatureMaps & MARPLE-DPD. Empirical results demonstrate that our approach outperforms the benchmark approaches by 30\% and 10\% respectively in terms of Precision. The runtime performance also supports its practical applicability.


翻译:软件设计模式是软件设计和架构中常见问题的标准解决方案。 了解某个模块使用设计模式是设计理解的捷径。 人工检测设计模式是一项耗时且具有挑战性的任务; 因此, 研究人员提出了自动设计模式检测技术, 以便利软件开发者。 然而, 这些技术显示某些设计模式的性能较低。 在这项工作中, 我们引入了一种方法, 通过使用机器学习分类器的代码特征来提高最新设计模式的性能, 从而自动培训设计模式检测。 我们从代码特征和调用图中创建了源代码的语义表达法, 并在语义表达法上应用了 Word2Vec 算法来构建 Java 源代码的字空间几何模型。 DPD_ F 然后使用一种用字空间模型培训的机器学习方法, 并用78% 的精度和 76%的回调来识别软件设计模式模式的性能。 此外, 我们用我们的成果与两种现有的设计模式检测方法进行了比较, 即 地貌和MARPLE- DP。 Epicalalalal 显示我们的方法在实际操作上分别支持了30- 和10 的可适用性。

0
下载
关闭预览

相关内容

设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
FlowQA: Grasping Flow in History for Conversational Machine Comprehension
专知会员服务
28+阅读 · 2019年10月18日
[综述]深度学习下的场景文本检测与识别
专知会员服务
77+阅读 · 2019年10月10日
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
Transferring Knowledge across Learning Processes
CreateAMind
27+阅读 · 2019年5月18日
Unsupervised Learning via Meta-Learning
CreateAMind
42+阅读 · 2019年1月3日
Hierarchical Imitation - Reinforcement Learning
CreateAMind
19+阅读 · 2018年5月25日
Hierarchical Disentangled Representations
CreateAMind
4+阅读 · 2018年4月15日
carla无人驾驶模拟中文项目 carla_simulator_Chinese
CreateAMind
3+阅读 · 2018年1月30日
可解释的CNN
CreateAMind
17+阅读 · 2017年10月5日
【推荐】SVM实例教程
机器学习研究会
17+阅读 · 2017年8月26日
Arxiv
6+阅读 · 2020年10月8日
Arxiv
7+阅读 · 2018年12月5日
Neural Architecture Optimization
Arxiv
8+阅读 · 2018年9月5日
Arxiv
12+阅读 · 2018年9月5日
Zero-Shot Object Detection
Arxiv
9+阅读 · 2018年7月27日
VIP会员
相关VIP内容
FlowQA: Grasping Flow in History for Conversational Machine Comprehension
专知会员服务
28+阅读 · 2019年10月18日
[综述]深度学习下的场景文本检测与识别
专知会员服务
77+阅读 · 2019年10月10日
相关资讯
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
Transferring Knowledge across Learning Processes
CreateAMind
27+阅读 · 2019年5月18日
Unsupervised Learning via Meta-Learning
CreateAMind
42+阅读 · 2019年1月3日
Hierarchical Imitation - Reinforcement Learning
CreateAMind
19+阅读 · 2018年5月25日
Hierarchical Disentangled Representations
CreateAMind
4+阅读 · 2018年4月15日
carla无人驾驶模拟中文项目 carla_simulator_Chinese
CreateAMind
3+阅读 · 2018年1月30日
可解释的CNN
CreateAMind
17+阅读 · 2017年10月5日
【推荐】SVM实例教程
机器学习研究会
17+阅读 · 2017年8月26日
相关论文
Top
微信扫码咨询专知VIP会员