面向对象程序语言的语义,规范及验证

来源 :北京大学 | 被引量 : 2次 | 上传用户:bin_go_0820
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
面向对象(OO)程序语言和开发方法的发展较好满足了软件规模快速发展的需要,带来了计算机软件领域的重大变革。近年来,随着社会对软件系统可靠性和正确性要求的不断增强,开发出行之有效的支持OO程序的开发和验证的技术变得越来越重要和紧迫。为开发强大而实用的OO程序验证系统,必须考虑两个互相依赖的问题:第一,为OO语言定义一个形式化语义。该语义应能处理各种重要的OO特性,如继承,动态方法绑定等;它应足够高级以支持深入的理论研究,又能指导实际验证系统的开发和实用化。第二,开发有效的描述和验证OO程序的技术,既能有效支持程序的验证过程,又使程序的描述和验证可以以模块化的方式进行,从而提高可能验证的程序的规模。本文以开发实用的OO程序验证系统为研究目标,以模型语言μJava为参考研究对象,考查了上述两个问题。μJava是Java的一个串行子类,它包含了许多关键的OO特性,例如引用语义,对象共享,继承和动态方法绑定等,因此是具有典型性和代表性的研究对象。本文首先提出了一个通用的面向对象存储模型,并在此基础上定义了一个面向对象的Separation Logic(OOSL),用以描述OO程序的执行状态。进而以该逻辑作为描述程序状态的断言语言,为μJava定义了一个最弱前条件语义,证明了该语义的许多良好性质,包括其可靠性和完全性。以这一语义为基础,本文研究了OO程序验证中的许多基本问题,如方法规范,对象不变式,行为子类型等。本文还着眼于实际可用的验证系统,为此在前面工作的基础上逐步扩展μJava,为其加入了丰富的规范描述结构用以描述程序的行为,开发了一个验证框架来检验OO程序是否满足用户提供的规范。所开发的验证框架能支持OO程序的模块化规范描述和验证,避免重复验证代码。文中通过一些典型OO程序实例,说明了OO程序的规范描述和验证工作可能如何在此验证框架下很好进行。文中也将提出的技术与国内外相关工作做了深入细致的对比。本文涉及到了当前的许多研究热点,包括Separation Logic,抽象规范,模块化验证等,在这些方面本文紧跟着理论前沿提出自己的见解;而在一些人们长期关注的理论问题上,例如OO程序的存储模型,对象不变式等问题上,也有些新的认识和观点。综上所述,本文中给出的OO程序验证技术更易于理解,也更贴近工程实践,对开发实用的OO程序验证工具有很好的指导意义。
其他文献
近年来,高性能并行计算机随着多核处理器的应用已取得了迅速发展和推广应用,然而其硬件架构的日益复杂也同时对并行应用程序和软件的设计与开发技术提出了更艰巨的挑战。为有
<正>为积极响应省教育厅的号召,在看完《课内比教学,课外访万家》视频推进会以后,我校就立即行动起来,各级紧密部署,展开了如火如荼的"访万家"活动。走上工作岗位已有些时日
期刊
为解决高凝点、高含蜡石油原油运输的困难,热媒炉被使用于原油输送过程中。由于热媒炉内燃烧过程造成结焦、积尘,需要定期清扫以保证传热过程的换热效率。目前主要依靠工人进
经济全球化的发展造就了复杂多变、竞争激烈的市场形势,信息化是当前制造企业提升竞争力、应对动态变化市场的主要措施之一。在企业信息系统解决方案中,制造执行系统承上启下
近年来,企业社会责任受到企业界和学者以及大众越来越多的关注。企业作为社会的一个组成部分在发展壮大自己的过程中,也要对企业所依赖的社会履行相应的义务,而阻碍企业履行
外商直接投资(Foreign Direct Investment,FDI)的技术外溢效应一直是经济学界研究的热点问题。外商直接投资的技术外溢存在性和影响因素,因研究对象的不同而差异巨大。国内对
随着计算机通信技术的不断发展,网络规模不断增大,网络攻击技术也在不断进步,网络攻击者经常在一个网络系统中利用多个相互关联的脆弱性(Vulnerability)来逐步提高自身的权限
目的:探讨抗心绞痛药物联合奥扎格雷钠注射液治疗冠心病不稳定性心绞痛的临床效果分析。方法:将2013年1月-2014年1月前来我院治疗不稳定性心绞痛的86例患者病历进行回顾与分
传统的结构优化设计方法不能结合各个学科的优势,也存在各种不确定性影响设计结果。目前柴油机连杆的优化设计研究还主要应用的是单学科的优化分析技术,对柴油机连杆使用多学