论文部分内容阅读
随着计算机应用领域的扩大、应用程度的不断加深,计算机软件规模的不断增大,使得提高软件质量和效率迫在眉睫。由于在现有的软件开发过程中,代码与模型不一致问题的存在导致系统功能与用户需求不相符合,软件维护代价过大,软件质量的下降。虽然国内外对模型间的一致性检测有大量研究,代码的分析技术(含逆向工程)也相当成熟,但是模型与代码间的一致性检测相关性研究比较少,因此,本文对模型和代码的一致性检测方法的研究具有重要的必要性和创新性。模型与代码之间一致性检测的研究,要求分别对模型和代码进行分析,然后通过一致性检测算法来对两者进行检测,完成模型与代码之间的一致性检测,找出二者之间的不一致。本文针对UML模型与Java源代码进行一致性检测研究。首先,本文对UML的类图和时序图进行形式化描述,便于实现对UML模型的自动解析。第二,提出了时序调用图(SD-CG)这一概念,完成了对UML模型信息的预处理:①类的关联关系到关联属性的转换;②UML时序图到时序调用图SD-CG的转换。第三,通过对Java源代码的词法分析和语法分析,获得类的信息及方法调用图(CG)。通过使用调用图来表达类方法之间的调用关系,从而反映代码动态行为。它是编译期对程序中方法调用关系的一种静态描述,这种静态描述构建的方法调用图能够实现对代码信息动态交互的分析。最后,设计了UML模型与Java源代码间静态信息与交互信息的一致性检测算法。鉴于图的一致性检测算法是NP完全问题,为了提高一致性检测的效率,本文采用关系代数中的部分关系,对调用图进行上升运算构造类交互图,在通过类交互一致性检测后,再进行时序调用图SD-CG与方法调用图CG间的一致性检测。基于上述理论研究,本文提出了UML模型与Java代码一致性检测的框架。在对建模工具ArgoUML的XMI模型文件以及Java源代码分析的基础上,开发了一个基于该框架工具原型,实现了模型信息解析和提取、时序调用图的构造、Java调用图构造、类交互图的构造、静态信息与动态交互信息的一致性检测等功能。本文通过网上购书系统这一实例,验证了该工具可以实现对不一致信息的定位,完成对模型与代码间的一致性检测,验证了本文所提方法是可行的与有效的。