首页> 外文学位 >Evaluating Design Decay during Software Evolution.
【24h】

Evaluating Design Decay during Software Evolution.

机译:在软件开发过程中评估设计衰减。

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

摘要

Software systems evolve, requiring continuous maintenance and development. They undergo changes throughout their lifetimes as new features are added and bugs are fixed. As these systems evolved, their designs tend to decay with time and become less adaptable to changing users' requirements. Consequently, software designs become more complex over time and harder to maintain; in some not-so-rare cases, developers prefer redesigning from scratch rather than prolonging the life of existing designs, which causes development and maintenance costs to rise. Therefore, developers must understand the factors that drive the decay of their designs and take proactive steps that facilitate future changes and slow down decay.;Design decay occurs when changes are made on a software system by developers who do not understand its original design. On the one hand, making software changes without understanding their effects may lead to the introduction of bugs and the premature retirement of the system. On the other hand, when developers lack knowledge and--or experience in solving a design problem, they may introduce design defects, which are conjectured to have a negative impact on the evolution of systems, which leads to design decay. Thus, developers need mechanisms to understand how a change to a system will impact the rest of the system and tools to detect design defects.;In this dissertation, we propose three principal contributions. The first contribution aims to evaluate design decay. Measuring design decay consists of using a diagram matching technique to identify structural changes among versions of a design, such as a class diagram. Finding structural changes occurring in long-lived, evolving designs requires the identification of class renamings. Thus, the first step of our approach concerns the identification of class renamings in evolving designs. Then, the second step requires to match several versions of an evolving design to identify decaying and stable parts of the design. We propose bit-vector and incremental clustering algorithms to match several versions of an evolving design. The third step consists of measuring design decay. We propose a set of metrics to evaluate this design decay. The second contribution is related to change impact analysis. We present a new metaphor inspired from seismology to identify the change impact. In particular, our approach considers changes to a class as an earthquake that propagates through a long chain of intermediary classes. Our approach combines static dependencies between classes and historical co-change relations to measure the scope of change propagation in a system, i.e., how far a change propagation will proceed from a "changed class" to other classes. The third contribution concerns design defect detection. We propose a metaphor inspired from a natural immune system. Like any living creature, designs are subject to diseases, which are design defects. Detection approaches are defense mechanisms of designs. A natural immune system can detect similar pathogens with good precision. This good precision has inspired a family of classification algorithms, Artificial Immune Systems (AIS) algorithms, which we use to detect design defects.;The three contributions are evaluated on open-source object-oriented systems and the obtained results enable us to draw the following conclusions:;• Design decay metrics, Tunnel Triplets Metric (TTM) and Common Triplets Metric ( CTM), provide developers useful insights regarding design decay. If TTM decreases, then the original design decays. If TTM is stable, then the original design is stable, which means that the system is more adapted to the new changing requirements.;• Seismology provides an interesting metaphor for change impact analysis. Changes propagate in systems, like earthquakes. The change impact is most severe near the changed class and drops off away from the changed class. Using external information, we show that our approach helps developers to locate easily the change impact.;• Immune system provides an interesting metaphor for detecting design defects. The results of the experiments showed that the precision and recall of our approach are comparable or superior to that of previous approaches.
机译:软件系统不断发展,需要不断的维护和开发。随着新功能的添加和错误的修复,它们在整个生命周期中都会发生变化。随着这些系统的发展,它们的设计会随着时间的流逝而衰减,并且越来越难以适应不断变化的用户需求。因此,软件设计会随着时间的推移变得更加复杂,并且难以维护。在某些不太常见的情况下,开发人员更喜欢从头开始重新设计,而不是延长现有设计的寿命,这会导致开发和维护成本上升。因此,开发人员必须了解导致其设计衰减的因素,并采取积极措施以促进将来的更改并减缓衰减。设计衰减是由不了解其原始设计的开发人员在软件系统上进行更改时发生的。一方面,在不了解软件效果的情况下进行软件更改可能会导致引入错误并导致系统过早报废。另一方面,当开发人员缺乏解决设计问题的知识和经验时,他们可能会引入设计缺陷,这些缺陷被认为会对系统的发展产生负面影响,从而导致设计衰退。因此,开发人员需要机制来了解对系统的更改将如何影响系统的其余部分,并需要使用工具来检测设计缺陷。在本文中,我们提出了三个主要的贡献。第一项贡献旨在评估设计衰减。测量设计衰减包括使用图匹配技术来识别设计版本之间的结构变化,例如类图。要发现长期存在且不断发展的设计中发生的结构变化,需要确定类重命名。因此,我们方法的第一步涉及在不断发展的设计中识别类重命名。然后,第二步需要匹配不断发展的设计的多个版本,以识别设计的衰减和稳定部分。我们提出了位向量和增量聚类算法,以匹配不断发展的设计的多个版本。第三步包括测量设​​计衰减。我们提出了一组度量来评估这种设计衰减。第二个贡献与变更影响分析有关。我们提出了一个新的比喻,它受到地震学的启发,以识别变化的影响。尤其是,我们的方法将类别的变化视为地震,它通过一长串中间类别传播。我们的方法结合了类之间的静态依赖关系和历史的共同变更关系,以衡量系统中变更传播的范围,即,变更传播将从“变更的类”传播到其他类的距离。第三点涉及设计缺陷检测。我们提出一个从自然免疫系统中得到启发的隐喻。像任何生物一样,设计也容易遭受疾病的侵害,这是设计的缺陷。检测方法是设计的防御机制。自然的免疫系统可以高精度地检测出相似的病原体。良好的精度激发了我们用于检测设计缺陷的分类算法,人工免疫系统(AIS)算法系列。在开放源代码的面向对象系统上评估了这三个方面,获得的结果使我们能够得出得出以下结论:•设计衰减度量标准,隧道三重度量(TTM)和通用三重度量(CTM),为开发人员提供了有关设计衰减的有用见解。如果TTM降低,则原始设计会衰减。如果TTM稳定,则原始设计是稳定的,这意味着该系统更适应新的变化需求。;•地震学为变化影响分析提供了一个有趣的隐喻。变化在系统中传播,例如地震。变更影响在变更后的类别附近最为严重,并在变更后的类别附近消失。使用外部信息,我们证明了我们的方法可以帮助开发人员轻松找到更改的影响。;•免疫系统为检测设计缺陷提供了一个有趣的隐喻。实验结果表明,我们的方法的精度和召回率与以前的方法相当或更好。

著录项

  • 作者

    Hassaine, Salima.;

  • 作者单位

    Universite de Montreal (Canada).;

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

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号