王丹
摘要:针对代码与模型之间的不一致性问题,本文提出了一种基于 UML模型和Java代码之间的一致性检测方法。首先,给出了怎样检测模型与代码一致性的步骤,对模型检测中所要用到的模型和代码进行预处理,其次设计出模型代码一致性检测的框架,在本文的后面重点研究静态的模型与代码一致性。对静态检测设计了算法,进行了一致性验证研究。
关键词:一致性检测 静态代码 预处理
中图分类号:TP39 文献标识码:A 文章编号:1007-9416(2016)05-0000-00
1 模型与代码一致性检测的基本流程
在这篇文章中,UML模型的一致性和Java代码检测是基于两个假设:(1)要保证每个模型的UML是对的,要保持一致性;(2)在UML模型与Java代码的信息不一样的时候,这个时候UML模型就会输出相关的报告。
1.1 UML模型预处理
1.1.1 UML模型的形式化定义
UML模型具有半正式的相关特性,这个特性就没办法直接在UML模型中获取相关的的信息。导致,UML模型的形式化定义就要用数学符号语言进行定义。
(1)类元组(类,)是一种面向对象的类图表示,在这个类图中,一个图可以表示为一个元祖,而每个类图又可以分为好多个类的元组构成的集合。
(2)序列图六组形式化定义一个,味精,是一个对象集合。的对象是序列图M = { msg1 msg2,……是一家集新闻,MSGM }。消息味精定义如下:味精:= < msgName,能见度,{ <参数> },返回类型>
(3)发送和接收消息。味精新闻,发送事件<味精,s >、<味精,r >接收事件常说。
(4)消息集上的全序关系,说新闻的轴纵向时间序列图先后。
(5)E M函数关系的味精,味精(E)∈E M说事件对应的信息。6 obj E O函数关系,obj E(E)∈O表示事件对应。像所有事件的集合的。
1.1.2 UML类图信息解析
一个类图包含的相关信息,对xml文件是需要说明他的类图和类的名称,类的属性的,以及和其他有关的信息。类图要对类之间的关系进行分析,还要分析他们的转换属性。四种模式的关系。
1.2 代码静态信息预处理
静态结构的Java代码他所包含的信息都是基本信息,比如:类的名称、类的属性、以及类的方法与其他有关的信息。Jave代码静态信息提取的主要思想是通过词法分析和语法分析来获取Java类的名称、属性序列和方法序列,并将这些信息存储到上面定义的数据存储结构中
2 模型与代码一致性检测框架的设计
通过对UML模型与Java代码的分析提出了UML模型与Java代码一致性性检测框架。该框架的输入为Java代码和UML模型信息,输出为一致性检测报告;框架中的主要过程有信息预处理、静态一致性检测、动态一致性检测等功能[1]。
UML模型和Java代码一致性测试框架的具体过程:首先,分别对Java代码和UML模型信息预处理,预处理的Java代码主要通过词法分析和语法分析,预处理的UML模型是基于XMI文件解析的模型;然后,Java代码预处理结果Java类和UML模型预处理UML静态信息,例如UML模型和代码一致性测试输入,根据检测的一致性算法一致性测试,如果不一致输出测试报告,停止测试,否则继续;最后,Java代码预处理结果Java调用图CG和UML序列图构造顺序调用图SD - CG作为UML模型和动态一致性测试代码输入。
3 静态模型与代码的一致性检测
3.1 静态检测一致性的设计
UML模型和Java代码一致性测试的静态信息,是一致性的基础模型和系统测试。静态信息包括类名、类属性集和类的方法。UML类信息和Java类信息一致性检测:首先,UML类的检测数量和类在Java类的数量是一致的,不一致的信息返回如果不一致,一致性测试结束,否则继续;然后一个UML类和Java类根据类的名称进行排序,最后排序的列顺序检测测试UML类关系返回Java类信息是一致的和不一致的信息如果不一致,测试结束。
3.2 静态检测
模型和代码之间的静态信息检测是UML模型的基础和Java代码之间的一致性测试,是动态交互信息检测的前提。静态信息的检测包括检测类的名称、类的属性集合,还有类的方法集合等,表1展示了二者之间的映射关系。
一致性测试的UML类图信息预处理后预处理后的模型与Java代码的Java类信息作为输入,静态测试,反过来,测试类,类的名称、类的属性、测试类的方法、参数列表的一致性的检测方法,万一有不一致的情况,那就直接输出检测的测试报告,立刻停止测试,默认为为默认值(defaultValue)没有不一致的信息警告)那就不终止静态信息的一致性检测,最后就会输出一致性检测的测试结果,生成检测报告[2]。
4 结语
在本文中UML模型和Java代码完全的一致性检测,研究了UML模型和Java代码一致性测试的基本过程,给出UML模型分析算法和Java代码关键信息提取算法,动态信息和静态信息的一致性检测算法。
参考文献
[1]葛徐骏.基于时序逻辑的双向一致性检测[D].华东师范大学,2015.
[2]葛亮.基于本体演化过程的一致性检测方法研究[D].吉林大学,2012.