⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 190.txt

📁 SVM(支持向量机)和EM(最大熵)文本分类算法
💻 TXT
📖 第 1 页 / 共 2 页
字号:
日月光华 -- SE精华区文章阅读
--------------------------------------------------------------------------------
 发信人: jiachong (甲虫), 信区: SE
标  题: [转载]7.净室软件工程介绍                     jiachong 
发信站: 日月光华 (2003年04月09日12:48:22 星期三), 站内信件

【 以下文字转载自 SE 讨论区 】
【 原文由 jiachong 所发表 】
--bluefield整理

净室软件工程介绍
一、 净室方法概述
1. 净室概念
净室(cleanroom)软件工程室一种应用数学和统计学以经济的方式生产高质量软件的工
程技术。“净室”这个词来源于半导体工业的生产硬件的净室。在硬件生产过程中,严
格的工程过程预防了缺陷的产生,而不是事后再去排除故障。净室技术的重点在于通过
设计和测试中的质量认证来保证软件开发的正确性。净室方法植根于科学,它的应用可
提高软件生产效率并获得软件运行可靠性,从而成为一个工程过程。净室软件工程有两
个重要目标:一是开发过程的可管理性,二是使用时无失效。
2. 净室基础
(1) 函数理论
净室开发方法基于数学中的函数理论。一个程序的规范就是一个函数的规范,描述了一
个程序的定义域(或输入序列)到值域(或输出空间)的映射。一个定义明确(well-d
efined)的函数有如下特性:完备性、一致性和正确性。
(2) 统计理论
净室测试方法基于统计学。在软件测试中,用于采样的全体(population)是所有可能
使用情况的集合。其中集合中的每个元素代表系统的一种可能运行情况。统计的目的是
度量系统正确运行一个样本的能力。因为总体是无限的,完全的测试是不可能的,所以
必须利用统计学方法来对系统性能做一个有效的推理。在净室软件工程中,统计测试既
可用于产品检测,也可用于过程检测。
(3) 净室小组的工作
净室是面向小组的方法。净室开发小组完成三项主要工作:制定系统规范、开发和认证
。评审是净室小组的一项重要工作。每个产品从最初的概念到最后形成都要经历多次评
审。有两种评审。一种称为开发评审,开发评审的焦点集中于技术策略、好的想法以及
小组培训和交流。所走工作产品的简化是小组评审的显著目标之一。最初的思路几乎从
来都不是最好的,所以评审的一个关键目标是在规范、设计和验证方面找到更好的思路
。第二种评审称为验证评审。这种评审通过形式化方法来验证工作产品的正确性和完备
性,这些验证通常这样进行,设计者以口头方式注意列举其满足基于函数的正确性条件
的理由。小组顺序检查每个条件,不允许有存在异议的情况。任何修改必须经过后续评
审的重新验证。一个工作产品经过验证评审而不再有更改的必要就被认为是正确和完备
的。
3. 净室技术
净室软件工程可用如下三个关键技术来刻画:
(1) 置于统计过程控制之下的增量开发
增量开发基于产品开发中受控迭代的工程原理—控制迭代。增量开发不是把整个开发过
程作为一个整体,而是将其划分为一系列较小的、积累的增量。每个增量都时积累的,
也就是所有以前的增量加上新的工作而不断积累。增量开发是开发小组保持对项目智能
控制的基础。因为小组成员在任何时刻只需把注意立即终于工作的一部分,而不是一次
考虑所有的事情。
增量开发把一个净室项目分成一个有序的开发周期序列。在每个周期完成一些用户功能
。在每个增量开发完成时,产品的功能便可向客户演示。这样客户对产品有真实的改观
认识,他们可不受约束重新确认需求或时需求更加清晰。这将使产品在完成时双方的不
满程度降到最低。
(2) 基于函数的规范、设计和验证
净室采用的方法不仅有坚实的理论基础,而且可操作性也很好。规范从一个外部视图(
称之为黑盒)开始,然后被转化成一个状态机视图(称之为状态盒),最后由一个过程
(明盒)来实现。这些形式上不同、行为上等价的视图统称为盒子结构。盒子结构是基
于对象的,并支持软件工程的关键原则:信息隐藏和实现分离。
(3) 统计测试和软件认证
净室测试方法采用统计学的基本原理,既当总体太大时必须采取抽样的方法。首先确定
一个使用模型来代表系统所有可能使用的(一般是无限的)总体。然后由使用模型产生
测试用例。因为测使用历史用体的一个随机样本,所以可得到系统预期操作性能的有效
的统计推导。使用模型是指系统使用中所有可能的情形及其发生的概率。使用模型可有
许多形式(包括马尔可夫模型盒形式化的语法)来表示。在马尔可夫模型中,使用模型
是一个状态机组成,状态之间由转移弧线连接,转移弧线指系统测试时可能的激励,并
有一个概率值与之对应。概率指从给定状态进行特定转移的可能性大小。从起始状态穿
过模型到终点状态变得到了一个测试用例。
使用模型是可重用的资源,它能产生任意数目的侧使用例。实际上,测试一个系统可采
用多种使用模型,对每种使用模型可采用多种概率分布。例如,许多系统提供一些很少
使用的功能,但这些功能处理失误的后果很严重,如在核电厂关闭反应堆。这种功能在
一般的使用模型中的执行概率是很小的。当集中测试这种能产生重大后果的功能时,需
要采用严格安全使用模型、冒险使用模型、恶意使用模型或其他特定环境使用模型。
这些技术可分开使用,也可以一起使用。采用这些技术可改进软件生产过程。
4. 净室过程
净室参考模型(CRM)为净室项目运行定义了一套完整的过程和工作产品。CRM由14个分
别对应于软件管理、规范、开发和认证的独立过程组成:
l 管理过程包括项目计划、项目管理、性能改进以及工程变更。
l 规范过程包括需求分析、功能规范、使用规范、结构规范和增量计划。
l 开发过程包括软件再工程、增量设计和正确性验证。
l 认证过程包括使用建模、测试计划、统计测试和认证。]
二、 增量式开发的净室管理
统计质量控制之下的增量式开发是软件项目建立和保持管理控制的净室途径。在使用净
室方法时,软件产品是以一系列功能增量的形式开发的,这些增量合起来就形成了最终
的产品。最稳定的需求被首先实现。这些增量的集成是自顶向下来进行的。
1. 增量式开发的优点
(1) 进展的可见性
例用增量式开发,每一步增量实现了一个或多个最终用户功能。每一步增量包含所有早
期的已开发的功能集机上一些新的功能;系统再逐步积累的增量中增长。例如,在早期
增量结束时,开发者可以很有信心的说:系统的20%已100%完成了,而不是推测系统已完
成了20%。
(2) 智能控制
增量时开发通过引用透明性,实现了整个系统开发过程中的智能控制。当拥有引用透明
性时,一个系统的部件无需回溯就能根据其子规范得以实现。无需重做前期增量。这种
策略有利于在一个完整系统中对每个增量进行正确性验证。
(3) 增量系统集成
净室增量式开发允许在整个开发生命期引用透明的用户函数增量的连续集成。因为每一
步增量设计基于一个已验证的子规范和前期增量已测试的接口,因此,几乎没有更深的
设计和接口错误。较好的定义增量贯穿于整个系统开发过程,系统在良好定义的增量忠
言化。测试和验证工作始于开发周期早期。
(4) 连续质量反馈贯穿统计过程控制
已在净室中实践的增量式开发为统计过程控制提供了基础。每一个净室增量都是过程的
一个完整周期,包含规范、开发和新的用户函数的验证,加上到目前为止所有已完成工
作的测试。作为统计过程控制的典型,把过程的每一次反复的性能度量与性能目标相比
较,以决定是否过程一直在控制之下(即是否正如所期望的那样发生)。
(5) 用户使用中不断的功能反馈
增量式开发有助于用户对一个进化系统的执行功能做出尽早的不断的反馈,必要时允许
改变。因为增量执行于系统环境并代表了用户功能的子集,早期的增量能通过用户对系
统功能性和实用性的检测来反馈。这种反馈有助于避免开发出实效的系统和建立用户可
接受的最终产品。
(6) 变更的适应性
在系统需求和性努环境中增量室开发允许不可避免变更的系统适应性。在每一步增量完
成时,系统需求的积累变更所产生的影响能根据当前规范和增量设计来评估。如果变更
于将来增量相互独立,则通常与现已存在的增量开发计划相合并,并对进度和资源进行
可能的调整。如果变更影响已完成的增量,自顶向下修改系统开发,通常重用绝大多数
已存在的增量代码(通常是全部),按照要求的进度和资源来进行相应调整。
(7) 进度与资源管理
项目资源在增量式开发全过程中能在可控制的方式下分配。可用进度是决定待开发的增
量数量和其规模的一个因素。在短进度中,小规模增量将有助于在增量交付与认证组织
间维持充分的时间段,允许一个有序的测试过程。然而,这将给项目开发小组设计和实
现更大、更复杂的增量带来更多负担。进度和复杂性的折衷能够反映增量式开发计划。
另外,从后续增量得到的反馈,为过程和产品性能的目标度量提供了管理,以允许在开
发和测试中对不足和意外收获的适应。
2.增量式开发的理论基础
净室过程中的增量是开发技术是基于引用透明性原理的。引用透明性意味着一个表达式
所关心的唯一的事情是它的值,能用其值相等的子表达式代替。软件增量式开发的基础
在于为程序制定数学函数规则。这种观点认为程序开发作为一种自顶向下的控制结构或
子函数(子规范)的函数改进过程,这种改进将导致基于对象或函数分解,或者是二者
的结合。因为引用透明性,任何精化步骤的验证能够与其它精化步骤相互独立进行,这
就意味着,在系统的大部分组件写出之前,在早期的增量中,系统的体系结构能够被验
证,在后期的增量中,体系结构不需重新验证。
三、 净室软件规范
根据结构化编程的理论,无论多么复杂的程序结构都可用分层结构中的三种基本控制结
构:顺序,选择和循环嵌套而成。然而,软件系统的开发不仅仅需要系统控制流,如今
的大规模系统涉及整个企业中大量数据的存储、检索、传送和处理数据的操作。在缺乏
工程基础的系统开发中,这些操作使数据复杂性不断积累,从而难以控制。净室软件规
范和设计使用了三种系统结构─黑盒、状态盒和明盒,统称为盒子结构。这些结构体现
了数据封装和数据隐藏的重要概念。在逐步求精和验证过程中开发盒子结构,并将系统
控制和数据操作结合起来。系统的开发就是把这些结构以一种可证明的方式逐层嵌套和
排序。
1. 净室规范和设计的盒子结构
盒子结构是在规范和设计中对现实系统的外在基本属性的功能描述。有三种盒子:黑盒
、状态盒、明盒。这些盒子不仅展示了外部行为,而且还提高了内部可见度。黑盒确定
了一个系统或系统组件的外部行为。状态盒则进一步指定了完成外部行为所需的状态数
据。明盒则进一步把状态盒具体化,它确定了完成状态和行为的过程设计。它可是用已
有的黑盒或引入新的黑盒,这些黑盒将在以后细化(明盒由程序控制结构组成),每步
细化是根据前一步进行验证的。这样盒子结构将系统开发的三个方面(行为、数据和过
程的规范)分离开,但又把它们联成一个细化和验证的内聚过程。
(1) 黑盒行为
黑盒定义了一个系统或系统组件的外部行为。当系统接受激励S(视为从其环境的输入)
时,它将产生相应R(作为对其环境的输出),响应不仅与当前激励有关,还与到目前为
止收到的激励有关。
黑盒行为的数学语义可写成如下函数:
                历史激励→响应

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -