首页> 外文学位 >Impacts and Detection of Design Smells.
【24h】

Impacts and Detection of Design Smells.

机译:设计气味的影响和检测。

获取原文
获取原文并翻译 | 示例

摘要

Changes are continuously made in the source code to take into account the needs of the customers and fix the faults. Continuous change can lead to antipatterns and code smells, collectively called "design smells" to occur in the source code. Design smells are poor solutions to recurring design or implementation problems, typically in object-oriented development. During comprehension and changes activities and due to the time-to-market, lack of understanding, and the developers' experience, developers cannot always follow standard designing and coding techniques, i.e., design patterns. Consequently, they introduce design smells in their systems. In the literature, several authors claimed that design smells make object-oriented software systems more difficult to understand, more fault-prone, and harder to change than systems without such design smells. Yet, few of these authors empirically investigate the impact of design smells on software understandability and none of them authors studied the impact of design smells on developers' effort.;In this thesis, we propose three principal contributions. The first contribution is an empirical study to bring evidence of the impact of design smells on comprehension and change. We design and conduct two experiments with 59 subjects, to assess the impact of the composition of two Blob or two Spaghetti Code on the performance of developers performing comprehension and change tasks. We measure developers' performance using: (1) the NASA task load index for their effort; (2) the time that they spent performing their tasks; and, (3) their percentages of correct answers. The results of the two experiments showed that two occurrences of Blob or Spaghetti Code design smells impedes significantly developers performance during comprehension and change tasks. The obtained results justify a posteriori previous researches on the specification and detection of design smells. Software development teams should warn developers against high number of occurrences of design smells and recommend refactorings at each step of the development to remove them when possible.;In the second contribution, we investigate the relation between design smells and faults in classes from the point of view of developers who must fix faults. We study the impact of the presence of design smells on the effort required to fix faults, which we measure using three metrics: (1) the duration of the fixing period; (2) the number of fields and methods impacted by fault-fixes; and, (3) the entropy of the fault-fixes in the source code. We conduct an empirical study with 12 design smells detected in 54 releases of four systems: ArgoUML, Eclipse, Mylyn, and Rhino. Our results showed that the duration of the fixing period is longer for faults involving classes with design smells. Also, fixing faults in classes with design smells impacts more files, more fields, and more methods. We also observed that after a fault is fixed, the number of occurrences of design smells in the classes involved in the fault decreases. Understanding the impact of design smells on development effort is important to help development teams better assess and forecast the impact of their design decisions and therefore lead their effort to improve the quality of their software systems. Development teams should monitor and remove design smells from their software systems because they are likely to increase the change efforts.;The third contribution concerns design smells detection. During maintenance and evolution tasks, it is important to have a tool able to detect design smells incrementally and iteratively. This incremental and iterative detection process could reduce costs, effort, and resources by allowing practitioners to identify and take into account occurrences of design smells as they find them during comprehension and change. Researchers have proposed approaches to detect occurrences of design smells but these approaches have currently four limitations: (1) they require extensive knowledge of design smells; (2) they have limited precision and recall; (3) they are not incremental; and (4) they cannot be applied on subsets of systems. To overcome these limitations, we introduce SMURF, a novel approach to detect design smells, based on a machine learning technique---support vector machines---and taking into account practitioners' feedback. Through an empirical study involving three systems and four design smells, we showed that the accuracy of SMURF is greater than that of DETEX and BDTEX when detecting design smells occurrences. We also showed that SMURF can be applied in both intra-system and inter-system configurations. Finally, we reported that SMURF accuracy improves when using practitioners' feedback.;Keywords: design smells, antipatterns, code smells, bad smells, detection, restructuring, refactorings, program comprehension, program maintenance, fault fix, empirical software engineering.
机译:在源代码中会不断进行更改,以考虑到客户的需求并修复故障。持续的更改可能会导致反模式和代码异味,在源代码中统称为“设计异味”。设计气味不能很好地解决重复出现的设计或实现问题,通常是在面向对象的开发中。在理解和变更活动期间,由于上市时间短,缺乏了解以及开发人员的经验,开发人员不能总是遵循标准的设计和编码技术,即设计模式。因此,他们在系统中引入了设计异味。在文献中,几位作者声称设计气味使面向对象的软件系统比没有这种设计气味的系统更难以理解,更容易出错并且更难更改。然而,这些作者中很少有经验地研究设计气味对软件易懂性的影响,而没有一个作者研究设计气味对开发人员的努力的影响。在本文中,我们提出了三个主要的贡献。第一项贡献是进行实证研究,以证明设计气味对理解和变更的影响。我们设计并进行了59个主题的两个实验,以评估两个Blob或两个Spaghetti Code的组成对开发人员执行理解和更改任务的性能的影响。我们使用以下方法评估开发人员的绩效:(1)NASA任务负荷指标以衡量其努力; (2)他们花费在执行任务上的时间; (3)正确答案的百分比。这两个实验的结果表明,两次Blob或Spaghetti Code设计气味的出现均显着阻碍了开发人员在理解和更改任务期间的性能。所获得的结果证明了后人先前对设计气味的规格和检测进行的研究。软件开发团队应警告开发人员,避免出现大量设计异味,并建议在开发的每个步骤中进行重构,以在可能的情况下将其删除。在第二部分中,我们从以下角度研究设计异味与类中的错误之间的关系:必须修复错误的开发人员的观点。我们研究了设计气味的存在对修复故障所需的工作量的影响,我们使用三个指标对其进行测量:(1)修复周期的持续时间; (2)故障修复影响的领域和方法的数量; (3)源代码中故障修复的熵。我们进行了一项实证研究,研究了在四个系统(ArgoUML,Eclipse,Mylyn和Rhino)的54个版本中检测到的12种设计气味。我们的结果表明,对于涉及带有设计气味类别的故障,修复期的持续时间更长。同样,使用设计气味修复类中的错误会影响更多的文件,更多的字段和更多的方法。我们还观察到,在修复故障之后,与故障有关的类别中设计气味的出现次数会减少。理解设计气味对开发工作的影响对于帮助开发团队更好地评估和预测其设计决策的影响,从而领导他们改善软件系统的质量至关重要。开发团队应监视并消除其软件系统中的设计异味,因为它们可能会增加更改工作。第三点涉及设计异味检测。在维护和开发任务期间,拥有一个能够增量和迭代地检测设计气味的工具非常重要。通过允许从业人员在理解和更改期间发现设计气味,他们可以识别并考虑设计气味的出现,因此这种递增的迭代检测过程可以减少成本,工作量和资源。研究人员提出了检测设计气味发生的方法,但是这些方法目前有四个局限性:(1)他们需要对设计气味有广泛的了解; (2)精确度和召回率有限; (3)它们不是增量的; (4)它们不能应用于系统的子集。为了克服这些限制,我们引入了SMURF,这是一种基于机器学习技术-支持向量机-并考虑了从业人员的反馈的检测设计气味的新颖方法。通过涉及三个系统和四种设计气味的实证研究,我们发现检测设计气味的发生时,SMURF的精度要高于DETEX和BDTEX。我们还表明,SMURF可以应用于系统内和系统间配置。最后,我们报告说,使用从业人员的反馈可以提高SMURF的准确性。关键字:设计气味,反模式,代码气味,难闻气味,检测,重组,重构,程序理解,程序维护,故障修复,经验软件工程。

著录项

  • 作者

    Maiga, Abdou.;

  • 作者单位

    Universite de Montreal (Canada).;

  • 授予单位 Universite de Montreal (Canada).;
  • 学科 Computer science.
  • 学位 Ph.D.
  • 年度 2012
  • 页码 139 p.
  • 总页数 139
  • 原文格式 PDF
  • 正文语种 eng
  • 中图分类 肿瘤学;
  • 关键词

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号