净室软件工程_第1页
净室软件工程_第2页
净室软件工程_第3页
净室软件工程_第4页
净室软件工程_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

哈尔滨工业大学计算机学院净室软件工程(CSE)

CleanroomSoftwareEngineering“净室”一词源自半导体工业中硬件生产车间,通过严格、洁净的生产过程预防了缺陷的产生,而不是在事后再去排除故障。借用这个词,充分显示了净室技术“防患于未然”的主导思想净室软件工程(CSE)是一种应用数学和统计学理论高效、经济地生产高质量软件的工程技术。力图通过严格的工程化的软件过程达到开发中的零缺陷或接近零缺陷净室基本概念20世纪70年代末80年代初,资深数学家和IBM客座科学家HarlanMills阐述了将数学、统计学及工程学上的基本概念应用到软件的设想净室软件工程的发展两大基本观点促进了Mills的工作:首先,程序是数学函数规则,其次,潜在的程序执行是无穷的,质量认证必须进行统计采样第一个观点使所有函数理论向软件开发敞开大门,导致以下技术的产生:盒式结构规范及设计、函数理论正确性检验及增量开发第二个观点使所有统计理论在软件测试方面得到应用,导致了统计使用测试和质量认证第一项净室软件项目由IBM的RichardLinger于20世纪80年代中期负责实施。COBOL结构化设施项目开发出一项商业软件再工程产品,该产品显示出了卓越的质量水平及用户使用可靠性,净室方法得到了初步确认1990年,RichardLinger创建了IBM净室软件技术中心20世纪90年代初,美国陆军PicatinnyArsenal执行了一个净室项目,并在这个项目中获得了20倍于引进净室技术所用的投资回报净室软件工程的发展1996年CarnegieMellon大学软件工程研究所(SEI)完成了一个项目,该项目定义了净室参考模型并将净室的工程技术映射到CMM的管理过程中。这项工作的主要结论是净室与CMM是兼容的、相互支持的净室软件工程的发展它致力于通过防止软件缺陷来提高软件质量;它建立在严格的科学理论基础上;它强调team-work和team-review;它的基本目标是:开发过程的可管理性和使用时无失效净室软件工程的基本特点函数理论和抽样理论函数理论一个函数定义了从定义域到值域的映射。一个特定的程序好似定义了一个从定义域(所有可能的输入序列的集合)到值域(所有对应于输入的输出集合)的映射。这样,一个程序的规范就是一个函数的规范抽样理论不可能对软件的所有可能应用都进行测试。把软件的所有可能的使用情况看作总体,通过统计学手段对其进行抽样,并对样本进行测试,根据测试结果分析软件的性能和可靠性净室软件工程的理论基础统计过程控制下的增量式开发(IncrementalDevelopment):增量是最终软件产品的功能子集基于函数的规范、设计:盒子结构方法按照函数理论定义了三种抽象层次:行为视图、有限状态机视图和过程视图。规范从一个外部行为视图(称为黑盒)开始然后被转化为一个状态机视图(称为状态盒)最后由一个过程视图(明盒)来实现盒子结构是基于对象的,并支持软件工程的关键原则:信息隐藏和实现分离净室软件工程的技术手段正确性验证:是CSE的核心,正是由于采用了这一技术,净室项目的软件质量才有了极大的提高统计测试(StatisticallyBasedTesting)和软件认证:净室测试方法采用统计学的基本原理,即当总体太大时必须采取抽样的方法。首先确定一个使用模型(usagemodel)来代表系统所有可能使用的(一般是无限的)总体。然后由使用模型产生测试用例。因为测试用例是总体的一个随机样本,所以可得到系统预期操作性能的有效的统计推导净室软件工程的技术手段净室软件工程的基本模型净室软件开发的基础基于理论的(函数理论、统计理论)面向工作组的针对经济适用软件的生产针对高质量软件的生产排除产品缺陷,引入价格有效和时间有效的构造方法,在规约和设计中消除错误,以净室方法制作净室的组成项目规划、项目管理、性能改善、工程变化结构规范(概念、模块、执行)功能规范需求分析

使用规范

软件再工程、增量设计、正确性验证统计测试、认证使用模型、测试规划增量规划用户用户评价的累计规范用户评价的累计认证增量系统工程需求收集盒结构规格

形式化设计正确性验证代码检查测试计划统计性使用测试认证

需求收集盒结构规格形式化设计正确性验证代码检查测试计划统计性使用测试认证净室技术-增量开发技术…增量开发的理论基础基于引用透明性原理:一个表达式的值可用与其值相等的子表达式代替,如一个给定函数(规范)f能改进为如下任何一种形式:dof1,f2enddoifpthenf1elsef2endifwhilepdof1enddo函数的合并对原函数f在数值影响上必须等价软件增量开发的基础在于为程序和程序部分制定数学函数规则(Linger、Mills和Witt,1979)

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

变换状态盒输入S输出R精化过程验证过程状态

BB1

BB2明盒SR盒结构精化和验证F=s*RR(response)SH(stimulusHistory)黑盒(所需行为)历史激励响应黑盒规范的原则对系统拥有者和用户:黑盒定义了他们分析和协商的所需行为对系统开发者:黑盒定义待设计和实现的所需行为对系统测试者:黑盒定义了在测试过程中待确认的所需行为黑盒的组成基于12个月平均销售额的预测部分情况规则号

1

激励历史条件<产品>历史记录包含小于11个月的<销售额><产品>历史记录至少有11个月的<销售额>

响应接收<产品>

的<销售额>

不求平均当前激励2<销售额><产品><销售额><产品><产品>的最近<销售额>加上当前的<销售额>后求平均状态盒对系统或其组件进行初步细化;定义状态空间状态信息来自黑盒中需要保存的激励元素变换当前的激励S(Stimulus)映射响应R(Response)旧状态OS(oldState)映射到新状态NS(newState)

即(OS,S)(NS,R)状态盒组成销售额情况表规则号

旧状态

激励

新状态

响应

黑盒规则号<销售文件>不含<产品>记录<销售额><产品>1在<销售文件>中为<产品>增加记录出现最新<销售额值>收到<产品>的<销售额值>但不能求平均值121<销售文件>中<产品>包含的<销售额值>记录少于11个月<销售额><产品><产品>记录己在<销售文件>中,把<销售额>作为最新<销售额值>收到<产品>的<销售额值>但不能求平均值明盒是一个计算机程序或程序集将

(OS,S)(NS,R),借助过程实现明盒的过程可以重用己有的黑盒或在求精过程中引入新的黑盒明盒的正确性验证是基于数学方法,证实一个过程与其规范相符盒子的层次结构BB黑盒SB状态盒CB白盒BBSBCBBBSBCBBBSBCB……盒子结构原则

引用透明性(ReferentialTransparency)

明确组件所有需求,在逻辑上不需进一步规范事务闭包(TransactionClosure)

事务应是充分的、足够的、获得及保留所有状态数据状态迁移(StateMigration)

系统数据应该迁移和封装到最小的系统部分,不必复制更新共享服务(CommonServices)

对于多次用到的系统部分可定义共享服务,创建重用机会净室技术-统计测试和软件认证当测试的规模太大时,要采取抽样方法选择一个模型(马尔可夫模型、形式化语言等)代替使用的规模,然后用模型产生测试用例(测试用例是规模的一个随机样本),可以得到系统预期操作性能的有效统计推导盒子结构开发过程

(1)定义系统需求

(2)确定和确认黑盒

(激励)(响应)

(3)确定和验证状态盒

(状态,激励)(新状态,响应)(4)设计和验证明盒

(5)对新黑盒重复上述过程CMM是软件组织进行软件过程改进以及评估和评价软件能力的基准。但在具体的过程改进实施中,需要有效的软件工程方法的支持净室软件工程正是为过程改进提供了具体实施方法,它能够及早发现并消除缺陷,显著提高软件的正确性、可靠性和可理解性,降低项目的成本,提高软件质量,延长软件的生命周期净室与CMM可将净室软件工程应用到CMM的实践中,从组织管理和技术工程实践两个方面改进软件过程,从而更加经济有效地提升软件质量在CMM中,关键实践仅仅描述了应该“做什么”,并没有给出更没有规定“如何”去具体操作,操作的方法和步骤可以由也必须由软件组织自己去解决CMM只是对软件组织过程改进的指导,而非解决一切软件开发过程中的问题的法宝。在实施CMM的过程中,仍然需要有效的软件工程技术和方法,如“净室软件工程”方法的支持净室与CMM需求管理

软件项目计划

项目跟踪、监控

软件转包合同管理

软件质量保证

软件配置管理净室与CMM五级CMM可重复级关键过程域主要净室过程

需求分析

项目规划项目管理项目管理

项目规划、管理

项目规划、管理、变更CMM己定义级关键过程域主要净室过程组织过程焦点组织过程定义培训程序集成软件管理软件产品工程组织协调同级的评审

项目规划、管理、性能改进项目规划、管理、性能改进项目规划、项目管理项目管理、项目管理

需求分析、功能、使用、结构规范,增量规划,变更,验证等

项目规划、项目管理所有过程,正确性验证CMM可管理级关键过程域主要净室过程定量过程管理软件质量管理项目规划、管理、统计测试、认证、性能改进CMM优化级关键过程域主要净室过程正确性验证、性能改进性能改进性能改进缺陷防范技术变更管理过程变更管理基于CMM的净室裁剪由于净室过程和技术的优点以及在软件企业中实施所遇到的困难,有必要对净室进行基于CMM的裁剪基于CMM的裁剪原则裁剪必须符合净室的基本原则(是净室区别于传统软件工程方法的关键)设计原则:开发人员应该并且能够生产出在被测试前就已经达到趋于零缺陷的产品来测试原则:净室测试的目的不是寻找缺陷,而是度量软件产品的质量和性能,为软件过程的改进提供统计数据必须结合软件组织自身的能力成熟度现状。自身软件能力不同,过程改进的主要目标也不相同。超越自身成熟度的裁剪,不能发挥净室的优势,却可能带来不可预测的风险,低于自身成熟度的裁剪,达不到效果,反而浪费了资源必须结合所开发的软件的类型基于净室的裁剪方法引入净室的三个阶段初始阶段:首先要引入净室小组开发的组织模式和质量控制下的增量式生命周期模型,将开发与测试分离,建立起基本项目过程。结合自身能力,引入形式化程度较低的黑盒规范与验证方法中级阶段:加入更多必须的管理规范,明确定义自身的软件过程。同时引入比较形式化的净室规范和验证技术,进一步降低开发阶段的缺陷率,提高软件生产率。并根据需要进行有限的统计测试高级阶段:引入净室统计测试技术,很好地实现对质量和性能的量化,为高层的决策提供可靠的数据依据针对净室技术形式化程度的裁剪(1)对盒式规范技术的裁剪:黑盒规范对系统的外部可见行为做一个完整的定义,隐藏了软件设计和实现的所有细节,适用于软件开发的任何粒度中。规范的描述形式可以不同:自然语言、半形式化的规范语言、而严格的函数表达方法状态盒规范是对系统内部数据的描述,它的实现形式依赖于黑盒规范明盒规范是对黑盒与状态盒逐步求精的实现,最终形式便是源代码。既可以是结构化的,也可以是面向对象的,不受开发方法和语言的限制针对净室技术形式化程度的裁剪(2)对盒式规范验证技术的裁剪:验证过程基于非执行的测试方法寻找并消除开发阶段的缺陷。因盒式规范的形式化不同,验证方法也有相应变化。检查方法简单易行,但是不够严格,基于潜在错误清单的审查方法有规范的步骤,是一种经济有效的错误检测方法基于函数理论的正确性证明,要求在盒式规范过程中,建立明确的预期函数,这就要求盒式规范本身的形式化程度较高,此外要求评审人员有相应的数学知识和专用CASE工具的支持(3)对统计测试技术的裁剪:规范和验证阶段采用的技术都不严格时,更需测试过程来保证产品发布前的低缺陷,以减少产品的维护费用针对净室技术形式化程度的裁剪CMM与净室技术都不是万能的。CMM提出的是完整的软件开发和管理的过程,而净室更多的是技术方面的支持。两者相互一致并相互补充。将二者合理地结合,能够获得更高的软件质量、更低的开发成本,更高的生产效率和更长的软件生命周期净室过程的优点特点小组开发的组织模式统计控制下的增量开发开发与测试并行进行所起作用1)降低人员间的通信和协调2)减少对权威的依赖3)提高团队的开发能力4)小组评审尽早发现缺陷并显著降低成本1)开发过程可预测2)开发进度可见3)开发在智能控制下易于适应需求的变化,促进持续的求精1)开发阶段就完成预防缺陷和修正缺陷的工作2)测试过程完全从用户使用角度出发3)重视质量的度量与反馈CSE太理论化,需要更多的数学知识。其正确性验证的步骤比较困难且比较耗时CSE要求采用增量式开发、采用盒子结构、采用统计测试方法,普通工程师必须经过加强训练才能掌握CSE开发小组不进行传统的模块测试,这是不现实的。工程师可能对编程语言和开发环境还不熟悉,而且编译器或操作系统的bug也可能导致未预期的错误CSE毕竟脱胎于传统软件工程,不可避免地带有传统软件工程的一些弊端净室软件工程的缺点净室过程中的关键技术分析关键技术优点缺点盒式结构的规范方法促进对需求的明确和理解,利于复用,规范的文档,便于验证严格的形式化语言描述规范,难以掌握和使用,需要专有的CASE工具的支持,用户难以理解;初期投入大,回报慢基于数学理论的正确性验证尽早发现并消除缺陷,提高质量,显著降低成本对一般软件来说,代价太昂贵;正确性证明难以寻找合适的预期函数规范使用模型的建立和统计测试与认证从用户使用角度出发,利于需求的理解和对开发人员的反馈,实现对质量和性能的量化使用模型不易建立;需要统计学知识和CASE工具的支持;需要其他测试方法的补充净室软件工程方法的效果爱立信公司在手机操作系统OS32的开发中引入了经过裁剪的净室技术。73人以个人或组际(teamofteams)的方式工作了33个月,通过15个增量过程开发了约33万行代码以通信业广泛使用的SDL语言完成盒式规范;使用了小组评审技术,但没有进行正确性证明;建立了使用模型,但只进行了很有限的统计测试这个项目取得了令人满意的结果:集成和测试的时间减少了,缺陷率比预期低了50%,而生产率则提高了70%以上。这足以说明,通过合理裁剪的净室技术是能够非常有效地预防缺陷,提高软件质量和生产率的净室软件工程:(CleanroomSoftwareEngineering)

是一种基于理论(函数理论、统计理论)、面向工作组的方法是针对经济适用软件生产、针对高质量软件的生产、排除产品缺陷,引入价格有效和时间有效的构造方法净室软件工程在规约和设计中消除错误,以净室方法制作小结净室过程强调在规约和设计上的严密性,使用基于数学的正确性证明来对结果设计模型的每个元素进行形式化验证净室方法强调统计质量控制技术,包括客户对软件预期使用的测试净室软件工程通过使用盒结构规约的方法来遵从操作分析原则敏捷软件开发强调人的作用人与人之间的交互是复杂的,并且效果从来都难以预测,但却是工作中最为重要的方面原则(principle)、模式(pattern)和实践(practice)都是重要的,但是使它们发挥作用的是人1)敏捷联盟敏捷软件开发宣言:

个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划

2)原则

(1)尽早、持续的交付有价值的软件

(2)欢迎改变需求

(3)开发人员在一起工作

(4)提供需要的环境支持

(5)面对面的交谈

(6)用工作的软件进行进度度量

(7)可持续的开发速度

(8)关注优秀的技能和好的设计

(9)简单

(10)最好的构件、需求和设计出自于自组织的团队3)极限编程(extremeprogramming)XP是一种经过实践考验的轻量级软件开发方法学XP强调软件开发模型由四个变量组成成本时间质量范围

XP的四个准则:四个基本活动通信-编码简化-测试反馈-倾听勇气-设计例“Copy”程序CopyReadKeyboardWritePrinterCopy程序结构图VoidCopy(){intc;While((c=Rdkbd())!=EOF)))Wrtprt(c);}需求变化:程序从纸带读入机中读入信息方法:增加一个boolean变量,若值为true,从纸带读入机中读取信息;若值为false,从键盘读取信息。导致接口改变,不可取增加全局变量,使用c语言特性?:操作符!

修改后的程序为:boolptFlag=false;voidCopy(){intc;while((c=(ptFlag?Rdpt():Rdkbd()))!=EOF))

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论