论文部分内容阅读
模型驱动的软件开发方式(Model-Driven Development,MDD)目前被广泛应用于面向服务架构的信息系统中,而模型转换作为MDD中的重要环节和核心技术,它的正确性直接影响了基于MDD开发的软件系统的成功。随着模型转换复杂性增加和规模的扩大,模型转换的可靠性保障越来越困难,调试模型转换程序也面临着许多挑战,而高效准确的错误定位方法能够帮助提高调试效率,从而有效地保障模型转换的质量。目前,研究人员提出了一些自动化的错误定位方法来提高模型转换的调试效率,其中基于频谱的错误定位技术(Spectrum-Based Fault Localization,SBFL)作为一种具有代表性的动态分析方法,主要利用规则的覆盖信息和执行结果来估计每个规则可能出错的概率。然而由于模型转换的特性,覆盖信息中假阴性和假阳性结果的普遍存在导致了频谱方法的定位结果并不准确,因此我们考虑是否可以通过挖掘不同测试模型的覆盖范围信息,来进一步地提高错误定位的准确性。本文提出一种基于测试模型影响度来对SBFL进行优化的方法,并将其应用于模型转换的错误定位中。该方法根据测试模型的覆盖范围,来评估不同测试模型对错误定位的影响度,进而基于不同影响度的测试模型的覆盖规则信息优化频谱方法的错误定位结果。我们将本文方法与SBFL进行比较,以开源的模型转换项目为例验证方法的可行性和有效性。本文的主要工作内容可归纳如下:(1)考虑模型转换中规则继承的关系对错误定位准确性的影响。通过静态分析规则之间的继承关系,考虑错误传递的影响,进一步的计算规则之间的继承权重,以此来解决在频谱方法下,由于可疑度值相同而难以区分真正的错误规则的情况。(2)通过动态分析模型转换执行过程中,不同测试模型下的规则覆盖范围信息,来评估不同测试模型的错误定位能力,为不同影响度的测试模型分配不同的权重值。其中覆盖范围越小的失败的测试模型被分配更多的权重,根据网页排名算法迭代计算得到规则权重,进而基于加权模型的覆盖信息调整频谱方法的定位结果,以提高错误定位的准确度。(3)设计了相关实验来评估方法的可行性和定位效率。我们选取了 12个被广泛应用于错误定位领域的可疑度计算公式,在三个不同规模大小的开源模型转换项目上进行了实验,实验结果表明相比于SBFL方法,本文方法的错误定位效率平均情况下能够提高25%。