网站大量收购闲置独家精品文档,联系QQ:2885784924

南华大学计算机科学与技术学院软件工程概论课件第5章 软件验证技术(3).ppt

南华大学计算机科学与技术学院软件工程概论课件第5章 软件验证技术(3).ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
主要内容 程序正确性证明 调试 5.9 程序正确性证明 测试可以帮助人们发现程序中的错误,但它却不能证明程序中没有错误。 早在50年代,图林(Turing)等人就开始注意并开展了程序正确性证明这方面的早期研究工作;60年代后半期,Floyd和Hoare等人提出了不变式断言法和公理化方法,使得这一研究进入了一个蓬勃发展的新阶段;在此之后,出现了许多不同的程序正确性证明方法。 5.9.1 程序正确性定义 所谓一段程序是正确的,是指这段程序能准确无误地完成预定的功能。或者说,对任何一组允许的输入,程序执行后能得到一组相应的正确的输出。 在研究程序正确性证明时,将一段程序的输入和输出应满足的条件的逻辑关系式分别称为此段程序的输入断言(或初始断言、前置断言)和输出断言(或结果断言、后置断言),通常用谓词φ(x)和ψ(x,z)表示,其中x和z分别表示输入和输出数据(可以是一个或一组变量)。 例子 程序正确性三种类型 程序的部分正确性 程序的终止性 程序的完全正确性 程序的部分正确性 若每一个使得φ(x)为真且程序计算终止的输入数据x,ψ(x,p(x))都为真,则称程序p关于φ和ψ是部分正确的。 这里p(x)表示与输入数据x相对应的程序p的输出数据。 程序的终止性 若每一个使得φ(x)为真的输入数据x,程序计算都终止,则称程序P对φ是终止的。 程序的完全正确性 若每一个使得φ(x)为真的输入数据x,程序计算都终止且ψ(x,P(x))为真,则称程序P关于φ和ψ是完全正确的。 显然,一个程序是完全正确的等价于该程序是部分正确的同时又是终止的。 程序正确性证明方法 FLOYD的不变式断言法(证明部分正确性) FLOYD良序集方法(证明终止性) Hoare的公理化方法(证明部分正确性)及其推广(证明完全正确性) Dijstra的弱谓词置换法(证明完全正确性) 5.9.2 Floyd不变式断言法 建立断言 一个程序除了需要建立输入/输出断言外,如程序中出现循环,还要建立相应于该循环的不变式断言,称之为循环不变式断言。所谓循环不变式断言,是在循环中选一个断点,在断点处建立一个适当的断言,使循环每次执行到断点时,断言都为真。 建立检验条件 所谓检验条件就是程序运行通过某通路时应满足的条件。 证明检验条件 证明上面给定的所有检验条件,如果每一条通路的检验条件都为真,则该程序是部分正确的。 例子 设x1,x2是正整数,求最大公约数Z=gcd(x1,x2),其流程图如下图所示。试证明它的部分正确性。 建立断言 输入断言φ(x):x1>0 ∧ x2>0 输出断言ψ(x,z):z=gcd(x1,x2) 在断点B建立不变式断言P(x,y): x1>0∧x2>0∧y1>0∧y2>0∧gcd(y1,y2)=gcd(x1,x2) 建立检验条件 选择B为断点,则程序的执行通路为: Path1:A→B Path2:B→D→B Path3:B→E→B Path4:B→G→C 对每条通路可建立相应的检验条件。 检验条件表示 设通路i的输入/输出断言分别为φi(x,y)和ψi(x,y),而通过此通路的条件为Ri(x,y),通过此通路后y的值变为ri(x,y),则应有检验条件: φi(x,y)∧Ri(x,y)?ψi(x,ri(x,y)) 其中,y表示程序执行中的一组中间变量,x是输入量。符号?表示蕴涵逻辑关系。 Path1检验条件 φ1(x,y)为φ(x);R1(x,y)恒真,即无条件通过; ψ1(x,y)为P(x,y);通过此通路后y的值取值x。 故有:φ(x)?P(x,x),即 [x1>0∧x2>0]?[x1>0∧x2>0∧x1>0∧x2>0∧gcd(x1,x2)=gcd(x1,x2)] 证明检验条件 5.9.3 Floyd良序集方法 如果一个非空集合W关于二元关系-是良序的,则集合W应满足: ①W为具有关系-的偏序集。 即关系-满足下列性质: 1°传递性,即对一切a,b,c∈W,如果a-b,b-c则有a-c。 2°反对称性,即对一切a,b∈W,如果a-b,则有b-a。 3°反自反性,即对一切a∈W,a - a。 ②W的每一非空子集都有一个“最小”元素。 即不存在由W中的元素构成的无限递减序列:a0 - a1 - a2 - …… 其中a0,a1,a2,...∈W。 证明步骤 设程序P的输入断言为φ(x),良序集法证明P关于φ(x)是终止的证明步骤 (1)选取一个点集合截断程序的各个循环部分,在每一个截断点i处建立一个中间断言qi(x,y)。 (2)选取一个良序集(W,- ),在每一个截断点i处定义一个终止表达式E i(x,y

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档