During software evolution, inexperienced developers may introduce design anti-patterns when they modify their software systems to fix bugs or to add new functionalities based on changes in requirements. Developers may also use design patterns to promote software quality or as a possible cure for some design anti-patterns. Thus, design patterns and design anti-patterns are introduced, removed, and mutated from one another by developers. Many studies investigated the evolution of design patterns and design anti-patterns and their impact on software development. However, they investigated design patterns or design anti-patterns in isolation and did not consider their mutations and the impact of these mutations on software quality. Therefore, we report our study of bidirectional mutations between design patterns and design anti-patterns and the impacts of these mutations on software change- and fault-proneness. We analyzed snapshots of seven Java software systems with diverse sizes, evolution histories, and application domains. We built Markov models to capture the probability of occurrences of the different design patterns and design anti-patterns mutations. Results from our study show that (1) design patterns and design anti-patterns mutate into other design patterns and/or design anti-patterns. They also show that (2) some change types primarily trigger mutations of design patterns and design anti-patterns (renaming and changes to comments, declarations, and operators), and (3) some mutations of design anti-patterns and design patterns are more faulty in specific contexts. These results provide important insights into the evolution of design patterns and design anti-patterns and its impact on the change- and fault-proneness of software systems.


翻译:在软件进化期间,经验不足的开发者在修改软件系统以修补错误或根据需求变化增加新功能时,可能会采用设计反模式。开发者还可能使用设计模式来提高软件质量或作为某些设计反模式的可能的治疗方法。因此,设计模式和设计反模式被引入、删除,并被开发者相互变换。许多研究调查了设计模式和设计反模式的演变及其对软件开发的影响。然而,他们调查了设计模式或设计孤立的反模式,没有考虑到这些模式的突变和这些突变对软件质量的影响。因此,我们报告了我们关于设计模式和设计反模式之间的双向突变的研究,以及这些突变对软件变化和易误差的影响。我们分析了大小不同、进化历史和应用领域的七爪哇软件系统的近照。我们构建了Markov模型,以了解不同设计模式的发生概率,并设计反模式的反变异变情况。我们研究的结果显示:(1)设计模式和设计模式的设计模式和设计主要变换型/变型。

0
下载
关闭预览

相关内容

设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
Linux导论,Introduction to Linux,96页ppt
专知会员服务
79+阅读 · 2020年7月26日
【经典书】贝叶斯编程,378页pdf,Bayesian Programming
专知会员服务
249+阅读 · 2020年5月18日
因果图,Causal Graphs,52页ppt
专知会员服务
248+阅读 · 2020年4月19日
[综述]深度学习下的场景文本检测与识别
专知会员服务
78+阅读 · 2019年10月10日
机器学习相关资源(框架、库、软件)大列表
专知会员服务
40+阅读 · 2019年10月9日
【SIGGRAPH2019】TensorFlow 2.0深度学习计算机图形学应用
专知会员服务
41+阅读 · 2019年10月9日
最新BERT相关论文清单,BERT-related Papers
专知会员服务
53+阅读 · 2019年9月29日
异常检测论文大列表:方法、应用、综述
专知
126+阅读 · 2019年7月15日
计算机类 | PLDI 2020等国际会议信息6条
Call4Papers
3+阅读 · 2019年7月8日
人工智能 | ACCV 2020等国际会议信息5条
Call4Papers
6+阅读 · 2019年6月21日
计算机 | 中低难度国际会议信息8条
Call4Papers
9+阅读 · 2019年6月19日
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
Transferring Knowledge across Learning Processes
CreateAMind
28+阅读 · 2019年5月18日
计算机 | 中低难度国际会议信息6条
Call4Papers
7+阅读 · 2019年5月16日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
17+阅读 · 2018年12月24日
Adversarial Variational Bayes: Unifying VAE and GAN 代码
CreateAMind
7+阅读 · 2017年10月4日
【论文】图上的表示学习综述
机器学习研究会
14+阅读 · 2017年9月24日
Arxiv
0+阅读 · 2021年5月26日
VIP会员
相关VIP内容
Linux导论,Introduction to Linux,96页ppt
专知会员服务
79+阅读 · 2020年7月26日
【经典书】贝叶斯编程,378页pdf,Bayesian Programming
专知会员服务
249+阅读 · 2020年5月18日
因果图,Causal Graphs,52页ppt
专知会员服务
248+阅读 · 2020年4月19日
[综述]深度学习下的场景文本检测与识别
专知会员服务
78+阅读 · 2019年10月10日
机器学习相关资源(框架、库、软件)大列表
专知会员服务
40+阅读 · 2019年10月9日
【SIGGRAPH2019】TensorFlow 2.0深度学习计算机图形学应用
专知会员服务
41+阅读 · 2019年10月9日
最新BERT相关论文清单,BERT-related Papers
专知会员服务
53+阅读 · 2019年9月29日
相关资讯
异常检测论文大列表:方法、应用、综述
专知
126+阅读 · 2019年7月15日
计算机类 | PLDI 2020等国际会议信息6条
Call4Papers
3+阅读 · 2019年7月8日
人工智能 | ACCV 2020等国际会议信息5条
Call4Papers
6+阅读 · 2019年6月21日
计算机 | 中低难度国际会议信息8条
Call4Papers
9+阅读 · 2019年6月19日
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
Transferring Knowledge across Learning Processes
CreateAMind
28+阅读 · 2019年5月18日
计算机 | 中低难度国际会议信息6条
Call4Papers
7+阅读 · 2019年5月16日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
17+阅读 · 2018年12月24日
Adversarial Variational Bayes: Unifying VAE and GAN 代码
CreateAMind
7+阅读 · 2017年10月4日
【论文】图上的表示学习综述
机器学习研究会
14+阅读 · 2017年9月24日
Top
微信扫码咨询专知VIP会员