当前位置: X-MOL 学术Empir. Software Eng. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Investigating design anti-pattern and design pattern mutations and their change- and fault-proneness
Empirical Software Engineering ( IF 3.5 ) Pub Date : 2021-01-01 , DOI: 10.1007/s10664-020-09900-0
Zeinab Azadeh Kermansaravi , Md Saidur Rahman , Foutse Khomh , Fehmi Jaafar , Yann-Gaël Guéhéneuc

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.

中文翻译:

调查设计反模式和设计模式突变及其变化和故障倾向

在软件演化过程中,缺乏经验的开发人员在修改其软件系统以修复错误或根据需求变化添加新功能时可能会引入设计反模式。开发人员还可以使用设计模式来提升软件质量或作为一些设计反模式的可能治疗方法。因此,设计模式和设计反模式被开发人员引入、移除和相互改变。许多研究调查了设计模式和设计反模式的演变及其对软件开发的影响。然而,他们孤立地研究了设计模式或设计反模式,并没有考虑它们的突变以及这些突变对软件质量的影响。所以,我们报告了我们对设计模式和设计反模式之间双向突变的研究,以及这些突变对软件变更和故障倾向的影响。我们分析了七个具有不同规模、发展历史和应用领域的 Java 软件系统的快照。我们建立了马尔可夫模型来捕捉不同设计模式和设计反模式突变的发生概率。我们的研究结果表明 (1) 设计模式和设计反模式会变异为其他设计模式和/或设计反模式。他们还表明(2)一些变化类型主要触发设计模式和设计反模式的突变(重命名和更改注释、声明和操作符),以及(3)一些设计反模式和设计模式的突变更多在特定情况下出错。
更新日期:2021-01-01
down
wechat
bug