程序验证的基本方法

程序验证的基本方法,第1张

下面的框图代表一个非负整数的除法程序。x1是被除数;x2是除数;z1中存放程序加工后得到的商;z2中存放得到的余数y1、y2是程序加工时使用的工作单元。START 表示程序的起始,HALT表示程序的终止。方框中是同时赋值语句,如(y1,y2):=(O,x1)

表示将y1置0值的同时,将y2的值置为x1。圆框内是测试语句,用于控制程序加工的流程。如框图中的语句y2≥x2

表示当y2的值大于等于x2时,程序按yes的箭头继续执行;否则按no的箭头继续执行。 为验证程序,必须首先将程序所要实现的目标形式化,即使用数学公式表达程序加工的初始数据的范围(称作输入谓词)和程序加工的结果(称作输出谓词)。

若约定各个变量的取值都是整数,上述除法程序的输入谓词和输出谓词分别为 在用归纳断言方法证明程序正确性时,还必须在程序的框图中设置一些数学公式,称作断言,表示程序执行到该处时,程序中变量应满足的数学关系。输入谓词可选作起点处的断言,而输出谓词可选作终止点处的断言。

在除法程序中设置三个断言,A处和C处的断言分别为上述输入和输出谓词,B处断言为(x1=y1x2+y2)&(y2≥0) (1)

反映了y1、y2中存放商数和余数的中间结果值。

验证程序的正确性,就是证明在程序的任何一种可能的加工过程中所设置的断言都是成立的。程序的一个加工过程就是框图中的一个流程。除法程序的所有可能的流程都是由图上的三条路径组合而成:由A至B由B出发回到B由B至C。这样,验证程序的正确性,就是证明对任一条路径,只要起点的断言成立,则终点的断言也成立。

以第二条路径为例,它是一条环路。要证明下列命题:若程序执行到环路的起点B时,断言(1)成立,则程序执行一周,再达到B点时,断言(1)仍然成立。

环行该圈,就是在(y2≥x2)成立的条件下,执行赋值语句(y1,y2):=(y1+1,y2-x2)

而上述语句的执行结果是使 y1的取值为执行前y1的值加1,y2的取值为执行前y2的值与x2的差,其他变量的值不变。为保证执行该赋值语句后断言(1)仍然成立,就要求将断言(1)中的y1代为(y1+1),y2代为(y2-x2)后得到的公式在执行该语句前成立。即(x1=(y1+1)x2+(y2-x2))&(y2-x2≥0) (2)

在执行上述赋值语句前成立。但已知执行该语句前断言①和测试条件(y2≥x2)均成立。由此推断公式②是成立的。这样就完成了对第二条路径的验证。对其余两条路径的验证也是类似的。从而可以证明除法程序的正确性。

归纳断言方法是由建立断言和对各条路径逐条验证两部分组成的。建立断言是一种创造性的工作,而验证路径的工作尽管繁琐,却是机械的。如何由计算机系统协助用户归纳出合适的断言,是程序验证研究中的重要课题。

用上述方法只能证明在输入谓词成立的前提下,程序终止时输出谓词一定成立。但不能证明在输入谓词成立时,程序一定能终止。不讨论程序终止性的程序验证称为程序部分正确性的验证。包括终止性的验证,则称为程序完全正确性的验证。

程序验证技术除了用于证明程序的正确性,或辅助用户编制正确程序外,还可从程序正确性角度评价程序设计方法和程序设计语言的优劣。但是,保证程序正确性的有效办法,不是在编制程序后再去验证,而是设法在编制过程中,使用适当的技术,使产生的程序是正确无误的。这类技术叫作程序综合和程序变形。程序验证技术和程序综合变形技术相互参照,共同发展。

7.3 设计和开发

7.3.1设计和开发策划

组织应对产品的设计和开发进行策划和控制。

在进行设计和开发策划时,组织应确定:

a) 设计和开发阶段;

b) 适于每个设计和开发阶段的评审、验证和确认活动;

c)设计和开发的职责和权限。

组织应对参与设计和开发的不同小组之间的接口实施管理,以确保有效的沟通,并明确职责分工。

随设计和开发的进展,在适当时,策划的输出予以更新。

7.3.2设计和开发输入

应确定与产品要求有关的输入,并保持记录。这些输入应包括:

a)功能和性能要求;

b) 适用的法律法规要求;

c)适用时,以前类似设计提供的信息;

d) 设计和开发所必需的其他要求。

应对这些输入进行评审,以确保其充分性与适宜性,要求应完整、清楚,并且不能自相矛盾。

7.3.3设计和开发输出

设计和开发的输出应以能够针对设计和开发的输入进行验证的方式提出,并应在放行前得到批准。

设计和开发输出应:

a) 满足设计和开发输入的要求;

b) 给出采购、生产和服务提供适当的信息;

c) 包含或引用产品接收准则;

d) 规定对产品的安全和正常使用所必需的产品特性。

7.3.4设计和开发评审

在适宜的阶段,应对依据所策划的安排(见7.3.1)设计和开发进行系统的评审,以便:

a) 评价设计和开发的结果满足要求的能力;

b) 识别任何问题并提出必要的措施。

评审的参加者应包括与所评审的设计和开发阶段有关的职能的代表,评审结果及任何必要措施的记录应予保持。

7.3.5设计和开发验证

为确保设计和开发输出满足输入的要求,应对依据所策划的安排(见7.3.1)设计和开发进行验证。验证结果及任何必要措施的记录应予保持。

7.3.6设计和开发确认

为确保产品能够满足规定的使用要求或已知预期用途的要求,应依据所策划的安排(见7.3.1)对设计和开发进行确认。只要可行,确认应在产品交付或实施之前完成。确认结果及任何必要措施的记录应予保持。

7.3.7设计和开发更改的控制

应识别设计和开发的更改,并保持记录,在适当时,应对设计和开发的更改进行评审、验证和确认,并在实施前得到批准,设计和开发更改的评审应包括评价更改对产品组成部分和已交付产品的影响。

更改评审结果及任何必要措施的记录应予保持

有什么不明白的地方可以再联系我

设计验证过程完成之后,要通过制定控制体系将已经测试过的流程固定下来,以确保这一流程能不断生产出好的产品。流程控制是六西格玛设计DFSS管理的最后一个环节。通过流程控制,能够维持流程的绩效水平以满足顾客要求,并不断促进流程的改进。

1、将流程标准化。

要将流程固定下来,并使得其他人能在这一基础上构建别的流程,首先要将流程标准化。在六西格玛设计中,流程控制计划书是必不可少的选择。流程控制计划书规定了一些关键的测量标准,这样就可以根据这些标准对自己的工作进行检测,并进行必要的调整和特别的控制。没有一个正式的控制机制,流程就可能会向一个错误的方向发展。只有建立一个正式的、可衡量的控制流程,才能将改进保持住,甚至还能随着时间的推移进行提高。在这一步,团队成员需要注意的是,在对生产或服务流程进行标准化时,让做这项工作的人来担任标准化过程的领导很关键。这使他们成为流程的主人,而不是将流程强加到他们身上,从而大大增加了流程控制计划的准确性和实用性。在制定流程计划书的时候不能忽略那些能及时提供信息的内部顾客,要让即将从事六西格玛设计的人试用流程汁划书并进行测试。以便弄清楚哪些地方做得很好,哪些地方还需要进一步完善和改进。

2、制定程序手册。

由团队共同制定程序手册,会促使团队成员思考应该控制什么,由谁来控制。程序手册围绕着投入、流程和产出展开。

关于投入问题,团队最关心的可能就是投入的质量。一个好的六西格玛设计应该确保这些投入的提供者能够始终做得很好,这样当将这些投入付之使用时。就不需要使用者对其进行检验了,从而在改进质量的同时节省时间和金钱。

在这里,流程显然是流程控制的核心,要确定哪些项目值得进行特别控制,哪些不需要给予更多关注。在这一过程中,团队不必过于深究每一项目,但是一定要很细心地判断哪些方面需要我们特别关注。在这个筛选过程中,可以通过设计实验来对每一项任务进行测试,然后再利用测试结果将它们分为不同的类型。这样就能帮助我们更清楚地理解每项任务的限度,以及确定每项投入对每项产出的影响情况,从而使我们知道什么时候可以允许出现差异性,以及可容许的差异性程度如何。

3、意外控制。

建立有效的流程控制系统之后,就可以很容易的确定什么时候可能会出现问题。一个好的流程控制系统就等于一个能够有效确认和改正潜在问题的内在系统。但是,无论计划定得如何好,进展如何顺利,总会有一些意外。

六西格玛设计最后一项工作就是收集各种经验教训。我们需要收集在利用每个工具、每种方法、每个功能和每个原理时得出的各种经验教训。否则,过去的各种智慧成果就都会付之东流,无法应用到下一个团队或下一个项目中去。这一步的工作能够为将来的项目提供一个预先确定的控制系统,从而确保六西格玛设计不会因一时新的热潮而被抛诸脑后。

最后,在准备对六西格玛设计进行收尾的时候,有必要重新计算一下项目的成本收益。以第一阶段计算出来的反映收益情况的数据为基准。可以比较各个阶段的时间、成本和质量回报状况,从而更全面、更准确的估计公司或组织通过六西格玛设计能够得到的回报。通过这个估计,还可以对设计情况、长期制造成本的减少情况以及服务和支持成本的情况做出较为准确的估计。

六西格玛设计项目通常会把重心放在产品或服务的某个部分上,涉及到对产品或服务的某些有问题的地方,或对新产品或新服务引进的关键要素进行重新设计。六西格玛设计的项目回报需要很长的时间才看得到,但是随着六西格玛设计不断融入到新的产品或服务流程中,六西格玛设计的力量将会真正显露山来。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7734234.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存