收藏本站
收藏 | 手机打开
二维码
手机客户端打开本文

OCL约束验证与实现方法研究

罗清胜  
【摘要】:UML是一种通用的可视化建模语言,用于对软件进行描述、可视化处理、构建软件系统的文档。作为UML标准的一部分,对象约束语言(Object ConstraintLanguage,OCL)用来精确地描述模型的约束条件以及相互之间的关系。OCL是一种声明式语言,也是一种形式化语言。 施加于模型之上的三种常用OCL约束是前置条件、后置条件、不变式。前置条件表示当操作被激发时输入参数和模型状态的可接受值。后置条件表明操作完成时必须满足的条件,它表示操作完成时检测该操作的结果值和模型的状态。不变式是在属性的生命期内一直保持为真的规则。为了保证程序执行过程中这些约束得以满足,需要对约束进行验证。在运行时检测约束的冲突有助于软件系统的开发,尤其是大型系统和嵌入式实时系统的开发。 本文的目标是对模型施加必要的约束,得到能检测出运行时约束冲突的代码,这就要求分别为前置条件、后置条件、不变式设计出相应的代码模式。代码模式描述了OCL约束对应的可执行的Java代码(即OCL-Java代码)如何被插入到Java程序中的方式。在程序运行时一旦检测到约束的冲突,代码模式能够抛出相应的异常。 文中利用UML建模工具为系统建立模型,并基于OCL理论为该模型施加必要的约束,从而得到精确的模型。应用建模工具的自动生成代码功能得到的模型对应的Java程序中,OCL约束只以注释形式出现,本文实现了从程序中抽取出这些OCL约束。由于OCL不是一种编程语言,其约束不能在程序中直接执行,本文使用的目标语言是Java,因此要把OCL约束转化为可直接执行的Java代码(即OCL-Java代码)。为此,本文详细阐述了OCL约束转化为OCL-Java代码的实现过程。为了能在程序运行时检测出冲突的约束,需要把OCL-Java代码插入到Java程序中,使之与Java程序一起执行,从而能有效地验证声明的约束。针对简单的代码插入方案和封装方法存在的不足,本文提出了改进的代码插入方案,分别设计了前置条件代码模式、后置条件代码模式、不变式代码模式,这三种代码模式都应用了异常处理技术从而能够捕获冲突的约束。本文充分应用了Java解析器能解析Java文件的特性,实现了把OCL-Java代码插入到Java程序中。最后,应用本文提出的OCL约束验证框架在实例模型的基础上分别对不变式、前置条件、后置条件进行了验证。


知网文化
【相似文献】
中国期刊全文数据库 前20条
1 田丰;邢建英;;一个基于Mathematica平台的程序安全性自动验证工具[J];计算机与现代化;2011年07期
2 罗清胜;黎升洪;;基于划分分析方法的测试用例生成[J];现代计算机;2006年06期
3 顾建丰;陈名铭;周秀芳;;形式化语言B与UML/OCL的比较[J];电脑知识与技术;2009年34期
4 陈怡海;缪淮扣;;OCL与Object-Z作为UML约束语言的分析比较[J];计算机科学;2004年12期
5 钟珞,管昌生,赵愚,潘昊;逐步求精的一种模型[J];武汉工业大学学报;1995年03期
6 刘清;基于时态逻辑演算的程序验证[J];南昌大学学报(理科版);1990年03期
7 邹姝稚;对Wirth一个不变式的修正[J];河海大学学报(自然科学版);2000年06期
8 高晓雷;缪淮扣;;空间完备性理论及其测试[J];计算机工程;2009年09期
9 李昭仁;一个形式化的程序设计方法及其实验系统[J];计算机学报;1985年01期
10 张子丘;郑宇军;李海英;;基于B方法的弹道计算机程序设计技术[J];计算机工程与设计;2005年12期
11 李志武,王安荣;局部公平网的充要条件研究[J];西安电子科技大学学报;2002年06期
12 林佳一,刘进,何克清;面向对象的契约式程序设计[J];计算机应用;2005年04期
13 陈国营,刘宗田;一个不变式断言生成器[J];计算机工程与设计;1987年06期
14 王瑞祥,郝忠孝;关于主动数据库属性依赖及公理系统的研究[J];齐齐哈尔大学学报;2004年01期
15 郑宇军;王金全;薛锦云;;使用SPEC#开发高可靠性的物流信息系统[J];计算机工程与设计;2006年22期
16 王稚慧,屈延文;不变式产生器——程序验证的重要工具[J];计算机学报;1984年03期
17 江泽凡;王林章;李宣东;郑国梁;;基于UML顺序图的测试方法[J];计算机科学;2004年07期
18 文志诚;缪淮扣;孙军梅;;基于Object-Z多态推理[J];计算机科学;2006年07期
19 查冰;杨宗源;;基于JML的面向对象设计指导测试方法的研究与实现[J];计算机应用与软件;2008年04期
20 王夕宁,罗燕京,李红霞;一种模型驱动的原型生成方法研究实现[J];南京大学学报(自然科学版);2005年05期
中国重要会议论文全文数据库 前10条
1 郑宇军;石海鹤;薛锦云;;Spec#语言中的形式化特性[A];2005年全国理论计算机科学学术年会论文集[C];2005年
2 廖理几;郝伟;金泽宸;蒋毅坚;易明;;用张量不变式和协变式方法计算非磁性晶体喇曼效应的张量元[A];中国物理学会光散射专业委员会成立十周年暨第六届学术会议论文集(上)[C];1991年
3 单锦辉;侯姗姗;;一种基于合约的构件易测试性设计方法[A];第四届中国测试学术会议论文集[C];2006年
4 季浩;石慧;刘晓平;;一种基于最小冲突集的约束冲突消解方法[A];全国第19届计算机技术与应用(CACIS)学术会议论文集(下册)[C];2008年
5 孙旭花;;变式的角度 数学的眼光[A];全国高师会数学教育研究会2006年学术年会论文集[C];2006年
6 王军庄;常鲜戎;;OCL技术在电力系统仿真中的应用[A];中国高等学校电力系统及其自动化专业第二十四届学术年会论文集(下册)[C];2008年
7 廖理几;金泽宸;郝伟;;关于超喇曼散射的宏观理论[A];中国物理学会光散射专业委员会成立十周年暨第六届学术会议论文集(下册)[C];1991年
8 黄雨;袁崇义;王捍贫;;工作流模型精化及验证[A];2005年全国理论计算机科学学术年会论文集[C];2005年
9 乔永芬;赵淑红;;广义经典力学中非保守系统Lagrange方程的积分因子与守恒定理[A];中国力学学会学术大会'2005论文摘要集(下)[C];2005年
10 秦拯;龚发根;张大方;;一分布式入侵检测系统中告警相关的研究与实现[A];第三届中国测试学术会议论文集[C];2004年
中国博士学位论文全文数据库 前10条
1 文志诚;面向对象软件的形式验证技术[D];上海大学;2007年
2 钱鹏飞;基于模糊相似度的异构本体映射、合并及校验方法的研究[D];上海交通大学;2008年
3 范红;安全协议形式化分析理论与方法[D];中国人民解放军信息工程大学;2003年
4 李隆;使用事务内存同步机制的并行程序验证的研究[D];中国科学技术大学;2008年
5 任胜兵;基于图变换的可视化层次用例建模及演化方法研究[D];中南大学;2007年
6 李勇华;目标和场景相结合的需求工程[D];武汉大学;2006年
7 韦娜;基于无死锁初始标识的Petri网控制器设计[D];西安电子科技大学;2008年
8 赵咪;基于一般Petri网的自动制造系统活性控制器设计[D];西安电子科技大学;2009年
9 吕嘉;基于开放时态逻辑的面向方面程序形式化验证和模块推理研究[D];浙江大学;2009年
10 许庆国;基于自动机的时间系统形式验证技术[D];上海大学;2007年
中国硕士学位论文全文数据库 前10条
1 罗清胜;OCL约束验证与实现方法研究[D];江西财经大学;2006年
2 王燕妮;基于不变式的软件故障检测与恢复技术研究[D];国防科学技术大学;2010年
3 崔海渤;Java语言的类和多态性的公理语义[D];大连理工大学;2005年
4 宋英杰;基于OCL的Web服务组合形式化约束研究[D];大连海事大学;2009年
5 柴艳欣;基于OCL约束的状态图测试方法的研究[D];重庆大学;2010年
6 雷富兴;基于Hoare逻辑的软件形式化验证技术研究[D];解放军信息工程大学;2010年
7 张海峰;UML技术与测试驱动开发技术结合的研究[D];南京航空航天大学;2008年
8 冯细光;基于OCL的Web服务测试方法研究[D];湖南科技大学;2010年
9 查冰;OCL-JML转换方法的研究及其在软件开发过程中的应用[D];华东师范大学;2007年
10 田丰;基于不变式的程序验证工具的设计与实现[D];国防科学技术大学;2011年
中国重要报纸全文数据库 前10条
1 湖南 姚正喜;OCL功率放大器中偏置电阻的计算(上)[N];电子报;2009年
2 湖南 姚正喜;OCL功率放大器中偏置电阻的计算(下)[N];电子报;2009年
3 刘刚/译;抬高商誉 误导股民[N];中国财经报;2002年
4 徐楠;谈异议程序的设置[N];中国工商报;2000年
5 毕小远;淮安工商六招整治排污企业[N];江苏经济报;2005年
6 张小梅 张骅;安徽民营经济驶入快车道[N];中国企业报;2004年
7 陆建辉;公司场内出车祸责任谁担[N];江苏法制报;2006年
8 於海滨;从公告内容更新开始做起[N];中国国土资源报;2007年
9 记者 左西玲;西宁市工商系统在治理软环境中出实招[N];青海日报;2000年
10 毕小远;淮安工商八条措施建设“安全淮安”[N];江苏经济报;2004年
 快捷付款方式  订购知网充值卡  订购热线  帮助中心
  • 400-819-9993
  • 010-62982499
  • 010-62783978