[发明专利]一种基于UML模型的软件架构正确性验证方法有效
申请号: | 201410319016.9 | 申请日: | 2014-07-04 |
公开(公告)号: | CN104050087A | 公开(公告)日: | 2014-09-17 |
发明(设计)人: | 李必信;俞析蒙;陈艺;孔祥龙;王璐璐 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京瑞弘专利商标事务所(普通合伙) 32249 | 代理人: | 杨晓玲 |
地址: | 211189 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 uml 模型 软件 架构 正确性 验证 方法 | ||
1.一种基于UML模型的软件架构正确性验证方法,其特征在于,该方法包括如下步骤:
步骤1)将包括类图、状态图和顺序图的UML模型分别定义为状态机,即以一个三元组SM=(S,T,stop)来表示,其中,S为状态集合,T为转换集合,stop是默认状态,有stop∈S;
步骤2)将所述步骤1)得到的状态机分别转换成kripke结构状态机,即以一个五元组KSM=(Sk,s0,R,P,L)表示,其中Sk是一个有限状态集合;s0∈Sk是初始状态;转移关系集合R∈Sk×Sk包括所有的转移关系,并且仅由转移关系构成;P是一组原子命题及其否命题的集合;标记映射L是Sk中的每个状态s与s所对应的p中的所有原子命题为真的命题集合的映射关系所构成的映射关系集;
步骤3)将表示类图信息的kripke结构状态机转换成PROMELA模型中的进程信息,具体为:将获取类名转换成进程名,获取类中变量转换成进程中变量,获取类间关系转换成进程间通信通道;
步骤4)将表示状态图信息的kripke结构状态机转换成PROMELA模型中的进程内部执行信息;
步骤5)将表示顺序图信息的kripke结构状态机转换成PROMELA模型中的线性时序逻辑语句;
步骤6)将得到的PROMELA模型转换成代码并输入Spin工具进行验证。
2.根据权利要求1所述的基于模型转换的软件架构建模与验证方法,其特征在于,所述步骤1)中状态集合S包括:
原子状态sinitial=(n,ac,en,ex),其中n为状态名,ac、en、ex分别为处于原子状态、进入原子状态、退出原子状态时SM执行的动作序列;
或状态sor=(n,Sor,l,Ts,ac,en,ex),其中Sor为或状态sor的子状态的集合;l是处于激活状态的子状态的编号;Ts是或状态sor的所有子状态间转换的集合,ac、en、ex分别为处于或状态、进入或状态、退出或状态时SM执行的动作序列;
与状态sand=(n,Sand,ac,en,ex),其中Sand为与状态sand的子状态的集合,ac、en、ex分别为处于与状态、进入与状态、退出与状态时SM执行的动作序列;
所述转换集合T由转换t构成,所述转换t=(n,i,sou,e,g,ac,tar,j,ht),其中i为转换的最外层源状态的序号,j为目标状态的序号;转换t由sou和tar描述,sou是受限原状态,tar是确定目标状态,分别表示转换t的确切原状态和目标状态;e是转换t的触发事件;g是转换t的触发条件;ac是转换时执行的动作序列;ht是转换t的历史类型。
3.根据权利要求1所述的基于UML模型的软件架构正确性验证方法,其特征在于,所述步骤4)的具体流程为:
a.遍历kripke结构状态机的状态,并获取初始状态,将其作为当前状态;
b.判断当前状态的类型,若该状态为初始状态,则从转移关系集合R中获取该状态对应的转移路径后,进入步骤d;
若该状态是终止状态,则结束步骤4);
若该状态是一般状态,则依次获取状态类型、状态转移路径后进入步骤c;
c.将状态类型转换成PROMELA模型中的结构;
d.根据转移路径,构建PROMELA模型中的跳转语句与状态转移,然后根据转移路径获取下一状态,用所述下一状态更新当前状态后返回步骤b。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410319016.9/1.html,转载请声明来源钻瓜专利网。