版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章净室软件工程基本概念净室策略功能规格说明净室设计净室测试认证11.1基本概念净室软件工程(Cleanroomsoftwareengineering)是一种在软件开发过程中强调在软件中建立正确性要求的方法。与传统的分析、设计、编码、测试和调试的周期观点有所不同。净室方法的观点:
通过在第一次正确地书写代码增量,并在测试前验证它们的正确性来避免成本很高的缺陷消除过程。它的过程模型是在代码增量集成到系统的同时,进行代码增量的统计质量验证。11.1基本概念与形式化方法技术一样,净室过程强调规格说明和设计上的严格性,并且使用基于数学的正确性证明来对结果设计模型的每个元素进行形式化验证。净室方法不是先制造一个产品,然后再去消除缺陷,而是要求在规格说明和设计中消除错误,然后以“干净”的方式进行制造。净室方法还对形式化方法进行了扩展,强调统计质量控制技术,包括基于客户对软件的预期使用的测试。11.1基本概念“第一次就将事情做正确”是软件工程最重要的哲学。净室软件工程是这样一个过程:它强调在程序构造开始前进行正确性的数学验证,并且将软件可靠性认证作为软件测试的一部分。其底线是极低的故障率,这是使用非形式化方法难于或不可能达到的。11.1基本概念20世纪80年代,Mills、Dyer、及Linger最先建议将净室原理应用于软件工程。虽然在软件开发的早期,人们对其抱以很大的希望,但它并没有得到广泛的使用。
11.1基本概念
Henderson提出了没有得到广泛使用的三个原因:
1.净室方法学太理论化、太数学化、太激进,难于在实际的软件开发中使用。
2.它提倡开发者不需要进行单元测试,而是进行正确性验证和统计质量控制,这些观念与当前大多数软件开发方式有很大的偏离。11.1基本概念3.软件开发产业的成熟度不高。使用净室过程需要在整个生命周期阶段严格按照定义的过程进行。由于大多数软件企业的运作还处于过程成熟度中的较低级别,软件工程师还没有准备应用净室技术。11.1基本概念“程序中出现错误的唯一方式是作者将错误引入进去的。没有其他方式……正确实践的目标是:设法避免引入错误,如果引入了错误,通过测试或任何其他运行程序的方式来消除错误。”
HarlanMills11.1基本概念11.2净室策略净室方法使用增量过程模型。一个“软件增量的流水线”由若干小的、独立的软件团队开发。每当一个软件增量通过认证,它就被集成到整体系统中。因此,系统的功能随时间增加。
一旦将功能分配给系统的软件元素,则可启动净室增量的流水线。需要完成的任务如下:
(1)增量策划。制定一个采用增量策略的项目计划,确定每个增量的功能、预计规模、及净室开发进度。
(2)需求收集。为每个增量开发更详细的客户级需求描述。
11.2净室策略(3)盒结构规格说明。运用盒结构的规格说明方法描述功能规格说明。遵从操作分析原则,盒结构“在每一个精化级别上使行为、数据及过程的创造性定义独立”。(4)形式化设计。使用盒结构方法,净室设计是规格说明的自然、无缝扩展。对规格说明(称为黑盒)进行迭代求精(在一个增量内)类似于体系结构设计和构件级设计(分别称为“状态盒”和“清晰盒”)。
11.2净室策略
(5)正确性验证。净室团队对设计及代码进行一系列严格的正确性验证活动。验证从最高层次的盒结构(规格说明)开始,然后移向设计细节和代码。正确性验证的第一层次通过应用一组“正确性问题”来进行,如果这些没有证明规格说明是正确的,则使用更形式化的(数学的)验证方法。
11.2净室策略(6)代码生成、检查和验证。以某种专门语言表示的盒结构规格说明被翻译为适当的程序设计语言。然后,使用标准的走查或检查技术来保证代码和盒结构的语义相符性,以及代码的语法正确性。最后,对源代码进行正确性验证。
11.2净室策略(7)统计测试规划。分析软件的预计使用情况,规划并设计一组测试用例,以测试使用情况的“概率分布”
。
11.2净室策略
(8)统计使用测试。对计算机软件进行穷举测试是不可能的,因此,设计有限数量的测试用例总是必要的。统计使用技术执行由统计样本导出的一系列测试,这里的统计样本是从来自目标人群的所有用户对程序的所有可能执行中抽取的。11.2净室策略
(9)认证。一旦完成验证、检查和使用测试(并且所有错误被改正),则对增量进行集成前的认证工作。
11.2净室策略净室方法的特异之处
明确使用统计质量控制。使用基于数学的正确性证明来验证设计规格说明。实现了一些测试技术,这些测试技术最有可能揭示具有严重影响的错误。
净室软件工程和传统软件实践的差别在于:它不再强调(有些人称取消)单元测试和调试的作用,从而大量地减少(或取消)由软件开发者所承担的测试工作量。在净室软件工程中,单元测试和调试被正确性验证和基于统计的测试所替代。净室方法的特异之处
11.3功能规格说明不管选择哪种分析方法,操作分析原理总是适用的。对数据、功能和行为建模,并对结果模型进行分解,提供更进一步的详细信息。总体目标是从捕获问题实质的规格说明(模型)移向提供重要实现细节的规格说明。净室软件工程通过使用盒结构规格说明的方法来遵从操作分析原则。一个“盒”在某个细节层次上封装系统(或系统的某些方面)。通过逐步求精的过程,盒被精化为层次。“每个盒规格说明的信息内容足以定义其精化,不需要依赖任何其他盒的实现”。这使得分析员能够按层次划分一个系统——从顶层的基本表示到底层实现的特定细节。11.3功能规格说明有三种类型的盒:黑盒,状态盒,清晰盒
黑盒。黑盒刻画系统行为或系统部件的行为。通过运用由触发映射到反应的一组转换规则,系统(或部件)对特定的触发(事件)做出反应。
状态盒。状态盒以类似于对象的方式封装状态数据和服务(操作)。在这种规格说明视图中,表示出状态盒的输入(触发)和输出(反应)。清晰盒。在清晰盒中定义状态盒所蕴含的转换功能,简单地说,清晰盒包含了对状态盒的过程设计。11.3功能规格说明黑盒规格说明
黑盒规格说明描述一种抽象、触发和反应。函数f被应用到输入(触发)S的序列S*,并将它们变换为输出(反应)R。对于简单的软件构件,f可以是一个数学函数,但一般情况下,使用自然语言(或形式化规格说明语言)描述f。黑盒规格说明为面向对象系统引入的很多概念也适用于黑盒。黑盒封装数据抽象和操纵抽象数据的操作。和类层次一样,黑盒规约可以展示使用层次,其中,低层盒从树结构中的高层盒继承属性。
黑盒规格说明
状态盒规格说明
一个状态是某个可观查到的系统行为的模型。当进行处理时,一个系统对事件(触发)作出反应,从当前状态转换到某一新的状态。当进行转换时,可能发生某个动作。状态盒使用数据抽象来确定到下一个状态的转换、以及状态转换后将要发生的动作(反应)。
状态盒同黑盒协作。来自某外部源及一组内部系统状态T的触发S被输入到黑盒中。包含在状态盒内的黑盒的函数g的数学描述:
g∶S*×T*→R×T
这里g是和特定状态t连接的子函数。当整体地考虑时,状态—子函数对(t,g)定义了黑盒函数f。状态盒规格说明
状态盒规格说明
清晰盒规格说明
清晰盒规格说明是与过程设计及结构化编程紧密关联的。状态盒中的子函数g被实现g的结构化编程结构所替代。
清晰盒规格说明11.4净室设计净室软件工程中使用的设计方法主要运用结构化程序设计的原理。基本的处理函数(在规格说明的早期求精中描述)被精化,其方法是“将数学函数逐步扩展为逻辑连接词(如,if-then-else)和子函数构成的结构,这种扩展一直进行下去,直到所有标识出来的子函数可以用程序设计语言直接表达”。
设计求精与验证
每个清晰盒规格说明代表了一个完成状态盒转换所需的过程(子函数)的设计。对清晰盒规格说明,使用结构化程序设计结构和逐步求精。一个程序函数f被细化为子函数g和h的序列,这些又被进一步细化为条件结构(if-then-else和do-while)。进一步的求精给出了连续的逻辑细化。
在每个求精层次,净室团队执行一次形式化正确性验证。为此,将一类正确性条件集合附加到结构化程序设计结构上。如果函数f被扩展为序列g和h,则f所有输入的正确性条件是:执行g之后再执行h能完成f的功能吗?如果一个函数p被精化为形为
if<c>thenqelser
的条件形式,则对p的所有输入的正确性条件是:只要条件<c>为真,q能完成p的功能吗?只要条件<c>为假,r能完成p的功能吗?
设计求精与验证
如果一个函数m被细化为循环
donwhile<c>则对m的所有输入的正确性条件是:能够保证循环终止吗?只要<c>为真,循环执行n之后能完成m的功能吗?只要<c>为假,退出循环仍能完成m的功能吗?设计求精与验证
每当一个清晰盒被精化为下一个详细层次时,都应用上面给出的正确性条件。值得注意的是:结构化程序设计结构的使用限制了必须进行的正确性测试的数量。对顺序结构只检查单个条件,对if-then-else结构只测试两个条件,对循环则只验证三个条件。设计求精与验证
例:过程设计的正确性验证:设计并验证一个小的程序,该程序对某给定的整数x,找出其平方根的整数部分y。
yesno设计求精与验证
定义入口和出口条件。为了证明设计的正确性,需要证明图中表示的条件init、loop、cont、yes和exit在所有情形下都是正确的。设计求精与验证
1.条件init要求[x≥0andy=0]。基于问题的需求,假定入口条件是正确的。因此,init条件的第一部分x≥0是满足的。在流程图中,在init条件前的语句设置y=0,因此,init条件的第二部分也是满足的,因此,init为真。2.条件loop可能以两种方式之一出现:(1)直接从init(此时loop条件被直接满足),或(2)通过穿过条件cont的控制流。因为条件cont与条件loop相同,因此,不管从哪条路径到达它,条件loop都为真。3.条件cont:只有在y值被递增1后,才能遇到条件cont。另外,只有在条件yes也为真时,才能调用到达条件cont的控制流路径。因此,如果(y+1)2≤x,则y2≤x,条件cont成立。4.条件yes在如图所示的条件逻辑中被测试,因此,当控制流沿着所示的路径移动时,条件yes一定为真。5.条件exit首先要求x保持不变,对设计进行检查可发现x没有出现在赋值操作的左边,没有使用x的函数调用,因此,x保持不变。因为条件测试(y+1)2≤x不成立时,才可能到达条件exit,因此(y+1)2>x成立。此外,loop条件还必须保持为真(即,y2≤x),因此,(y+1)2>x和y2≤x可以组合在一起满足exit条件。保证循环终止:
因为y是递增的,而x≥0,因此,最后(y+1)2≤x不成立,循环一定终止。
设计求精与验证
设计验证的优点
对清晰盒设计的每一步求精进行严格的正确性验证有许多显著的优点:(1)将验证简化为一个有限的过程。在清晰盒中,以嵌套的、顺序的方式组织控制结构,这就自然地定义了一个层次,该层次显示了必须被验证的正确性条件。(2)再怎么强调将验证简化为有限过程对质量产生的正面效果都不过分。除了那些最微不足道的程序,即使所有程序都具有无限数目的可执行路径,也可以在有限步骤内对它们进行验证。(3)使得净室团队验证设计和代码的每一行。在正确性定理的基础上,团队可以通过小组分析和讨论来执行验证,并且当在生命关键或使命关键的系统中需要额外的信心时,可以生成书面的证明。(4)达到几乎零缺陷的水平。在团队的复审过程中,每个控制结构的每个正确性条件被依次验证。每个团队成员必须就每个条件都是正确的达成共识,这样只有团队的每个成员均未能正确地验证某条件时,才有可能出现错误。设计验证的优点(5)具有可伸缩性。每个软件系统,不管有多大,均具有顶层的由顺序、选择和循环结构构成的清晰盒过程。(6)产生出比采用单元测试更好的代码。单元测试仅仅检查从很多可能的路径中选出的测试路径的执行效果。基于函数验证的理论,净室方法可以验证所有数据的每个可能的结果,因为虽然一个程序可能有很多可执行路径,但它只有一个函数。验证也比单元测试更有效,可以在几分钟之内检查大多数验证条件,但单元测试要花费大量时间去准备、执行和检查。设计验证的优点11.5净室测试净室测试的策略在根本上不同于传统测试方法。传统测试方法导出一组测试用例发现设计和编码错误;净室测试的目的是:通过证明用例的统计样本的成功运行来确认软件需求。
统计使用测试计算机程序的用户没有必要去了解设计的技术细节。程序的用户可见的行为通常是由用户产生的输入和事件所驱动的。在复杂系统中,输入和事件的可能的范围(即用例)是非常广泛的。什么样的用例子集能够充分验证程序的行为?这是统计使用测试关注的第一个问题。统计使用测试“等同于以用户试图使用软件的方式来测试软件”。为了完成测试工作,净室测试团队(也称为认证团队)必须确定软件的使用概率分布。对软件的每个增量的规格说明(黑盒)进行分析,并定义一组使软件改变其行为的触发(输入或事件)。通过与潜在用户的交流、使用场景的建立、及对应用领域的全面了解,为每个触发分配一个使用概率。按照使用概率分布为每个触发集合生成测试用例。统计使用测试
例,在家庭保安系统中,使用净室软件工程方法开发一个软件增量来管理用户与安全系统键区之间的交互。对这个增量,已经标识出5个触发。通过分析,给出每个触发的概率分布百分数。为了更容易地选择测试用例,这些概率被映射到1至99的数字区间。
统计使用测试
为了生成符合使用概率分布的使用测试用例序列,生成1至99之间的随机数。每个随机数与前面概率分布的一个区间相对应。因此,使用测试用例序列可以随机定义,但又与触发发生的适当概率相对应。例如,假定生成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 抢救车使用试题及答案
- 甘肃省白银市平川区2025-2026学年三年级上学期期末数学试题(含答案)
- 辅警的教育培训课件
- 妊娠剧吐急诊护理的病例分析
- 糖尿病足部护理创新模式
- 2026年深圳中考语文考前终极预测试卷(附答案可下载)
- 《GAT 16.86-2012道路交通管理信息代码 第86部分:剧毒化学品公路运输通行证通行区域代码》专题研究报告
- 2026年深圳中考物理寒假提分特训试卷(附答案可下载)
- 2026年大学大二(口腔修复学)口腔修复临床技术测试题及答案
- 水电工施工技能培训课件
- 重庆市丰都县2025届九年级上学期1月期末考试英语试卷(不含听力原文及音频答案不全)
- 2026年党支部主题党日活动方案
- 干炉渣运输合同范本
- 《国家基层高血压防治管理指南2025版》解读 2
- 实施指南(2025)《HG-T 6214-2023 邻氨基苯酚》
- 安全生产相关工作主要业绩及研究成果
- 2025广西百色能源投资发展集团有限公司招聘7人(第一批)笔试历年参考题库附带答案详解
- 供水管网抢修课件
- 穿越机组装教学课件
- 运输公司安全领导小组会议记录内容
- 7.2动物的特征及类群①课件-沪教版生物七年级下册
评论
0/150
提交评论