当前位置: 首页 > 专利查询>东南大学专利>正文

一种基于UML模型的软件架构正确性验证方法技术

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

【技术实现步骤摘要】
一种基于UML模型的软件架构正确性验证方法
本专利技术属于计算机软件领域,涉及一种基于UML的软件架构正确性验证方法。
技术介绍
随着软件系统规模和复杂性的不断增大,为保证软件质量,提高软件可靠性、可重 用性和可维护性,软件设计的核心已从传统计算模式转向对系统的总体结构,即以连接件 (connect)、部件和连接件交互约束为核心的软件体系结构(Software Architecture,以下 简称SA)的设计和规范。SA主要着眼于软件系统的全局组织形式,在更高层次上把握系统 各组件之间的内在联系,并从全局的、整体的角度去理解和分析整个系统的行为和特性。然 而由于SA的设计的关系到后续软件开发的成功与否,因此保障SA设计的正确性、安全性等 属性变的尤为重要,形式化验证方法就可以很好地解决这个问题。 越来越多的形式化验证方法及工具应用于SA的验证,其中基于模型检验(Model Checking)的简单进程元语言解释器Spin能有效准确地实现软件体系结构的验证工作。模 型检验的一般流程如图2所示,并且Spin工具的实用性已经得到验证,但是由于其支持的 建模语言PR0MELA有着难以直观理解、不具有通用性等特点,使得SA的设计难以体现一般 化。本专利技术针对PR0MELA语言的相关缺陷,采用UML对SA进行建模,提出一种将UML模型 转换成PR0MELA的模型转换方法,并利用其转换结果对SA设计进行模型检验。UML (统一建 模语言)是一种将软件开发过程中出现的各种模型用可视化图形来描述的语言。它融合了 多种面向对象开发方法的优点,采用统一的图形和符号从多个视角描述软件系统的各种抽 象模型,获得了国际标准化组织的认可,并被国际软件界广泛接纳。
技术实现思路
技术问题:本专利技术提供一种用于对软件体系结构进行验证,可以直接对软件体系 结构进行形式化建模,很好地对通用建模语言所建的软件体系结构模型进行验证,通用性 好的基于UML模型的软件结构正确性验证方法。 技术方案:本专利技术的基于UML模型的软件架构正确性验证方法,包括如下步骤: 步骤1)将包括类图、状态图和顺序图的UML模型分别定义为状态机,即以一个 三元组SM= (S,T,S_)来表示,其中,S为状态集合,T为转换集合,st()p是默认状态,有 Stop ^ S ; 步骤2)将所述步骤1)得到的状态机分别转换成kripke结构状态机,即以一个五 元组KSM= (Sk,S(l,R,P,L)表示,其中Sk是一个有限状态集合; S(le Sk是初始状态;转移关 系集合R e SkX Sk包括所有的转移关系,并且仅由转移关系构成;P是一组原子命题及其否 命题的集合;标记映射L是S k中的每个状态s与s所对应的p中的所有原子命题为真的命 题集合的映射关系所构成的映射关系集。 步骤3)将表示类图信息的kripke结构状态机转换成PR0MELA模型中的进程信 息,具体为:将获取类名转换成进程名,获取类中变量转换成进程中变量,获取类间关系转 换成进程间通信通道; 步骤4)将表示状态图信息的kripke结构状态机转换成PR0MELA模型中的进程内 部执行信息; 步骤5)将表示顺序图信息的kripke结构状态机转换成PR0MELA模型中的线性时 序逻辑语句; 步骤6)将得到的PR0MELA模型转换成代码并输入Spin工具进行验证。 本专利技术方法中,步骤1)中状态集合S包括: 原子状态sinitial = (n, ac, en, ex),其中η为状态名,ac、en、ex分别为处于原子状 态、进入原子状态、退出原子状态时SM执行的动作序列; 或状态SOT = (n,SOT,1,Ts,ac,en,ex),其中SOT为或状态sOT的子状态的集合;1是 处于激活状态的子状态的编号;Ts是或状态s OT的所有子状态间转换的集合,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.将状态类型转换成PR0MELA模型中的结构; d.根据转移路径,构建PR0MELA模型中的跳转语句与状态转移,然后根据转移路 径获取下一状态,用所述下一状态更新当前状态后返回步骤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支持的模型PR0MELA,本文档来自技高网
...

【技术保护点】
一种基于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. 一种基于UML模型的软件架构正确性验证方法,其特征在于,该方法包括如下步骤: 步骤1)将包括类图、状态图和顺序图的UML模型分别定义为状态机,即以一个三元组 SM = (S,T,s_)来表示,其中,S为状态集合,T为转换集合,st()p是默认状态,有 s_ e S ; 步骤2)将所述步骤1)得到的状态机分别转换成kripke结构状态机,即以一个五元组 KSM = (Sk,S(l,R,P,L)表示,其中Sk是一个有限状态集合; S(l e Sk是初始状态;转移关系集 合R e SkXSk包括所有的转移关系,并且仅由转移关系构成;P是一组原子命题及其否命题 的集合;标记映射L是S k中的每个状态s与s所对应的p中的所有原子命题为真的命题集 合的映射关系所构成的映射关系集; 步骤3)将表示类图信息的kripke结构状态机转换成PROMELA模型中的进程信息,具 体为:将获取类名转换成进程名,获取类中变量转换成进程中变量,获取类间关系转换成进 程间通信通道; 步骤4)将表示状态图信息的kripke结构状态机转换成PROMELA模型中的进程内部执 行信息; 步骤5)将表示顺序图信息的kripke结构状态机转换成PROMELA模型中的线性时序逻 辑语句; 步骤6)将得到的PROMELA模型转换成代码并输入Spin工具进行验证。2. 根据权利要求1所述的基于模型转换的软件架构建模与验证方法,其特征在于,所 述步骤1)中状态集合S包括: 原子状态sinitial = (n, ac, en, ex),其中η为状态名,ac、en、ex分别为处于原子状态、 进入原子状态、退出原子状态时SM执行的动作序列; 或状态sOT = (n,SOT,1,Ts,ac,en,ex),其中SOT为或状态sOT的子状态的集合;1是处于 激活状态的子状态的编号;Ts是或状态s的所有子状态间转换的集合,ac、en、ex分别为 处于或状态、进入或状态、退出或状态时SM执行的动作序列; 与状态sand = (n, Smd, ac, en, ex),其中Sand为与状态smd的子状态的集合,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的触发 事件...

【专利技术属性】
技术研发人员:李必信俞析蒙陈艺孔祥龙王璐璐
申请(专利权)人:东南大学
类型:发明
国别省市:江苏;32

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

1