还剩17页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
第9章软件质量和软件质量保证体系
9.1软件质量
9.
1.1软件质量特性(什么是软件质量?不同人或组织的看法各不相同依据ISO/IEC9126-1991我们国家)GB/T16260-1996信息技术软件产品评价、质量特性及其使用指南国际标准,认为软件质量()Software Quality是与软件产品满足明确或隐含需求的力量有关的特征和特性的总和,例如,符合规格说明简而言之,软件质量是软件一些特性的组合,它仅依靠于软件本身
9.
1.2软件质量评价评价软件质量可从三个方面进行,即产品或中间产品、过程(即软件生产所需的资源和活动)和项目评价可按如下三步进行
1、定义质量需求质量需求包含两个方面
①问题规定或隐含的需求;
②软件质量标准和其它技术信息
2、预备评价首先选择质量度量;然后定义质量等级;再定义评估准则
9.
4.1IS09000族国际标准ISO9000族国际标准是指国际标准化组织中质量管理和质量保证技术委员会ISO/TC176制订的全部标准ISO9000以一般术语描述了能够适用于任何行业的质量保证系统的要素,这些要素包括用于实现质量方案、质量掌握、质量保证和质量改进所需的组织结构、程序、过程和资源现有5类共20个标准,如图9-7,分别是
1、质量术语标准它是ISO9000族标准中最早发布的一个标准,为质量管理领域中常用的质量术语作了明确的定义,成为质量管理和理解、贯彻实施£09000其他标准的基础
2、质量保证标准这类标准体现了对供方质量体系的不同要求,供方对这些要求的满足应得到证明
3、质量管理标准这类标准可用以指导质量管理和建立质量体系
4、质量管理和质量保证标准的选用和实施指南
5、支持性技术标准企业软件质量体系的建立和实施ISO9000族标准中并没有特地供应软件企业如何建立和实施质量体系,因此,可以认为软件企业建立和实施质量体系的过程和其他企业并无多大差别,仅对某些质量体系要素有其特别的要求下面简要说明软件企业建立和实施质量体系的主要工作
1、预备阶段
2、质量体系策划
3、编写质量体系文件
4、培训内部审核员
5、质量体系试运行
6、内部质量体系审核
7、管理评审
8、质量体系认证前的预备
9、质量体系认证过程
10、质量体系的进一步改进与完善
9.5软件配置管理
9.
5.1软件配置项软件配置项Software ConfigurationItems,简称SCI是软件配置管理的对象,它包括软件生存周期内产生的全部信息项按£09000-3的说明,配置项有与合同、源代码、过程、方案和产品有关的文档及数据;目标代码和可执行代码;相关产品,包括软件工具、库内的可复用件、外购软件等软件配置就是软件配置项在不同时期按不同要求进行的组合例如Visual Basic
6.0有专业版、企业版等不同版本实际中,一般用版本来表示配置项的演化阶段随着软件过程的进展,软件配置项也快速增长,并且变化接踵而至,主要变化表现在:新的商业或市场环境,引起产品需求或业务规章变化;新的用户要求;企业结构变化,导致项目优先级或软件工程队伍结构变化;预算或进度的限制软件配置管理软件配置管理是一组用于在计算机软件的整个生存周期内管理变化的活动按ISO9000-3的叙述,软件配置管理是一个管理学科,对配置项的开发和支持生存周期赐予技术上和管理上的指导配置管理的应用取决于项目的规模、简单程度和风险大小软件配置管理不同于软件维护,最主要的一点是软件配置管理是当软件项目开头时就启动,并且仅当软件终止运行后才结束的一组跟踪和掌握变化的活动实施软件配置管理主要有以下任务
1、制订配置管理方案
2、确定配置标识
3、进行配置掌握,实施变更管理
4、配置审计
5、纪录并报告配置状态
6、版本掌握
7、发行管理和交付
9.6软件过程力量成熟度模型简介
9.
6.1基本概念软件过程人们用于开发和维护软件及其有关产品(如项目方案、设计文档、代码、用户手册等,在模型中又称为软件工作产品)的一系列活动,包括软件工程活动和软件管理活动软件过程力量描述开发组织或项目组通过执行其软件过程能实现预期结果的程度软件过程性能表示开发组织或项目组遵循其软件过程所得到的实际结果软件过程成熟度一个特定软件过程被明确和有效地定义、管理、测量和掌握的程度成熟度可以指明一个软件开发组织软件过程力量的增长潜力软件力量成熟度等级软件开发组织在走向成熟的途中几个具有明确定义的、表征软件过程力量成熟度的平台关键过程域相互关联的若干软件实践活动和有关基础设施的集合关键实践对关键过程域的实施起关键作用的方针、规程、措施、活动以及相关基础设施的建立软件过程力量成熟度模型对软件组织进化阶段的描述,随着软件组织定义、实施、测量、掌握和改进其软件过程,软件组织的力量经过这些阶段逐步前进
9.
6.2软件过程力量成熟度等级SEI CMM
1.1将软件过程的进化步骤分成5个等级,用以测量软件开发组织的软件过程成熟度和评价其软件过程力量
1、初始级(混沌的软件过程)
2、可重复级(经过训练的软件过程)
3、已定义级(标准全都的软件过程)
4、定量管理级(可猜测的软件过程)(
5、优化级能持续改善的软件过程)
9.
6.3关键过程域除初始级”外,每个成熟度等级均包含几个关键过程域为了达到一个成熟度等级,必需实现该等级上的全部关键过程域有关概念分别说明如下⑴需求管理在顾客和软件项目之间建立对顾客需求的共同理解⑵软件项目策划制定软件工程和软件项目管理的合理的方案⑶软件项目跟踪和监督建立适当的对实际进展的跟踪和监督,使管理者在软件项目实施状况显著偏离软件方案时能准时实行有效措施⑷软件子合同管理选择合格的软件分承包商,并有效地管理他们⑸软件质量保证供应对软件项目所采纳的过程和所构造的产品的某种可视性和透亮性,使管理者能较简洁地发觉软件过程和产品的质量问题,以便实行准时有效的措施⑹软件配置管理在整个软件生存周期中建立和维护软件产品的完整性和全都性⑺组织过程焦点规定组织在提高整体过程力量、改进软件过程活动方面的责任⑻组织过程定义总结和保持一组便于使用的软件过程的胜利的实践阅历,以便使项目的过程实施能得到改进,为组织获得积累性的长期效益奠定基础⑼培训大纲培训个人的技能和学问,以提高其执行任务的质量和效率
(1)集成软件管理将软件工程活动和软件管理活动集成为一个协调的、已定义的软件过程
9.
6.4关键实践为了对关键实践的描述更加法律规范化,将关键过程域所包含的关键实践全部按5个共同特征加以组织,即⑴执行商定描述一个组织在保证将过程建立起来并持续起作用方面所必需实行的行动执行商定一般包括制定组织的方针和规定高级管理者的支持⑵执行力量描述为了实施软件过程,项目或组织中必需存在的先决条件执行力量一般包括资源、组织机构和培训⑶执行的活动描述为实现一个关键过程域所必需的角色和规程(即描述必需由何人做何事X执行的活动一般包括制订方案与规程、执行方案、跟踪执行状况,必要时实行订正措施⑷测量和分析描述对过程进行测量和对测量结果进行分析的需要测量和分析一般包括为了确定所执行活动的状态及有效性所能采纳的测量和分析⑸验证明施描述遵照已建立的过程进行活动的措施3佥证明施一般包括管理者和软件质量保证部门所作的评审和审计关键实践一般要描述对其所在的关键过程域目标的实现和法律规范化实施贡献最大的那些基础设施和实践活动每个关键实践又可能另有若干个下级实践,用来确定关键实践是否得到满足的实施
9.
6.5软件过程力量成熟度模型的应用软件过程力量成熟度模型有两个基本用途软件过程评估和软件力量评价软件过程评估用以确定一个组织的当前软件过程的状态,找出组织所面临的急需解决的与软件过程有关的问题,进而有步骤地实施软件过程改进,使组织的软件过程力量不断提高软件力量评价可以识别合格的能完成软件工作的承制方,或者监控承制方现有软件开发工作中软件过程的状态,进而指出承制方应改进之处应用软件过程力量成熟度模型进行软件过程评估和力量评价的共同步骤第一步,建立评价评估组小组成员应具有丰富的软件工程和管理方面的学问,并通过预先培训熟识CMM的有关概念和评估评价细节其次步,填写提问单由待评估或评价单位的代表完成第三步,进行响应分析评估评价组对提问回答状况进行统计,并据此确定必需作进一步探查的领域,以便提出补充提问待探查的领域应与CMM的关键过程域相对应第四步,进行现场访问访问被评估或评价单位的现场,以便了解该现场所遵循的软件过程当CMM的关键实践与现场的实践存在明显差异时,评估或评价组必需用文档登记对此关键过程域作出推断的理论依据第五步,提出调查发觉清单明确指出该组织软件过程的强项和弱项调查发觉清单指出了过程改进建议,并可作为软件选购单位风险分析的一部分第六步,制作关键过程域剖面图指出软件开发组织已满足和尚未满足其目标的关键过程域
9.7小结软件质量是软件工程关注的焦点提高软件质量,一方面要在软件开发过程中对开发成果进行验证,另一方面要注意软件开发过程的法律规范化和可视化前者注意的是产品本身的质量,后者注意的是产品管理的质量明显,假如产品管理质量高,那么生产的产品质量是有保证的,否则产品质量难以猜测就目前的进展趋势,软件开发过程的法律规范化和可视化是提高软件质量的有效手段,也可对软件生产组织将来生产的产品的质量进行猜测软件简单性和牢靠性是软件质量的两个重要方面有关软件简单性和牢靠性分析技术为软件质量的分析供应了量化的方法而软件质量保证体系、软件配置管理和软件过程力量成熟度模型是实施软件开发过程法律规范化和可视化的流行方式由于一般状况下,不行能对质量特性进行直接度量,从而应选择与质量特性相关的且可定量的软件特性加以度量定义质量等级是依据应用问题的需求将质量度量值分割成若干不同满足程度的等级,如优秀、合格与不合格等定义评估准则是为了综合软件不同质量特性的评价结果,可采纳判定表或加权平均法;同时还可兼顾其它因素,如时间、成本等
3、评价过程评价过程实际上是对软件产品就第2步中预备的评价内容进行实施,也分3步
①测量一把选定的质量度量应用到软件产品上;
②评级一确定某测量值的等级;
③评估一依据评估准则确定产品质量,并依据管理准则判定产品是否可通过验收或是否发行等等
9.
8.3软件质量保证软件的质量保证也和一般的质量保证一样,是确保软件产品从诞生到消亡为止的全部阶段的质量的活动软件质量保证由各种任务构成,分别与两种不同的参加者相关——负责技术工作的软件工程师和负责质量保证的方案、监督、纪录、分析及报告工作的软件质量保证(SQA)小组软件工程师通过采纳牢靠的技术方法和措施,进行正式的技术复审、执行方案周密的软件测试来保证软件质量SQA小组主要帮助软件工程小组得到高质量的最终产品,对项目预备SQA方案,如确定需要进行的评价、需要进行的审计和复审、项目可采纳的标准等;参加开发项目的软件过程描述,以保证该过程与组织政策、内部软件标准、外界所订标准以及软件项目方案的其它部分相符;复审各项软件工程活动,对其是否符合定义好的软件过程进行核实;审计指定的软件工作产品,对其是否符合定义好的软件过程中的相应部分进行核实;确保软件工作及工作产品中的偏差已被纪录,并依据预定规程进行处理;纪录全部不符合的部分,并报告给高级管理者;等等
9.
9.4软件质量管理所谓质量管理是指确定质量方针、目标和职责,并在质量体系中通过诸如质量策划、质量掌握、质量保证和质量改进,使其实施全部管理职能的全部活动质量策划包括产品策划、管理和作业策划以及质量方案的编制和质量改进的预备工作质量掌握是指实行某些特定作业技术或开展某些活动,以达到质量要求质量改进是指以追求更高的效益和效率为目标的持续性活动质量管理和质量保证相互依靠,但他们的活动具有不同的范围、不同的目的、不同的动机和不同的结果??
9.2软件简单性分析
9.
2.1基于需求分析的简单性分析软件工程的技术性工作始于需求分析,供应对分析模型质量的度量是有意义的和必要的在需求分析阶段完成以后,项目的管理人员盼望知道将要开发的软件有多大规模,这与将要投入的工作量、开发成本以及何时交付用户或何时投放市场都有亲密的联系同时,假如是托付开发的项目软件,用户也会关怀开发机构提出的报价是否恰当合理双方都盼望有一个科学、公正的估价依据下面介绍一种面对功能的软件简单性度量方法——功能点方法面对功能度量是由Albrecht首先提出来的功能点方法以需求规格说明书中双方确认的软件功能为依据,着重分析待开发系统的功能度(Functionality1明显,软件的大小与软件的功能度相关,)而与软件功能的描述无关,也与功能需求的如何实现无关功能点(FP度量可以用作从分析模型中获得系统大小的猜测手段
9.
2.2基于软件设计的简单性分析人们在设计硬件时,常采用设计测度来确定设计质量,指导设计演化然而对于软件而言,大部分软件工程师却忽视对软件设计结果的测量以达到进一步改进软件设计的目的软件设计由概要设计和具体设计两个阶段组成,我们分别就这两个阶段争论软件设计简单性度量方法概要设计简单性度量主要集中在软件结构的特征上Card和Glass定义了三种软件设计简单度测度结构简单度、数据简单度和系统简单度美国空军提出了一种计算设计结构质量指标(DSQI)的方法用来度量软件结构的简单度该方法使用了类似于在IEEE Std.
982.1—1988中提出的概念)具体设计简单性度量主要集中在模块内部结构的简单性上麦凯伯(McCabe提出了一种环形计数的方法来确定程序掌握流的简单度使用McCabe方法可直接采用程序流程图计算其判定数(即上瞰个数,对于复合条件判定要先转化成单一条件判定),也可依据程序流程图导出的程序图计算其环形数(即封闭环域数)来进行,其计算公式为程序环形简单度VG=程序流程图中的〃判定数〃4-1二程序图中的〃环形数〃=m-n+2其中m对应于程序图中的弧数,n对应于程序图中的节点数
9.
2.3于源程序代码的简单性分析软件开发经过编码阶段后,便得到源程序代码霍尔斯特德Halstead依据源代码中运算符和操作数的测量值来度量源程序代码的简单度在Halstead方法中,运算符是指用来处理程序中常量和变量的语法元素等,如算术运算符、规律运算符、关系运算符、流程掌握语句、函数调用等;操作数则是指源程序代码中的常量和变量等但对非执行语句,如注释,则不进行考虑Halstead方法使用了以下4个基本测量数据:程序中运算符总数N1程序中操作数总数N2程序中运算符种类数nl程序中操作数种类数n2依据以上4个测量数据,可以在以下几个方面对源程序代码的简单性进行度量:实际程序长度N=N1+N2编程语言层次L=2/nl*n2/N2程序容量V=Nl+N2*log2nl+n2”猜测程序长度N1=nl*log2nl+n2*log2n2可在具体设计后进行猜测估量程序工作量E=V/L=nl*N2*Nl+N2*log2nl+n2/2*n2猜测程序错误数E=Nl+N2*log2nl+n2/3000其中,V会随编程语言的不同而不同对同一功能的程序,用高级语言来写要比低级语言来写得到的程序对应的V要小,它代表了写一个程序所需的信息量以位为单位1L反映的是程序最简洁形式时的容量与程序实际容量之比
9.
2.4基于软件维护的简单性分析IEEE建议采纳一种软件成熟度指标SMI,以供应对软件产品的稳定性指示基于为每一软件产品发布而做的变化X将SMI和维护工作量联系起来,形成一个阅历模型,则可用来度量软件维护的简单性SMI方法涉及的基本测量数据如下当前发布软件中的模块数MT;当前发布软件中已经转变的模块数Fc;当前发布软件中已经添加的模块数Fa;当前发布软件中已经删除的前一次发布软件中的模块数Fdo则软件成熟度指标按下式进行计算SMI=[MT-Fa+Fc+Fd]/MT当SMI接近1的时候,产品便开头稳定实际上,软件维护过程也是由分析、设计、编码和测试的过程组成,从而基于分析、设计、编码以及测试的简单性分析方法也可用于软件维护的简单性分析
9.3软件牢靠性分析
9.
3.1软件牢靠性三要素在上面定义软件牢靠性中实际给出了三个有关的主要因素失效、时间和环境
1、失效在争论软件质量和软件牢靠性时,软件失效是指最终执行结果与有关规格不相符或用户在软件系统边界觉察到不期望的软件出错行为失效是错误引起的结果
2、时间在进行软件牢靠性分析时,时间可以有三种度量方式第一种是执行时间,是指运行软件时计算机实际花费的CPU时间;其次种是日期时间,指通常以年、月、周、日等计算的时间;第三种是时钟时间,是指运行软件时计算机自始至终所花去的累积时间,但计算机停机时间不计算在内
3、环境软件的使用环境涉及软件运行时所需要的支持系统及有关的因素一个规定的使用环境是对这些因素的精确而具体的限制描述严格地说才苗述软件牢靠性规定的使用环境包括硬件配置状态和操作人员操作等的描述,并假定其它因素对软件来说都是抱负牢靠的,不会影响软件的运行也就是说软件牢靠性不包含硬件和操作的牢靠性软件牢靠性、硬件牢靠性和操作牢靠性三者综合起来反映整个计算机系统的牢靠性规定软件的使用环境可用来判定系统失效是否由于软件失效引起
9.
3.2软件牢靠性模型软件牢靠性同硬件牢靠性一样,都可看成是随机过程,用概率分布来描述但软件牢靠性与硬件牢靠性的分析却不完全相同一方面,软件不会老化,其牢靠性不随时间增加而削减;另一方面,软件失效经常是由于软件分析或设计引起这样使软件牢靠性分析变得特别简单自第一个软件牢靠性模型由Jelinski和Moranda提出以来,已经有几十个软件牢靠性模型公开发表实际应用阅历表明,没有一个普适的模型能对全部产品都能做出最好的牢靠性分析软件牢靠性模型的争论还有待进一步深化几个较简洁的模型:
1、Jelinski-Moranda模型;
2、Shooman模型;
3、Gilb植错模型;
4、Hyman分别测试模型
9.
3.3软件牢靠性工程软件牢靠性工程可定义为定量地按用户对于牢靠性的需求,争论基于软件系统的操作行为它包括1软件牢靠性度量,是以软件牢靠性模型为基础进行的评价和猜测;2产品设计、开发过程、系统结构、软件操作环境等要点与度量标准及它们对牢靠性的影响;3应用牢靠性学问指导软件定义、开发和维护围绕软件生命周期所进行的软件牢靠性工程活动如下1可行性和需求分析阶段2设计与实现阶段3测试及试运行阶段4运行维护阶段
9.4ISO9000软件质量体系。