第3章程序规范及其正确性证明概述 课件.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章程序规范及其正确性证明概述 课件

第3章 程序规范及其正确性证明概述 内容-Where we are? 程序规范、规范的描述 断言与规范及{P} S {Q} 程序正确性的概念 程序正确性证明的过程 3.1 程序规范与程序 1. 程序规范: 程序设计之前,第一步必须明确“做什么”。 所谓“做什么”是指对欲求解的问题的描述。 程序规范(PS-Program Specification):关于“做什么”的描述。 这里的PS仅指功能的描述,不包括诸如处理速度、执行时间、响应周期等与时间有关性能指标。 PS是软件工程的需求分析的结果。 PS的含义是映射,是输入到输出的映射,它反映了程序对数据的作用。 3.1 程序规范与程序(续) 2. 程序 程序也是映射,是输入到计算的映射,即每一输入都对应一串计算步。 3. 程序规范与程序的关系 给出规范后,程序开发就是建立一个程序,使得计算刚好能实现规范的映射; 程序验证是证明程序正确地实现了规范,即证明规范和已有程序之间的一致性 3.1 程序规范与程序(续) 4. 程序规范的描述-----规范语言 规范必须用语言描述,该语言称为规范语言。 描述一个复杂问题的输入和输出之间的关系是困难的,目前对规范语言的模式尚无定论。有三种模式: 自然语言:不够准确,存在二义性,必须辅以数学语言。 一阶谓词:可以精确地描述问题的输入和输出的关系,但是规范文本比较长。如Hoare系统。 数学语言:用数学语言可以把输入和输出的映射描述为函数。这些函数的精确的泛函定义就构成了问题的规范。但存在过于规范的问题。 3.1 程序规范与程序(续) 5. 一个合适的程序规范语言应满足的基本条件: 应当为描述者和使用者所直接理解; 应当有严格的数学语义 应当与形式方法的构造理论和程序设计语言协调 应当有较强的表达能力和通用性 3.1 程序规范与程序(续) Z语言 VDM B方法 三者的比较 3.1 程序规范与程序(续) Z语言是一种基于集合论和一阶谓词逻辑的形式化语言; Z语言支持软件的形式化规范描述,规范的推理和求精; 是迄今为止应用最广泛的形式语言之一; Z是在Jean Raymond Abrial等的开创性工作下,由英国牛津大学的程序设计研究小组(PRG,Programming Research Group),于20世纪80年代初开发; PRG与IBM的Hursley实验室合作,将Z语言用于IBM的客户信息控制系统的开发,使得最终的产品质量得到了全面的的提高,所测出的错误数量大大减少,并且整体开发费用降低了9%; 在ISO指导下的国际标准化Z工作于2002年完成 3.1 程序规范与程序(续) 提供了一种称为模式(Schema)的结构,它是Z的基本描述单位,以此来描述一个规范说明的状态空间(静态性质)和操作(动态行为)。 Z语言的模式和模式演算: 状态模式对目标软件系统的结构特征进行抽象描述; 操作模式对目标软件系统的行为特征进行抽象描述; 通过模式演算,无论多么大型系统的规格说明都可以通过一个个小的部分来构成; 3.1 程序规范与程序(续) Z模式说明可以组合成新的Z模式,新的Z模式继承其成分模式的一切属性和约束。软件系统的Z模式规格说明可以按一定的层次结构给出。 Z规格说明由一系列模式组成,每个模式定义一个抽象对象或操作,并用谓词判定描述给出新的对象或操作的语义约束。 模式例: 3.1 程序规范与程序(续) 模式例1: [Student] // 引入基本类型student StudentSys //模式名 Enrolled,tested: P Student // 声明部分, 学生的密集类型 #enrolled ≤size // 断言部分,合取关系 tested ? enrolled 等价于://水平方式 StudentSys=[enrolled,tested: P Student | #enrolled ≤size ? tested ? enrolled ] 3.1 程序规范与程序(续) 模式例2: EnrollStudent ?StudentSys // = Studentsys ? StudentSys’的简写 name?: Student // 在输入变量后加? name? ? enrolled // 在输出变量后加! enrolled size // 带有后缀‘的变量表示操作后的变量 enrolled’ = enrolled ∪{name?} tested’= tested 3.1 程序规范与程序(续

文档评论(0)

manyu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档