净室软件工程

上传人:小** 文档编号:54614013 上传时间:2018-09-16 格式:PPT 页数:42 大小:612.50KB
返回 下载 相关 举报
净室软件工程_第1页
第1页 / 共42页
净室软件工程_第2页
第2页 / 共42页
净室软件工程_第3页
第3页 / 共42页
净室软件工程_第4页
第4页 / 共42页
净室软件工程_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《净室软件工程》由会员分享,可在线阅读,更多相关《净室软件工程(42页珍藏版)》请在金锄头文库上搜索。

1、哈尔滨工业大学计算机学院 唐好选 Email:,净室软件工程(CSE),“净室”(Cleanroom)一词源自半导体工业中硬件生产车间,通过严格、洁净的生产过程预防了缺陷的产生,而不是在事后再去排除故障。借用这个词,充分显示了净室技术“防患于未然”的主导思想,净室基本概念,净室软件工程(CSE)是一种应用数学和统计学理论生产软件的工程技术。力图通过严格的工程化的软件过程达到开发中的零缺陷或接近零缺陷,通过在第一次正确的书写代码增量,并在测试前验证其正确性来避免成本过高的缺陷消除过程。它的过程模型是在代码增量集成到系统的同时,进行代码增量的统计质量验证。,净室方法的观点,强调规格说明和设计上严格

2、性,使用基于数学的正确性证明对结果设计模型的每个元素进行形式化验证,在规格说明和设计中消除错误,以“干净”的方式进行制造。,20世纪70年代末80年代初,资深数学家和IBM客座科学家Harlan Mills阐述了将数学、统计学及工程学上的基本概念应用到软件的设想,净室软件工程的发展,Mills的观点:程序中出现错误的唯一方式是作者将错误引入进去的。没有其他的方式正确实践的目标是:设法避免引入错误,通过测试或其它任何运行程序的方式来消除错误。,净室软件工程的发展,两大基本观点促进了Mills的工作:首先,程序是数学函数规则,其次,潜在的程序执行是无穷的,质量认证必须进行统计采样 第一个观点使所有

3、函数理论向软件开发敞开大门,导致以下技术的产生:盒式结构规范及设计、函数理论正确性检验及增量开发 第二个观点使所有统计理论在软件测试方面得到应用,导致了统计使用测试和质量认证,致力于通过防止软件缺陷来提高软件质量 立足于严格的科学理论基础 强调净室小组:制定系统规范、开发和认证; 基本目标是:开发过程的可管理性和使用时的无失效性,净室软件工程的基本特点,函数理论和抽样理论 函数理论 一个函数定义了从定义域到值域的映射。一个特定的程序好似定义了一个从定义域(所有可能的输入序列的集合)到值域(所有对应于输入的输出集合)的映射。这样,一个程序的规范就是一个函数的规范 抽样理论 不可能对软件的所有可能

4、应用都进行测试。把软件的所有可能的使用情况看作总体,通过统计学手段对其进行抽样,并对样本进行测试,根据测试结果分析软件的性能和可靠性,净室软件工程的理论基础,统计过程控制下的增量式开发(Incremental Development):增量是最终软件产品的功能子集,系统功能随时间增加基于函数的规范、设计:盒子结构方法按照函数理论定义了三种抽象层次:行为视图、有限状态机视图和过程视图。 规范从一个外部行为视图(称为黑盒)开始 然后被转化为一个状态机视图(称为状态盒) 最后由一个过程视图(明盒)来实现 盒子结构是基于对象的,净室软件工程的技术手段,正确性验证:是CSE的核心,正是由于采用了这一技术

5、,净室项目的软件质量才有了极大的提高 统计测试(Statistically Based Testing)和软件认证:净室测试方法采用统计学的基本原理,即当总体太大时必须采取抽样的方法。首先确定一个使用模型(usage model)来代表系统所有可能使用的(一般是无限的)总体。然后由使用模型产生测试用例。因为测试用例是总体的一个随机样本,所以可得到系统预期操作性能的有效统计推导,净室软件工程的技术手段,净室软件工程的基本模型,净室的组成,项目规划、项目管理、性能改善、工程变化,结构规范( 概念、模块、执行),功能规范,需求分析,使用规范,增量设计、正确性验证,统计测试、认证,使用模型、测试规划,

6、增量规划,用 户,用户评价的 累计规范,用户评价的 累计认证增量,系 统 工 程,需求 收集,盒结构 规格,形式化 设计,正确性 验证,代码 检查,测试计划,统计性 使用 测试,认证,需求 收集,盒结构 规格,形式化 设计,正确性 验证,代码 检查,测试计划,统计性 使用 测试,认证,净室技术-增量开发技术,增量开发的理论基础,引用透明性原理: 一个表达式可用与其等值的任意子表达式代替,一个给定函数(规范)f能改进为如下任何一种形式 do f1,f2 enddo if p then f1 else f2 endif while p do f1 enddo 函数的合并对原函数f在数值影响上必须等

7、价 软件增量开发的基础在于为程序制定数学函数规则因此程序开发作为一种自顶向下的控制结构或子函数(子规范)的函数改进(规范)过程,将导致对象或函数的分解或结合,功能规范,.,增量规划,增量设计/验证,增量1设计/验证,使用规范 增量测试与认证,增量2设计/验证,增量n设计/验证,产品评估与过程改进,增量1统计,增量1-2统计,增量1-n统计,增量开发的进度分配,增量1:定义顶层结构及桩组件 增量2:根据用户反馈,用新的可重用桩组件代替桩组件 增量3:用新的可重用桩组件部件代替桩组件,净室技术-基于函数规范的设计和验证,规范: 从一个外部视图(黑盒)开始转化为一个状态视图(状态盒),由一个过程视图

8、(明盒)来实现 三个盒形式不同,但行为等价,称为盒结构 将数学函数逐步扩展为逻辑连接词(如if-then-else)和子函数构成的结构,这种扩展一直进行下去,直到所有标识出来的子函数可以用程序设计语言直接表达,设计求精和验证,每个明盒规格说明代表了一个完成状态盒转换所需的过程(子函数)的设计,使用结构化程序设计结构和逐步求精 在每个求精层次上,净室团队执行一次形式化正确性验证。为此,将一类正确性条件集合附加到结构化程序设计结构上 如果函数f被扩展为序列g和h,则f所有输入的正确性条件是:执行g之后再执行h能完成f的功能吗? 如果一个函数p被精化为ifthen q else r的条件形式,则对p

9、的所有输入的正确性条件是(1)只要条件c为真,q能完成p的功能吗?(2)只要条件c为假,r能完成p的功能吗? 如果,精 化 过 程,验 证 过 程,盒结构精化和验证,黑盒规范的原则,对系统拥有者和用户:黑盒定义了他们分析和协商所需的行为 对系统开发者:黑盒定义待设计和实现所需的行为 对系统测试者:黑盒定义了在测试过程中待确认所需的行为,黑盒的组成(例),基于12个月平均销售额的预测部分情况,规则号1,激励历史条件 历史记录包含小于11个 月的历史记录至少有11个月的,响应接收的不求平均,当前激励,2,的最近 加上当前的后求平均,状态盒,对系统或其组件进行初步细化;定义状态空间 状态信息来自黑盒

10、中需要保存的激励元素 变换 当前的激励S (Stimulus) 映射响应R (Response) 旧状态OS (old State )映射到新状态NS (new State)即 (OS,S) (NS,R),状态盒组成(例),销售额情况表 规则号 旧状态 激励 新状态 响应 黑盒规则号, 不含 记录,1,在中为增加记录出现最新,收到的 但 不能求平均值,1,2,1,中包含的记录少于11个月,记录己 在中,把作为最新,收到 的但不能求平均值,明盒(清晰盒) 是一个计算机程序或程序集 将 (OS,S) (NS,R),借助过程实现 明盒的过程可以重用己有的黑盒或在求精过程中引入新的黑盒 明盒的正确性验

11、证是基于数学方法,证实一个过程与其规范相符,盒子的层次结构,黑盒,状态盒,白盒,黑盒,状态盒,明盒,黑盒,状态盒,明盒,黑盒,状态盒,明盒,盒子结构原则,引用透明性(Referential Transparency)明确组件所有需求,在逻辑上不需进一步规范事务闭包(Transaction Closure)事务是充分、足够的、可获得及保留所有状态数据状态迁移(State Migration)系统数据应该迁移和封装到最小的系统部分,不必复制更新共享服务(Common Services)对于多次用到的系统部分可定义共享服务,创建重用机会,净室技术-统计测试和软件认证,当测试的规模太大时,要采取抽样方

12、法,选择一个模型(马尔可夫模型、形式化语言等)代替使用的规模,然后用模型产生测试用例(测试用例是规模的一个随机样本),可以得到系统预期操作性能的有效统计推导统计使用测试等同于“以用户试图使用软件的方式来测试软件”。为了完成测试工作,净室测试团队必须确定软件的使用概率分布,按照使用概率为每个触发集合生成测试用例,盒子结构开发过程,(1) 定义系统需求(2) 确定和确认黑盒 (激励) (响应)(3) 确定和验证状态盒 (状态,激励) (新状态,响应)(4) 设计和验证明盒(5) 对新黑盒重复上述过程,净室实例,设计并验证一个小的程序,该程序对某给定的整数x,找出其平方根的整数部分y,净室实例-设计

13、求精与验证,定义入口和出口条件。为了证明设计的正确性,需要证明图中表示的条件init、loop、cont、yes和exit在所有情形下都是正确的,净室实例-设计求精与验证,条件init:假定入口条件是正确的,因此,init条件的第一部分x0 是满足的,在流程图中,init条件前的语句设置为y=0,因此,init条件的第二部分也是满足的,因此,init为真 条件loop可能以两种方式之一出现(1)直接从init(满足)或(2)通过穿过cont的控制流,因为条件cont与loop相同。无论从哪条路径到达,条件loop都为真 条件cont:如果(y+1)2 x,则y2 x,条件成立 条件yes在条件

14、逻辑中被测试,一定为真 x为被赋值或修改,保持不变,测试条件(y+1)2 x不成立时才能到达exit,因此(y+1)2 x,loop条件必须为真,因此exit满足 y递增而x不变,循环一定终止,CMM是软件组织进行软件过程改进以及评估和评价软件能力的基准。但在具体的过程改进实施中,需要有效的软件工程方法支持净室软件工程正是为过程改进提供了具体实施方法,它能够及早发现并消除缺陷,显著提高软件的正确性、可靠性和可理解性,降低项目的成本,提高软件质量,延长软件的生命周期,净室与CMM,可将净室软件工程应用到CMM的实践中,从组织管理和技术工程实践两个方面改进软件过程,从而更加经济有效地提升软件质量

15、在CMM中,关键实践仅仅描述了应该“做什么”,并没有给出更没有规定“如何”去具体操作,操作的方法和步骤必须由软件组织自己去解决 CMM只是对软件组织过程改进的指导,而非解决一切软件开发过程中的问题的法宝。在实施CMM的过程中,仍然需要有效的软件工程技术和方法,如“净室软件工程”方法的支持,净室与CMM,基于CMM的净室裁剪,由于净室过程和技术的优点以及在软件企业中实施所遇到的困难,有必要对净室进行基于CMM的裁剪,基于CMM的裁剪原则,裁剪必须符合净室的基本原则(是净室区别于传统软件工程方法的关键) 设计原则:开发人员应该并且能够生产出在被测试前就已经达到趋于零缺陷的产品 测试原则:净室测试的

16、目的不是寻找缺陷,而是度量软件产品的质量和性能,为软件过程的改进提供统计数据必须结合软件组织自身的能力成熟度现状。自身软件能力不同,过程改进的主要目标也不相同必须结合所开发软件的类型,基于净室的裁剪方法,引入净室的三个阶段 初始阶段:首先要引入净室小组开发的组织模式和质量控制下的增量式生命周期模型,将开发与测试分离,建立起基本项目过程。结合自身能力,引入形式化程度较低的黑盒规范与验证方法中级阶段:加入更多必须的管理规范,明确定义自身的软件过程。同时引入比较形式化的净室规范和验证技术,进一步降低开发阶段的缺陷率,提高软件生产率。并根据需要进行有限的统计测试高级阶段:引入净室统计测试技术,很好地实现对质量和性能的量化,为高层的决策提供可靠的数据依据,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 经营企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号