净室软件工程

上传人:小**** 文档编号:243707937 上传时间:2024-09-29 格式:PPT 页数:42 大小:612.50KB
返回 下载 相关 举报
净室软件工程_第1页
第1页 / 共42页
净室软件工程_第2页
第2页 / 共42页
净室软件工程_第3页
第3页 / 共42页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,哈尔滨工业大学计算机学院,唐好选,Email:tanghx,净室软件工程,(CSE),“,净室”(,Cleanroom,)一词源自半导体工业中硬件生产车间,通过严格、洁净的生产过程预防了缺陷的产生,而不是在事后再去排除故障。借用这个词,充分显示了净室技术“防患于未然”的主导思想,净室基本概念,净室软件工程(,CSE,)是一种应用数学和统计学理论生产软件的工程技术。力图通过严格的工程化的软件过程达到开发中的零缺陷或接近零缺陷,通过在第一次正确的书写代码增量,并在测试前验证其正确性来避免成本过高的缺陷消除过程。它的过程模型是在代码增量集成到系统的同时,进行代码增量的统计质量验证。,净室方法的观点,强调规格说明和设计上严格性,使用基于数学的正确性证明对结果设计模型的每个元素进行形式化验证,在规格说明和设计中消除错误,以,“,干净,”,的方式进行制造。,20,世纪,70,年代末,80,年代初,资深数学家和,IBM,客座科学家,Harlan Mills,阐述了将数学、统计学及工程学上的基本概念应用到软件的设想,净室软件工程的发展,Mills,的观点:,程序中出现错误的唯一方式是作者将错误引入进去的。没有其他的方式,正确实践的目标是:设法避免引入错误,通过测试或其它任何运行程序的方式来消除错误。,净室软件工程的发展,两大基本观点促进了,Mills,的工作:首先,程序是数学函数规则,其次,潜在的程序执行是无穷的,质量认证必须进行统计采样,第一个观点使所有函数理论向软件开发敞开大门,导致以下技术的产生:,盒式结构规范及设计、函数理论正确性检验及增量开发,第二个观点使所有统计理论在软件测试方面得到应用,导致了,统计使用测试和质量认证,致力于通过,防止,软件缺陷来提高软件质量,立足于严格的科学理论基础,强调净室小组:制定系统规范、开发和认证;,基本目标是:开发过程的可管理性和使用时的无失效性,净室软件工程的基本特点,函数理论和抽样理论,函数理论,一个函数定义了从定义域到值域的映射。一个特定的程序好似定义了一个从定义域(,所有可能的输入序列的集合,)到值域(,所有对应于输入的输出集合,)的映射。这样,一个程序的规范就是一个函数的规范,抽样理论,不可能对软件的所有可能应用都进行测试。把软件的所有可能的使用情况看作总体,通过统计学手段对其进行抽样,并对样本进行测试,根据测试结果分析软件的性能和可靠性,净室软件工程的理论基础,统计过程控制下的增量式开发(,Incremental Development,),:增量是最终软件产品的功能子集,系统功能随时间增加,基于函数的规范、设计,:盒子结构方法按照函数理论定义了三种抽象层次:行为视图、有限状态机视图和过程视图。,规范从一个外部行为视图(称为黑盒)开始,然后被转化为一个状态机视图(称为状态盒),最后由一个过程视图(明盒)来实现,盒子结构是基于对象的,净室软件工程的技术手段,正确性验证,:是,CSE,的核心,正是由于采用了这一技术,净室项目的软件质量才有了极大的提高,统计测试(,Statistically Based Testing,)和软件认证,:净室测试方法采用统计学的基本原理,即当总体太大时必须采取抽样的方法。首先确定一个使用模型(,usage model,)来代表系统所有可能使用的(一般是无限的)总体。然后由使用模型产生测试用例。因为测试用例是总体的一个随机样本,所以可得到系统预期操作性能的有效统计推导,净室软件工程的技术手段,净室软件工程的基本模型,净室的组成,项目规划、项目管理、性能改善、工程变化,结构规范,(,概念、模块、执行,),功能规范,需求分析,使用规范,增量设计、正确性验证,统计测试、认证,使用模型、测试规划,增量,规划,用,户,用户评价的,累计规范,用户评价的,累计认证增量,系,统,工,程,需求,收集,盒结构,规格,形式化,设计,正确性,验证,代码,检查,测试计划,统计性,使用,测试,认证,需求,收集,盒结构,规格,形式化,设计,正确性,验证,代码,检查,测试计划,统计性,使用,测试,认证,净室技术,-,增量开发技术,增量开发的理论基础,引用透明性原理,:,一个表达式可用与其等值的任意子表达式代替,一个给定函数,(,规范,)f,能改进为如下任何一种形式,do f1,f2 enddo,if p then f1 else f2 endif,while p do f1 enddo,函数的合并对原函数,f,在数值影响上必须等价,软件增量开发的基础在于为程序制定数学函数规则,因此程序开发作为一种自顶向下的控制结构或子函数,(,子规范,),的函数改进,(,规范,),过程,将导致,对象或函数的分解或结合,功能规范,.,增量规划,增量设计,/,验证,增量,1,设计,/,验证,使用规范 增量测试与认证,增量,2,设计,/,验证,增量,n,设计,/,验证,产品评估与过程改进,增量,1,统计,增量,1-2,统计,增量,1-n,统计,增量开发的进度分配,增量,1:,定义顶层结构及桩组件,增量,2:,根据用户反馈,用新的可重用桩组件代替桩组件,增量,3:,用新的可重用桩组件部件代替桩组件,净室技术,-,基于函数规范的设计和验证,规范:,从一个外部视图,(,黑盒,),开始转化为一个状态视图,(,状态盒,),由一个过程视图,(,明盒,),来实现,三个盒形式不同,但行为等价,,称为盒结构,将数学函数逐步扩展为逻辑连接词(如,if-then-else,)和子函数构成的结构,这种扩展一直进行下去,直到所有标识出来的子函数可以用程序设计语言直接表达,设计求精和验证,每个明盒规格说明代表了一个完成状态盒转换所需的过程(子函数)的设计,使用结构化程序设计结构和逐步求精,在每个求精层次上,净室团队执行一次形式化正确性验证。为此,将一类正确性条件集合附加到结构化程序设计结构上,如果函数,f,被扩展为序列,g,和,h,,则,f,所有输入的正确性条件是:,执行,g,之后再执行,h,能完成,f,的功能吗,?,如果一个函数,p,被精化为,ifthen q else r,的条件形式,则对,p,的所有输入的正确性条件是,(,1,)只要条件,c,为真,,q,能完成,p,的功能吗?(,2,)只要条件,c,为假,,r,能完成,p,的功能吗?,如果,状 态,变换,状态盒,输入,S,输出,R,精,化,过,程,验,证,过,程,状态,BB1,BB2,明盒,S,R,盒结构精化和验证,F=s* R,R,SH,黑盒,(,所需行为,),历史激励,响应,黑盒规范的原则,对系统拥有者和用户,:,黑盒定义了他们分析和协商所需的行为,对系统开发者,:,黑盒定义待设计和实现所需的行为,对系统测试者,:,黑盒定义了在测试过程中待确认所需的行为,黑盒的组成,(,例,),基于,12,个月平均销售额的预测部分情况,规则号,1,激励历史条件,历史记录包含小于,11,个,月的,历史记录至少有,11,个月的,响应,接收,的,不求平均,当前激励,2,的最近,加上当前的,后求平均,状态盒,对系统或其组件进行初步细化,;,定义状态空间,状态信息来自黑盒中需要保存的激励元素,变换,当前的激励,S (Stimulus),映射响应,R (Response),旧状态,OS (old State ),映射到新状态,NS (new State),即,(OS,S) (NS,R),状态盒组成(例),销售额情况表,规则号,旧状态,激励,新状态,响应,黑盒规则号,不含,记录,1,在,中为,增加记录出现最新,收到,的,但,不能求平均值,1,2,1,中,包含的,记录少于,11,个月,记录己,在,中,把,作为最新,收到,的,但不能求平均值,明盒,(,清晰盒,),是一个计算机程序或程序集,将,(OS,S) (NS,R),借助过程实现,明盒的过程可以重用己有的黑盒或在求精过程中引入新的黑盒,明盒的正确性验证是基于数学方法,证实一个过程与其规范相符,盒子的层次结构,黑盒,状态盒,白盒,黑盒,状态盒,明盒,黑盒,状态盒,明盒,黑盒,状态盒,明盒,盒子结构原则,引用透明性,(Referential Transparency),明确组件所有需求,在逻辑上不需进一步规范,事务闭包,(Transaction Closure),事务是充分、足够的、可获得及保留所有状态数据,状态迁移,(State Migration),系统数据应该迁移和封装到最小的系统部分,不必复制更新,共享服务,(Common Services),对于多次用到的系统部分可定义共享服务,创建重用机会,净室技术,-,统计测试和软件认证,当测试的规模太大时,要采取抽样方法,选择一个模型,(,马尔可夫模型、形式化语言等,),代替使用的规模,然后用模型产生测试用例,(,测试用例是规模的一个随机样本,),可以得到系统预期操作性能的有效统计推导,统计使用测试等同于,“,以用户试图使用软件的方式来测试软件,”,。为了完成测试工作,净室测试团队必须确定软件的使用概率分布,按照使用概率为每个触发集合生成测试用例,盒子结构开发过程,(1),定义系统需求,(2),确定和确认黑盒,(,激励,) (,响应,),(3),确定和验证状态盒,(,状态,激励,) (,新状态,响应,),(4),设计和验证明盒,(5),对新黑盒重复上述过程,净室实例,设计并验证一个小的程序,该程序对某给定的整数,x,,找出其平方根的整数部分,y,净室实例,-,设计求精与验证,定义入口和出口条件。为了证明设计的正确性,需要证明图中表示的条件,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,,则,y,2,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,提出的是完整的软件开发和管理的过程,而净室更多的是技术方面的支持。两者相互一致并相互补充。将二者合理地结合,能够获得更高的软件质量、更低的开发成本,更高的生产效率和更长的软件生命周期,净室过程的优点,特点,小组开发的组织模式,统计控制下的增量开发,开发与测试并行进行,所起作用,1,)降低人员间的通信和协调,2,)减少对权威的依赖,3,)提高团队的开发能力,4,)小组评审尽早发现缺陷并显著降低成本,1,)开发过程可预测,2,)开发进度可见,3,)开发在智能控制下易于适应需求的变化,促进持续的求精,1,)开发阶段就完成预防缺陷和修正缺陷的工作,2,)测试过程完全从用户使用角度出发,3,)重视质量的度量与反馈,CSE,太理论化,需要更多的数学知识。其正确性验证的步骤比较困难且比较耗时,CSE,要求采用增量式开发、采用盒子结构、采用统计测试方法,普通工程师必须经过加强训练才能掌握,CSE,开发小组不进行传统的模块测试,这是不现实的。工程师可能对编程语言和开发环境还不熟悉,而且编译器或操作系统的,bug,也可能导致未预期的错误,净室软件工程的缺点,净室过程中的关键技术分析,关键技术,优点,缺点,盒式结构,的规范方法,促进对需求的明确和理解,利于复用,规范的文档,便于验证,严格的形式化语言描述规范,难以掌握和使用,需要专有的,CASE,工具的支持,用户难以理解;初期投入大,回报慢,基于数学理论,的正确性验证,尽早发现并消除缺陷,提高质量,显著降低成本,对一般软件来说,代价太昂贵;正确性证明难以寻找合适的预期函数规范,使用模型的建,立和统计测试,与认证,从用户使用角度出发,利于需求的理解和对开发人员的反馈,实现对质量和性能的量化,使用模型不易建立;需要统计学知识和,CASE,工具的支持,;,需要其他测试方法的补充,净室软件工程方法的效果,爱立信公司在手机操作系统,OS32,的开发中引入了经过裁剪的净室技术。,73,人以个人或组际,(team of teams),的方式工作了,33,个月,通过,15,个增量过程开发了约,33,万行代码,以通信业广泛使用的,SDL,(规范与描述语言)完成盒式规范;使用了小组评审技术,但没有进行正确性证明;建立了使用模型,但只进行了很有限的统计测试,这个项目取得了令人满意的结果:集成和测试的时间减少了,缺陷率比预期低了,50%,,而生产率则提高了,70%,以上。这足以说明,通过合理裁剪的净室技术是能够非常有效地预防缺陷,提高软件质量和生产率的,The End,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!