程序规范及程序正确性证明_第1页
程序规范及程序正确性证明_第2页
程序规范及程序正确性证明_第3页
程序规范及程序正确性证明_第4页
程序规范及程序正确性证明_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章程序规范及其正确性证明简介,程序规范与程序,程序规范在进行程序设计之前,第一步必须明确“做什么”。所谓做什么是指对欲求解的问题的描述。关于“做什么”的描述通常称为程序规范(PS-ProgramSpecification)。这里的PS仅指功能的描述,不包括诸如处理速度、执行时间、响应周期等与时间有关性能指标。PS是软件工程的需求分析的结果。PS的含义是映射,是输入到输出的映射,它反映了程序对数据的作用。程序程序也是映射,是输入到计算的映射,即每一输入都对应一串计算步骤。,程序规范与程序的关系,给出规范后,程序开发就是建立一个程序,使之计算刚好能实现规范的映射;程序验证是证明程序正确地实现了

2、规范,即证明规范和已有程序之间的一致性,程序规范的描述,规范必须用语言描述,该语言称为规范语言。描述一个复杂问题的输入和输出之间的关系是困难的,目前对规范语言的模式尚无定论。自然语言直观,易于理解不够准确,存在二义性符号语言可以精确地描述问题的输入和输出的关系但是规范文本比较繁琐,一个合适的程序规范语言应满足的基本条件,应当为描述者和使用者所直接理解应当有严格的数学语义应当与形式方法的构造理论和程序设计语言协调应当有较强的表达能力和通用性,断言与规范,断言就是关于事物性质的陈述这个陈述可真可假。如“三是个质数”断言可以作为程序规范描述语言用断言作为程序的注解或作为正确性命题的一部分时,常用大括

3、号括起来。,断言与规范,例1:写一个计算商和余数的程序程序规范:“设被除数x1是个非负整数”“除数x2是个正整数”“计算x1除以X2的商y1和余数y2”又描述为:“初始条件:x1=0andx20计算满足x1=x2*y1+y2and0=y2x2的整数y1和y2”,断言与规范,例:求商余程序x1=0andx20y2:=x1;y1:=0;0=x2dobegin0=y2and0x2=y2andx1=x2*y1+y2y2:=y2-x2;y1:=y1+1;0=y2and0x2andx1=x2*y1+y2end;x1=x2*y1+y2and0=y2x2,断言与规范,一般地,一个程序规范可表示为由两个谓词构成

4、的二元组(P,Q)。其中,P描述了所欲求解的问题必须满足的初始条件,它限定了输入参数的性质,称为初始断言或前置断言;Q描述了问题的最终解必须满足的性质,称为结果断言或后置断言。,断言与规范,程序断言是对程序的性质的陈述最重要的一个程序断言为:PSQ其中,(P,Q)是程序S的程序规范S是一个程序(或语句)断言PSQ称为S关于(P,Q)的正确性断言若,S开始执行时P为真则,S的执行必终止,且终止时Q为真,断言与规范,问题:如何构造断言使他们能准确地反映不同位置上程序的性质?有了断言,如何证明他们的正确性?能否有准则,可以从规范(P,Q)构造出程序S,使PSQ为真。,程序断言的进一步说明,说明在给出

5、规范描述(P,Q)时,必须指明哪些量是可变的,哪些是不可变的。如果是可变的,不要时对前者还需指明其变化方式。输入参数在程序执行前从外部获得值,但在程序执行中,其值始终保持不变的变量。一般用以x开头的标识符表示。输出变量其值随程序的执行而不断变化的变量。一般以y开头的变量,或不以x和u开头的变量标识。辅助变量为了描述程序变量取值变化方式而因入的变量。这些变量不得在程序中出现,用以u开头的变量表示。,断言与规范(举例),例1.编写一个程序Swap(y1,y2)功能是把y1,y2两变量的值互换。程序规范:(y1=u1y2=u2,y1=u2y2=u1),断言与规范(举例),例2:对数组bm:n进行排序

6、的程序。功能是把数组bm:n各元素的值从小到大排列起来,使得最后的数组满足bibi+1,i=m,,n-1。规范:P:mnbm:n=um:nQ:mnperm(bm:n,um:n)(i:min:bibi+1)其中,um:n代表b的任意可能初值;perm(bm:n,um:n)表示b是u的一个置换。,程序的非形式化正确性证明简介,程序正确性断言PSQ的意义:“若S的执行开始于一个满足P的状态,那么这个执行必将在有限的时间内终止于一个满足Q的状态”。所谓一个状态时满足P(或Q),即指在此状态下P(或Q)为真。,程序的非形式化正确性证明简介,设(P,Q)是一个规范,S是依照这个规范要求设计的程序,且是由语

7、句s1,s2,sn组成的一个枚举型程序即其执行等于组成它的各个语句的逐一顺序的执行其中的每个语句都只有一个入口和一个出口,且没有GOTO语句令P1,Q1,P2,Q2,Pn,Qn是2n个谓词,且P=P1,Q=Qn。如果所有断言PiSiQi,i=1,2,,n,为真,并且每个蕴涵:QiPi+1,i=1,2,,n成立,就称(P1,Q1),(P2,Q2),,(Pn,Qn)是PSQ的一个证明。,程序的非形式化正确性证明简介,程序的非形式化正确性证明举例,例1:令(P,Q)为:P:i0s=b0+biQ:i0s=b0+bi令S为:i:=i+1;s:=s+bi简单证明如下:P:i0s=b0+biP1:i+10s=b0+bi+1-1i:=i+1;Q1:i0s=b0+bi-1P2:i0s+bi=b0+bi-1+bis:=s+biQ:i0s=b0+bi,这个证明梗概意味着下面各断言依次为真:PP1P1i:=i+1Q1Q1P2P2s:=s+biQ只要证明上面的4个断言为真,就可以证明PSQ为真。,课堂练习,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论