软件质量和软件质量保证体系_第1页
软件质量和软件质量保证体系_第2页
软件质量和软件质量保证体系_第3页
软件质量和软件质量保证体系_第4页
软件质量和软件质量保证体系_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

第9章软件质量和软件质量确保体系9.1软件质量9.1.1软件质量特性什么是软件质量?不同人或组织的见解各不相似。按照ISO/IEC9126-1991(我国GB/T16260-1996)“信息技术软件产品评价、质量特性及其使用指南”国际原则,认为软件质量(SoftwareQuality)是与软件产品满足明确或隐含需求的能力有关的特性和特性的总和,例如,符合规格阐明。简而言之,软件质量是软件某些特性的组合,它仅依赖于软件本身。9.1.2软件质量评价评价软件质量可从三个方面进行,即产品或中间产品、过程(即软件生产所需的资源和活动)和项目。评价可按以下三步进行:1、定义质量需求质量需求包含两个方面:①问题规定或隐含的需求;②软件质量原则和其它技术信息。2、准备评价首先选择质量度量;然后定义质量等级;再定义评定准则。由于普通状况下,不可能对质量特性进行直接度量,从而应选择与质量特性有关的且可定量的软件特性加以度量。定义质量等级是根据应用问题的需求将质量度量值分割成若干不同满意程度的等级,如优秀、合格与不合格等。定义评定准则是为了综合软件不同质量特性的评价成果,可采用鉴定表或加权平均法;同时还可兼顾其它因素,如时间、成本等。3、评价过程评价过程事实上是对软件产品就第2步中准备的评价内容进行实施,也分3步:①测量——把选定的质量度量应用到软件产品上;②评级——拟定某测量值的等级;③评定——根据评定准则拟定产品质量,并根据管理准则鉴定产品与否可通过验收或与否发行等等。9.1.3软件质量确保软件的质量确保也和普通的质量确保同样,是确保软件产品从诞生到消亡为止的全部阶段的质量的活动。软件质量确保由多个任务构成,分别与两种不同的参加者有关——负责技术工作的软件工程师和负责质量确保的计划、监督、统计、分析及报告工作的软件质量确保(SQA)小组。软件工程师通过采用可靠的技术办法和方法,进行正式的技术复审、执行计划周密的软件测试来确保软件质量。SQA小组重要辅助软件工程小组得到高质量的最后产品,对项目准备SQA计划,如拟定需要进行的评价、需要进行的审计和复审、项目可采用的原则等;参加开发项目的软件过程描述,以确保该过程与组织政策、内部软件原则、外界所订原则以及软件项目计划的其它部分相符;复审各项软件工程活动,对其与否符合定义好的软件过程进行核算;审计指定的软件工作产品,对其与否符合定义好的软件过程中的对应部分进行核算;确保软件工作及工作产品中的偏差已被统计,并根据预定规程进行解决;统计全部不符合的部分,并报告给高级管理者;等等。??9.1.4软件质量管理所谓质量管理是指拟定质量方针、目的和职责,并在质量体系中通过诸如:质量策划、质量控制、质量确保和质量改善,使其实施全部管理职能的全部活动。质量策划涉及产品策划、管理和作业策划以及质量计划的编制和质量改善的准备工作。质量控制是指采用某些特定作业技术或开展某些活动,以达成质量规定。质量改善是指以追求更高的效益和效率为目的的持续性活动。质量管理和质量确保互相依赖,但他们的活动含有不同的范畴、不同的目的、不同的动机和不同的成果。??9.2软件复杂性分析9.2.1基于需求分析的复杂性分析软件工程的技术性工作始于需求分析,提供对分析模型质量的度量是故意义的和必要的。在需求分析阶段完毕后来,项目的管理人员但愿懂得将要开发的软件有多大规模,这与将要投入的工作量、开发成本以及何时交付顾客或何时投放市场都有亲密的联系。同时,如果是委托开发的项目软件,顾客也会关心开发机构提出的报价与否恰当合理。双方都但愿有一种科学、公正的估价根据。下面介绍一种面对功效的软件复杂性度量办法——功效点办法。面对功效度量是由Albrecht首先提出来的。功效点办法以需求规格阐明书中双方确认的软件功效为根据,着重分析待开发系统的功效度(Functionality)。显然,软件的大小与软件的功效度有关,而与软件功效的描述无关,也与功效需求的如何实现无关。功效点(FP)度量能够用作从分析模型中获得系统大小的预测手段。9.2.2基于软件设计的复杂性分析人们在设计硬件时,常运用设计测度来拟定设计质量,指导设计演化。然而对于软件而言,大部分软件工程师却无视对软件设计成果的测量以达成进一步改善软件设计的目的。软件设计由概要设计和具体设计两个阶段构成,我们分别就这两个阶段讨论软件设计复杂性度量办法。概要设计复杂性度量重要集中在软件构造的特性上。Card和Glass定义了三种软件设计复杂度测度:构造复杂度、数据复杂度和系统复杂度。美国空军提出了一种计算“设计构造质量指标(DSQI)”的办法用来度量软件构造的复杂度。该办法使用了类似于在IEEEStd.982.1—1988中提出的概念。具体设计复杂性度量重要集中在模块内部构造的复杂性上。麦凯伯(McCabe)提出了一种环形计数的办法来拟定程序控制流的复杂度。使用McCabe办法可直接运用程序流程图计算其“鉴定数”(即比较个数,对于复合条件鉴定要先转化成单一条件鉴定),也可根据程序流程图导出的程序图计算其“环形数”(即封闭环域数)来进行,其计算公式为:程序环形复杂度V(G)=程序流程图中的“鉴定数”+1=程序图中的“环形数”。=m-n+2其中m对应于程序图中的弧数,n对应于程序图中的节点数。9.2.3基于源程序代码的复杂性分析软件开发通过编码阶段后,便得到源程序代码。霍尔斯特德(Halstead)根据源代码中运算符和操作数的测量值来度量源程序代码的复杂度。在Halstead办法中,运算符是指用来解决程序中常量和变量的语法元素等,如算术运算符、逻辑运算符、关系运算符、流程控制语句、函数调用等;操作数则是指源程序代码中的常量和变量等。但对非执行语句,如注释,则不进行考虑。Halstead办法使用了下列4个基本测量数据:程序中运算符总数N1程序中操作数总数N2程序中运算符种类数n1程序中操作数种类数n2根据以上4个测量数据,能够在下列几个方面对源程序代码的复杂性进行度量:实际程序长度N=N1+N2编程语言层次L=(2/n1)*(n2/N2)程序容量V=(N1+N2)*log2(n1+n2)?预测程序长度N'=n1*log2n1+n2*log2n2?(可在具体设计后进行预测)预计程序工作量E'=V/L=(n1*N2*(N1+N2)*log2(n1+n2))/(2*n2)预测程序错误数E"=((N1+N2)*log2(n1+n2))/3000其中,V会随编程语言的不同而不同(对同一功效的程序,用高级语言来写要比低档语言来写得到的程序对应的V要小),它代表了写一种程序所需的信息量(以位为单位)。L反映的是程序最简洁形式时的容量与程序实际容量之比。9.2.4基于软件维护的复杂性分析IEEE建议采用一种软件成熟度指标(SMI),以提供对软件产品的稳定性批示(基于为每一软件产品公布而做的变化)。将SMI和维护工作量联系起来,形成一种经验模型,则可用来度量软件维护的复杂性。SMI办法涉及的基本测量数据以下:现在公布软件中的模块数MT;现在公布软件中已经变化的模块数Fc;现在公布软件中已经添加的模块数Fa;现在公布软件中已经删除的前一次公布软件中的模块数Fd。则软件成熟度指标按下式进行计算: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软件质量体系9.4.1ISO9000族国际原则ISO9000族国际原则是指国际原则化组织中质量管理和质量确保技术委员会(ISO/TC176)制订的全部原则。ISO9000以普通术语描述了能够合用于任何行业的质量确保系统的要素,这些要素涉及用于实现质量计划、质量控制、质量确保和质量改善所需的组织构造、程序、过程和资源。现有5类共20个原则,如图9-7,分别是:1、质量术语原则它是ISO9000族原则中最早公布的一种原则,为质量管理领域中惯用的质量术语作了明确的定义,成为质量管理和理解、贯彻实施ISO9000其它原则的基础。2、质量确保原则这类原则体现了对供方质量体系的不同规定,供方对这些规定的满足应得到证明。3、质量管理原则这类原则可用以指导质量管理和建立质量体系。4、质量管理和质量确保原则的选用和实施指南5、支持性技术原则9.4.2公司软件质量体系的建立和实施ISO9000族原则中并没有专门提供软件公司如何建立和实施质量体系,因此,能够认为软件公司建立和实施质量体系的过程和其它公司并无多大差别,仅对某些质量体系要素有其特殊的规定。下面简要阐明软件公司建立和实施质量体系的重要工作。1、准备阶段2、质量体系策划3、编写质量体系文献4、培训内部审核员5、质量体系试运行6、内部质量体系审核7、管理评审8、质量体系认证前的准备9、质量体系认证过程10、质量体系的进一步改善与完善9.5软件配备管理9.5.1?软件配备项软件配备项(SoftwareConfigurationItems,简称SCI)是软件配备管理的对象,它涉及软件生存周期内产生的全部信息项。按ISO9000-3的阐明,配备项有:与合同、源代码、过程、计划和产品有关的文档及数据;目的代码和可执行代码;有关产品,涉及:软件工具、库内的可复用件、外购软件等。软件配备就是软件配备项在不同时期按不同规定进行的组合。例如:VisualBasic6.0有专业版、公司版等不同版本。实际中,普通用“版本”来表达配备项的演化阶段。随着软件过程的进展,软件配备项也快速增加,并且变化接踵而至,重要变化体现在:新的商业或市场环境,引发产品需求或业务规则变化;新的顾客规定;公司构造变化,造成项目优先级或软件工程队伍构造变化;预算或进度的限制。9.5.2软件配备管理软件配备管理是一组用于在计算机软件的整个生存周期内管理变化的活动。按ISO9000-3的叙述,软件配备管理是一种管理学科,对配备项的开发和支持生存周期予以技术上和管理上的指导。配备管理的应用取决于项目的规模、复杂程度和风险大小。软件配备管理不同于软件维护,最重要的一点是软件配备管理是当软件项目开始时就启动,并且仅当软件终止运行后才结束的一组跟踪和控制变化的活动。实施软件配备管理重要有下列任务:1、制订配备管理计划2、拟定配备标记3、进行配备控制,实施变更管理4、配备审计5、统计并报告配备状态6、版本控制7、发行管理和交付9.6软件过程能力成熟度模型介绍9.6.1基本概念软件过程:人们用于开发和维护软件及其有关产品(如项目计划、设计文档、代码、顾客手册等,在模型中又称为软件工作产品)的一系列活动,涉及软件工程活动和软件管理活动。软件过程能力:描述开发组织或项目组通过执行其软件过程能实现预期成果的程度。软件过程性能:表达开发组织或项目组遵照其软件过程所得到的实际成果。软件过程成熟度:一种特定软件过程被明确和有效地定义、管理、测量和控制的程度。成熟度能够指明一种软件开发组织软件过程能力的增加潜力。软件能力成熟度等级:软件开发组织在走向成熟的途中几个含有明拟定义的、表征软件过程能力成熟度的平台。核心过程域:互有关联的若干软件实践活动和有关基础设施的集合。核心实践:对核心过程域的实施起核心作用的方针、规程、方法、活动以及有关基础设施的建立。软件过程能力成熟度模型:对软件组织进化阶段的描述,随着软件组织定义、实施、测量、控制和改善其软件过程,软件组织的能力通过这些阶段逐步迈进。9.6.2软件过程能力成熟度等级SEICMM1.1将软件过程的进化环节分成5个等级,用以测量软件开发组织的软件过程成熟度和评价其软件过程能力:1、初始级(混沌的软件过程)2、可重复级(通过训练的软件过程)3、已定义级(原则一致的软件过程)4、定量管理级(可预测的软件过程)5、优化级(能持续改善的软件过程)9.6.3核心过程域除“初始级”外,每个成熟度等级均包含几个核心过程域。为了达成一种成熟度等级,必须实现该等级上的全部核心过程域。有关概念分别阐明以下:⑴需求管理:在顾客和软件项目之间建立对顾客需求的共同理解。⑵软件项目策划:制订软件工程和软件项目管理的合理的计划。⑶软件项目跟踪和监督:建立适宜的对实际进展的跟踪和监督,使管理者在软件项目实施状况明显偏离软件计划时能及时采用有效方法。⑷软件子合同管理:选择合格的软件分承包商,并有效地管理他们。⑸软件质量确保:提供对软件项目所采用的过程和所构造的产品的某种可视性和透明性,使管理者能较容易地发现软件过程和产品的质量问题,方便采用及时有效的方法。⑹软件配备管理:在整个软件生存周期中建立和维护软件产品的完整性和一致性。⑺组织过程焦点:规定组织在提高整体过程能力、改善软件过程活动方面的责任。⑻组织过程定义:总结和保持一组便于使用的软件过程的成功的实践经验,方便使项目的过程实施能得到改善,为组织获得积累性的长久效益奠定基础。⑼培训大纲:培训个人的技能和知识,以提高其执行任务的质量和效率。⑽集成软件管理:将软件工程活动和软件管理活动集成为一种协调的、已定义的软件过程9.6.4核心实践为了对核心实践的描述更加规范化,将核心过程域所包含的核心实践全部按5个共同特性加以组织,即:⑴执行商定:描述一种组织在确保将过程建立起来并持续起作用方面所必须采用的行动。执行商定普通涉及制订组织的方针和规定高级管理者的支持。⑵执行能力:描述为了实施软件过程,项目或组织中必须存在的先决条件。执行能力普通涉及资源、组织机构和培训。⑶执行的活动:描述为实现一种核心过程域所必须的角色和规程(即描述必须由何人做何事)。执行的活动普通涉及制订计划与规程、执行计划、跟踪执行状况,必要时采用纠正方法。⑷测量和分析:描述对过程进行测量和对测量成果进行分析的需要。测量和分析普通涉及为了拟定所执行活动的状态及有效性所能采用的测量和分析。⑸验证明施:描述遵照已建立的过程进行活动的方法。验证明施普通涉及管理者和软件质量确保部门所作的评审和审计。核心实践普通要描述对其所在的核心过程域目的的实现和规范化实施奉献最大的那些基础设施和实践活动。每个核心实践又可能另有若干个下级实践,用来拟定核心实践与否得到满意的实施。9.6.5软件过程能力成熟度模型的应用软件过程能力成熟度模型有两个基本用途:软件过程评定和软件能力评价。软件过程评定用以拟定一种组织的现在软件过程的状态,找出组织所面临的急需解决的与软件过程有关的

温馨提示

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

评论

0/150

提交评论