CN104050087A - 一种基于uml模型的软件架构正确性验证方法 - Google Patents

一种基于uml模型的软件架构正确性验证方法 Download PDF

Info

Publication number
CN104050087A
CN104050087A CN201410319016.9A CN201410319016A CN104050087A CN 104050087 A CN104050087 A CN 104050087A CN 201410319016 A CN201410319016 A CN 201410319016A CN 104050087 A CN104050087 A CN 104050087A
Authority
CN
China
Prior art keywords
state
kripke
model
conversion
state machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410319016.9A
Other languages
English (en)
Other versions
CN104050087B (zh
Inventor
李必信
俞析蒙
陈艺
孔祥龙
王璐璐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Southeast University
Original Assignee
Southeast University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Southeast University filed Critical Southeast University
Priority to CN201410319016.9A priority Critical patent/CN104050087B/zh
Publication of CN104050087A publication Critical patent/CN104050087A/zh
Application granted granted Critical
Publication of CN104050087B publication Critical patent/CN104050087B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于UML模型的软件架构正确性验证方法,主要用于处理软件架构的建模与验证问题,本发明涉及到的关键操作包括:(1)将包括类图、状态图和顺序图的UML模型分别定义为状态机,并将所述得到的状态机分别转换成kripke结构状态机;(2)将表示类图信息的kripke结构状态机转换成PROMELA模型中的进程信息;(3)将表示状态图信息的kripke结构状态机转换成PROMELA模型中的进程内部执行信息;(4)将表示顺序图信息的kripke结构状态机转换成PROMELA模型中的线性时序逻辑语句;(5)将得到的PROMELA模型转换成代码并输入Spin工具进行验证。

Description

一种基于UML模型的软件架构正确性验证方法
技术领域
本发明属于计算机软件领域,涉及一种基于UML的软件架构正确性验证方法。
背景技术
随着软件系统规模和复杂性的不断增大,为保证软件质量,提高软件可靠性、可重用性和可维护性,软件设计的核心已从传统计算模式转向对系统的总体结构,即以连接件(connect)、部件和连接件交互约束为核心的软件体系结构(SoftwareArchitecture,以下简称SA)的设计和规范。SA主要着眼于软件系统的全局组织形式,在更高层次上把握系统各组件之间的内在联系,并从全局的、整体的角度去理解和分析整个系统的行为和特性。然而由于SA的设计的关系到后续软件开发的成功与否,因此保障SA设计的正确性、安全性等属性变的尤为重要,形式化验证方法就可以很好地解决这个问题。
越来越多的形式化验证方法及工具应用于SA的验证,其中基于模型检验(ModelChecking)的简单进程元语言解释器Spin能有效准确地实现软件体系结构的验证工作。模型检验的一般流程如图2所示,并且Spin工具的实用性已经得到验证,但是由于其支持的建模语言PROMELA有着难以直观理解、不具有通用性等特点,使得SA的设计难以体现一般化。本发明针对PROMELA语言的相关缺陷,采用UML对SA进行建模,提出一种将UML模型转换成PROMELA的模型转换方法,并利用其转换结果对SA设计进行模型检验。UML(统一建模语言)是一种将软件开发过程中出现的各种模型用可视化图形来描述的语言。它融合了多种面向对象开发方法的优点,采用统一的图形和符号从多个视角描述软件系统的各种抽象模型,获得了国际标准化组织的认可,并被国际软件界广泛接纳。
发明内容
技术问题:本发明提供一种用于对软件体系结构进行验证,可以直接对软件体系结构进行形式化建模,很好地对通用建模语言所建的软件体系结构模型进行验证,通用性好的基于UML模型的软件结构正确性验证方法。
技术方案:本发明的基于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工具进行验证。
本发明方法中,步骤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的历史类型。
本发明方法的优选方案中,步骤4)的具体流程为:
a.遍历kripke结构状态机的状态,并获取初始状态,将其作为当前状态;
b.判断当前状态的类型,若该状态为初始状态,则从转移关系集合R中获取该状态对应的转移路径后,进入步骤d;
若该状态是终止状态,则结束步骤4);
若该状态是一般状态,则依次获取状态类型、状态转移路径后进入步骤c;
c.将状态类型转换成PROMELA模型中的结构;
d.根据转移路径,构建PROMELA模型中的跳转语句与状态转移,然后根据转移路径获取下一状态,用所述下一状态更新当前状态后返回步骤b。
本发明方法的优选方案中,步骤5)的具体流程为:
a.将顺序图对应的kripke结构状态机的所有状态,按照其在顺序图中的位置自上而下进行排序;
b.获取初始状态,并将其作为当前状态;
c.判断当前状态的类型:若该状态是终止状态,则进入步骤e,否则将当前状态的内容和转移路径分别转换成现行时序逻辑中的原子命题后进入步骤d;
d.根据转移路径获取下一状态,用所述下一状态更新当前状态后返回步骤c;
e.将所有原子命题按照其产生的时间先后顺序连接,将其作为线性时序逻辑语句。
本发明方法的优选方案中,步骤2)的具体过程为:
21)将状态机的默认状态转换成kripke结构状态机的初始状态;
22)对状态机的当前状态CS,如果在kripke结构状态机中已经存在状态(CS,0),则进入步骤25),否则构造对应的kripke结构的状态(CS,0),计算其可能事件集PES;
23)对PES中的每个事件e,构造对应的kripke状态(CS,e),连接(CS,0)与(CS,e);
24)对PES中的每个事件e,计算其所有可能的最大可触发转换集的集合SETS,执行集合SETS中的每个转换集ETS的所有转换,得到用下一层递归调用的状态集并用其更新当前状态CS后返回步骤22);
25)返回底层递归调用的上一层,开始逐层连接(CS,e)与(NS,0),直至完成所有递归调用的(CS,e)与(NS,0)连接,即得到kripke结构状态机,其中NS为本层递归调用的状态,(NS,0)为下一层构造的kripke结构的状态(CS,0)。
本发明的方法首先利用UML对软件体系结构进行建模,而后将其转换成kripke结构,再进行自动模型转换为Spin支持的模型PROMELA,然后生成PROMELA代码,并结合UML中顺序图所对应或用户手动输入的LTL代码作为Spin的输入。
本发明方法可以直接对软件体系结构进行形式化建模,并且将UML设计中的与之相关模型,包括类模型、状态模型以及顺序模型,转换为PROMELA模型,进而使用Spin进行验证。与过去的方法相比,本发明既可以很好地对通用建模语言所建的软件体系结构模型进行验证,又弥补了PROMELA不够通用、一般化的弱点。
有益效果:本发明与现有技术相比,具有以下优点:
经过实例分析证明,本发明完成了由UML模型中的类模型、状态模型和顺序模型向PROMELA程序的转换。使用UML可以很方便的对复杂的软件架构进行建模,并且通过转换规则实现将类模型和状态模型转成kripke模型,而后向PROMELA模型的转换,利用LTL描述的顺序模型对系统属性进行描述,然后将PROMELA代码和LTL公式输入SPIN进行验证。本发明使得对软件架构从建模到验证的过程变得更加方便和容易。
与现有的技术相比,本发明主要有两个优点。一是先将UML状态机转换成kripke结构的状态机,再将kripke结构的状态机转换成PROMELA模型,而非直接将UML状态机转换成PROMELA模型。由于UML状态图是多个静态图组成,传统的直接转换方法会导致状态类型信息与状态内容信息混杂,而通过kripke结构的状态机中转则能够将这些静态图关联起来,并反映程序执行过程中的状态。这样能够有效的利用kripke结构中的命题控制转移关系的功能,来完整的保留状态图里的信息,并分离状态类型与状态内容,从而优化生成的PROMELA模型;二是实现了由UML顺序图自动生成线性时序逻辑语句LTL的功能,对于较为繁琐的顺序图能够避免复杂并且容易出错的手动生成LTL的过程,降低验证人员的工作量。
附图说明
图1是本发明方法的流程图。
图2是一般模型检验的过程。
图3是将表示状态图的kripke结构状态机转换成PROMELA模型中结构的流程图。
图4是将表示顺序图的kripke结构状态机转换成PROMELA模型中线性时序逻辑语句LTL。
图5是将UML状态机转换成kripke结构状态机的流程图。
图6是UML模型中的类模型。
图7是UML模型中的状态模型,其中左侧的为User类的状态模型,右侧的为responser类的状态模型。
图8是UML模型中的顺序模型。
具体实施方式
下面结合实施例和说明书附图对发明的技术方案进行详细说明。
本发明从元模型的角度出发,将包括类图、状态图和顺序图的UML模型定义为状态机,而后将状态机转换成kripke结构的状态机,再实现kripke结构的状态机到PROMELA模型的同态映射,将得到的PROMELA模型转换成代码并输入Spin工具进行验证,其中PROMELA是Spin工具输入所特有的程序语言。具体包括以下步骤:
步骤1)通过函数definedUML()将包括类图、状态图和顺序图的UML模型分别表示成定义的UML状态机,分别有CSM=definedUML(Class)、SeSM=definedUML(Sequence)、StSM=definedUML(State),其中Class表示UML模型中的类图,CSM表示类图对应的状态机;Sequence表示UML模型中的顺序图,SeSM表示顺序图对应的状态机;State表示UML模型中的状态图,StSM表示状态图对应的状态机。具体的UML状态机的定义为:
将包括类图、状态图和顺序图的UML模型分别定义为状态机,即以一个三元组SM=(S,T,stop)来表示,其中,S为状态集合,T为转换集合,stop是默认状态,有stop∈S;状态集合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执行的动作序列。对处于激活状态的或状态sor,它的子状态中有且只有一个s处于激活状态,称之为串行;
与状态sand=(n,Sand,ac,en,ex),其中Sand为与状态sand的子状态的集合,ac、en、ex分别为处于与状态、进入与状态、退出与状态时SM执行的动作序列。对处于激活状态的与状态sand,它的所有子状态都处于激活状态,称之为并发;
所述转换集合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的历史类型。
步骤2)Kripke结构是一种数学结构,目前大部分被用在了模型检验上,可以用状态图表示,主要采用命题来刻画状态之间的转移关系。定义函数SMtoKRIPKE(),将所述步骤1)得到的状态机分别转换成kripke结构状态机,即以一个五元组KSM=(Sk,s0,R,P,L)表示,其中Sk是一个有限状态集合;s0∈Sk是初始状态;转移关系集合R∈Sk×Sk包括所有的转移关系,并且仅由转移关系构成,满足即对状态集合Sk中的任一状态s,都存在另一个状态s',使得从s到s'的转移关系属于R;P是一组原子命题及其否命题的集合;标记映射L=Sk→2P是Sk中的每个状态s与s所对应的p中的所有原子命题为真的命题集合的映射关系所构成的映射关系集,有状态s∈Sk。其中2P是状态s下P中的所有原子命题为真的命题集合,该集合是P的一个子集。
分别对CSM、SeSM、StSM执行UML状态机至kripke结构的状态机的转换,有KCSM=SMtoKRIPKE(CSM)、KSeSM=SMtoKRIPKE(SeSM)、KStSM=SMtoKRIPKE(StSM),其中KCSM为表示类图的kripke结构的状态机,KSeSM为表示顺序图的kripke结构的状态机,KStSM为表示状态图的kripke结构的状态机,
函数SMtoKRIPKE()包含了转换的具体过程为:
a.通过函数defconf()将状态机的默认状态stop转换成kripke结构状态机的初始状态CS,即CS=defconf(stop);
b.对状态机的当前状态CS,如果在kripke结构状态机中已经存在状态(CS,0),则进入步骤25),否则构造对应的kripke结构的状态(CS,0),计算其可能事件集PES(CS)。其中(CS,0)指kripke结构状态机中的不包含事件e的单个状态;
c.对PES(CS)中的每个事件e,构造对应的kripke状态(CS,e),连接(CS,0)与(CS,e)。其中(CS,e)指kripke结构状态机中的包含事件e的单个状态,(CS,e)与(CS,0)都是由状态机CS转换得到,二者区别在于(CS,e)存储了状态的转移信息,包括状态类型和转移路径;而(CS,0)存储了状态本身信息,例如状态名等。其中状态类型是指状态图中描述当前状态所属的类别,这些类别包括强制、并发、选择、循环等等,状态类型信息存储于kripke结构状态机的状态中;
d.对(NS,0)中的每个事件e,计算其所有可能的最大可触发转换集的集合SETS,执行集合SETS中的每个转换集ETS的所有转换,即ETS(CS,e),得到用下一层递归调用的状态集并用其更新当前状态CS后返回步骤b。其中更新当前状态CS通过函数CS=NextState(CS,ETS)实现;
f.返回底层递归调用的上一层,开始逐层连接(CS,e)与(NS,0),直至完成所有递归调用的(CS,e)与(NS,0)连接,即得到kripke结构状态机,其中NS为本层递归调用的状态,(NS,0)为下一层构造的kripke结构的状态(CS,0)。
上述转换中所用到的未详细说明函数计算公式如下表所示:
步骤3)定义函数transferCSM(),将表示类图信息的kripke结构状态机转换成PROMELA模型中的进程信息,具体为:遍历状态机KCSM,将获取类名转换成进程名proctype,获取类中变量转换成进程中变量,获取类间关系转换成进程间通信通道chan;
步骤4)定义函数transferStSM(),将表示状态图信息的kripke结构状态机转换成PROMELA模型中的进程内部执行信息,转换的具体过程为:
a.遍历kripke结构状态机的状态,并获取初始状态,将其作为当前状态;
b.判断当前状态的类型,若该状态为初始状态,则从转移关系集合R中获取该状态对应的转移路径后,进入步骤d;
若该状态是终止状态,则结束步骤4);
若该状态是一般状态,则依次获取状态类型、状态转移路径后进入步骤c;
c.将状态类型转换成PROMELA模型中的结构;若不存在状态类型,则直接进入步骤d;
d.根据转移路径,构建PROMELA模型中的跳转语句与状态转移,然后根据转移路径获取下一状态,用所述下一状态更新当前状态后返回步骤b。
步骤5)定义函数transferSeSM(),将表示顺序图信息的kripke结构状态机转换成PROMELA模型中的线性时序逻辑语句LTL,具体的转换过程为:
a.将顺序图对应的kripke结构状态机的所有状态,按照其在顺序图中的位置自上而下进行排序;
b.获取初始状态,并将其作为当前状态;
c.判断当前状态的类型:若该状态是终止状态,则进入步骤e,否则将当前状态的内容和转移路径分别转换成现行时序逻辑中的原子命题后进入步骤d;
d.根据转移路径获取下一状态,用所述下一状态更新当前状态后返回步骤c;
e.将所有原子命题按照其产生的时间先后顺序连接,将其作为线性时序逻辑语句。连接规则为<>(p1&&<>(p2&&<>(p3&&<>...))),其中p1,p2,…为按照时间先后顺序排序的原子命题序列;符号<>p1表示p1为真;符号p1&&p2表示求p1和p2的逻辑与,若p1与p2都为真,则p1&&p2为真,否则p1&&p2为假。
以上a至e的执行过程为自动将顺序图转换为LTL语句的方法,而在实际应用中未必需要完整的转换顺序图,因此设计人员也可以按照设计需要与正确性验证需求来人工书写LTL,与自动生成的LTL一并输入Spin工具进行验证。
步骤6)将得到的PROMELA模型转换成代码并输入Spin工具进行验证。其中Spin工具是由卡耐基梅隆大学贝尔实验室的形式化方法与验证小组开发,通过ISO-standard C编写,已经实现国际化的应用,并且目前已有许多学者与公司对Spin进行研究并提出模型样例,这些样例都能在Spin distribution中找到。Spin被用于分析逻辑一致性的异步系统,它首先使用PREOMELA语言规范化一个系统的验证模型,允许动态建立异步过程、非确定性情况选择、循环、跳转、局部和全局变量。在PREOMELA模型建立并储存于文件后,Spin执行关于系统操作的交互式、引导或随机的模拟,并能够生成一个执行详尽的或近似的关于系统正确性需求的验证的C程序与输出验证结果。
实施例:
为了方便描述,我们假定有如下简化的应用实例:
图4至图6所示的为一个简单的UML软件架构模型,包括类图和状态图,根据之前所定义的转换步骤,我们可以写出实现转换的伪代码如下所示:
图7是关于UML模型中的顺序模型,根据它的消息的先后关系转换得出相应的LTL公式,即<>(Call&&<>(Operation&&<>(Stop&&<>Giveup))),
综上,由UML模型转换得到的PROMELA伪代码如下:
最后,将转换后的PROMELA输入模型检验器Spin验证软件架构的UML模型的正确性。
应理解上述实施例仅用于说明本发明技术方案的具体实施方式,而不用于限制本发明的范围。在阅读了本发明之后,本领域技术人员对本发明的各种等同形式的修改和替换均落于本申请权利要求所限定的保护范围。

Claims (5)

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。
4.根据权利要求1所述的基于UML模型的软件架构正确性验证方法,其特征在于,所述步骤5)的具体流程为:
a.将顺序图对应的kripke结构状态机的所有状态,按照其在顺序图中的位置自上而下进行排序;
b.获取初始状态,并将其作为当前状态;
c.判断当前状态的类型:若该状态是终止状态,则进入步骤e,否则将当前状态的内容和转移路径分别转换成现行时序逻辑中的原子命题后进入步骤d;
d.根据转移路径获取下一状态,用所述下一状态更新当前状态后返回步骤c;
e.将所有原子命题按照其产生的时间先后顺序连接,将其作为线性时序逻辑语句。
5.根据权利要求1、2、3或4所述的基于UML模型的软件架构正确性验证方法,其特征在于,所述步骤2)的具体过程为:
21)将状态机的默认状态转换成kripke结构状态机的初始状态;
22)对状态机的当前状态CS,如果在kripke结构状态机中已经存在状态(CS,0),则进入步骤25),否则构造对应的kripke结构的状态(CS,0),计算其可能事件集PES;
23)对PES中的每个事件e,构造对应的kripke状态(CS,e),连接(CS,0)与(CS,e);
24)对PES中的每个事件e,计算其所有可能的最大可触发转换集的集合SETS,执行集合SETS中的每个转换集ETS的所有转换,得到用下一层递归调用的状态集并用其更新当前状态CS后返回步骤22);
25)返回底层递归调用的上一层,开始逐层连接(CS,e)与(NS,0),直至完成所有递归调用的(CS,e)与(NS,0)连接,即得到kripke结构状态机,其中NS为本层递归调用的状态,(NS,0)为下一层构造的kripke结构的状态(CS,0)。
CN201410319016.9A 2014-07-04 2014-07-04 一种基于uml模型的软件架构正确性验证方法 Expired - Fee Related CN104050087B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410319016.9A CN104050087B (zh) 2014-07-04 2014-07-04 一种基于uml模型的软件架构正确性验证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410319016.9A CN104050087B (zh) 2014-07-04 2014-07-04 一种基于uml模型的软件架构正确性验证方法

Publications (2)

Publication Number Publication Date
CN104050087A true CN104050087A (zh) 2014-09-17
CN104050087B CN104050087B (zh) 2016-08-03

Family

ID=51502973

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410319016.9A Expired - Fee Related CN104050087B (zh) 2014-07-04 2014-07-04 一种基于uml模型的软件架构正确性验证方法

Country Status (1)

Country Link
CN (1) CN104050087B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104375842A (zh) * 2014-12-05 2015-02-25 中国人民解放军理工大学 一种自适应软件uml建模及其形式化验证方法
CN105786514A (zh) * 2016-02-29 2016-07-20 东南大学 一种架构动态成熟度度量方法
CN105930722A (zh) * 2016-04-27 2016-09-07 宇龙计算机通信科技(深圳)有限公司 一种基于形式化描述的移动终端安全性检测方法及装置
CN106682343A (zh) * 2016-08-31 2017-05-17 电子科技大学 一种基于图的邻接矩阵的形式化验证方法
CN106910001A (zh) * 2017-01-11 2017-06-30 中国电力科学研究院 基于有限状态机的电力仿真软件时序状态转换方法及系统
CN110502237A (zh) * 2019-09-07 2019-11-26 创新奇智(广州)科技有限公司 一种基于状态图的软件界面原型设计方法与工具
CN110531963A (zh) * 2019-08-28 2019-12-03 上海交通大学 一种基于数据的工业软件系统行为模型还原方法
CN110908650A (zh) * 2019-10-18 2020-03-24 贵州云辰软件开发有限公司 一种基于状态机的软件快速编程方法
CN113268890A (zh) * 2021-06-25 2021-08-17 华北电力大学(保定) 一种行为树模型到Kripke结构的映射方法
CN113449151A (zh) * 2021-06-11 2021-09-28 西安电子科技大学 一种通讯软件的安全性的自动化验证方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020022942A1 (en) * 2000-05-11 2002-02-21 Nec Corporation Apparatus and method for producing a performance evaluation model
CN101571802A (zh) * 2009-06-19 2009-11-04 北京航空航天大学 一种嵌入式软件测试数据可视化自动生成方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020022942A1 (en) * 2000-05-11 2002-02-21 Nec Corporation Apparatus and method for producing a performance evaluation model
CN101571802A (zh) * 2009-06-19 2009-11-04 北京航空航天大学 一种嵌入式软件测试数据可视化自动生成方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FREDERIC MALLET 等: "On the semantics of UML/MARTE Clock Constraints", 《OBJECT/COMPONENT/SERVICE-ORIENTED REAL-TIME DISTRIBUTED COMPUTING,2009.ISORC"09.IEEE INTERNATIONAL SYMPOSIUM ON》 *
张琛: "基于UML2.0模型的测试与验证方法", 《万方学位论文》 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104375842A (zh) * 2014-12-05 2015-02-25 中国人民解放军理工大学 一种自适应软件uml建模及其形式化验证方法
CN105786514A (zh) * 2016-02-29 2016-07-20 东南大学 一种架构动态成熟度度量方法
CN105786514B (zh) * 2016-02-29 2019-01-11 东南大学 一种架构动态成熟度度量方法
CN105930722B (zh) * 2016-04-27 2018-11-06 宇龙计算机通信科技(深圳)有限公司 一种基于形式化描述的移动终端安全性检测方法及装置
CN105930722A (zh) * 2016-04-27 2016-09-07 宇龙计算机通信科技(深圳)有限公司 一种基于形式化描述的移动终端安全性检测方法及装置
CN106682343A (zh) * 2016-08-31 2017-05-17 电子科技大学 一种基于图的邻接矩阵的形式化验证方法
CN106682343B (zh) * 2016-08-31 2020-09-25 电子科技大学 一种基于图的邻接矩阵的形式化验证方法
CN106910001A (zh) * 2017-01-11 2017-06-30 中国电力科学研究院 基于有限状态机的电力仿真软件时序状态转换方法及系统
CN106910001B (zh) * 2017-01-11 2021-04-30 中国电力科学研究院有限公司 基于有限状态机的电力仿真软件时序状态转换方法及系统
CN110531963A (zh) * 2019-08-28 2019-12-03 上海交通大学 一种基于数据的工业软件系统行为模型还原方法
CN110502237A (zh) * 2019-09-07 2019-11-26 创新奇智(广州)科技有限公司 一种基于状态图的软件界面原型设计方法与工具
CN110908650A (zh) * 2019-10-18 2020-03-24 贵州云辰软件开发有限公司 一种基于状态机的软件快速编程方法
CN113449151A (zh) * 2021-06-11 2021-09-28 西安电子科技大学 一种通讯软件的安全性的自动化验证方法
CN113449151B (zh) * 2021-06-11 2022-09-20 西安电子科技大学 一种通讯软件的安全性的自动化验证方法
CN113268890A (zh) * 2021-06-25 2021-08-17 华北电力大学(保定) 一种行为树模型到Kripke结构的映射方法

Also Published As

Publication number Publication date
CN104050087B (zh) 2016-08-03

Similar Documents

Publication Publication Date Title
CN104050087A (zh) 一种基于uml模型的软件架构正确性验证方法
Mayerhofer et al. xMOF: Executable DSMLs based on fUML
CN107783758B (zh) 一种智能合约工程方法
US8640084B2 (en) Generating validation test suites
CN104866426A (zh) 软件测试综合控制方法及系统
CN108037913B (zh) xUML4MC模型到MSVL语言程序的转换方法、计算机可读存储介质
CN105975269B (zh) 一种基于流程模型的需求验证方法
CN105677306A (zh) 自动化脚本的编写方法和装置
Lima et al. A framework for verifying deadlock and nondeterminism in UML activity diagrams based on CSP
Przigoda et al. Verifying the structure and behavior in UML/OCL models using satisfiability solvers
Engels et al. Model-based verification and validation of properties
US6516306B1 (en) Model checking of message flow diagrams
Seidner et al. Formal methods for systems engineering behavior models
CN113919158A (zh) 一种用于飞行控制面板的仿真方法、装置及存储介质
Li et al. Automated functional scenarios-based formal specification animation
Abid et al. A Real-Time Specification Patterns Language
CN111580409A (zh) 面向实时嵌入式系统的故障仿真测试方法
Priya et al. Test Case Generation from UML models-A survey
De Ruvo et al. An eclipse-based editor to support lotos newcomers
WO2013161057A1 (ja) ソースコード検査方法及び装置
Weiß et al. Towards establishing formal verification and inductive code synthesis in the PLC domain
CN114064469A (zh) 接口自动化测试方法及存储介质
Zhang An Approach for Extracting UML Diagram from Object-Oriented Program Based on J2X
Mukund Finite-state automata on infinite inputs
Sun et al. A hierarchical CPN model automatically generating method aiming at multithreading program algorithm error detection

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160803

Termination date: 20210704

CF01 Termination of patent right due to non-payment of annual fee