形式化方法--程序的正确性验证-14

形式化方法--程序的正确性验证-14

ID:28163013

大小:251.58 KB

页数:14页

时间:2018-12-07

形式化方法--程序的正确性验证-14_第1页
形式化方法--程序的正确性验证-14_第2页
形式化方法--程序的正确性验证-14_第3页
形式化方法--程序的正确性验证-14_第4页
形式化方法--程序的正确性验证-14_第5页
资源描述:

《形式化方法--程序的正确性验证-14》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、第十四讲形式化方法--程序的正确性验证一、概述计算机的程序是一种静态的对象,但它所描述的问题(问题的解)却是一个动态的对象。所谓的程序设计就是用程序设计语言中的语句改变程序中数据对象的状态,构造所描述问题的动态行为。这是不自然的,程序所描述的动态行为也无法直接用程序本身的静态结构进行正确性证明。形式化规约(formalspecification)是需求阶段的形式化说明,是用户需求的严格描述,其一般形式用Hoare逻辑描述[11如下:

2、-{a)}p{^}〈1〉其屮O和W分别表示初始和结朿断言条件,其含义是:“假如初始状态山满足条件O,那么程序结束并且终结状态必须满足叩”。设D=D,X……X

3、Dn为程序P的状态空间,其中,Dj(j=l,……,n)表示程序中数据对象的值域。显然,由O和W断言条件所确定的合法初始和结束状态的集合是D的一个子集。执行函数E:中XP-*中定义如下:p无定义对合法的初始状态dP程序P不结朿E(P,d,)=5I终结状态df对合法的初始状态程序P结來程序的正确性即为:iff<2>Vdi(卜①(山)一(

4、-程序P结束and(-^(R(P,di))))总地来讲,验证一个程序的正确与否有两种办法,一种是程序的测试,另一种是程序的正确性证明。1.程序的测试与程序的验证对给定的一个合法的初始状态当程序执行结朿时其终结状态为df,那么,0)(山)和W(df)都应该被满

5、足。这一点可用下式表示:{di}P{df}<3>所谓程序的测试就是验证测试用例{dJP{df},即验证程序对di的执行结果是否为d,、。由于合理的初始状态是无限的,因此,对程序验证来讲,测试不是一个完备的方法。测试被认为是一种尽量发现错误,但并不能保证程序中没有错误[2]的方法。对大数应川來讲,它是可满足的;但对有些应用來讲,测试是一种不能满足的验证方法,例如:航空、航天等领域的软件系统。显然,对要求绝对正确的软件,测试是一种不能采用的方法。无论白盒测试还是黑盒测试都是在无限集合{(di,df)

6、Vdi,/df,di和df满足{di}P{df}中选择有限的一些(dj,df)对进行验证,

7、而各种测试方法只是选择(di,df)的策略不同而己。因此,验证程序是否完全正确要寻求另外的解决途径。那就是程序的正确性验证。2.形式语义与程序的正确性验证程序的正确性验证应该具有严密的推量过程,以保证程序每步执行结果都是希望的结果,而与程序执行的某个初始状态无关。程序的正确性证明现有三种方式:操作语义、指称语义和公理语义。它们分别用不同的形式化方法,严格地证明一个程序是否正确。尽管这种方法还不够完善,还不为一般软件人员所掌握,但它确实是保证软件绝对正确的唯一途径。操作语义(OperationalSemantics)操作语义的根据是,一种程序设计语言一但在某种计算机系统中实施,其语义的含义

8、也就完全确定卜來了,因此,自然地就用语言的实施作为语言含义的定义,故称这种语义为操作语义。当然,这种实施应该在一种标准的、抽象的机器上进行。英国科学家PJ.Landin最早提山这种类型的一个抽象机器,称为“栈-环境-控制-外存”。IBM公司提出了一种可描述程序设计语言语义的元语言:VDL。后來,英国的爱丁堡大学提出了更一般的方法:在数据结构上用数学关系建立操作语义的解释系统。这种方法的本质就是,用抽象机器的状态空间和最简单的基本指令来定义抽象语言的语义,将抽象语言的程序转换为一系列抽象机器的基本指令序列。这种对应关是同定的,而且抽象机器的基本指令的含义是固定的,这样一个程序设计语言的程序

9、就有了一个明确的、无二义的语义。为了验证一个抽象程序的正确性,就必须在抽象计算机上执行其相应的基本指令序列。基本指令序列的一次执行只能验证一组输入、输出状态之间的关系。因此,用操作语义验证一个程序的正确性实质上是一种测试型的验证方式。指称语义(DenotationalSemantics)指称语义学认为,程序设计语言的语义是由其语言成份的语义决定的,而程序设计语言成份的语义应该是其本身固有的,与程序设计语言的个体实现无关。指称语义的出发点是语言成份执行的最终结果,而不是其执行过程。这种执行结果是巾语言成份形式后而隐藏的所指物决定的,故这种方式也称为指称语义。指称语义是由牛津大学的C.Str

10、achey教授创立,D.Scott教授完善的,故指称语义也称为牛津语义。IBM公司也创立了基于指称语义的VDM软件开发方法。指称语义的指称物均为数学对象,如整数、集合和映射等。指称物的集合称为论域。一个语言的指称语义就是确定该语言的相关论域,并给岀语法成份到论域上的语义映射。一个抽象的程序设计语言程序的语义就是指称语义所指的数学对象在论域上的数学运算,其正确性证明就是指称语义相应的数学运算公式的特性(递归类型语言成份的数学运算公式特

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。