论文部分内容阅读
在软件开发过程中,变化影响分析是一项非常重要的技术。这项技术可以用于分析得到一个阶段中代码的改变(增加新代码,删除旧代码,修改源代码)对整个程序所产生的影响,并且将这种影响有效地返回给程序员,使程序员在后续的工作中能够做出正确的决定。目前,已经存在很多方法来实现基于面向过程和面向对象程序的变化影响分析,却很少涉及到面向方面编程的领域。本文以面向方面编程语言为目标,提出了一种新的变化影响分析技术。该技术的核心在于归纳定义一系列原子变化,并用这些原子变化完全捕捉两个程序版本间的语义不同。本文同时也提出了一种新的变化影响分析模型,该模型基于静态的面向方面程序的系统调用图,用于找出被影响的程序代码片段、回归测试用例及影响它们(回归测试用例)的源代码修改部分。基于所提出的模型,本文讨论了变化影响分析技术的三种典型应用:1.软件自动化调试。本文提出一种新的程序自动化调试方法。该方法将程序的原子变化作用于增量调试算法,用来缩小寻找那些导致错误的代码变化范围。我们首先使用变化影响分析找出一个导致测试用例运行失败的原子变化集合,然后将这个集合中的原子变化用本文所提出的启发式算法排序,最后运用增量调试算法找出一个能够导致错误的最小子集。本文对原始的增量调试算法进行了改进,使之运用于程序代码的多个层次:从粗粒度的方法层到细粒度的语句层。并且我们的算法所生成的大部分程序中间版本均合乎语法规则,因此减少了由于输入不一致导致的不必要的重复测试。2.系统调用图的增量式构建。软件系统的调用图被广泛地应用在软件测试、程序理解,以及编译器优化等任务中。在软件系统的演化过程中,系统调用图需要在保持精度不变的前提下,随着软件的修改而得到及时地更新。然而如果对每一次的程序修改来重新构建系统调用图将会带来昂贵的分析代价。为了降低软件演化过程中系统调用图的更新成本,本文提出了一种基于变化影响分析的增量式系统调用图构建技术,用于显著减少更新所需要的时间和空间代价。3.软件变化度量指标的评估。目前的软件度量研究主要集中在衡量系统的复杂性上,很少有研究者提出用于衡量软件变化影响程度的度量指标。为此,本文基于变化影响分析模型提出了面向方面软件中变化度量的概念。该度量能够定量地反映软件变化给整个系统所造成的影响程度,并为程序员提供有价值的反馈信息。基于所提出的技术,本文实现了一个面向方面程序的变化影响分析框架Celadon。在Celadon框架中,我们集成了面向方面程序的自动化调试技术、系统调用图增量式构建技术以及变化度量评估技术。本文使用了24组8对基准AspectJ测试程序对工具进行了实验评估。评估结果显示Celadon不仅能够有效地对AspectJ程序进行变化影响分析,并且能够大幅度提高原有的增量式调试技术和系统调用图构建的效率;同时程序变化度量指标的定量评估也给程序员提供了有价值的反馈信息。