基于 Kripke 结构的 UML 状态图的形式语义和自动证明1.doc
《基于 Kripke 结构的 UML 状态图的形式语义和自动证明1.doc》由会员分享,可在线阅读,更多相关《基于 Kripke 结构的 UML 状态图的形式语义和自动证明1.doc(9页珍藏版)》请在三一办公上搜索。
1、精品论文推荐基于 Kripke 结构的 UML 状态图的形式语义和自动证明1赵也非,杨宗源,谢谨奎 华东师范大学信息学院计算机系,上海 (200241) E-mail: derekzhaoecnu摘要:给 UML 赋予形式化的动态语义,可以在软件生命过程早期,对系统进行自动推导 和证明。把模型检测应用于 UML,是在软件架构中引入形式化方法的一个重要方向。本文使用 UML 状态图表示变量值的迁移,而非系统状态的迁移,以处理不能穷举系统有限状态 自动机的情况;显式的提出了 UML 状态图和 Kripke 结构语义的映射关系;最后,用实验验 证了该理论的有效性。本文提出的映射规则是双射的,因此,既
2、可以应用于设计阶段的软件正向工程,又可以应用于实现阶段的逆向软件工程。关键词:UML;状态图;Kripke 结构;模型检测;软件架构 中图分类号:TP311.51. 引言UML(Unified Modeling Language)是一种图形化的面向对象建模语言,包括类图,对象 图,状态图,序列图,构件图等,可以描述系统的静态拓扑结构和动态行为。现在 UML (1, 2)已经成为工业界事实的标准建模语言。但是,UML 是一种元模型,只有静态语义,没有 形式化的动态语义,不能对系统进行自动推理和证明。模型检测(3, 4)技术使用时态逻辑描述系统属性,使用 Kripke 结构表示系统状态空间, 可以
3、自动的穷举证明系统属性是否在状态空间上成立。现在模型检测技术已经广泛应用于硬 件验证,通信协议分析,临界安全系统验证等。但是 Kripke 结构的抽象层次较低,模型检 测通常是以文本(代码)的形式,出现在系统实现阶段,而非设计阶段。近年来,把模型检测应用于软件架构,已成为一个重要方向。P. Inverardi(5,6)在设计 阶段引入类 UML 图符,构造 UML 图符到 ADL 的映射,通过层层模型精化,转换为 SPIN 代码。该理论已形成一套框架 CHARMY,应用于软件设计阶段。V.S.W. Lam(7)提出,把 UML 状态图转换为 pi-calculus,再根据 LTS 结构到 Kr
4、ipke 结构的映射关系,将其转换为 SPIN 代码。文献(8,9,10)首先给 UML 状态图、活动图赋予操作语义,然后将其转换为模型检 测代码。这些研究的主要思路是:首先给出 UML 图符的操作语义,然后构造系统状态迁移 图,最后生成模型检测代码。本文的研究内容和意义在于:(1) UML 状态图的某些子集和 Kripke 结构之间,具有隐式的映射关系。本文明确的给 出了定义和映射规则,显式的提出了 UML 状态图和 Kripke 结构之间一对一的映射关系,给 UML 状态图赋予了形式化语义。(2) 在把模型检测应用于软件架构的研究工作中,通常把 UML 状态图(序列图等)的 状态进行泛化处
5、理,使用一个变量记录系统的状态迁移,在很多情况下是有效的。但是,在 不能显式的画出系统的有限状态机时,例如摆渡问题,该方法无效。本文用 UML 状态图表 示变量值的迁移,而非状态的迁移,解决了不能穷举所有系统状态的问题。(3) 实现了 UML 状态图到 Kripke 结构语义的映射之后,使用时态逻辑描述系统的关键 属性。模型检测器可以自动证明该系统属性是否在系统状态空间上成立。1 本课题得到国家自然科学基金(60703004);高等学校博士点基金(20060269002); 华东师范大学 2007 年优 秀博士研究生培养基金的资助。- 9 -(4) 本文提出的理论,不但可以应用于软件正向工程,
6、即用 UML 状态图以图形化的方法进行系统设计,再根据映射规则,自动生成 Kripke 结构语义;还可以应用于软件逆向工 程,即已知系统的 Kripke 结构语义,可以将其自动转换为 UML 状态图,呈现给用户直观的 图形化设计方案。本文的结构是:第 2 节给出了 Kripke 结构的形式化描述,NuSMV 输入语言是 Kripke 结构的抽象表示;第 3 节,UML 状态图和 Kripke 结构各组成元素之间具有一一映射关系, 并给出定义和映射规则;第 4 节,用 UML 状态图给出了一个临界资源竞争的设计方案,应 用本理论,生成 Kripke 结构语义,对系统关键属性进行自动证明;第 5
7、节是结论和展望。2. Kripke 结构和 NuSMV 输入语言Kripke 结构是一个四元组,k = ( Qk ,I k ,k ,Lk )。Qk 是有限状态的集合;I k Qk ,是初始状态的集合;k Qk Qk ,是一个迁移关系,表示一个状态演化到其后继状态;Lk :kQ 2 AP ,是一个函数,输入一个状态,返回在该状态成立的原子断言的集合。使用 Kripke 结构,可以表示系统的静态拓扑和动态行为。每个系统状态,和在该状态 中成立的原子断言的集合相联系。NuSMV(11, 12)是基于 Kripke 结构的自动模型检测器,用于证明用时态逻辑描述的、 有限状态系统的属性。NuSMV 输入
8、语言,用系统内变量值的变化,表示状态之间的迁移, 是 Kripke 结构的高层抽象表示。使用 NuSMV 输入语言,作为 Kripke 结构的抽象表示。一个模块(module)的定义分为三部分:变量定义,变量的初始化,在下一状态变量值的 改变。模块之间的组装,分为同步组装和异步组装,模块之间的参数传递是通过按引用调用 (call-by-reference)。3. UML 状态图的 Kripke 结构语义3.1 变量声明定义 1 变量声明. 函数 VD: Vname Vtype。输入 Vname,代表变量名,输出 Vtype, 代表变量类型。NuSMV 输入语言的变量类型包括:bool 型,枚举
9、型,整数范围。变量声明的 BNF 范式为:S VAR VD/ 变量声明VD Vname : Vtype; VD | Vname : Vtype;Vname (a.z)Vname | (A.Z)Vname | a| .| z | A | . |ZVtype Boolean | EnumElement | BoundInt/ bool 型,枚举型,整数范围EnumElement Vname, EnumElement | VnameBoundInt StartIndex . EndIndex/ 开始下标.结束下标规则 1. 在 UML 状态图中,符合上述 BNF 范式的文本,映射为 NuSMV 输入
10、语言中的 变量声明。下面是 NuSMV 代码中,变量声明的一个典型例子:VAR x : boolean; color : red, blue, green; n : 2.9;3.2 变量初始化定义 2 变量初始化. 函数 VI:Vname Vvalue,给一个变量名 Vname,赋予一个初始 值 VvalueNuSMV 输入语言的变量初始化语句的 BNF 范式为:S ASSIGN VI/ 变量初始化VI init(Vname) := Vvalue; VI | init(Vname) := Vvalue;Vvalue true | false | (value EnumElement) | (n
11、um BoundInt)Vname 在上一节中定义,Vvalue 要在变量定义类型的取值范围之内,否则为非法。规则 2.在 UML 状态图中,初始状态内部的变量赋值,若符合上述 BNF 范式,则映射 为的 NuSMV 输入语言的变量初始化。图 1 变量初始化 实心圆圈表示初始点,起始点指向的状态是初始状态。初始状态内部是变量赋值。 由定义 2 和规则 2,图 1 所示的 UML 状态图,可以生成 NuSMV 代码:ASSIGNinit(x) := true; init(color) := green; init(n) := 3;3.3 变量值的顺序迁移变量值的变迁包括 3 种:顺序迁移,无冲突
12、选择迁移,有冲突选择迁移。定义 3 变量值的顺序迁移. 函数 ST: Vname VnextExp,对一个变量名 Vname,变量值 的变迁有且只有一种可能 VnextExp,VnextExp 是合法的变量运算表达式。顺序迁移的 BNF 范式为:S ASSIGN VN/ variable next() statementVN next(Vname) := Expression; VN | next(Vname) := Expression Expression Expression Operator Expression | Operator Expression | Vname Operat
13、or + | - | * | / | mod | & | ! | .规则 3. 在 UML 状态图中,var 在源状态中,exp 在目标状态中,若 var Vname exp VnextExp,则映射为符合上述 BNF 范式的 NuSMV 输入语言中的变量值顺序迁移。图 2 变量值的顺序迁移使用 UML 状态图表示变量值的变化,而不是不同状态之间的迁移。根据定义 3 和规则3,图 2 所示的 UML 状态图,可以生成相应的 NuSMV 代码为:next(b0) := !b0;3.4 变量值的选择迁移定义 4 变量值的无冲突选择迁移. 函数 VNC:Vname coni VnextExpi ,V
14、name 是变 量名,coni 是第 i 个卫式条件,VnextExpi 是第 i 个表达式,且对 coni ,存在 j 1.n,i1.n使得 coni =true,且对任意的 k 1.n,k j conk =false无冲突选择的 BNF 范式为:S ASSIGN VNC/ variable next case statementVNC next(Vname) := ConExp esac/ ConExp: Condition ExpressionConExp Condition : Expression; ConExp | Condition : Expression;其中,Conditi
15、on 表示卫式条件,Expression 表示表达式。规则 4. 在 UML 状态图中,一个变量名,在不同的卫式条件下,有且只有一个卫式条 件成立,则此变量被赋予一个确定的值。在 NuSMV 输入语言中,映射为符合上述 BNF 范 式的 NuSMV 输入语言的变量值无冲突选择迁移。图 3 变量值的无冲突选择迁移根据定义 4 和规则 4,图 3 所示的 UML 状态图,生成的 NuSMV 代码为:next(v) := case con1 : E1;con2 : E2;conn : En;定义 5 有冲突选择迁移. 函数 STC:Vname ( coni VnextEXpi ),对 coni ,i
16、1.n j,k 1.n,使得 con j =true conk =true j k。有冲突选择的 BNF 范式,和无冲突选择迁移的 BNF 范式相类似,不再赘述。规则 5.在 UML 状态图中,一个变量名 Vname,在不同的卫式条件( coni )下,可能有多 个卫式条件成立,则此变量被非确定选择的赋予一个表达式(VnextEXpi )。在 NuSMV 输入 语言中,映射为符合上述 BNF 范式的变量值有冲突选择迁移。图 4 是 UML 状态图中,变量值有冲突选择迁移的一个典型例子,可以应用定义 5 和规则 5,生成相应的 NuSMV 代码。3.5 同步并发组合图 4 变量值的有冲突选择迁移
17、上一节我们讨论了 UML 状态图和 NuSMV 输入语言的模块定义之间的映射关系,本节 会讨论模块间的嵌套关系。一个模块可以由若干个子模块组成。定义 6 同步并发组合.同时移动。V1 |V2 | Vn ,n 个类型为 module 的变量并发组合,且按一步同步并发组合的 BNF 范式为:S VAR VD/ variable definitionVD Vname : Mname; VD | Vname : Mname;/ 约束: Mname (module)规则 6. 在 UML 状态图中,若干个状态的并发组合,在 NuSMV 输入语言中,映射为若干个变量,且其为符合上述 BNF 范式的,已定义
18、模块的实例化。如图 5 所示,模块 main 由 3 个子模块 bit0,bit1, bit2 组成,这 3 个子模块是同步并发 组合关系,假设已定义了一个模块 counter。bit0,bit1,bit2 是 cell 的实例化,且这 3 个模 块按一步移动。图 5 同步并发组合根据定义 6 和规则 6,图 6 所示的 UML 状态图,对应的 NuSMV 代码为:Module cell(in)Module mainVAR bit0 : cell(1); bit1 : cell(bit0.done); bit2 : cell(bit1.done);3.6 异步并发组合定义 7 异步并发组合.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Kripke 结构的 UML 状态图的形式语义和自动证明1 结构 状态图 形式 语义 自动 证明
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5194169.html