面向对象程序的模块化验证

来源 :北京大学 | 被引量 : 0次 | 上传用户:xiaoxin_vb
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着社会各领域需求的不断增加,计算机软件系统的规模日益庞大,结构也越来越复杂。这一方面促进了软件开发中面向对象(OO)技术的快速发展,如设计模式、框架应用等重要程序设计技术已被成熟地用于提高软件的质量;另一方面对安全攸关的软件系统的可信度提出了更高的要求和挑战。应用形式化方法验证OO程序可靠性的研究工作已取得很多成果,但已有理论成果能够支持的OO特性还远落后于OO技术的发展和在软件系统开发中的实际应用。因此针对复杂软件系统开发中广泛应用的OO特性(如接口类型、抽象、动态绑定等)和设计技术(对象合成使用、框架等),设计适用的形式化描述和验证技术具有重要的意义。另外,为支持OO软件系统开发的模块化和代码复用等重要特点,设计出的规范和验证技术必须具有抽象性和模块性。  本文以一个典型的OO程序语言模型-μJava(类Java顺序式程序语言)-为研究对象,以一个OO程序的形式化规范和验证的初步框架-VeriJ-为基础,通过进一步研究OO语言的各种主要特性(如对象、类、继承、对象共享、动态绑定、多态、抽象等,)以及它们在OO程序设计中的重要作用,分析它们在OO程序的形式化规范描述和验证工作中引发的复杂问题,提出了相应的处理技术来逐步扩展VeriJ框架。本文还将结合一些典型的OO程序实例包括复杂的数据结构和基于组件系统,讨论新框架在程序正确性证明中的应用,并与已有的相关工作做了对比分析。  为支持基于接口的OO设计,本文首先将OO的接口类型扩展到语言模型中。基于抽象规范谓词和抽象方法规范概念,本文提出了一个扩展的验证框架VeriJI,它能够抽象地描述基于接口的OO程序的行为规范,并模块化地证明这类程序实现的正确性。VeriJI框架为接口类型提供的抽象规范描述技术,不但彰显了“封装实现细节”、“分离抽象与实现”和“提供多态化实现统一的接口”等接口类型特有的角色,也支持了外部用户程序仅依赖于接口类型信息的证明。  验证框架VeriJ(和VeriJI)使用的规范谓词技术能够抽象并封装常见的单个数据结构,如链表、栈、队列、树、数学性质等,但还不足以描述更复杂的数据结构,也不能体现多个数据结构间的合成或聚合等交互关系。另外,基于接口类型的用户代码的证明应该只需要使用接口层次的抽象规范,但是VeriJI框架中接口层次提供的抽象规范明显不能满足用户需要。为解决这些问题,本文提出使用公理逻辑断言描述复杂数据结构的性质和多个结构之间的关系。这种公理断言描述在抽象的接口层次,独立于任何实现,但能够全局地为系统的实现提供语义约束。扩展公理概念及相关的规范和验证技术到VeriJI框架中,本文提出了另一个验证框架VeriJA。  应用VeriJA验证框架,本文为Web应用中广泛使用的模型-视图-控制器(Model-View-Controller,MVC)架构程序设计了一种通用的、形式化规范描述和验证技术,并将其成功地应用到一个实例程序的证明中。  本文最后总结了工作,并展望了进一步的研究工作,包括单对象和多对象的对象不变式语义、规范描述方式、相关的证明义务和技术,以及我们提出的形式化验证框架在设计模式、框架等程序设计技术中的应用前景。
其他文献
关于高中语文课堂教学方法的改革已经进行了多年,但至今收效甚微。不少高中语文教师在教学中虽然费尽心机,但教出的学生仍然写不出有质量的文章,也缺乏分析问题和解决问题的
2010年12月23日,享有“当代张大千”之称的台湾水墨画大师李奇茂艺术馆落户山东省高唐县双海湖生态书画公园,标志着高唐县海峡两岸书画艺术交流中心项目建设由此拉开序幕。
学位
Cayley图是许多互联网络的底层拓扑,研究网络拓扑结构的容错能力,对于提高网络的鲁棒性、保证网络的可靠性具有重要意义。根据对换树的不同,Cayley图可分为泡形图,星图和一般对换
学位
在初中语文教学中,专题作业是依据主题进行设计的。通过专题作业,学生能够学会写作、阅读,并获得有关概念知识。在结束每一专题后,学生需展示他们的专题作业成果,同时与教师
学位
学位
学位
学位