一种xUML4MC模型到MSVL语言程序的转换方法、计算机程序技术

技术编号:17970061 阅读:20 留言:0更新日期:2018-05-16 11:05
本发明专利技术属于计算机软件技术领域,公开了一种xUML4MC模型到MSVL语言程序的转换方法、计算机程序,所述xUML4MC模型到MSVL语言的转换方法包括:建立类图模型和活动图模型描述系统;将类图和活动图转换为面向对象抽象语法树;对面向对象抽象语法树进行预处理转换为面向过程抽象语法树;面向过程的抽象语法树转换为MSVL语言程序。本发明专利技术适用于模型检测系统建模,基于UML基础的可视化建模方式建模直观、易于掌握,相较于使用文本语言建模的方式更加方便准确,且转换生成的MSVL语言程序可直接用于模型检测。本发明专利技术实现了软件设计建模和模型检测系统建模的统一,促进了模型检测技术在工业界的推广。

【技术实现步骤摘要】
一种xUML4MC模型到MSVL语言程序的转换方法、计算机程序
本专利技术属于计算机软件
,尤其涉及一种xUML4MC模型到MSVL语言程序的转换方法、计算机程序。
技术介绍
模型检测是一种重要的形式化验证技术,其通过穷尽遍历系统的状态空间以检测待验证系统是否满足所期望的性质。由于模型检测过程可以由计算机自动完成,并且当性质不成立时还能够提供反例路径以便于工程技术人员定位错误和排错,因此在工业界倍受推崇,已经成功应用到硬件、通信协议、交通控制等诸多领域的系统验证中。时序逻辑语言MSVL是投影时序逻辑的一个可执行子集,是一种集系统建模(Modeling)、仿真(Simulation)和验证(Verification)的时序逻辑程序设计语言,支持丰富的数据类型、表达式和能够描述顺序、选择、循环、并发、同步特征的语句,能将系统的建模与性质的描述统一于同一逻辑框架内,通过其专用的模型检测工具MSV验证系统的性质。但MSVL为文本模式的逻辑程序设计语言,与工业界常用的编程语言(如C语言)完全不同,工程技术人员需要额外熟练掌握该语言才能进行系统建模;其次,所建模型不具有直观可见性,复杂系统建模时很难保证模型本身的正确性;另外,模型型检测系统建模和软硬件系统开发本身的分析设计建模相互独立,工程技术人员在系统开发和验证要使用不同的建模方法和工具分别建立两套模型,增加了开发的难度和工作量。UML语言是一种通用的开发建模语言,提供了在软件工程领域可视化系统设计的标准方法;广泛应用于软件工程的系统设计、建模方面,具有统一化,可视化建模的特点。UML是半形式化语言,所建模型只能粗粒度的描述系统设计模型,不能直接应用于模型检测。我们对UML语言进行了扩展,定义了可视化建模语言xUML4MC(ExtendingUMLforModelChecking),对UML活动图增加了更精确的表达式、语句的形式化定义和可视化建模符号,可满足精确描述系统行为的建模需要。所述表达式和语句的形式化定义如表1;所述对活动图扩展的可视化建模符号如表2所示。表1表达式和语句定义表2xUML4MC对UML活动图扩展的可视化建模符号综上所述,现有技术存在的主要问题:使用MSVL进行待验证系统建模,建模语言难以掌握,建模方式不直观,且无法满足复杂系统的建模需要;工业界软件开发广泛使用的可视化建模语言UML语法和语义不够精确,无法用于模型检测。
技术实现思路
针对现有技术存在的问题,本专利技术提供了一种xUML4MC模型到MSVL语言程序的转换方法、计算机程序。本专利技术通过xUML4MC可视化建模语言将待开发系统的分析、设计模型与模型检测的系统模型统一为一个模型,由工程技术人员在系统分析设计时一并完成建模,实现软件开发建模与模型检测建模的有机统一,降低模型检测系统建模的复杂度和难度,提升软件开发效率;并提供系统模型到MSVL程序语言模型的自动转换方法,促进模型检测技术在工业界的推广应用,提升我国软件产品的安全性与可靠性。本专利技术提供了一种xUML4MC模型到MSVL语言程序的转换方法,所述xUML4MC模型到MSVL的转换方法包括:建立类图模型和活动图模型描述系统;将类图和活动图转换为面向对象抽象语法树;对面向对象抽象语法树进行预处理转换为面向过程抽象语法树;将面向过程的抽象语法树转换为MSVL语言程序。进一步,所述xUML4MC模型到MSVL语言程序的转换方法包括以下步骤:第一步:对待验证系统建立类图模型和活动图模型,包括抽象出系统中包含的类,以及类与类之间的关系;活动图模型包括系统中对象之间的数据交互过程;第二步:分析待验证系统类图模型和活动图模型,根据xUML4MC的语法规则构造待验证系统模型的面向对象抽象语法树,该面向对象抽象语法树包括类图及活动图的全部信息;第三步:将面向对象抽象语法树转换成面向过程抽象语法树,包括面向对象语言到面向过程语言的预处理规则;所述预处理规则为:规则1:对于抽象语法树中的类节点,为其类名前添加“struct”作为前缀;规则2:对于有初始值的类属性,移除其初始值,并在该类所有的构造方法所属的层次语法图结构初始节点后添加该类属性的赋值语句。如果该类没有构造方法,则为其创建一个不包含任何语句的无参构造方法,之后再执行规则2,层次语法图结构如图4;规则3:如果一个类有父类,则为该类添加新的类属性“_Parent”,该属性的类型为该类的父类类型;规则4:对于每个类方法的层次语法图结构的初始节点的内容中,在方法名前添加方法所属类的“类名加‘_’”作为前缀,并在形参的第一个位置添加新的形参“*this”,该形参的类型为该方法所属类的类型。如果有返回值,则在其形参的最后一个位置,添加新的形参“*Ret”,其类型为返回值类型。如果该类有多个重载方法,则为每个重载方法的方法名后添加“‘_’加数字索引”作为方法名的后缀。规则5:对于层次语法图中每个包含直接访问类属性的语句,对该语句的类属性前添加“this->”;规则6:对于类的方法中包含方法调用的语句,x=obj.fun(e1,…,en)和obj.fun(e1,…,en),其中obj是类的实例,将该方法调用语句替换为fun(obj,e1,…,en,&x)和fun(obj,e1,…,en);规则7:对于层次语法图的终止状态节点,如果其包含返回语句“returne”,则将该语句用“*Ret=e”代替;第四步:xUML4MC语言与MSVL语言之间的数据类型转换规则、表达式转换规则、语句转换规则、图形元素转换规则。进一步,所述xUML4MC到MSVL数据类型转换规则为:(1)数据类型为Boolean,转换为MSVL为bool;(2)数据类型为Integer,转换为MSVL为int;(3)数据类型为Real,转换为MSVL为float;(4)数据类型为String,转换为MSVL为string;(5)数据类型为Set、Sequence,转换为MSVL为list;(6)数据类型为Array,转换为MSVL为array。进一步,所述表达式转换规则:x为一个变量或常量,obj为一个对象,attr为类的一个属性,e和b代表标准符号,参照规则为:(1)表达式为x,转换为MSVL表达式为x;(2)表达式为attr,转化为MSVL表达式为this->attr;(3)表达式为obj.attr,转化为MSVL表达式为obj.attr;(4)表达式为true,转化为MSVL表达式为true;(5)表达式为false,转化为MSVL表达式为false;(6)表达式为e[+|-|*|/]b,转化为MSVL表达式为e[+|-|*|/]b;(7)表达式为e[<|>|=|<>]b,转化为MSVL表达式为e[<|>|=|!=]b;(8)表达式为e>=b,转化为MSVL表达式为e=bore>b;(9)表达式为e<=b,转化为MSVL表达式为e=bore<b;(10)表达式为e[and|or|xor]b,转化为MSVL表达式为e[and|or|xor]b;(11)表本文档来自技高网
...
一种xUML4MC模型到MSVL语言程序的转换方法、计算机程序

【技术保护点】
一种xUML4MC模型到MSVL语言程序的转换方法,其特征在于,所述xUML4MC模型到MSVL的转换方法包括:建立类图模型和活动图模型描述系统;将类图和活动图转换为面向对象抽象语法树;对面向对象抽象语法树进行预处理转换为面向过程抽象语法树;面向过程的抽象语法树转换为MSVL语言程序。

【技术特征摘要】
1.一种xUML4MC模型到MSVL语言程序的转换方法,其特征在于,所述xUML4MC模型到MSVL的转换方法包括:建立类图模型和活动图模型描述系统;将类图和活动图转换为面向对象抽象语法树;对面向对象抽象语法树进行预处理转换为面向过程抽象语法树;面向过程的抽象语法树转换为MSVL语言程序。2.如权利要求1所述的xUML4MC模型到MSVL语言程序的转换方法,其特征在于,所述xUML4MC模型到MSVL的转换方法包括以下步骤:第一步:对待验证系统建立类图模型和活动图模型,包括抽象出系统中包含的类,以及类与类之间的关系;活动图模型包括系统中对象之间的数据交互过程;第二步:分析待验证系统类图模型和活动图模型,根据xUML4MC的语法规则构造待验证系统模型的面向对象抽象语法树,该面向对象抽象语法树包括类图及活动图的全部信息;第三步:将面向对象抽象语法树转换成面向过程抽象语法树,包括面向对象语言到面向过程语言的预处理规则;所述预处理规则为:规则1:对于抽象语法树中的类节点,为其类名前添加“struct”作为前缀;规则2:对于有初始值的类属性,移除其初始值,并在该类所有的构造方法所属的层次语法图结构的初始节点后添加该类属性的赋值语句。如果该类没有构造方法,则为其创建一个不包含任何语句的无参构造方法,之后再执行规则2,层次语法图结构如图4;规则3:如果一个类有父类,则为该类添加新的类属性“_Parent”,该属性的类型为该类的父类类型;规则4:对于每个类方法的层次语法图结构的初始节点的内容中,在方法名前添加方法所属类的“类名加‘_’”作为前缀,并在形参的第一个位置添加新的形参“*this”,该形参的类型为该方法所属类的类型。如果有返回值,则在其形参的最后一个位置,添加新的形参“*Ret”,其类型为该方法的返回值类型。如果该类有多个重载方法,则为每个重载方法的方法名后添加“‘_’加数字索引”作为方法名的后缀。规则5:对于层次语法图中每个包含直接访问类属性的语句,对该语句的类属性前添加“this->”;规则6:对于类的方法中包含方法调用的语句,x=obj.fun(e1,…,en)和obj.fun(e1,…,en),其中obj是类的实例,将该方法调用语句替换为fun(obj,e1,…,en,&x)和fun(obj,e1,…,en);规则7:对于层次语法图的终止状态节点,如果其包含返回语句“returne”,则将该语句用“*Ret=e”代替;第四步:xUML4MC语言与MSVL语言程序之间的数据类型转换规则、表达式转换规则、语句转换规则、图形元素转换规则。3.如权利要求2所述的xUML4MC模型到MSVL语言程序的转换方法,其特征在于,所述数据类型转换规则为:(1)数据类型为Boolean,转换为MSVL为bool;(2)数据类型为Integer,转换为MSVL为int;(3)数据类型为Real,转换为MSVL为float;(4)数据类型为String,转换为MSVL为string;(5)数据类型为Set、Sequence,转换为MSVL为list;(6)数据类型为Array,转换为MSVL为array。4.如权利要求2所述的xUML4MC模型到MSVL语言程序的转换方法,其特征在于,所述表达式转换规则为:x为一个变量或常量,obj为一个对象,attr为类的一个属性,e和b代表标准符号,参照规则为:(1)表达式为x,转换为MSVL表达式为x;(2)表达式为attr,转化为MSVL表达式为t...

【专利技术属性】
技术研发人员:舒新峰王曙燕王梦楠
申请(专利权)人:西安邮电大学
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1