




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
哈尔滨工业大学计算机学院唐好选Email tanghx 净室软件工程 CSE 净室 Cleanroom 一词源自半导体工业中硬件生产车间 通过严格 洁净的生产过程预防了缺陷的产生 而不是在事后再去排除故障 借用这个词 充分显示了净室技术 防患于未然 的主导思想 净室基本概念 净室软件工程 CSE 是一种应用数学和统计学理论生产软件的工程技术 力图通过严格的工程化的软件过程达到开发中的零缺陷或接近零缺陷 通过在第一次正确的书写代码增量 并在测试前验证其正确性来避免成本过高的缺陷消除过程 它的过程模型是在代码增量集成到系统的同时 进行代码增量的统计质量验证 净室方法的观点 强调规格说明和设计上严格性 使用基于数学的正确性证明对结果设计模型的每个元素进行形式化验证 在规格说明和设计中消除错误 以 干净 的方式进行制造 20世纪70年代末80年代初 资深数学家和IBM客座科学家HarlanMills阐述了将数学 统计学及工程学上的基本概念应用到软件的设想 净室软件工程的发展 Mills的观点 程序中出现错误的唯一方式是作者将错误引入进去的 没有其他的方式 正确实践的目标是 设法避免引入错误 通过测试或其它任何运行程序的方式来消除错误 净室软件工程的发展 两大基本观点促进了Mills的工作 首先 程序是数学函数规则 其次 潜在的程序执行是无穷的 质量认证必须进行统计采样第一个观点使所有函数理论向软件开发敞开大门 导致以下技术的产生 盒式结构规范及设计 函数理论正确性检验及增量开发第二个观点使所有统计理论在软件测试方面得到应用 导致了统计使用测试和质量认证 致力于通过防止软件缺陷来提高软件质量立足于严格的科学理论基础强调净室小组 制定系统规范 开发和认证 基本目标是 开发过程的可管理性和使用时的无失效性 净室软件工程的基本特点 函数理论和抽样理论函数理论一个函数定义了从定义域到值域的映射 一个特定的程序好似定义了一个从定义域 所有可能的输入序列的集合 到值域 所有对应于输入的输出集合 的映射 这样 一个程序的规范就是一个函数的规范抽样理论不可能对软件的所有可能应用都进行测试 把软件的所有可能的使用情况看作总体 通过统计学手段对其进行抽样 并对样本进行测试 根据测试结果分析软件的性能和可靠性 净室软件工程的理论基础 统计过程控制下的增量式开发 IncrementalDevelopment 增量是最终软件产品的功能子集 系统功能随时间增加基于函数的规范 设计 盒子结构方法按照函数理论定义了三种抽象层次 行为视图 有限状态机视图和过程视图 规范从一个外部行为视图 称为黑盒 开始然后被转化为一个状态机视图 称为状态盒 最后由一个过程视图 明盒 来实现盒子结构是基于对象的 净室软件工程的技术手段 正确性验证 是CSE的核心 正是由于采用了这一技术 净室项目的软件质量才有了极大的提高统计测试 StatisticallyBasedTesting 和软件认证 净室测试方法采用统计学的基本原理 即当总体太大时必须采取抽样的方法 首先确定一个使用模型 usagemodel 来代表系统所有可能使用的 一般是无限的 总体 然后由使用模型产生测试用例 因为测试用例是总体的一个随机样本 所以可得到系统预期操作性能的有效统计推导 净室软件工程的技术手段 净室软件工程的基本模型 净室的组成 项目规划 项目管理 性能改善 工程变化 结构规范 概念 模块 执行 功能规范 需求分析 使用规范 增量设计 正确性验证 统计测试 认证 使用模型 测试规划 增量规划 用户 用户评价的累计规范 用户评价的累计认证增量 系统工程 需求收集 盒结构规格 形式化设计 正确性验证 代码检查 测试计划 统计性使用测试 认证 需求收集 盒结构规格 形式化设计 正确性验证 代码检查 测试计划 统计性使用测试 认证 净室技术 增量开发技术 增量开发的理论基础 引用透明性原理 一个表达式可用与其等值的任意子表达式代替 一个给定函数 规范 f能改进为如下任何一种形式dof1 f2enddoifpthenf1elsef2endifwhilepdof1enddo函数的合并对原函数f在数值影响上必须等价软件增量开发的基础在于为程序制定数学函数规则因此程序开发作为一种自顶向下的控制结构或子函数 子规范 的函数改进 规范 过程 将导致对象或函数的分解或结合 功能规范 增量规划 增量设计 验证 增量1设计 验证 使用规范增量测试与认证 增量2设计 验证 增量n设计 验证 产品评估与过程改进 增量1统计 增量1 2统计 增量1 n统计 增量开发的进度分配 增量1 定义顶层结构及桩组件增量2 根据用户反馈 用新的可重用桩组件代替桩组件增量3 用新的可重用桩组件部件代替桩组件 净室技术 基于函数规范的设计和验证 规范 从一个外部视图 黑盒 开始转化为一个状态视图 状态盒 由一个过程视图 明盒 来实现三个盒形式不同 但行为等价 称为盒结构将数学函数逐步扩展为逻辑连接词 如if then else 和子函数构成的结构 这种扩展一直进行下去 直到所有标识出来的子函数可以用程序设计语言直接表达 设计求精和验证 每个明盒规格说明代表了一个完成状态盒转换所需的过程 子函数 的设计 使用结构化程序设计结构和逐步求精在每个求精层次上 净室团队执行一次形式化正确性验证 为此 将一类正确性条件集合附加到结构化程序设计结构上如果函数f被扩展为序列g和h 则f所有输入的正确性条件是 执行g之后再执行h能完成f的功能吗 如果一个函数p被精化为ifthenqelser的条件形式 则对p的所有输入的正确性条件是 1 只要条件c为真 q能完成p的功能吗 2 只要条件c为假 r能完成p的功能吗 如果 精化过程 验证过程 盒结构精化和验证 黑盒规范的原则 对系统拥有者和用户 黑盒定义了他们分析和协商所需的行为对系统开发者 黑盒定义待设计和实现所需的行为对系统测试者 黑盒定义了在测试过程中待确认所需的行为 黑盒的组成 例 基于12个月平均销售额的预测部分情况 规则号1 激励历史条件历史记录包含小于11个月的历史记录至少有11个月的 响应接收的不求平均 当前激励 2 的最近加上当前的后求平均 状态盒 对系统或其组件进行初步细化 定义状态空间状态信息来自黑盒中需要保存的激励元素变换当前的激励S Stimulus 映射响应R Response 旧状态OS oldState 映射到新状态NS newState 即 OS S NS R 状态盒组成 例 销售额情况表规则号旧状态激励新状态响应黑盒规则号 不含记录 1 在中为增加记录出现最新 收到的但不能求平均值 1 2 1 中包含的记录少于11个月 记录己在中 把作为最新 收到的但不能求平均值 明盒 清晰盒 是一个计算机程序或程序集将 OS S NS R 借助过程实现明盒的过程可以重用己有的黑盒或在求精过程中引入新的黑盒明盒的正确性验证是基于数学方法 证实一个过程与其规范相符 盒子的层次结构 黑盒 状态盒 白盒 黑盒 状态盒 明盒 黑盒 状态盒 明盒 黑盒 状态盒 明盒 盒子结构原则 引用透明性 ReferentialTransparency 明确组件所有需求 在逻辑上不需进一步规范事务闭包 TransactionClosure 事务是充分 足够的 可获得及保留所有状态数据状态迁移 StateMigration 系统数据应该迁移和封装到最小的系统部分 不必复制更新共享服务 CommonServices 对于多次用到的系统部分可定义共享服务 创建重用机会 净室技术 统计测试和软件认证 当测试的规模太大时 要采取抽样方法 选择一个模型 马尔可夫模型 形式化语言等 代替使用的规模 然后用模型产生测试用例 测试用例是规模的一个随机样本 可以得到系统预期操作性能的有效统计推导统计使用测试等同于 以用户试图使用软件的方式来测试软件 为了完成测试工作 净室测试团队必须确定软件的使用概率分布 按照使用概率为每个触发集合生成测试用例 盒子结构开发过程 1 定义系统需求 2 确定和确认黑盒 激励 响应 3 确定和验证状态盒 状态 激励 新状态 响应 4 设计和验证明盒 5 对新黑盒重复上述过程 净室实例 设计并验证一个小的程序 该程序对某给定的整数x 找出其平方根的整数部分y 净室实例 设计求精与验证 定义入口和出口条件 为了证明设计的正确性 需要证明图中表示的条件init loop cont yes和exit在所有情形下都是正确的 净室实例 设计求精与验证 条件init 假定入口条件是正确的 因此 init条件的第一部分x 0是满足的 在流程图中 init条件前的语句设置为y 0 因此 init条件的第二部分也是满足的 因此 init为真条件loop可能以两种方式之一出现 1 直接从init 满足 或 2 通过穿过cont的控制流 因为条件cont与loop相同 无论从哪条路径到达 条件loop都为真条件cont 如果 y 1 2 x 则y2 x 条件成立条件yes在条件逻辑中被测试 一定为真x为被赋值或修改 保持不变 测试条件 y 1 2 x不成立时才能到达exit 因此 y 1 2 x loop条件必须为真 因此exit满足y递增而x不变 循环一定终止 CMM是软件组织进行软件过程改进以及评估和评价软件能力的基准 但在具体的过程改进实施中 需要有效的软件工程方法支持净室软件工程正是为过程改进提供了具体实施方法 它能够及早发现并消除缺陷 显著提高软件的正确性 可靠性和可理解性 降低项目的成本 提高软件质量 延长软件的生命周期 净室与CMM 可将净室软件工程应用到CMM的实践中 从组织管理和技术工程实践两个方面改进软件过程 从而更加经济有效地提升软件质量在CMM中 关键实践仅仅描述了应该 做什么 并没有给出更没有规定 如何 去具体操作 操作的方法和步骤必须由软件组织自己去解决CMM只是对软件组织过程改进的指导 而非解决一切软件开发过程中的问题的法宝 在实施CMM的过程中 仍然需要有效的软件工程技术和方法 如 净室软件工程 方法的支持 净室与CMM 基于CMM的净室裁剪 由于净室过程和技术的优点以及在软件企业中实施所遇到的困难 有必要对净室进行基于CMM的裁剪 基于CMM的裁剪原则 裁剪必须符合净室的基本原则 是净室区别于传统软件工程方法的关键 设计原则 开发人员应该并且能够生产出在被测试前就已经达到趋于零缺陷的产品测试原则 净室测试的目的不是寻找缺陷 而是度量软件产品的质量和性能 为软件过程的改进提供统计数据必须结合软件组织自身的能力成熟度现状 自身软件能力不同 过程改进的主要目标也不相同必须结合所开发软件的类型 基于净室的裁剪方法 引入净室的三个阶段初始阶段 首先要引入净室小组开发的组织模式和质量控制下的增量式生命周期模型 将开发与测试分离 建立起基本项目过程 结合自身能力 引入形式化程度较低的黑盒规范与验证方法中级阶段 加入更多必须的管理规范 明确定义自身的软件过程 同时引入比较形式化的净室规范和验证技术 进一步降低开发阶段的缺陷率 提高软件生产率 并根据需要进行有限的统计测试高级阶段 引入净室统计测试技术 很好地实现对质量和性能的量化 为高层的决策提供可靠的数据依据 针对净室技术形式化程度的裁剪 1 对盒式规范技术的裁剪 黑盒规范对系统的外部可见行为做一个完整的定义 隐藏了软件设计和实现的所有细节 适用于软件开发的任何粒度中 规范的描述形式可以不同 自然语言 半形式化的规范语言 而严格的函数表达方法状态盒规范是对系统内部数据的描述 它的实现形式依赖于黑盒规范明盒规范是对黑盒与状态盒逐步求精的实现 最终形式便是源代码 既可以是结构化的 也可以是面向对象的 不受开发方法和语言的限制 针对净室技术形式化程度的裁剪 2 对盒式规范验证技术的裁剪 验证过程基于非执行的测试方法寻找并消除开发阶段的缺陷 因盒式规范的形式化不同 验证方法也有相应变化 检查方法简单易行 但是不够严格 基于潜在错误清单的审查方法有规范的步骤 是一种经济有效的错误检测方法基于函数理论的正确性证明 要求在盒式规范过程中 建立明确的预期函数 这就要求盒式规范本身的形式化程度较高 此外要求评审人员有相应的数学知识和专用CASE工具的支持 3 对统计测试技术的裁剪 规范和验证阶段采用的技术都不严格时 更需测试过程来保证产品发布前的低缺陷 以减少产品的维护费用 针对净室技术形式化程度的裁剪 CMM与净室技术都不是万能的 CMM提出的是完整的软件开发和管理的过程 而净室更多的是技术方面的支持 两者相互一致并相互补充 将二者合理地结合 能够获得更高的软件质量 更低的开发成本 更高的生产效率和更长的软件生命周期 净室过程的优点 CSE太理论化 需要更多的数学知识 其正确性验证的步骤比较困难且比较耗时CSE要求采用增量式开发 采用盒子结构 采用统计测试方法 普通工程师必须经过加强训练才能掌握CSE开发小组不进行传统的模块测试 这是不现实的 工程师可能对编程语言和开发环境还不熟悉 而且编译器或操作系统的bug也可能导致未预期的错误 净室软件工程的缺点 净室过程中的关键技术分析 净室软件工程方法的效果 爱立信公司在手机操
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中小学教育教学理论试题与答案
- 人民检察院面试题(含答案)
- 儿科试题含参考答案
- 【执业护士考试题库】-2025年执业护士考试题库及答案解析
- 心肺复苏试题及答案
- 2025年绿色有机农产品直供合作协议(生态美味版)
- 《2025年度子女监护权变更与豪华轿车转让及财产分配合同》
- 2025专业帐篷品牌代理销售合同范本
- 2025年青少年托管服务及多元化素质教育项目合作协议
- 2025年度水体污染源监测与治理服务承包合同
- GB/T 34239-2017聚3-羟基丁酸-戊酸酯/聚乳酸(PHBV/PLA)共混物长丝
- GB/T 28707-2012碟簧支吊架
- GB/T 2791-1995胶粘剂T剥离强度试验方法挠性材料对挠性材料
- GB/T 25702-2010复摆颚式破碎机颚板磨耗
- GB/T 13384-2008机电产品包装通用技术条件
- 超分子化学简介课件
- 流体力学-流体力学基本方程课件
- 粮油产品购销合同
- YYT 0681.2-2010 无菌医疗器械包装试验方法 第2部分:软性屏障材料的密封强度
- 《中华人民共和国工会法》工会法律知识竞赛题库120题(含答案解析)
- 综合能源管理解决方案(完整版)
评论
0/150
提交评论