资源预览内容
第1页 / 共101页
第2页 / 共101页
第3页 / 共101页
第4页 / 共101页
第5页 / 共101页
第6页 / 共101页
第7页 / 共101页
第8页 / 共101页
第9页 / 共101页
第10页 / 共101页
亲,该文档总共101页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件工程软件工程 第九章第九章 软件质量软件质量 9.1 9.1 软件质量和质量模型软件质量和质量模型9.2 9.2 软件质量保证软件质量保证9.39.3软件配置管理软件配置管理1 1软件工程软件工程9.1 9.1 软件质量与质量模型软件质量与质量模型9.1.1 9.1.1 软件质量的概念软件质量的概念nANSI/IEEE Std 729-1983定义软件质量为定义软件质量为“与软与软件产品满足规定的和隐含的需求的能力有关的特件产品满足规定的和隐含的需求的能力有关的特征或特性的全体征或特性的全体”。nISO 8402-1994定义软件质量为定义软件质量为“反映实体满足明反映实体满足明确和隐含需要的能力的特性的总和确和隐含需要的能力的特性的总和”。此处,实。此处,实体是体是“可以单独描述和研究的事物可以单独描述和研究的事物”,如产品,如产品,活动,过程,组织和体系等。活动,过程,组织和体系等。2 2软件工程软件工程n由此可知,由此可知,质量质量是产品、体系或过程的一组固有是产品、体系或过程的一组固有特性,反映的是满足顾客和其他相关方面要求的特性,反映的是满足顾客和其他相关方面要求的程度。程度。nDavid Garvin提出,提出,“质量是一个复杂的多层面质量是一个复杂的多层面的概念的概念”:从先验论角度看,质量是可以识别出来的,但从先验论角度看,质量是可以识别出来的,但不能明确定义的。不能明确定义的。从用户角度看,质量是对目标的满足程度。从用户角度看,质量是对目标的满足程度。从制造角度看,质量是对规范的符合程度。从制造角度看,质量是对规范的符合程度。从产品角度看,质量是产品的内在特征。从产品角度看,质量是产品的内在特征。3 3软件工程软件工程从基于价值的角度看,质量依赖于顾客愿意从基于价值的角度看,质量依赖于顾客愿意出多少钱购买。出多少钱购买。n按用户角度定义质量,按用户角度定义质量,J.M.Juran 提出提出“满足使满足使用要求的基础是质量特征用要求的基础是质量特征”。n下面是一些有关质量的术语:下面是一些有关质量的术语:n软件质量管理软件质量管理是对软件在质量方面指挥和控制是对软件在质量方面指挥和控制组织的协调活动。通常包括制定质量方针和质组织的协调活动。通常包括制定质量方针和质量目标以及质量策划、质量控制、质量保证和量目标以及质量策划、质量控制、质量保证和质量改进。质量改进。1)质量方针质量方针是由组织的最高管理者正式发布的该是由组织的最高管理者正式发布的该组织总的质量宗旨和方向。组织总的质量宗旨和方向。4 4软件工程软件工程2)质量目标质量目标是在质量方面所追求的目的。是在质量方面所追求的目的。3)质量策划质量策划是质量管理的一部分,致力于制定质是质量管理的一部分,致力于制定质量目标并规定必要的运行过程和相关资源以实量目标并规定必要的运行过程和相关资源以实现质量目标。现质量目标。4)质量控制质量控制是质量管理的一部分,致力于满足质是质量管理的一部分,致力于满足质量要求。量要求。5)质量保证质量保证是质量管理的一部分,致力于保障质是质量管理的一部分,致力于保障质量会得到满足的信任度。量会得到满足的信任度。6)质量改进质量改进是质量管理的一部分,致力于增强满是质量管理的一部分,致力于增强满足质量要求的能力。足质量要求的能力。5 5软件工程软件工程9.1.2 9.1.2 软件质量模型软件质量模型n为满足软件的各项精确定义的功能、性能需求,为满足软件的各项精确定义的功能、性能需求,符合文档化的开发标准,需要相应地给出或设计符合文档化的开发标准,需要相应地给出或设计一些一些质量特性质量特性及其组合。及其组合。n如果这些质量特性及其组合都能在产品中得到满如果这些质量特性及其组合都能在产品中得到满足,则这个软件产品质量就是高的。足,则这个软件产品质量就是高的。n软件质量是各种特性的复杂组合。它随着应用的软件质量是各种特性的复杂组合。它随着应用的不同而不同,随着用户提出的质量要求不同而不不同而不同,随着用户提出的质量要求不同而不同。同。n软件质量特性,反映软件的本质。讨论一个软件软件质量特性,反映软件的本质。讨论一个软件的质量,归结到定义软件的质量特性。的质量,归结到定义软件的质量特性。6 6软件工程软件工程n定义一个软件的质量,就等价于为该软件定义定义一个软件的质量,就等价于为该软件定义一系列质量特性。一系列质量特性。n人们通常把影响软件质量的特性用软件质量模人们通常把影响软件质量的特性用软件质量模型来描述。型来描述。n软件质量特性定义成分层模型。最基本的叫做软件质量特性定义成分层模型。最基本的叫做基本质量特性,它可以由一些子质量特性定义基本质量特性,它可以由一些子质量特性定义和度量。这些子特性在必要时又可由它的一些和度量。这些子特性在必要时又可由它的一些子特性定义和度量。子特性定义和度量。1976年年 Boehm质量模型质量模型1979年年 McCall质量模型质量模型1985年年 ISO质量模型质量模型7 7软件工程软件工程设备独立性设备独立性自包含性自包含性正确性正确性完备性完备性健壮性健壮性一致性一致性可计测性可计测性设备效率设备效率可存取性可存取性通信性通信性自描述性自描述性结构化性结构化性简单性简单性清晰性清晰性可扩充性可扩充性 软软件件质质量量可移植性可移植性可使用性可使用性可维护性可维护性人类工程人类工程可修改性可修改性可理解性可理解性可测试性可测试性可靠性可靠性效效 率率BoehmBoehm质量模型质量模型8 8软件工程软件工程McCallMcCall质量模型质量模型可维护性可维护性(Maintainability)可测试性可测试性(Testability)灵活性灵活性(Flexibility)正确性正确性(Correctness) 可靠性可靠性(Reliability)可使用性可使用性(Usability) 效率效率(Efficiency)完整性完整性(Integrity)互连性互连性(Interoperability) 可移植性可移植性(Portability) 复用性复用性(Reusability)产品运行产品运行Product Operations Product Revitions产品修正产品修正ProductTransitions 产品转移产品转移9 9软件工程软件工程ISOISO的软件质量评价模型的软件质量评价模型n按照按照1991年年 ISO发布的发布的 ISO/IEC 9126 质量特性国质量特性国际标准际标准 ,软件质量度量模型由三层组成软件质量度量模型由三层组成 软件质量特性软件质量特性 软件质量子特性软件质量子特性 软件质量度量评价准则软件质量度量评价准则n高层和中层建立国际标准,低层可由各使用单位高层和中层建立国际标准,低层可由各使用单位视实际情况制定。视实际情况制定。1010软件工程软件工程软软件件质质量量功能性可靠性可维护性效率可使用性可移植性适合性准确性互操作性依从性安全性成熟性容错性易恢复性易理解性易学习性易操作性时间特性资源特性易分析性稳定性易变更性易测试性易安装性易替换性适应性遵循性质量特性质量特性质量子特性质量子特性质量度量准则质量度量准则使使用用单单位位自自行行规规定定ISO 9126ISO 9126质量模型质量模型1111软件工程软件工程可移植性可移植性可可维护性维护性效率效率可使用性可使用性可靠性可靠性功能性功能性可移植性可移植性可可维护性维护性效率效率可使用性可使用性可靠性可靠性功能性功能性其中其中, 表示有利影响,表示有利影响, 表示不利表示不利影响。影响。 质量特性之间的竞争质量特性之间的竞争1212软件工程软件工程n1994年对年对ISO/IEC 9126开始进行修正,将原标开始进行修正,将原标准修订为两个序列标准:准修订为两个序列标准:1)ISO/IEC 9126信息技术信息技术 软件产品质量软件产品质量,描,描述新的软件质量模型,分为述新的软件质量模型,分为 4 个部分:个部分: 质量模型质量模型(9126-1) 内部质量内部质量(9126-2) 外部质量外部质量(9126-3) 使用质量使用质量(9126-4)2)ISO/IEC 14598信息技术信息技术 软件产品评价软件产品评价,详细描述软件质量评价的方法,分为详细描述软件质量评价的方法,分为 6 个部分:个部分:1313软件工程软件工程 概述概述(14598-1) 策划和管理策划和管理(14598-2) 开发方过程开发方过程(14598-3) 获取方过程获取方过程(14598-4) 评价方过程评价方过程(14598-5) 评价模块的文档评价模块的文档(14598-6)n修订版保留了修订版保留了 6 个质量特性,但明确了它们与内个质量特性,但明确了它们与内部度量和外部度量的关系,并解释了这些特性与部度量和外部度量的关系,并解释了这些特性与使用质量之间的关系。使用质量之间的关系。n修订版还给出了一个质量模型的规格说明,引入修订版还给出了一个质量模型的规格说明,引入了使用质量。了使用质量。1414软件工程软件工程ISO/IEC 9126ISO/IEC 9126与与ISO/IEC 14598ISO/IEC 14598之间的关系之间的关系资源和资源和环境环境评价评价过程过程软件软件产品产品软件产品软件产品的影响的影响评价支持评价支持评价过程评价过程内部度量内部度量外部度量外部度量使用质量使用质量度量度量145981145983145984145985145981145982145986912619126291263912641515软件工程软件工程内部质量和外部质量的质量模型内部质量和外部质量的质量模型n外部质量外部质量是软件产品在规定条件下使用时,满是软件产品在规定条件下使用时,满足规定的和隐含的要求的程度。外部质量是足规定的和隐含的要求的程度。外部质量是从从外部观点看外部观点看软件产品的全部特性。软件产品的全部特性。n内部质量内部质量是软件产品在规定条件下使用时,决是软件产品在规定条件下使用时,决定其满足规定的和隐含的要求的能力的产品属定其满足规定的和隐含的要求的能力的产品属性的全体。内部质量是性的全体。内部质量是从内部的观点看从内部的观点看软件产软件产品的全部特性。品的全部特性。n在质量模型中有在质量模型中有 6 个软件质量特性,这些特性个软件质量特性,这些特性按用户观点描述软件的外部质量,每个质量特按用户观点描述软件的外部质量,每个质量特性按开发者的观点又分解为子特性。性按开发者的观点又分解为子特性。1616软件工程软件工程外部和内部质量的质量模型外部和内部质量的质量模型适合性适合性正确性正确性互用性互用性保密性保密性功能性功能性符合性符合性成熟性成熟性容错性容错性恢复性恢复性可靠性可靠性符合性符合性易理解性易理解性易学会性易学会性操作性操作性吸引性吸引性易用性易用性符合性符合性时间特性时间特性资源利用资源利用效率效率符合性符合性易分析性易分析性易变更性易变更性稳定性稳定性易测试性易测试性可维护性可维护性符合性符合性适应性适应性易安装性易安装性共存性共存性可替换性可替换性可移植性可移植性符合性符合性外部质量和内部质量外部质量和内部质量功能性功能性可靠性可靠性可使用性可使用性效率效率可维护性可维护性可移植性可移植性1717软件工程软件工程使用质量的质量模型使用质量的质量模型n使用质量使用质量是软件产品在规定的使用环境中,规定是软件产品在规定的使用环境中,规定的用户能实现规定目标的要求,并具有有效性、的用户能实现规定目标的要求,并具有有效性、生产率、安全性和满意度的能力。生产率、安全性和满意度的能力。n使用质量是从软件所处的环境的观点,用软件在使用质量是从软件所处的环境的观点,用软件在这个环境中的使用绩效来测量的,而不是依靠软这个环境中的使用绩效来测量的,而不是依靠软件本身的特性来测量。件本身的特性来测量。有效性有效性生产率生产率满意度满意度安全性安全性使用质量使用质量1818软件工程软件工程在在生存周期中各种质量特性的使用生存周期中各种质量特性的使用n软件的生存周期可以划分为三个大的阶段。软件的生存周期可以划分为三个大的阶段。n在在软件需求定义阶段软件需求定义阶段要定义软件的质量要求;要定义软件的质量要求;在在软件产品开发阶段软件产品开发阶段要使得软件产品具有要求要使得软件产品具有要求的质量;在的质量;在软件运行和维护阶段软件运行和维护阶段要测量软件是要测量软件是否达到了用户的质量要求并维护软件的性能水否达到了用户的质量要求并维护软件的性能水平。平。n用户质量要求可以用使用质量度量、外部质量用户质量要求可以用使用质量度量、外部质量度量表达,有时也可以用内部质量度量来表达。度量表达,有时也可以用内部质量度量来表达。用这些度量表达的要求将作为产品确认的准则用这些度量表达的要求将作为产品确认的准则。1919软件工程软件工程用户质量用户质量要求要求外部质量外部质量要求要求使用质量使用质量外部质量外部质量内部质量内部质量要求要求内部质量内部质量帮助规定帮助规定帮助规定帮助规定使用和反馈使用和反馈确认确认验证验证指示指示指示指示2020软件工程软件工程n外部质量要求从外部的观点规定要求的质量级外部质量要求从外部的观点规定要求的质量级别,包括从用户质量要求导出的要求。别,包括从用户质量要求导出的要求。n外部质量要求用作各开发阶段的确认目标,在外部质量要求用作各开发阶段的确认目标,在质量要求规格说明质量要求规格说明中用外部质量度量规定,中用外部质量度量规定,并应当转换为内部质量要求。并应当转换为内部质量要求。n内部质量要求从内部的观点规定要求的质量级内部质量要求从内部的观点规定要求的质量级别,用于说明中间产品的特性。别,用于说明中间产品的特性。n内部质量要求可以用作各开发阶段的确认目标,内部质量要求可以用作各开发阶段的确认目标,也可以用于定义开发策略和开发期间评价和验也可以用于定义开发策略和开发期间评价和验证的准则。证的准则。n内部质量要求用内部度量数据定量地规定。内部质量要求用内部度量数据定量地规定。2121软件工程软件工程软件产品质量评价软件产品质量评价n软件产品质量在开发过程中形成,在使用中表软件产品质量在开发过程中形成,在使用中表现。现。过程质量过程质量内部质量内部质量属性属性外部质量外部质量属性属性使用质量使用质量属性属性影响影响影响影响影响影响依赖于依赖于依赖于依赖于依赖于依赖于过程质量过程质量测量数据测量数据内部质量内部质量测量数据测量数据外部质量外部质量测量数据测量数据使用质量使用质量测量数据测量数据使用环境使用环境软件产品的效能软件产品的效能2222软件工程软件工程n软件产品质量可通过测量软件产品质量可通过测量内部质量特性内部质量特性(中间产品的静态测量数据)(中间产品的静态测量数据)外部质量特性外部质量特性(代码执行的行为)(代码执行的行为)使用质量特性使用质量特性(使用此软件的系统行为)(使用此软件的系统行为)n来评价。目的是使产品在具体使用环境中具有要来评价。目的是使产品在具体使用环境中具有要求的效能。求的效能。n为了满足开发者、维护者、获取者和最终用户的为了满足开发者、维护者、获取者和最终用户的要求,软件产品的质量要求通常包括内部质量、要求,软件产品的质量要求通常包括内部质量、外部质量和使用质量的评价准则。外部质量和使用质量的评价准则。2323软件工程软件工程可依赖性可依赖性 dependabilitydependabilityn对于某些高可靠性系统,质量特性对于某些高可靠性系统,质量特性“可依赖性可依赖性”显得非常重要,它有四个主要方面:显得非常重要,它有四个主要方面:1)可用性可用性 (Availability):系统在任何时间都系统在任何时间都能得到并能够执行有用服务的可能性。能得到并能够执行有用服务的可能性。2)可靠性可靠性 (Raliability):系统在给定的时段内系统在给定的时段内能提供希望的服务的可能性。能提供希望的服务的可能性。3)安全性或防护性安全性或防护性 (Safety):系统防止发生给系统防止发生给人和环境造成伤害的失效的可能性。人和环境造成伤害的失效的可能性。4)安全性或保密性安全性或保密性 (Security):系统能够抵抗系统能够抵抗意外或蓄意的入侵的可能性。意外或蓄意的入侵的可能性。2424软件工程软件工程可依赖性的层次可依赖性的层次系统保护自身系统保护自身抵御意外或恶抵御意外或恶意攻击的能力意攻击的能力系统不发生系统不发生灾难性失效灾难性失效运行的能力运行的能力 系统按规定系统按规定要求提供服要求提供服务的能力务的能力系统在需要系统在需要时提供服务时提供服务的能力的能力安全防护性安全防护性安全保密性安全保密性可靠性可靠性可用性可用性可依赖性可依赖性2525软件工程软件工程9.1.3 9.1.3 提高质量的方法提高质量的方法 - - 原型化原型化方法方法 n软件需求是度量软件质量的基础。不符合需求的软件需求是度量软件质量的基础。不符合需求的软件就不具备质量。它是各种特性的复杂组合。软件就不具备质量。它是各种特性的复杂组合。它随着应用的不同而不同,随着用户提出的质量它随着应用的不同而不同,随着用户提出的质量要求不同而不同。要求不同而不同。n因此与用户的交流成为提高软件质量的关键。在因此与用户的交流成为提高软件质量的关键。在系统开发中,与用户进行交流的基本技术是原型系统开发中,与用户进行交流的基本技术是原型化方法。化方法。n系统原型是软件系统的初始版本,用于展示设计系统原型是软件系统的初始版本,用于展示设计选择、发现问题和给出可能的解决方案。选择、发现问题和给出可能的解决方案。2626软件工程软件工程n软件原型支持需求工程的两项活动:软件原型支持需求工程的两项活动:需求获取需求获取需求有效性验证需求有效性验证n其他用途:其他用途:用户培训用户培训系统测试系统测试n主要分类:主要分类:进化式原型开发进化式原型开发抛弃式原型开发抛弃式原型开发2727软件工程软件工程1. 1. 进化式原型开发进化式原型开发n基本思路是:先给出一个系统的最初实现,让用基本思路是:先给出一个系统的最初实现,让用户去使用和评价,不断进行细化和改善,经过多户去使用和评价,不断进行细化和改善,经过多次这样的反复过程后形成最终的完善的系统。次这样的反复过程后形成最终的完善的系统。开发抽象描述开发抽象描述建立原型系统建立原型系统使用原型系统使用原型系统系统充分吗系统充分吗?交付系统交付系统否否是是2828软件工程软件工程2. 2. 抛弃式原型开发抛弃式原型开发n基本思路是:原型的根本作用是弄清楚需求和为基本思路是:原型的根本作用是弄清楚需求和为风险评估提供补充信息。通过评估后,原型被抛风险评估提供补充信息。通过评估后,原型被抛弃,重新规划和实施系统的开发。弃,重新规划和实施系统的开发。框架需求框架需求开发原型开发原型确定系统确定系统评估原型评估原型开发软件开发软件问题问题可可验证系统验证系统问题问题可可交付的软件系统交付的软件系统可复用构件可复用构件2929软件工程软件工程9.1.4 9.1.4 软件质量的度量和评价软件质量的度量和评价n软件质量特性度量有两类:软件质量特性度量有两类:预测型预测型和和验收型验收型。n预测度量预测度量是利用定量或定性的方法,估算软件质是利用定量或定性的方法,估算软件质量的评价值,以得到软件质量的比较精确的估算量的评价值,以得到软件质量的比较精确的估算值。值。n验收度量验收度量是在软件开发各阶段的检查点,对软件是在软件开发各阶段的检查点,对软件的要求质量进行确认性检查的具体评价值,它对的要求质量进行确认性检查的具体评价值,它对开发过程中的预测进行评价。开发过程中的预测进行评价。3030软件工程软件工程n预测度量预测度量有两种。有两种。第一种叫做第一种叫做尺度度量尺度度量,这是一种,这是一种定量度量定量度量。它适用于一些能够直接度量的特性,例如,它适用于一些能够直接度量的特性,例如,出错率定义为:错误数出错率定义为:错误数KLOC单位时间。单位时间。第二种叫做第二种叫做二元度量二元度量,这是一种,这是一种定性度量定性度量。它适用于一些只能间接度量的特性,例如,它适用于一些只能间接度量的特性,例如,可使用性、灵活性等等。可使用性、灵活性等等。3131软件工程软件工程尺度度量检查表尺度度量检查表评价评价度度 量量需需 求求设设 计计编编 码码准则准则是是/否否值值是是/否否值值是是/否否值值程序程序的的复杂复杂性性(1) 每一模块的复杂性度量每一模块的复杂性度量(McCabe环路)环路)(2) 系统的复杂性度量系统的复杂性度量 = 各个模块复杂性度量之和各个模块复杂性度量之和/系系统的模块数统的模块数 3232软件工程软件工程二元度量检查表二元度量检查表评价评价度度 量量需需 求求设设 计计编编 码码准则准则是是/否否值值是是/否否值值是是/否否值值设设计计文文档档的的完完备备性性(1) 无二义性引用(输入无二义性引用(输入/功功能能/输出)输出)(2) 所有引用的数据都可从一所有引用的数据都可从一个外部数据源定义个外部数据源定义/计算计算/取得取得(3) 所有定义的功能都被使用所有定义的功能都被使用(4) 所有使用的功能都被定义所有使用的功能都被定义(5) 对每一个判定点,所有的对每一个判定点,所有的条件和处理都被定义条件和处理都被定义(6) 所有被调用、被引用的调所有被调用、被引用的调用序列的参数都一致用序列的参数都一致 3333软件工程软件工程n通过对照检查项目,确定一种质量特性的有无。通过对照检查项目,确定一种质量特性的有无。n例如,在设计和编码阶段的复杂性度量,利用例如,在设计和编码阶段的复杂性度量,利用尺度度量方法尺度度量方法来做。对模块复杂性的度量采用来做。对模块复杂性的度量采用McCabe 环路度量。环路度量。n对于对于二元度量二元度量,可针对检查表中每一项都应给,可针对检查表中每一项都应给以记分,指定信息存在时记以记分,指定信息存在时记 “1”,否则记,否则记 “0”。表中所有各项的分数相加,即得度量结。表中所有各项的分数相加,即得度量结果。果。3434软件工程软件工程9.2 软件质量保证9.2.1 质量保证的概念n什么是质量保证?什么是质量保证?ISO/IEC 12207 : 1995 指出:指出:质量保证是一个有计划、有组织的活动,它向质量保证是一个有计划、有组织的活动,它向所有相关的人提供证据,以证明质量功能正在所有相关的人提供证据,以证明质量功能正在按质量要求运行的信心。按质量要求运行的信心。n质量保证的目的是质量保证的目的是1)内部质量保证:在组织内部向管理者提供信内部质量保证:在组织内部向管理者提供信任保证;任保证;2)外部质量保证:向顾客或第三方认证提供信外部质量保证:向顾客或第三方认证提供信任保证;任保证;3535软件工程软件工程9.2.2 9.2.2 软件质量保证过程与活动软件质量保证过程与活动nISO/IEC 12207:1995指出:软件质量保证过程指出:软件质量保证过程(SQA)是恰当保证为项目生存周期中的软件是恰当保证为项目生存周期中的软件产品和过程符合规定需求和已制定计划提供足产品和过程符合规定需求和已制定计划提供足够保证的过程。够保证的过程。n软件质量保证过程包括软件质量保证过程包括4方面的活动:方面的活动:a)过程实施过程实施b)产品质量保证产品质量保证c)过程质量保证过程质量保证d)质量保证体系的质量保证质量保证体系的质量保证3636软件工程软件工程1. 1. 美国美国SEISEI推荐的软件质量保证活动推荐的软件质量保证活动1)为项目制定为项目制定SQA计划计划 该该计计划划规规定定了了软软件件开开发发小小组组和和质质量量保保证证小小组组需要执行的质量保证活动。需要执行的质量保证活动。 SQA计划的要点包括:计划的要点包括:v需要进行哪些评价?需要进行哪些评价?v需要进行哪些审计和评审?需要进行哪些审计和评审?v项目采用的标准;项目采用的标准;v错误报告的要求和跟踪过程;错误报告的要求和跟踪过程;vSQA小组应产生哪些文档小组应产生哪些文档?v向软件项目组提供的反馈数量等。向软件项目组提供的反馈数量等。3737软件工程软件工程2)参与开发该软件项目的软件过程描述参与开发该软件项目的软件过程描述 软件开发小组为开发活动选择软件过程,软件开发小组为开发活动选择软件过程,SQA 小组评审过程说明,确保该过程与组织政策、小组评审过程说明,确保该过程与组织政策、内部、外界标准及软件项目计划的其他部分相内部、外界标准及软件项目计划的其他部分相符。符。3)评审各项软件工程活动评审各项软件工程活动 评审各项软件工程活动,核实其是否符合已定评审各项软件工程活动,核实其是否符合已定义的软件过程。为此,义的软件过程。为此,SQA小组必须识别、记小组必须识别、记录和跟踪所有偏离过程的偏差,核实其是否已录和跟踪所有偏离过程的偏差,核实其是否已经改正。经改正。3838软件工程软件工程4)审核指定的软件工作产品审核指定的软件工作产品 审核指定的软件工作产品,核实其是否符合已定审核指定的软件工作产品,核实其是否符合已定义的软件过程中的相应部分。义的软件过程中的相应部分。5)记录软件工作及软件工作产品的偏差记录软件工作及软件工作产品的偏差 确保软件工作及工作产品中的偏差已被记录在案,确保软件工作及工作产品中的偏差已被记录在案,并根据预定规程进行处理。并根据预定规程进行处理。 6)跟踪问题的解决跟踪问题的解决 记录所有不符合部分,向管理部门报告。跟踪不记录所有不符合部分,向管理部门报告。跟踪不符合的部分直到问题得到解决。符合的部分直到问题得到解决。7)协调变更的控制与管理。协调变更的控制与管理。8)帮助收集和分析软件度量的信息。帮助收集和分析软件度量的信息。3939软件工程软件工程2. 2. 微软提出的软件质量保证检查表微软提出的软件质量保证检查表1)你识别出对你的项目很重要的质量特性了吗?你识别出对你的项目很重要的质量特性了吗?2)你让其他人都知道项目的目标了吗你让其他人都知道项目的目标了吗?3)你对外部质量特性(正确性、可用性、有效性、你对外部质量特性(正确性、可用性、有效性、可靠性、完整性、适用性、精确性和健壮性)可靠性、完整性、适用性、精确性和健壮性)和内部质量特性(可维护性、灵活性、可移植和内部质量特性(可维护性、灵活性、可移植性、可复用性、可读性、可测试性和可理解性)性、可复用性、可读性、可测试性和可理解性)作了区分吗作了区分吗?4)有没有想过有些特性是冲突的,而有些是互补有没有想过有些特性是冲突的,而有些是互补的?的?4040软件工程软件工程5)你的项目有没有采用几种不同的缺陷发现技术你的项目有没有采用几种不同的缺陷发现技术来分析不同类型的错误?来分析不同类型的错误?6)你的项目计划中有没有包括在软件开发不同阶你的项目计划中有没有包括在软件开发不同阶段进行质量保证的步骤?段进行质量保证的步骤?7)质量有没有测量,以便于了解什么地方质量提质量有没有测量,以便于了解什么地方质量提高了,什么地方质量下降了?高了,什么地方质量下降了?8)管理层是否了解质量保证在(开发)前期增加管理层是否了解质量保证在(开发)前期增加成本而在后期节省成本?成本而在后期节省成本?4141软件工程软件工程3.3.日本软件质量管理协会提出的日本软件质量管理协会提出的质量保证活动质量保证活动1)用户要求定义用户要求定义熟练掌握正确定义用户要求的技术。熟练掌握正确定义用户要求的技术。熟练使用和指导他人使用定义软件需求的支熟练使用和指导他人使用定义软件需求的支持工具。持工具。重视领导全体开发人员收集和积累有关用户重视领导全体开发人员收集和积累有关用户业务领域的各种业务的资料和技术技能。业务领域的各种业务的资料和技术技能。2)力争不重复劳动力争不重复劳动考虑哪些既有软件可以复用。考虑哪些既有软件可以复用。4242软件工程软件工程在开发过程中,随时考虑所生产软件的复用在开发过程中,随时考虑所生产软件的复用性。性。3)掌握开发新软件的方法掌握开发新软件的方法 在开发新软件的过程中大力使用和推行在开发新软件的过程中大力使用和推行 软件工软件工程中所介绍的开发方法和工具。程中所介绍的开发方法和工具。使用先进的开发技术:如使用先进的开发技术:如结构化技术结构化技术、面向面向对象技术对象技术。使用数据库技术或网络化技术。使用数据库技术或网络化技术。 应用开发工具或环境。应用开发工具或环境。应用开发工具或环境。应用开发工具或环境。改进开发过程。改进开发过程。改进开发过程。改进开发过程。4343软件工程软件工程4)组织外部力量协作的方法组织外部力量协作的方法一个软件自始至终由同一个软件组织开发是一个软件自始至终由同一个软件组织开发是最理想的。但在现实中常常难以做到。最理想的。但在现实中常常难以做到。改善对外部协作部门的开发管理。必须明确改善对外部协作部门的开发管理。必须明确规定进度管理、质量管理、交接检查、维护规定进度管理、质量管理、交接检查、维护体制等各方面要求,建立跟踪检查体制。体制等各方面要求,建立跟踪检查体制。5)排除无效劳动排除无效劳动一种无效劳动是因需求规格说明有误、设计一种无效劳动是因需求规格说明有误、设计有误而造成的返工。定量记录返工工作量,有误而造成的返工。定量记录返工工作量,收集和分析返工劳动花费数据,采取措施减收集和分析返工劳动花费数据,采取措施减少返工。少返工。4444软件工程软件工程另一另一种无效劳动种无效劳动是重复劳动,即相似的软件是重复劳动,即相似的软件在几个地方同时开发。建立互相交流、信息在几个地方同时开发。建立互相交流、信息往来通畅、具横向交流特征的信息流通网。往来通畅、具横向交流特征的信息流通网。6)发挥每个开发者的能力发挥每个开发者的能力软件生产是人的智能生产活动,它依赖于人软件生产是人的智能生产活动,它依赖于人的能力和开发组织团队的能力。的能力和开发组织团队的能力。开发者必须有学习各专业业务知识、生产技开发者必须有学习各专业业务知识、生产技术和管理技术的能动性。术和管理技术的能动性。管理者或产品服务者要制定技术培训计划、管理者或产品服务者要制定技术培训计划、技术水平标准,及适用于将来需要的中长期技术水平标准,及适用于将来需要的中长期技术培训计划。技术培训计划。4545软件工程软件工程7)提高软件开发的工程能力提高软件开发的工程能力要想生产出高质量的软件产品必须有高水平要想生产出高质量的软件产品必须有高水平的软件工程能力。在软件开发环境或软件工的软件工程能力。在软件开发环境或软件工具箱的支持下,运用先进的开发技术、工具具箱的支持下,运用先进的开发技术、工具和管理方法开发软件的能力。和管理方法开发软件的能力。8)提高计划和管理质量能力提高计划和管理质量能力项目开发初期计划阶段的项目计划评价。计项目开发初期计划阶段的项目计划评价。计划执行过程中对计划完成报告的评价。划执行过程中对计划完成报告的评价。将评价、评审工作在工程实施之前就列入整将评价、评审工作在工程实施之前就列入整个开发工程的工程计划中。个开发工程的工程计划中。提高软件开发项目管理的精确度。提高软件开发项目管理的精确度。4646软件工程软件工程9.2.3 9.2.3 软件质量保证体系软件质量保证体系n软件的质量保证活动,是涉及各个部门的部门软件的质量保证活动,是涉及各个部门的部门间的活动。间的活动。n为顺利开展质量保证活动,必须事先明确部门为顺利开展质量保证活动,必须事先明确部门间的质量保证业务,确立部门间的联合与协作间的质量保证业务,确立部门间的联合与协作的机构,这个机构就是质量保证体系。的机构,这个机构就是质量保证体系。1)必须明确反馈途径。必须明确反馈途径。2)必须明确各部门的职责。必须明确各部门的职责。3)必须确定保证系统运行的方法、工具、有关必须确定保证系统运行的方法、工具、有关文档资料,以及系统管理的规程和标准。文档资料,以及系统管理的规程和标准。4747软件工程软件工程4)必须明确决定是否可向下一阶段进展的评价项必须明确决定是否可向下一阶段进展的评价项目和评价准则。目和评价准则。5)必须不断地总结系统管理的经验教训,能够修必须不断地总结系统管理的经验教训,能够修改系统。改系统。n软件质量保证规程和技术准则软件质量保证规程和技术准则1)规定在项目的哪个阶段进行评审及如何评审;规定在项目的哪个阶段进行评审及如何评审;2)规定在项目的哪个阶段应当产生哪些报告和计规定在项目的哪个阶段应当产生哪些报告和计划;划;3)规定产品各方面测试应达到的水平;规定产品各方面测试应达到的水平;4848软件工程软件工程4)规定在每次评审和测试中发现的错误如何修规定在每次评审和测试中发现的错误如何修正;正;5)描述希望得到的质量度量;描述希望得到的质量度量;6)说明各种软件人员的职责,规定为了达到质说明各种软件人员的职责,规定为了达到质量目标他们必须进行哪些活动;量目标他们必须进行哪些活动;7)建立建立在各阶段中执行质量评价的质量评价和质在各阶段中执行质量评价的质量评价和质量检查系统。量检查系统。有效运用质量信息的质量信息系统,并使有效运用质量信息的质量信息系统,并使其运行。其运行。4949软件工程软件工程n建立和实施质量管理体系的方法和步骤:建立和实施质量管理体系的方法和步骤:1)确定顾客和其他相关方的需求和期望;确定顾客和其他相关方的需求和期望;2)建立组织的质量方针和质量目标;建立组织的质量方针和质量目标;3)确定为实现质量目标必须的过程和职责;确定为实现质量目标必须的过程和职责;4)确定和提供实现质量目标必须的资源;确定和提供实现质量目标必须的资源;5)规定测量每个过程的有效性和效率的方法;规定测量每个过程的有效性和效率的方法;6)应用这些测量方法确定每个过程的有效性和应用这些测量方法确定每个过程的有效性和效率;效率;7)确定防止不合格并消除产生原因的措施;确定防止不合格并消除产生原因的措施;8)建立和应用持续改进质量管理体系的过程。建立和应用持续改进质量管理体系的过程。5050软件工程软件工程9.2.4 9.2.4 质量保证的实施质量保证的实施n软件质量保证的实施需要从纵向和横向两个方面软件质量保证的实施需要从纵向和横向两个方面展开。展开。要求所有与软件生存期有关的人员都要参加要求所有与软件生存期有关的人员都要参加要求对产品形成的全过程进行质量管理要求对产品形成的全过程进行质量管理n这要求整个软件部门齐心协力,不断完善软件的这要求整个软件部门齐心协力,不断完善软件的开发环境。此外还需要与用户共同合作。开发环境。此外还需要与用户共同合作。5151软件工程软件工程1. 1. 质量目标与度量质量目标与度量n为了开发高质量的软件,需要明确软件的功能,为了开发高质量的软件,需要明确软件的功能,明确软件应达到什么样的质量标准,即质量目标。明确软件应达到什么样的质量标准,即质量目标。n为了达到这个目标,在开发过程中的各个阶段进为了达到这个目标,在开发过程中的各个阶段进行检查和评价。行检查和评价。n在做质量评价时,需要有在做质量评价时,需要有对质量进行度量的准则和方法;对质量进行度量的准则和方法;在软件生存期中如何使用这些准则和方法的在软件生存期中如何使用这些准则和方法的质量保证步骤;质量保证步骤;提高该项作业效率的工具。提高该项作业效率的工具。5252软件工程软件工程2.2. 质量保证活动的实施步骤质量保证活动的实施步骤1)Target:以用户要求和开发方针为依据,对质量以用户要求和开发方针为依据,对质量需求准则、质量设计准则的各质量特性设定质需求准则、质量设计准则的各质量特性设定质量目标。量目标。2)Plan:设定适合于被开发软件的评测检查项目设定适合于被开发软件的评测检查项目 (质量评价准则)。(质量评价准则)。 研讨实现质量目标的方法研讨实现质量目标的方法或手段。或手段。3)Do:制作高质量的规格说明和程序。在接受质制作高质量的规格说明和程序。在接受质量检查前先做自我检查。量检查前先做自我检查。 4)Check:以:以Plan阶段设定的质量评价准则进行评阶段设定的质量评价准则进行评价。计算结果用质量图的形式表示出来。比较价。计算结果用质量图的形式表示出来。比较5353软件工程软件工程评价结果的质量得分和质量目标,看其是否合格。评价结果的质量得分和质量目标,看其是否合格。5)Action:对评价发现的问题进行改进活动,如果对评价发现的问题进行改进活动,如果实现并达到了质量目标就转入下一个工程阶段。实现并达到了质量目标就转入下一个工程阶段。这样重复这样重复“Plan”到到“Action”的过程的过程,直到整直到整个开发项目完成。个开发项目完成。5454软件工程软件工程用户要求用户要求指导方针指导方针设定质量特性及质量设定质量特性及质量子特性的评价尺度子特性的评价尺度研讨质量度量准则及研讨质量度量准则及质量目标的实现方法质量目标的实现方法各各阶段度量的对象阶段度量的对象开发活动开发活动质量评价质量评价1. 质量度量质量度量2. 质量得分及图示质量得分及图示3. 判断目标达到否判断目标达到否改进活动改进活动管理信息管理信息评测得分表评测得分表质量图示质量图示TargetPlanDoCheckAction5555软件工程软件工程5656软件工程软件工程5757软件工程软件工程9.3 9.3 软件配置管理软件配置管理n在软件建立时变更是不可避免的,因为在进行变在软件建立时变更是不可避免的,因为在进行变更前没有仔细分析,或没有进行变更控制,变更更前没有仔细分析,或没有进行变更控制,变更加剧了项目中软件人员之间的混乱。加剧了项目中软件人员之间的混乱。n协调软件开发使得混乱减到最小的技术叫做配置协调软件开发使得混乱减到最小的技术叫做配置管理。管理。n配置管理是一组标识、组织和控制修改的活动,配置管理是一组标识、组织和控制修改的活动,目的是使错误达到最小并最有效地提高生产率。目的是使错误达到最小并最有效地提高生产率。9.3.1 9.3.1 软件配置管理的定义软件配置管理的定义5858软件工程软件工程nISO 9000-3:1997 的定义:配置管理是一个管理的定义:配置管理是一个管理学科,它对配置项(包括软件项)的开发和支学科,它对配置项(包括软件项)的开发和支持生存周期给以技术上和管理上的指导。配置持生存周期给以技术上和管理上的指导。配置管理的应用取决于项目的规模、复杂程度和风管理的应用取决于项目的规模、复杂程度和风险的大小。险的大小。nW.Babich的的解释:软件配置管理能够协调软件解释:软件配置管理能够协调软件的开发,使混乱减少到最小。软件配置管理是的开发,使混乱减少到最小。软件配置管理是一种标识、组织和控制修改的技术,目的是最一种标识、组织和控制修改的技术,目的是最有效地提高生产率。有效地提高生产率。5959软件工程软件工程nGB/T 11457:1995软件工程术语软件工程术语定义:定义:A.表示和确定系统中配置项的过程,在系统整表示和确定系统中配置项的过程,在系统整个生存周期内控制这些配置项的投放和变更,个生存周期内控制这些配置项的投放和变更,记录并报告配置的状态和变更要求,验证配记录并报告配置的状态和变更要求,验证配置项的完整性和正确性。置项的完整性和正确性。B.对下列工作进行技术和行动指导与监督的一对下列工作进行技术和行动指导与监督的一套规范。套规范。对配置项的功能特性和物理特性进行标识对配置项的功能特性和物理特性进行标识和文档编制工作。和文档编制工作。控制这些特性的变更情况。控制这些特性的变更情况。6060软件工程软件工程记录并报告对这些变更进行的处理和实记录并报告对这些变更进行的处理和实现的状态。现的状态。n软件配置管理的任务软件配置管理的任务1)制定软件配置管理计划制定软件配置管理计划2)确定配置标识的规则确定配置标识的规则3)实施变更控制实施变更控制4)报告配置状态报告配置状态5)进行配置审核进行配置审核6)进行版本管理和发行管理进行版本管理和发行管理6161软件工程软件工程软件配置项软件配置项n按照按照ISO 9000-3的说明,软件配置项可以是:的说明,软件配置项可以是:与与合合同同、过过程程、计计划划和和产产品品有有关关的的文文档档和和数数据;据;源代码、目标代码和可执行代码;源代码、目标代码和可执行代码;相关产品,包括软件工具、库内的可复用软相关产品,包括软件工具、库内的可复用软件、外购软件及用户提供的软件。件、外购软件及用户提供的软件。n随着软件工程过程的进展,软件配置项随着软件工程过程的进展,软件配置项(SCI) 数数目快速增加。目快速增加。6262软件工程软件工程9.3.2 9.3.2 基线基线 (Baseline)(Baseline)n基线是软件生存期中各开发阶段末尾的特定点,基线是软件生存期中各开发阶段末尾的特定点,又称里程碑又称里程碑。n由正式的技术评审而得到的由正式的技术评审而得到的 SCI 协议和软件配置协议和软件配置的正式文本才能成为基线。的正式文本才能成为基线。n基线的作用是把各阶段工作的划分更加明确化,基线的作用是把各阶段工作的划分更加明确化,以便于检验和肯定阶段成果。以便于检验和肯定阶段成果。6363软件工程软件工程软件开发各阶段的基线软件开发各阶段的基线系统系统工程工程系系统统规规格格说说明明操操作作系系统统测测试试计计划划数数据据源源代代码码设设计计规规格格说说明明软软件件需需求求规规格格说说明明需求需求分析分析软件软件设计设计程序程序编码编码软件软件测试测试6464软件工程软件工程项目数据库项目数据库n一旦一个一旦一个SCI成为基线,就把它存放到项目数据成为基线,就把它存放到项目数据库中。库中。n当软件组织成员想要对基线当软件组织成员想要对基线SCI进行修改时,把进行修改时,把它从项目数据库中复制到该工程师的专用工作区它从项目数据库中复制到该工程师的专用工作区中。中。n例如,把一个名为例如,把一个名为B的的SCI从项目数据库复制到工从项目数据库复制到工程师的专用工作区中。工程师在程师的专用工作区中。工程师在B(B的副本)的副本)上完成要求的变更,再用上完成要求的变更,再用B来更新来更新B。6565软件工程软件工程立式 PCBCA项目数据库项目数据库项目数据库项目数据库记事文件记事文件记事文件记事文件专用工作空间专用工作空间专用工作空间专用工作空间B6666软件工程软件工程9.3.3 9.3.3 软件配置标识软件配置标识n一方面随着软件生存期的向前推进,一方面随着软件生存期的向前推进,SCI 的数量的数量不断增多。整个软件生存期的软件配置就象一部不断增多。整个软件生存期的软件配置就象一部不断演变的电影,而某一时刻的配置就是这部电不断演变的电影,而某一时刻的配置就是这部电影的一个片段。影的一个片段。n为了对软件配置的各个片段(为了对软件配置的各个片段(SCI)进行控制和进行控制和管理,不致造成混乱,首先应给它们命名。管理,不致造成混乱,首先应给它们命名。n在实现软件配置管理时,通常,把软件配置项在实现软件配置管理时,通常,把软件配置项 (SCI)组织成配置对象,在项目数据库中用一)组织成配置对象,在项目数据库中用一个单一的名字来组织它们。个单一的名字来组织它们。6767软件工程软件工程n配置对象的类型有:配置对象的类型有:基本对象基本对象:是由软件工程师在分析、设计、编:是由软件工程师在分析、设计、编码和测试时所建立的文本单元。例如,基本对码和测试时所建立的文本单元。例如,基本对象可能是需求规格说明中的一节,一个模块的象可能是需求规格说明中的一节,一个模块的源程序清单、一组用来测试一个等价类的测试源程序清单、一组用来测试一个等价类的测试用例。用例。复合对象复合对象:是基本对象或其它复合对象的一个:是基本对象或其它复合对象的一个集合。集合。n一个配置对象有一个名字和一组属性,并通过某一个配置对象有一个名字和一组属性,并通过某些联系些联系“连接连接”到其它对象。到其它对象。6868软件工程软件工程n每个对象与其它对象的联系用箭头表示。单向每个对象与其它对象的联系用箭头表示。单向箭头指明了一种构造关系。双向箭头则表明一箭头指明了一种构造关系。双向箭头则表明一种相互关系。种相互关系。a)对象间的层次关系对象间的层次关系:一个对象可以是一个复合:一个对象可以是一个复合对象的一个成分,用联系对象的一个成分,用联系标识。标识。 E-R diagram 1.4 data model; data model Design Specification;就可以建立就可以建立SCI的一个层次。的一个层次。b)对象的相互关联关系对象的相互关联关系:对象跨越对象层次的分:对象跨越对象层次的分支相互关联。这些交叉的结构联系表达方式如支相互关联。这些交叉的结构联系表达方式如6969软件工程软件工程下:下: data model data flow model; (两个复合对象之间的相互联系两个复合对象之间的相互联系) data model test case class m; (一个复合对象与一个特定的基本对象之间的一个复合对象与一个特定的基本对象之间的相互联系)相互联系)n对象标识:对象标识: (名字、描述、资源、实现)(名字、描述、资源、实现)对象的名字明确地标识对象。对象的名字明确地标识对象。对象描述包括:对象描述包括:SCI类型(如文档、程序、数类型(如文档、程序、数据)、项目标识、变更和或版本信息。据)、项目标识、变更和或版本信息。7070软件工程软件工程配置对象配置对象设计规格说明设计规格说明数据设计数据设计体系结构设计体系结构设计模块设计模块设计界面设计界面设计测试规格说明测试规格说明测试计划测试计划测试过程测试过程测试用例测试用例数据模型数据模型模块模块n#接口描述接口描述算法描述算法描述PDL源代码源代码7171软件工程软件工程资源包括由对象产生的、处理的、引用的或资源包括由对象产生的、处理的、引用的或其它需要的一些实体。其它需要的一些实体。基本对象的实现是指向文本单元的指针,复基本对象的实现是指向文本单元的指针,复合对象的实现为合对象的实现为NULL。n实施软件配置管理要做的事情至少有:实施软件配置管理要做的事情至少有:1.制定配置管理计划制定配置管理计划 在软件工程项目制定开发计划时,应使开发计划在软件工程项目制定开发计划时,应使开发计划中包括配置管理计划。在配置管理计划中规定中包括配置管理计划。在配置管理计划中规定:9.3.4 9.3.4 软件配置管理的过程软件配置管理的过程7272软件工程软件工程配置标识的规则配置标识的规则如何建立项目数据库如何建立项目数据库如何将软件配置项置于配置管理之下如何将软件配置项置于配置管理之下配置管理人员的职责和配置管理活动配置管理人员的职责和配置管理活动采用什么配置管理工具、技术和方法采用什么配置管理工具、技术和方法2.实施变更控制实施变更控制许多软件工程项目没有变更控制措施导致出现许多软件工程项目没有变更控制措施导致出现混乱。混乱。3.实施版本管理和发行管理实施版本管理和发行管理它应当解决下列一些问题:它应当解决下列一些问题:7373软件工程软件工程采用什么方式来标识和管理许多已存在程序采用什么方式来标识和管理许多已存在程序(和它们的文档和它们的文档)的各种版本?的各种版本?在软件交付用户之前和交付之后如何控制变在软件交付用户之前和交付之后如何控制变更?更?谁有权批准和对变更安排优先级?谁有权批准和对变更安排优先级?如何保证变更得以正确地实施?如何保证变更得以正确地实施?利用什么办法来估计变更可能引起的其他问利用什么办法来估计变更可能引起的其他问题?题?n这些问题归结到软件配置管理的这些问题归结到软件配置管理的 5 个任务,即配个任务,即配置标识、版本管理、变更控制、配置审核和配置置标识、版本管理、变更控制、配置审核和配置报告。报告。7474软件工程软件工程9.3.5 9.3.5 版本控制版本控制n版本控制是版本控制是SCM的基础,它管理并保护开发者的基础,它管理并保护开发者的软件资源。的软件资源。n版本控制管理在软件工程过程中建立起配置对象版本控制管理在软件工程过程中建立起配置对象的不同版本。的不同版本。n版本管理可以把一些属性结合到各个软件版本上。版本管理可以把一些属性结合到各个软件版本上。n通过描述所希望的属性集合来确定(或构造)所通过描述所希望的属性集合来确定(或构造)所想要的配置。想要的配置。n使用演变图来表示系统的不同版本。使用演变图来表示系统的不同版本。7575软件工程软件工程n整个软件工程过程中所涉及的软件对象都必须加整个软件工程过程中所涉及的软件对象都必须加以标识。以标识。n在对象成为基线以前可能要做多次变更,在成为在对象成为基线以前可能要做多次变更,在成为基线之后也可能需要频繁地变更。基线之后也可能需要频繁地变更。n对于每一配置对象都可以建立一个演变图,用演对于每一配置对象都可以建立一个演变图,用演变图记叙对象的变更历史。变图记叙对象的变更历史。n图中的各个结点都是复合对象,是一个完全的软图中的各个结点都是复合对象,是一个完全的软件版本。件版本。n软件的每一版本都是软件的每一版本都是 SCI(源代码、文档、数据)(源代码、文档、数据)的一个集合,且各个版本都可能由不同的变种组的一个集合,且各个版本都可能由不同的变种组成。成。7676软件工程软件工程版本版本1.0版本版本1.1版本版本1.2版本版本2.0版本版本2.1版本版本1.3版本版本1.4版本版本1.1.1版本版本1.1.2演变图显演变图显示了软件示了软件修改情况修改情况变种变种123547777软件工程软件工程n例如,一个简单的程序版本由例如,一个简单的程序版本由 1、2、3、4 和和5 等部件组成。其中部件等部件组成。其中部件 4 在软件使用彩色显示器在软件使用彩色显示器时使用,部件时使用,部件 5 在软件使用单色显示器时使用。在软件使用单色显示器时使用。因此,可以定义版本的两个变种。因此,可以定义版本的两个变种。n在某些工具中,当前保持的是最初版本的完全副在某些工具中,当前保持的是最初版本的完全副本。为了得到某一时期本。为了得到某一时期(文档或程序文档或程序)的版本,可的版本,可以从最初版本出发,沿到达该时期的版本分支,以从最初版本出发,沿到达该时期的版本分支,逐个逐个 “提取提取” 出出 (由工具编目的由工具编目的) 变更,使得该变更,使得该时期当前配置直接可用,并使得其它版本也可用。时期当前配置直接可用,并使得其它版本也可用。7878软件工程软件工程版本管理的主要任务版本管理的主要任务1)集中管理档案,安全授权机制集中管理档案,安全授权机制版本管理的操作将开发组的档案集中地存放版本管理的操作将开发组的档案集中地存放在服务器上,经系统管理员授权给各个用户。在服务器上,经系统管理员授权给各个用户。用户通过检入用户通过检入 (check in) 和检出和检出 (check out) 的方式访问服务器上的文件,未经授权的用的方式访问服务器上的文件,未经授权的用户无法访问服务器上的文件。户无法访问服务器上的文件。2)软件版本升级管理软件版本升级管理每次检入时,在服务器上都会生成新的版本。每次检入时,在服务器上都会生成新的版本。7979软件工程软件工程SCIsSCIsSCIsSCIs正式正式技术技术评审评审软件工软件工程任务程任务SCIsSCM控制控制存储存储检入检入检出检出项目数据库项目数据库8080软件工程软件工程任何版本都可以随时检出编辑,同一应用的任何版本都可以随时检出编辑,同一应用的不同版本可以像树枝一样向上增长。不同版本可以像树枝一样向上增长。1.81.71.61.51.41.31.21.1filename.cppcheck incheck outworkstationLANfilename.cpv8181软件工程软件工程3)加锁功能加锁功能目的是在文件更新时保护文件,避免不同用目的是在文件更新时保护文件,避免不同用户更改同一文件时发生冲突。户更改同一文件时发生冲突。 某一文件一旦被检入,锁即被解除,该文件某一文件一旦被检入,锁即被解除,该文件可被其它用户使用。可被其它用户使用。在更新一个文件之前锁定它,避免变更没有在更新一个文件之前锁定它,避免变更没有锁定的项目源文件。锁定的项目源文件。n在文件检入和检出时,需要注意检入和检出的在文件检入和检出时,需要注意检入和检出的使用使用当需要修改某个小缺陷时,应只检出完成工当需要修改某个小缺陷时,应只检出完成工作必需的最少文件;作必需的最少文件;8282软件工程软件工程需要对文件变更时,应检入它并加锁,保留需要对文件变更时,应检入它并加锁,保留对每个变更的记录;对每个变更的记录;应避免长时间地锁定文件。如果需要长时间应避免长时间地锁定文件。如果需要长时间工作于某个文件,最好能创建一个分支,并工作于某个文件,最好能创建一个分支,并在分支上做工作。在分支上做工作。如果需要做较大的变更,可有两种选择:如果需要做较大的变更,可有两种选择:a.将需要的所有文件检出并加锁,然后正常将需要的所有文件检出并加锁,然后正常处理;处理;b.为需要修改的所有分支创建分支,把变更为需要修改的所有分支创建分支,把变更与主干与主干“脱机脱机”,然后把结果合并回去。,然后把结果合并回去。8383软件工程软件工程项目数据库项目数据库存取权信息存取权信息检出检出检入检入lockunlock存取存取控制控制配置对象配置对象( (提取版本提取版本) )配置对象配置对象( (基线版本基线版本) )配置对象配置对象( (基线版本基线版本) )审核信息审核信息 配置对象配置对象( (修改版本修改版本) )软件工软件工程人员程人员8484软件工程软件工程9.3.6 9.3.6 变更控制变更控制n软件生存期内全部的软件配置是软件产品的真正软件生存期内全部的软件配置是软件产品的真正代表,必须使其保持精确。代表,必须使其保持精确。n软件工程过程中某一阶段的变更,均要引起软件软件工程过程中某一阶段的变更,均要引起软件配置的变更,这种变更必须严格加以控制和管理,配置的变更,这种变更必须严格加以控制和管理,保持修改信息。保持修改信息。n变更控制包括变更控制包括建立控制点建立控制点和和建立报告与审查制度建立报告与审查制度。n n在此过程中,首先用户提交书面的变更请求,详在此过程中,首先用户提交书面的变更请求,详在此过程中,首先用户提交书面的变更请求,详在此过程中,首先用户提交书面的变更请求,详细申明变更的理由、变更方案、变更的影响范围细申明变更的理由、变更方案、变更的影响范围细申明变更的理由、变更方案、变更的影响范围细申明变更的理由、变更方案、变更的影响范围等。等。等。等。8585软件工程软件工程变更控制变更控制过程过程识别变更要求识别变更要求用户提交变更要求用户提交变更要求开发人员进行评价开发人员进行评价产生变更报告产生变更报告对对请求排队请求排队, 产生工程变更顺产生工程变更顺序序把把变更分配给配置对象变更分配给配置对象产生变更报告产生变更报告通知用户通知用户变更控制负责人作出决定变更控制负责人作出决定8888软件工程软件工程“检出检出”配置项配置项(SCI)执行变更执行变更变更复审(审计)变更复审(审计)“检入检入”变更后的配置项变更后的配置项建立测试基线建立测试基线执行质量保证和测试活动执行质量保证和测试活动“促成促成”把变更包括在下一修正版中把变更包括在下一修正版中重建适用的软件版本重建适用的软件版本针对所有配置项审计变更针对所有配置项审计变更把变更包括到新版本中把变更包括到新版本中发布新版本发布新版本8989软件工程软件工程b)为了增删某些功能、或为了改变完成某个功为了增删某些功能、或为了改变完成某个功能的方法而需要的变更能的方法而需要的变更。这类变更必须经过。这类变更必须经过某种正式的变更评价过程,以估计变更需要某种正式的变更评价过程,以估计变更需要的成本和它对软件系统其它部分的影响。的成本和它对软件系统其它部分的影响。如果变更的代价较小且对软件系统其它部如果变更的代价较小且对软件系统其它部分没有影响,或影响很小,通常应批准这分没有影响,或影响很小,通常应批准这个变更。个变更。如果变更的代价较高,或者影响较大,必如果变更的代价较高,或者影响较大,必须权衡利弊,决定是否变更。如果同意这须权衡利弊,决定是否变更。如果同意这种变更,需要进一步确定由谁支付变更所种变更,需要进一步确定由谁支付变更所需的费用。如果是用户要求的变更需的费用。如果是用户要求的变更,则用则用9090软件工程软件工程户应支付这笔费用;否则,必须完成某种户应支付这笔费用;否则,必须完成某种成本效益分析,以确定是否值得做这种成本效益分析,以确定是否值得做这种变更。变更。n这种变更报告和审查制度,对变更控制来说起了这种变更报告和审查制度,对变更控制来说起了一个安全保证作用。一个安全保证作用。n在一个在一个SCI成为基线之前,可以对所有合理的项成为基线之前,可以对所有合理的项目和技术申请进行非正式的变更;目和技术申请进行非正式的变更;n一旦某个一旦某个 SCI 经过正式的技术评审并得到批准,经过正式的技术评审并得到批准,它就成为基线。以后如果需要对它变更,就必须它就成为基线。以后如果需要对它变更,就必须得到项目负责人的批准,或者必须得到变更控制得到项目负责人的批准,或者必须得到变更控制负责人的批准。负责人的批准。9191软件工程软件工程9.3.7 9.3.7 配置状态报告配置状态报告n为了清楚、及时地记载软件配置的变化,需要对为了清楚、及时地记载软件配置的变化,需要对开发的过程做出系统的记录,以反映开发活动的开发的过程做出系统的记录,以反映开发活动的历史情况。这就是配置状态登录的任务。历史情况。这就是配置状态登录的任务。n登录主要根据变更控制小组会议的记录,并产生登录主要根据变更控制小组会议的记录,并产生配置状态报告配置状态报告。n对于每一项变更,记录:对于每一项变更,记录: 发生了什么?发生了什么? 为什么会发生?为什么会发生? 对谁做的?对谁做的? 什么时侯发生的?什么时侯发生的? 会有什么影响?会有什么影响?9292软件工程软件工程配置状态报告信息流配置状态报告信息流配置审核配置审核配置控制配置控制配置确定配置确定软件配置项软件配置项变更变更缺陷缺陷状态报告状态报告配置配置状态状态报告报告配置状态报告配置状态报告联机数据库联机数据库9393软件工程软件工程n每次每次新分配一个新分配一个 SCI,或或更新一个已有更新一个已有 SCI的标的标识识,或,或一项变更申请被变更控制负责人批准一项变更申请被变更控制负责人批准,并并给出了一个工程变更顺序给出了一个工程变更顺序时,在配置状态报告中时,在配置状态报告中就要增加一条变更记录条目。就要增加一条变更记录条目。n一旦进行了配置审核,其结果也应该写入报告之一旦进行了配置审核,其结果也应该写入报告之中。中。n配置状态报告可以放在一个配置状态报告可以放在一个联机数据库联机数据库中,以便中,以便软件开发人员或者软件维护人员可以对它进行查软件开发人员或者软件维护人员可以对它进行查询或修改。此外在软件配置报告中新登录的变更询或修改。此外在软件配置报告中新登录的变更应当及时通知给管理人员和软件工程师。应当及时通知给管理人员和软件工程师。9494软件工程软件工程n配置状态报告对于大型软件开发项目,能够避免配置状态报告对于大型软件开发项目,能够避免出现可能的不一致和冲突。出现可能的不一致和冲突。n软件的完整性软件的完整性,是指开发后期的,是指开发后期的软件产品能够正软件产品能够正确地反映用户要求确地反映用户要求。n软件配置审核的目的就是要软件配置审核的目的就是要n证实整个软件生存期中各项产品在技术上和证实整个软件生存期中各项产品在技术上和管理上的完整性。管理上的完整性。n确保所有文档的内容变动不超出当初确定的确保所有文档的内容变动不超出当初确定的软件要求范围。使得软件配置具有良好的可软件要求范围。使得软件配置具有良好的可9.3.8 9.3.8 配置审核配置审核9595软件工程软件工程跟踪性。跟踪性。n软件配置审核是软件变更控制人员掌握配置情况、软件配置审核是软件变更控制人员掌握配置情况、进行审批的依据。软件的变更控制机制通常只能进行审批的依据。软件的变更控制机制通常只能跟踪到工程变更顺序产生为止。跟踪到工程变更顺序产生为止。n为确认变更是否正确完成为确认变更是否正确完成? 一般可以用以下两种一般可以用以下两种方法去审查:方法去审查:正式技术评审正式技术评审 软件配置审计软件配置审计n正式的技术评审正式的技术评审着重检查已完成修改的软件配置着重检查已完成修改的软件配置项的技术正确性。评审者评价软件配置项,项的技术正确性。评审者评价软件配置项,9696软件工程软件工程决定它与其它软件配置项的一致性,是否有遗决定它与其它软件配置项的一致性,是否有遗漏或可能引起的副作用。漏或可能引起的副作用。n正式技术评审应对所有的变更进行,除了那些正式技术评审应对所有的变更进行,除了那些最无价值的变更之外。最无价值的变更之外。n软件配置审核软件配置审核作为正式技术评审的补充,作为正式技术评审的补充,评价评价在评审期间通常没有被考虑的在评审期间通常没有被考虑的SCI的特性。的特性。n软件企业实施配置管理分为两个层次。软件企业实施配置管理分为两个层次。1)定义组织级的标准软件配置管理过程定义组织级的标准软件配置管理过程9.3.9 9.3.9 软件组织的软件配置管理过程软件组织的软件配置管理过程9797软件工程软件工程定义组织级的标准软件配置管理过程定义组织级的标准软件配置管理过程规程规程:配置管理计划制定规程、变更管理规:配置管理计划制定规程、变更管理规程、配置审核规程。程、配置审核规程。模板或表单模板或表单:配置管理计划模板、变更请求:配置管理计划模板、变更请求表、配置审核检查表、配置审核不符合报告表、配置审核检查表、配置审核不符合报告表。表。准则准则:规程剪裁准则、配置库结构准则、配:规程剪裁准则、配置库结构准则、配置说明与报告准则、配置管理培训准则、软置说明与报告准则、配置管理培训准则、软件配置管理工具选择与使用准则。件配置管理工具选择与使用准则。2)项目级软件配置过程项目级软件配置过程a)定义过程定义过程9898软件工程软件工程依据组织的标准软件配置管理过程并参考用户依据组织的标准软件配置管理过程并参考用户及项目的特点,策划项目级配置管理过程,取及项目的特点,策划项目级配置管理过程,取得项目配置计划。得项目配置计划。b)实施过程实施过程确定项目软件配置管理人员职责;确定项目软件配置管理人员职责;选用或开发适用的配置管理工具;选用或开发适用的配置管理工具;对项目人员进行有关规程、模板使用及工对项目人员进行有关规程、模板使用及工具的培训;具的培训;按照配置管理计划开展配置管理工作。按照配置管理计划开展配置管理工作。9999软件工程软件工程组织的标准组织的标准SCM过程过程(标准规程、模板、表格和准则标准规程、模板、表格和准则)用户特定用户特定要求要求项目特性项目特性及风险及风险 项目项目SCM过程过程 项目项目SCM计划和规程计划和规程100100软件工程软件工程作业:名词解释 1、软件质量2、质量保证3、软件配置项4、基线101101软件工程软件工程
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号