论文部分内容阅读
信息的不一致性是普遍存在的,在计算机技术的日益发展而且软件系统的规模也在不断变大的今天,软件系统的开发也变得更加复杂和难以把握。而面向对象技术作为目前软件开发中最常用的一种开发技术,它在提高软件系统的开发效率和质量的同时,也因为其自身诸如继承性、多态性的机制给软件模型和代码的一致性带来许多问题。因此面对不断增长不一致性问题,怎样结合面向对象技术特点,保证软件模型和代码的一致性已经愈发引起设计和编程人员的重视。目前国内外针对于模型之间的一致性检测虽然有很多,但是对于模型与代码间的一致性检测,尤其是基于面向对象机制的研究却相对不足。本文在上述背景下,基于面向对象模型自身特点对其与代码之间的一致性问题进行研究,这在理论上和实践上都具体一定的意义。本文分别选取UML模型与Java源代码作为本文的研究对象。并且本文的研究是基于UML模型为基准,即根据模型的信息来对代码的信息进行检测,如果出现不一致问题时根据模型信息对代码信息进行修改。完成模型与代码的的一致性检测主要工作包括如下几点:第一,分析UML模型自身特点,结合其半形式化的特点对其进行形式化描述,采用时序调用图(SD-CG)这一概念,完成了对UML模型信息的预处理。第二,对Java代码进行解析,提取代码中的关键信息,获取类的信息并根据代码中方法之间的调用关系生成代码调用图(CCG)。第三,分析类间相互关系,考虑面向对象多态性机制,并根据存在的多态性信息多调图进行多态性扩展,从而提高一致性检测的完备性。第四,最后根据相应算法实现静态信息与动态信息的一致性检测。先对模型与代码的静态信息进行相应的匹配,并反馈检测结果,并根据输出的不一致性信息对动态检测进行相应处理。之后根据得到的调用图进行调用边及调用节点的一致性检测,最终根据相应规则输出一致性检测报告。基于上述理论研究,开发了一个基于一致性检测理论框架工具的原型,通过输入UML建模的XML文件和相应的Java源代码,实现了模型与代码信息解析和提取、时序调用图和代码调用图的构造、多态性扩展、一致性检测等功能。最后通过利用该工具对实例进行验证,输出一致性检测报告,从而表明了本文所提出的模型与代码之间的一致性检测方法是可行且有效的。