已阅读5页,还剩99页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,第9章 软件项目质量保证,9.1 软件质量管理基础 9.2 软件质量保证 9.3 软件质量控制 9.4 软件质量度量 9.5 软件质量体系 9.6 小结,9.1 软件质量管理基础 随着软件的发展,开发平台越来越庞大,需求越来越复杂,涉及人员越来越多,软件的质量问题变得越来越突出。一个软件项目的主要内容是成本、进度和质量。优秀的软件项目就是要在预算的成本和进度下满足用户的需求(范围),即达到软件的质量,这与前面所说的成本、进度和范围三要素并不矛盾。良好的项目管理就是综合这三方面的因素,平衡这三方面的目标,最终完成任务。项目的这三个方面是相互制约和相互影响的。有时,对这三个方面的平衡策略会成为企业级的要求。例如IBM的软件就是以质量为最重要目标的,微软的策略是开发足够好的软件,这些质量目标其实都,是立足于企业的战略目标。所以,对整个项目来说,质量保证是项目管理的最高统一,如图9.1所示。,图9.1 质量目标是最高的统一(这三个方面相互制约和相互影响,良好的项目管理 就是综合这三方面的因素,平衡这三方面的目标,最终完成任务),9.1.1 软件质量 1. 软件质量的定义 质量是产品的固有属性,软件作为一种特殊的产品,与传统意义上的质量概念是一样的。从用户角度来说,好的软件质量是软件运行可靠、界面友好、结果正确、产品交付及时、以及良好的服务;从软件开发人员角度来说,质量好的软件是技术上没有差错、符合标准及规范的要求、技术文档齐全正确、系统容易维护。由此可见,从不同的角度看,软件质量反映了不同的多种属性。 CMM对软件质量的定义是一个系统、组件或过程符合特定需求的程度或符合客户、用户的要求、期望的程度。,ANSI/IEEE Std 729-1983对软件质量的定义是与软件产品满足规定的和隐含的需要的能力有关的特征或特性的组合。 软件质量是许多质量属性的综合体现。这些质量属性是为了满足软件各项精确定义的功能和性能的需求,为了符合文档化的开发标准而设计的一些质量特征及其组合,反映了软件质量的各方面。如果这些质量属性都能在软件产品中得到满足(即一致性),则这个软件的质量就是高的。人们通过改善软件的各种质量属性,从而提高软件的整体质量。,软件的质量属性是多方面的,至少包括下面4项内容: (1) 必须要与明确规定的功能和性能需求具有一致性,能满足给定的全部需要; (2) 与明确成文的开发标准具有一致性。如果不遵循专门的开发标准,将导致软件质量低劣; (3) 与所有专业开发的软件所期望的隐含特性具有一致性。如果忽视软件的一些隐含需求,软件质量将不可信; (4) 用户认为软件在使用中能满足其预期要求的程度,即软件的组合特性,确定了软件在使用中将满足用户预期要求的程度。,软件质量反映了下面3个方面的问题: (1) 软件需求是度量软件质量的基础,不满足需求的软件就不具备质量; (2) 在各种标准中定义了一些开发准则用来指导软件人员用工程化的方法来开发软件。如果不遵循这些开发规则,软件质量就得不到保证; (3) 往往会有一些隐含的需求没有明确提出来。如果软件只满足明确定义的需求,而没有满足应有的隐含需求,软件质量也得不到保证。而且,在很多情况下隐含需求是引起用户不满意的主要原因,经常有用户没有表示出来想当然的需求,而开发人员认为并不在需要的范围中。,总之,质量合格的软件产品必须满足需求。软件质量是软件满足软件需求规格中明确说明的以及隐含的需求的程度,其中,明确说明的需求是指在合同环境中用户明确提出的需求或需要,通常是合同、标准、规范、图纸、技术文件中做出的明确规定;隐含的需求则应加以识别和确定,具体来说是用户或者社会对需求的期望,或者是指人们所公认的、不言而喻的、不需要做出规定的需求。,2. 软件质量的重要性 除了丹佛机场自动行李系统外,再来看几个案例: (1) 1981年由计算机程序改变而导致的1/67的时间偏差,使航天飞机上的5台计算机不能同步运行。这个错误导致了航天飞机发射失败。 (2) 某银行一个晚上从10多万位顾客账户上错误地扣除了大约1500万美元的存款。这是银行历史上最大的软件错误之一。这个问题是由一个最新计算机程序的一行独立代码产生的,它导致银行在处理自动取款机自动提款和转账业务时,将一笔业务重复记录两次。,(3) 在21世纪初建立电子商务网站如雨后春笋,其中英国B网站商店专营服装,由于系统设计问题,一开始网站就不太对劲,网页充斥着Java脚本和Flash,在那个尚有拨号上网的时代,网页打开的速度非常缓慢。它在全球范围内进行营销,不得不面对复杂的语言、定价和税务问题。因系统质量问题引起它的销售收入从未达到过预期。它烧掉了1.6亿美元,于2000年5月倒闭。 像这样的例子还有很多,通过这些例子可以看出软件质量的重要性是不言而喻的。如今社会是一个信息社会、网络社会,越来越多的系统是依赖于软件的,软件的不正确运行可能会导致灾难性的后果,例如经济损失以至于人员伤亡。低质量的软件像定时炸弹一样,随时可能引起危害;而且,,低质量的产品要增加后期的成本,即使是小的缺陷也可以引起难以预料的后果。例如“千年虫”问题虽然只是一条语句的问题,却带来巨大的麻烦和损害,并为此付出很大的代价。产品的质量影响到开发进度、成本和其他的项目特质。实践表明如果把在规格说明或者设计等前期的错误推到后期修正,比在前期找出错误并修正要高出50200倍的成本。,9.1.2 软件质量需求与质量特征 1. 软件质量需求 根据软件质量的定义,软件质量需求包括明确的、规定的需求和隐含的需求。明确的、规定的需求即在软件需求中已经明确定义的,体现在需求规格说明书中。对于所有软件系统,需求规格说明书都应包含下面内容。 (1) 软件功能规格说明:描述系统功能性需求和非功能性需求; (2) 软件质量规格说明:描述系统质量需求,主要关心系统功能的操作效果,属于非功能性需求,但比从用户角度要求的非功能性需求更具体,应有度量标准;,(3) 软件资源规格说明:描述系统的资源需求,如系统约束或伪需求,也属于非功能性需求。 对于隐含的需求,软件开发要尽量识别假设并记录这些假设,提出大量的问题来引导用户充分表达他们的想法和应关注的一切问题。 软件质量需求是由质量特征的明确目标决定的,这包含两种意思,一是确定衡量软件产品质量的质量特征,二是确定这些质量特征达标的阈值。,2. 软件质量特征 软件质量不是绝对的,它总与给定的需求有关。因此,对软件质量的评价总是在将产品的实际情况与给定的需求中推导出来的软件质量特征和质量标准进行比较后得出来的。 软件质量特征反映了软件的本质。定义一个软件的质量,就等价于为该软件定义一系列质量特征。虽然软件质量难以定量、度量,但是仍能提出许多重要的软件质量标准对软件质量进行评价。影响软件质量的因素分为可以直接度量的因素(例如,单位时间内千行代码中所产生的错误)和间接度量的因素(例如,可用性和可维护性)。,对于一个特定的软件而言,首先判断什么是质量要素,才能给出提高质量的具体措施,而不是一股脑地想把所有的质量特征都做好,否则不仅做不好,还可能得不偿失。那么,什么是质量要素呢? 质量要素包括下面两个方面的内容: (1) 从技术角度讲,对软件整体质量影响最大的质量属性才是质量要素; (2) 从商业角度讲,客户最关心的、能成为卖点的质量属性才是质量要素。如果某些质量属性并不能产生显著的经济效益,就可以忽略掉,从而把精力用在对经济效益贡献最大的质量要素上。 简而言之,只有质量要素才值得开发人员去下功夫改善。,3. 软件质量模型 通常用软件质量模型来描述影响软件质量的质量特征。目前有多种有关软件质量的模型,不同的软件质量模型中的软件质量特征也不相同,下面介绍常见的几种模型。 1) McCall模型 软件编程专家McCall把影响软件质量的因素分成了3组,分别是产品运行、产品修正和产品转移,该模型提出了代表软件质量的13个质量特征,如图9.2所示。,图9.2 McCall软件质量模型(McCall等认为,特性是软件质量的反映,软件属性 可用做评价准则,定量化地度量软件属性可知软件质量的优劣),(1) 软件产品运行质量特征: 正确性:系统满足规格说明和用户的程度,即在预定环境下能正确地完成预期功能的程度; 健壮性:在硬件发生故障、输入的数据无效或操作失误等意外环境下,系统能做出适当响应的程度(例如,给出提示信息、警告信息、重复确认等); 效率:为了完成预定功能,系统所需的资源(包括时间、空间和人力)的数量; 完整性:对未经授权的人使用软件或数据的企图,系统能够控制的程度; 可用性:系统在完成预定应该完成的功能时,令人满意的概率;,风险性:按预定的成本和进度把系统开发出来,并且使用户感到满意。 (2) 软件产品修正质量特征: 可理解性:理解和使用系统的容易程度; 可维护性:诊断和修改在运行现场发生的错误所需要的工作量的大小; 灵活性:修改或改正在运行的系统需要的工作量的多少; 可测试性:软件容易测试的程度。,(3) 软件产品转移质量特征: 可移植性:把一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需的工作量。 可重用性:在其他应用中该程序可以被再次使用的程度或范围; 可运行性:把该系统和另外一个系统结合起来的工作量的多少。 需要说明的是,以上各种因素之间并不是孤立的,而是相互影响的。通过以上质量特征可以看出McCall的软件质量模型反映了顾客对软件的外部看法,实际上对这些质量特征直接进行度量是很困难的,在有些情况下甚至是不可能的。,但是这些质量特征必须转化成开发者可理解、可操作的软件质量准则,每一准则还需要有一些定量化指标来度量(例如最差值(能接受的最差值)、计划值(计划达到的值)、最佳值(可能实现的最佳值)和现值(现在应用的系统的值),才能确定软件产品是否满足了度量目标。 2) ISO/IEC 9126-1991的软件质量评价模型 国际标准化组织ISO和国际电工委员会IEC于1991年制定了软件质量标准ISO/IEC 9126-1991。该标准定义了软件质量的6个质量特征,推荐了21个质量子特征(但不作为标准)。下面,来看看这6个质量特征。,功能性。系统的功能性是与一组功能及其指定的性质有关的一组属性。这里的功能是指满足明确的或隐含的需求的那些功能,这组属性是以软件为满足需求应做些什么来描述的,而其他属性则以什么时候做或如何做来描述。 可靠性。系统的可靠性是在规定的运行时间和条件下与软件维持其性能水平的能力有关的一组属性,即一个系统按照用户需求和设计者的相应设计,执行其功能的正确程度。可靠性反映的是软件中存在的需求错误、设计错误和实现错误而造成的失效情况。可靠性的种种局限是由于需求、设计和实现中的错误造成的。由这些错误引起的故障取决于软件产品使用方式和程序任选项的选用方法,而不取决于时间的流逝。,易用性。系统的易用性是指系统在完成预定应该完成的功能时令人满意的概率,即用户使用软件的容易程度。用户可包括操作员、最终用户和受使用该软件影响或依赖该软件使用的非直接用户。软件的易用性要让用户来评价,易用性必须针对软件涉及所有各种不同用户的环境,可能包括使用的准备和对结果的评价。 效率。系统的效率是在规定的条件下软件的性能水平与所使用资源总量之间有关的一组属性,即为了完成预定的功能,系统需要的资源的多少。资源可以包括其它软件产品、硬件设施、材料、操作服务以及维护和支持人员等。,可维护性。系统的可维护性是与对软件进行修改的难易程度有关的一组属性。修改包括为了适应环境的变化、要求和功能规格说明的变化而对软件进行的更改或改进。 可移植性。系统的可移植性是与软件从一个环境转移到另一个环境运行的能力有关的一组属性。环境可以包括系统体系结构环境、硬件环境或软件环境。 在次模型中,ISO/IEC推荐的21个质量子特征,如表9-1所示。,表9-1 ISO/IEC 9126-1991质量子模型表,3) ISO/IEC 9126-19126-4软件质量模型 在1997年以后ISO提出了从软件生存周期角度考虑的软件质量度量的概念。在这种衡量软件质量的概念的支持下国际标准化组织修订了ISO/IEC 9126-1991,提出了一套新的9126系列标准,即ISO/IEC 9126-19126-4。在新的ISO/IEC 9126-1产品质量质量模型中,定义了内部质量、外部质量、使用质量3个产品质量相关模型。 (1) 内部质量:在规定条件下使用时,软件产品满足需求的能力的特性。被视为在软件开发过程中(如在需求开发、软件设计、编写代码阶段)产生的中间软件产品的质量。了解软件产品的内部质量,可以预计最终产品的质量。,(2) 外部质量:在规定条件下使用时,软件产品满足需求的程度。外部质量被视为在预定的系统环境中运行时,软件产品能达到的质量水平。 (3) 使用质量:在规定的使用环境下,软件产品使特定用户在达到规定目标方面的能力。它反映的是从用户角度看,软件产品在适当系统环境下满足其需求的程度。 使用质量用有效性、生产率、安全性、满意程度4个质量特征来描述。外部质量和内部质量用功能性、可靠性、易用性、效率、维护性、可移植性6个质量特征描述。内部质量、外部质量和使用质量之间的关系如图9.3所示。,图9.3 内部质量、外部质量和使用质量之间的关系(三种质量表现出不同的 质量特征,内部质量影响外部质量,外部质量又影响使用质量, 最终由用户的具体使用环境来体现),9.1.3 软件质量管理 现代项目管理中的质量管理是为了保障项目的产出物能够满足项目客户及项目干系人的需要所开展的对于项目产出物质量和项目工作质量的全面管理工作。软件项目的质量管理指的是保证项目满足其目标要求所需要的过程。软件质量管理的目的是建立对项目软件产品质量的定量度量和实现特定的质量目标,关键是预防重于检查,事前计划好质量,而不是事后检查。软件质量管理包括确定软件产品的质量目标,指定实现这些目标的计划,监控及调整软件计划、软件工作产品、活动和质量目标,以满足客户和最终用户对高质量产品的需要和期望。,目前的软件项目质量不太乐观,由于软件质量问题导致的损失也不计其数。作为项目管理者,项目经理必须把质量看作与项目范围、进度和成本同等重要,掌握质量管理的技能是必需的。 项目质量管理可以从下面4个方面来展开: (1) 从用户需求出发,向用户保证按时按质交付项目工作成果,满足或超越用户的需求; (2) 从保证和提高产品质量出发,对项目执行的全过程进行质量控制; (3) 从调动项目组成员积极性出发,实行项目团队的质量管理; (4) 全面地综合运用统计质量控制及其它多种方法进行管理。,1. 软件质量管理的原则 在一般的项目质量管理中使用的是全面质量管理(Total Quality Management, TQM)的思想,在软件质量管理中也要使用同样的方法。对于全面质量管理思想,国际标准化组织认为:“是一个组织以质量为中心,以全员参与为基础,目的在于通过让顾客满意和本组织所有成员及社会受益而达到长期成功的一种质量管理模式。”从这一定义可以看出全面质量管理可分为两个层次:其一,一个组织的整体要以质量为核心,并且一个组织的每个员工要积极参与质量管理;其二,全面质量管理的根本目的是使全社会受益和使组织本身获得长期成功。确切地说,全面质量管理的核心思想是质量,管理的全员性(团队全体成员参与质量管理)、全过程性(质量管理的工作必须要贯穿于项目的全过程)和全要素性(认真管理好质量所涉及的所有活动和要素)。即通过全体员工的参与、改进流程、产品、服务和公司文化,达到在百分之百时间内生产百分之百的合格产品,以便满足客户需求,TQM是一种思想观念,一套方法、手段和技巧。 (1) 使客户满意是质量管理的目的。全面理解客户的需求,努力设法满足或超过客户的期望是质量管理的根本目的。任何项目的质量管理都要将满足项目客户的需要(明确的需求、隐含的需求)作为最根本的目的,因为整个项目管理的目标就是要提供能够满足项目客户需要的项目产出物。,(2) 质量是干出来的不是检验出来的。项目质量和产品质量都是通过各种实施和管理活动而形成的结果,不是通过质量检验获得的。质量检验的目的是为了找出质量问题(不合格的产品或工作),是一种纠正质量问题或错误的管理工作。但是,任何避免错误和解决问题的成本一般总是比纠正错误和造成问题后果的成本要低,所以,在质量管理中,要把管理工作的中心放在避免错误和问题的质量保障方面。,(3) 质量管理的责任是全体员工的。质量管理责任应该是全体员工的,项目质量管理的成功是项目全体人员积极参与和努力工作的结果。因此,需要项目团队的全体成员明确和理解自己的质量责任,积极地承担自己的质量责任。项目质量管理的成功所依赖的最关键因素是项目团队成员的积极参与对项目产出物质量和项目工作质量的责任划分与责任履行的管理。 (4) 质量管理的关键是不断地改进和提高。在质量管理的学派和观点中,有一个具有代表性的“戴明理论”,其核心是目标不变、持续改善和知识积累,预防胜于检验。这是一种持续改进工作的方法和思想,是项目质量管理的一种指导思想和技术方法,但是这种理论只能适用于那些重复性作业和活动,大多数的项目一次性活动是很难使用的。,(5) 应强调软件总体质量(低成本高质量),而不应片面强调软件正确性,忽略其可维护性与可靠性、可用性与效率等指标,甚至不计软件质量成本的极端行为。 (6) 在软件生产的整个生命周期的各个阶段,包括计划、需求、分析、设计、实现、测试等环节,都要注意软件质量,不能只在软件最终产品验收时才注意其质量。 (7) 应制定软件质量的综合评价标准,定量地来评价软件质量,使软件产品的评价逐步走上“评测结合、以测为主”的轨道,并要定期地评价设定的质量体系。,另外,在质量管理中,需要明白如下道理:过程控制的出发点是预防不合格;质量管理的中心任务是建立并实施文档化管理的质量体系;要进行持续的质量改进;有效的质量体系应满足客户和组织内部双方的需要和利益;搞好质量管理的关键在于领导。,2. 软件质量管理的内容 软件项目质量管理主要包括软件项目质量计划编制、软件项目质量保证和软件项目质量控制。 1) 软件项目质量计划 软件项目质量计划是指依据公司的质量方针、产品描述以及质量标准和规则,将与项目有关的质量标准标识出来,提出如何达到这些质量标准和要求的设想,并制定出来实施策略,是软件质量管理的行动纲领。质量计划的编写就是为了确定与项目相关的质量标准并决定达到标准的一种有效方法,其内容应该全面反应用户的要求,为质量小组成员有效工作提供指南,为项目小组成员以及项目相关人员了解在项目进行中如何实施质量保证和控制提供依据,为确保项目质量得到保障提供坚实的基础。,软件项目质量计划通常由项目经理和质量人员共同协商制定,是项目计划的主要组成部分之一,与其它的项目计划编制过程同步。一般项目质量计划的编写依据可以概括为项目质量标准、项目阶段的划分、项目质量范围、项目质量计划的内容、项目质量计划的其它要求等方面。 软件项目质量计划应说明项目管理小组如何具体执行质量策略,目的是规划出哪些是需要跟踪的质量工作,并建立文档,此文档可以作为软件质量工作的指南,帮助项目经理确保所有工作计划完成。作为质量计划,应该满足下面的要求:,确定应达到的质量目标和所有特性的要求; 确定质量活动和质量控制程序; 确定项目不同阶段中的职责、权限、交流方式及资源分配; 确定采用控制的手段、合适的验证手段和方法; 确定和准备质量记录。 在质量计划中,应该明确项目要达到的质量指标,下面是常见的几种。 (1) 可用度。可用度是指软件运行后,在任意一个随机时刻,当需要执行规定任务或完成规定功能时,软件能够处于可使用状态的概率。该指标数值越大越好。,(2) 初期故障率。初期故障率是指软件在初期故障期(一般指软件交付用户后的3个月)内单位时间的故障数。一般以每100小时的故障数为单位,可以用它来评价交付使用的软件质量。其大小取决于软件设计水平、检查项目数、软件规模、软件测试是否彻底等因素。 (3) 偶然故障率。偶然故障率是指软件在偶然故障期(一般指软件交付给用户使用4个月以后)内单位时间的故障数。一般以每1000小时的故障数为单位,它反映了软件在稳定状态下的质量。 (4) 平均失效前时间。平均失效前时间是指软件在失效前,正常工作的平均统计时间。,(5) 平均失效间隔时间。平均失效间隔时间是指软件在相继两次失效之间正常工作的平均统计时间。它通常是指当n很大时,系统第n次失效与第n+1次失效之间的平均统计时间。对于可靠性要求高的软件,一般要求在100010000个小时之间。 (6) 平均失效恢复时间。平均失效恢复时间是指软件失效后,恢复正常工作所需的平均统计时间。 (7) 缺陷密度。缺陷密度是指软件单位源代码中隐藏的缺陷数量,通常以每千代码行KLOC为单位。一般情况下,可以根据同类软件系统的早期版本估计缺陷密度的具体值。如果没有早期版本信息,也可以按照通常的统计结果来估计。典型的统计表明,在开发阶段,平均每千代码行有5060个缺陷,交付后平均每千代码行有1518个缺陷。,2) 软件项目质量保证 软件质量保证(Software Quality Assurance, SQA)是确保软件产品从生产到消亡为止的所有阶段,为达到需要的软件质量而进行的所有有计划、有系统的管理活动,而非技术活动,它包括对整体项目绩效进行预先评估以确保项目能够满足相关的质量标准。软件质量保证的目的是验证在软件开发过程中是否遵循了合适的过程和标准。软件质量保证的要点是要找出明显不符合规范的工作过程和工作成果,及时指导开发人员纠正问题,切勿吹毛求疵或者在无关痛痒的地方查来查去。所以,软件质量保证重要的是监控过程质量,而不是产品质量。,3) 软件项目质量控制 软件质量控制(Software Quality Control, SQC)主要是监控特定的项目结果,确保它们遵循了相关质量标准,并确定提高整体质量的方法。这个过程常与质量管理所采用的工具和技术密切相关,例如帕雷托图、质量控制图和统计抽样。 需要注意的是,质量保证和质量控制是有区别的:质量控制是检验产品的质量,保证产品符合客户的需求,是产品质量检查者,即挑毛病的;质量保证是审计产品和过程的质量,保证过程被正确执行,是过程质量审计者,审计是来确认项目按照要求进行的证据。SQC人员进行质量控制,向管理层反馈质量信息;SQA人员则确保SQC按照过程进行质量控制活动,按照过程将检查结果向管理层汇报。,3. 软件质量管理的实施 软件质量管理的实施需要从纵向和横向两个方面展开。一方面,要求所有与软件生命期有关的人员都要参加;另一方面,要求对产品形成的全过程进行质量管理,这要求整个软件部门齐心协力,不断完善软件的开发环境。此外,还需要与用户协作。软件质量管理贯穿产品生产的全过程,如图9.4所示。,图9.4 软件质量管理贯穿产品生产的全过程(软件质量管理的实施要求所有 与软件生命周期有关的人员都要参加,对产品形成的全过程进行质量管理, 整个软件部门齐心协力,不断完善软件的开发环境),4. 软件质量管理的成本 与任何管理活动一样,软件质量管理也是需要成本的,软件质量管理的成本指为了达到产品或服务的质量而进行的全部工作所发生的所有成本。 质量管理成本包括预防成本和缺陷成本。预防成本是为确保项目质量而进行预防工作所耗费的费用,预防成本也称为一致性成本。缺陷成本是为确保项目质量而修复缺陷工作所耗费的费用,缺陷成本也称为非一致性成本。本着预防重于事后检查的原则,预防成本应该大于缺陷成本。在软件项目质量计划中,要合理安排这两种项目质量成本,以使项目质量总成本相对最低。,具体来讲,质量管理的成本主要涉及下面几个方面的投入: 1) 培训费用 培训费用与质量管理体系和质量管理的深入程度相关。若实施CMM,则每个项目都要进行质量管理培训,每次过程改进也要在整个组织进行培训。 2) 设备成本 在软件质量管理中,也需要相应的设备,如存储相关文档的服务器、测试设备和测试工具等。此外,用于质量度量和过程改进分析工具的成本也属于质量管理的设备成本。,3) 人力成本 投入质量管理的所有工作量都是质量管理的人力成本,包括SQA组的人力成本、测试工作的人力成本和各种技术检查与评审的人力成本等。 4) 其他质量管理成本 除了上述成本外,还有如质量认证的费用和质量奖金等其它成本。,9.2 软件质量保证 软件质量保证是指确定、达到和维护所需要的软件质量而进行的有计划的、有组织的管理活动。比如,你在空中刚刚整理好降落伞准备跳伞,这时如果有一名专业人员出来帮你检查一下降落伞的安全性,你会非常乐意。在软件业中这个专业检查员的身份就是软件质量保证人员,所从事的工作就是软件质量保证活动。,软件质量保证的工作任务包括下面三个方面: (1) 在项目进展过程中,定期对项目各个方面的表现进行评价; (2) 通过评价来推测项目最后是否能够达到相关的质量指标; (3) 通过质量评价来帮助项目相关人员建立对项目质量的信心。 软件质量保证一般包括下面的功能: 质量方针的制定和开展; 质量保证方针和质量保证标准的制定; 质量保证体系的建立和管理;,明确各个阶段的质量保证工作; 各个阶段的质量评审; 确保设计质量; 重要质量问题的提出与分析; 总结实现阶段的质量保证活动; 整理面向用户的文档、说明书等; 产品质量鉴定、质量保证系统鉴定; 质量信息的收集、分析和使用。,参加软件质量保证工作的人员,可以分成下面两类: 软件工程师。他们采用先进的技术和度量方法,进行正式的技术复审及计划周密的软件测试来保证软件质量; SQA小组。SQA小组的职责是辅助软件工程师,以获得高质量的软件产品,其从事的软件质量保证活动主要是计划、监督、记录和报告。,软件质量保证一般包含下面几项活动: 建立SQA小组; 选择和确定SQA活动,即选择SQA小组所要进行的质量保证活动,这些SQA活动将作为SQA计划的输入; 制订和维护SQA计划,这个计划明确了SQA活动与整个软件开发生命周期中各个阶段的关系; 执行SQA计划,包括对相关人员进行培训、选择与整个软件工程环境相适应的质量保证工具; 不断完善质量保证活动中存在的不足,改进项目的质量保证过程。,9.2.1 建立SQA小组 建立SQA小组首先要确定它的组织结构。组织结构应该根据企业的文化、可获得的资源以及过程成熟度水平等设置。按照ISO 9000和CMM对质量保证小组的要求:SQA小组应是独立的,质量管理人员应该直接向总经理汇报,以保证质量管理人员的权力。SQA小组的独立性是衡量软件开发活动优劣与否的尺度之一。SQA小组的这一独立性,使其可以“越级上报”。当SQA小组发现产品质量出现危机时有权向项目组的上级机构直接报告这一危机。这无疑对项目组起到“威慑”的作用,也可以看成是促使项目组重视软件开发质量的一种激励,这一形式使许多问题在项目组内得以解决,提高了软件开发的质量和效率。,建立组织机构之后需要确定SQA的岗位职责。每个企业的SQA职责都不一样,在确定SQA职责的时候应该考虑企业的需要和环境,主要包括业务需求、过程成熟度水平和企业文化。 (1) 业务需求。主要确定SQA需要完成哪些方面的工作,例如在执行同行评审过程中SQA可以协助评审和组织会议;在存在外包的情况下可能需要SQA在监控外包方面发挥作用。,(2) 过程成熟度水平。过程成熟度是影响SQA职责分配很重要的因素,不同的成熟度等级要求的SQA工作分布是不同的。在低成熟度等级下需要抽取各项目最佳实践来定义过程,并指导过程的实施,SQA在这方面的工作最多。随着过程的完善、制度化和实施,SQA的工作重点逐渐转向了过程评审和产品审计。当企业的过程成熟度达到4级或5级以后,对过程的遵守已经成为员工的一种习惯,过程和产品的审查需求减少,而度量和过程能力的优化又成为了SQA的工作重点。,(3) 企业文化。对SQA来说企业文化就像空气一样,看不见它但却深深地被它影响。在一个氛围活跃、高技术、创新能力强的企业,SQA应该倾向于服务职责;而在一个强纪律、低技术、规章制度成熟的企业,SQA就应该倾向于监督职责。 确定岗位职责之后就需要为岗位配置人员,岗位职责不同,对人员的素质要求也不同。SQA人员的配备可根据企业特点、组织结构设置的要求分为全职和兼职。全职就是设置专门的SQA人员,其主要职责就是质量保证工作,因此对他的知识、技能和素质要求较高。兼职就是将工程师分派到其它职能部门或项目中去兼任SQA工作,每一位工程师都作为一名潜在的SQA。在许多企业,项目经理可能直接兼任SQA,这种情况下SQA缺少独立性,SQA工作的质量完全取决于项目经理个人对质量保证的认识。不论是全职还是兼职,都要求SQA有软件质量保证的专业知识,而且要有很强的质量意识。,9.2.2 确定软件质量保证活动 1993年美国软件工程研究所(Software Engineering Institute, SEI)推荐了一组有关质量保证的计划、监督、记录、分析及报告的SQA活动,这些活动包括下面内容: (1) 制定项目SQA计划。该计划在制定项目计划时制定,由相关部门审定。它规定了软件开发小组和质量保证小组需要执行的质量保证活动,主要包括:需要进行哪些评价,需要进行哪些审计和评审,项目采用的标准,错误报告的要求和跟踪过程,SQA小组应产生哪些文档,以及为软件项目组提供的反馈数量等。,(2) 参与开发该软件项目的软件过程描述。软件开发小组为将要开展的工作选择软件过程,SQA小组则要评审过程说明,以保证该过程与组织政策、内部的软件标准、外界所制定的标准以及软件项目计划的其它部分相符。 (3) 评审各项软件工程活动,核实其是否符合已定义的软件过程。SQA小组识别、记录和跟踪所有偏离过程的偏差,核实其是否已经改正。 (4) 审计指定的软件工作产品,核实其是否符合已定义的软件过程中的相应部分。SQA小组对选出的产品进行评审,识别、记录和跟踪出现的偏差,核实其是否已经改正,定期向项目负责人报告工作结果。,(5) 确保软件工作及工作产品中的偏差已被记录在案,并根据预定规程进行处理。偏差可能出现在项目计划、过程描述、采用的标准或技术工作产品中。 (6) 记录所有不符合部分,并向上级管理部门报告。跟踪不符合的部分直到问题得到解决。 除了上述活动外SQA小组还需要协调变更的控制与管理,并帮助收集和分析软件度量的信息。,9.2.3 软件质量保证计划 软件项目的SQA活动是关系到项目成败的关键活动,因此必须使用合理、正确的策划方法进行SQA活动的策划。制定软件质量保证计划(SQAP)是确保SQA工作顺利进行的基础和保障,也是决定质量保证工作能否成功实施的关键因素。 软件质量保证计划的制定主要分三个阶段: 第一个阶段为参与项目策划阶段,项目的质量保证计划必须根据项目的实际情况制定,而且必须服从项目计划,因此项目SQA人员必须首先参与项目策划活动; 第二个阶段为选择SQA任务、估计工作量及资源阶段; 第三个阶段为制定软件质量保证计划,并评审通过软件质量保证计划阶段。 质量保证计划的制定流程如图9.5所示。,图9.5 编制软件质量保证计划流程(软件质量保证计划是确保SQA工作顺利进行的 基础和保障,也是决定质量保证工作能否成功实施的关键因素),9.3 软件质量控制 9.3.1 常见软件项目的质量问题 软件项目质量问题的表现形式多种多样,究其原因可以归纳为下面几种。 (1) 违背软件项目开发与管理的规律。未经可行性论证,不作调查分析就启动项目;任意修改软件项目的设计;不按技术要求实施,不经过必要的测试、检验和验收就交付使用等“蛮干”现象都会致使不少软件项目留有严重的隐患。 (2) 技术方案本身的缺陷。系统整体方案本身有缺陷,对于初始的用户需求双方根本没有达成一致的意见,造成实施中的修修补补,不能有效地保证软件开发目标的实现。,(3) 基本部件不合格。选购的软件组件、中间件、硬件设备等不稳定、不合格,或者外包出去的模块功能出现重大接口错误,造成整个系统不能正常运行。 (4) 实施中的管理问题。许多项目质量问题,还往往是由于人员技术水平、敬业精神、工作责任心和管理疏忽等原因造成的。,9.3.2 软件质量的原则 质量控制一般由开发人员实施,直接对项目工作结果的质量进行把关,属于检查职能。质量控制的要点是:监控对象主要是项目工作结果;进行跟踪检查的依据是相关质量标准;对于不满意的质量问题,需要进一步分析其产生原因,并确定采取何种措施来消除这些问题。为了控制项目全过程中的质量,应该遵循下面的基本原则: 控制项目所有过程的质量; 过程控制的出发点是预防不合格; 质量管理的中心任务是建立并实施文档管理的质量体系; 持续的质量改进; 定期评价质量体系。,9.3.3 软件质量控制过程 按照项目实施的进度,可以将软件质量控制的流程分为如下3个阶段。 1事前质量控制 主要指项目在正式实施前进行的质量控制,具体工作包括以下几个方面: 审查开发组织的技术资源,选择合适的项目承包组织; 对所需资源的质量进行测试,没有经过适当测试的资源不得在项目中使用; 审查技术方案,保证项目质量具有可靠的技术措施; 协助开发组织完善质量保证体系和质量管理制度。,2事中质量控制 主要指在项目实施过程中进行的质量控制,具体工作包括以下几个方面: 协助开发组织完善实施控制,把影响产品质量的因素都纳入管理状态,建立质量管理点,及时检查和审核开发组织提交的质量统计分析资料和质量控制图表; 严格交接检查,关键阶段和里程碑应有合适的验收; 对完成的阶段性任务应按相应的质量评定标准和方法进行检查和验收,并按合同或需求规格说明书行使质量监督权; 组织定期或不定期的评审会议,及时分析、通报项目质量状况,并协调有关组织间的业务活动等。,3事后质量控制 主要指在完成项目过程形成产品后的质量控制,具体工作包括以下几个方面: 按规定的评价标准和办法,组织单元测试和功能测试,并进行检查验收; 组织集成测试和系统测试; 审核开发组织的质量检验报告及有关技术性文件; 整理有关的项目质量的技术文件,并编号、归档。,9.3.4 软件质量控制的活动 1. 技术评审 技术评审的目的是尽早发现工作成果中的缺陷,并帮助开发人员及时消除缺陷,从而有效地提高产品的质量。技术评审的主体一般是产品开发中的一些设计产品,这些产品往往涉及多个小组和不同层次的技术。主要评审的对象有软件需求规格说明书、软件设计方案、测试计划、用户手册、维护手册、系统开发规程和产品发布说明等。技术评审应该采取一定的流程,这在企业质量体系或项目计划中都有相应的规定。下面给出一个技术评审的建议流程。,(1) 召开评审会议:一般应该有35个相关领域的人员参加,会前每个参加者做好准备,评审会每次一般不超过2小时。 (2) 在评审会上由开发小组对提交的评审对象进行讲解。 (3) 评审组可以对开发小组进行提问,提出建议和要求,也可以与开发小组展开讨论。 (4) 会议结束时必须做出以下决策之一: 接受该产品,不需要作修改; 由于错误严重,拒绝接受; 暂时接受该产品,但需要对某一部分进行修改,开发小组还要将修改后的结果反馈至评审组。,(5) 评审报告与记录:对所提供的问题都要进行记录,在评审会结束前产生一个评审问题表,另外必须完成评审报告。 同行评审是一个特殊类型的技术评审,是由与工作产品开发人员具有同等背景和能力的人员对产品进行的一种技术评审,目的是在早期有效地消除软件工作产品中的缺陷,并更好地理解软件工作产品和其中可预防的缺陷。同行评审是提高生产率和产品质量的重要手段。,2. 代码评审 代码评审是由一组人通过阅读、讨论和争议从而对程序进行静态分析的过程。评审小组由组长、23名程序设计和测试人员及程序员组成。评审小组在充分阅读待审程序文本、控制流程图及有关要求和规范等文件的基础上召开代码评审会,程序员逐句讲解程序的逻辑,并展开讨论甚至争议,以揭示错误的关键所在。实践表明,程序员在讲解过程中能发现许多自己原来没有发现的错误,而讨论和争议则进一步促使了问题的暴露。例如对某个局部性小问题修改方法的讨论,可能发现与之有牵连的甚至能涉及模块的功能、模块间接口和系统结构的大问题,最终导致对需求的重定义或重新设计验证。,3. 代码走查 代码走查与代码审查基本相同,其过程分为两步。第一步把材料先发给走查小组每个成员,让他们认真研究程序,然后再开会。开会的程序与代码审查不同,不是简单地读程序和对照错误检查表进行检查,而是让与会者“充当计算机”,即首先由测试组成员为被测程序准备一批有代表性的测试用例,提交给走查小组。走查小组开会,集体扮演计算机角色,让测试用例沿程序的逻辑运行一遍,随时记录程序的踪迹,供分析和讨论用。,代码走查也是一种非常有效的方法,可以检查到其它测试方法无法监测到的错误,很多逻辑错误是无法通过测试手段发现的。代码走查是一种很好的质量控制方法。 代码走查和代码审查的观点是一致的,这两项静态技术的错误发现能力将错误检测引向快速、彻底和提前。这样,由于在集成阶段出现的错误较少而提高了生产率,用于代码走查和审查的额外时间得到了巨大的回报,而且,代码审查可降低高达95%的改正性维护成本。,4. 软件侧试 软件测试包括几个不同层次的测试操作。单元测试可以测试单个模块是否按其详细设计说明运行,它主要测试程序的逻辑,模块一旦完成就可以进行单元测试。集成测试是测试系统各个部分的接口及在实际环境中运行的正确性,保证系统功能之间接口与总体设计的一致性,而且满足异常条件下所要求的性能级别。系统测试是检验系统作为一个整体是否按其需求规格说明正确运行,验证系统整体的运行情况,在所有模块都测试完毕或者集成测试完成之后,就可以进行系统测试。验收测试是在客户的参与下检验系统是否满足客户的所有需求,尤其是在功能和使用的方便性上。,5. 缺陷追踪 从缺陷发现开始一直到缺陷改正为止的全过程为缺陷追踪。缺陷追踪要一个缺陷一个缺陷地加以追踪,也要在统计的水平上进行,包括未改正的缺陷总数、已经改正的缺陷百分比、改正一个缺陷的平均时间等。缺陷追踪是可以消灭缺陷的一种非常有效的控制手段。,9.4 软件质量度量 9.4.1 软件质量度量的分类 软件质量度量是伴随着整个开发过程中的软件质量管理进行的,即从软件开发最早阶段就开始了。软件质量度量可以分为3个方面:软件产品质量度量、软件过程质量度量和软件维护质量度量。 (1) 软件产品质量度量是对质量需求中产品的质量特征进行度量,度量指标根据组织和产品的实际情况确定,一般都会包括需求覆盖率、测试覆盖率、缺陷报告(包括缺陷统计,如千代码行缺陷率、缺陷修正率和缺陷修正时间等)和需求完成度等指标。,(2) 软件过程质量度量是对质量管理过程的度量,度量指标也是根据组织的、产品的实际情况确定,一般都会包括缺陷和失效数据、成本与工作量分析、缺陷报告和未来趋势预测等指标。 (3) 软件维护质量度量是对软件产品提交后的产品质量和过程质量的度量,度量指标包括返修率和技术支持响应速度等。,9.4.2 软件质量度量的过程 软件质量的度量过程主要可以分为以下5个步骤: 1确定软件的质量度量需求 这是软件质量度量的前提和基础,主要活动包括设计可能的质量因素集合、优化并确定这一因素集合和建立软件质量模型。 2确定软件质量度量元 这是度量过程中比较关键的,度量元选取的好坏直接影响着质量评估的结果。首先在软件质量度量框架的基础上将质量特性分解成度量元,继而执行度量元的成本效益分析,最后根据其结果调整优化已选择的度量元集合。,3执行软件质量度量 这一阶段包括定义度量数据收集过程、收集数据、以及根据已有数据计算度量值等环节。需要注意的是,采集的数据应该基于正确定义的度量元和模型,从而保证数据的正确性、准确性和精度。因此,在收集数据之前,应当设定数据采集的目标,并且定义有意义的问题。 4分析软件质量度量结果 通过分析比较收集的度量数据与目标值,发现两者之间的区别。确定那些不可接受的度量值,详细分析那些数值偏离关键值的度量元并依据分析结果重新设计软件质量度量。,5软件质量度量的验证 验证的目的是为了证明通过软件产品和过程度量可以预测具体的软件质量因素。验证的过程中在运用相关的验证方法和标准的前提下,必须确定软件质量因素样本和度量样本,然后执行对度量的统计分析,检验度量的作用是否有效。 软件质量度量的整个过程如图9.6所示。,图9.6 软件质量度量过程示意图(软件度量是对软件开发项目、过程及其产品 进行数据 定义、收集及分析的持续性定量化过程,可以量化地衡量产品 质量,也为过程质量管理提供决策辅助,同时为质量改进提供依据),9.5 软件质量体系 9.5.1 ISO 9000系列标准 ISO 9000是国际标准化组织提出的企业质量体系的一系列标准,是一个通用的质量标准,适合各类制造业和服务业。在ISO 9000系列标准中与软件企业关系最密切的是 ISO 9001和ISO 9000.3。 ISO 9001是ISO 9000簇标准体系之一,是应用于软件工程的质量保证标准。这个标准中包含了高效的质量保证系统必须体现的20条需求,通过对IT产品从市场调查、需求分析、编码和测试等开发工作,直至作为商品软件销售,以及安装和维护整个过程进行控制,保障IT产品的质量。,ISO 9001描述的20条需求主要面向以下问题: 管理责任; 质量系统; 合同复审; 设计控制; 文档和数据控制; 采购; 对客户提供的产品的控制; 产品标识和可跟踪性; 过程控制; 审查和测试;,审查、度量和测试设备的控制; 审查和测试状态; 对不符合标准产品的控制; 改正和预防行动; 处理、存储、包装、保存和交付; 质量记录的控制; 内部质量审计; 培训; 服务; 统计技术。,因为ISO 9001标准适用于所有的工程行业,所以ISO 9001在软件行业中应用时一般会配合ISO 9000.3作为实施指南。由于软件行业的特殊性,软件不存在明显的生产阶段,所以软件开发、供应和维护过程不同于大多数其它类型的工业产品,例如软件不会“耗损”,设计阶段的质量活动对产品最终质量就显得尤其重要。ISO 9000.3就是为了解释如何在软件过程中使用ISO 9001标准而专门开发的一个指南。 ISO 9000.3其实是ISO质量管理和质量保证标准在软件开发、供应和维护中的使用指南,并不作为质量体系注册/认证时的评估准则,主要考虑软件行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年广东省珠海市初二学业水平地理生物会考试卷题库及答案
- 2025年新疆维吾尔自治区乌鲁木齐市八年级地理生物会考试卷题库及答案
- QM品质管理系统解决方案
- 成都市金牛区2025届初三一诊(同期末考试)语文试卷
- 导管拔除后的护理要点
- 2026年版劳动合同签订规范
- 环保产业项目合作协议范本
- 新规出台2026年劳务派遣合同范本大全
- 2025年上半年军队文职公共课-岗位能力(判断推理)-习题精析1课件(4.22)
- 2026年4月份班级思想动态报告(2篇)
- Unit 4 Eat Well Section A 1a-1d 课件(内嵌音视频) 2025-2026学年人教版七年级英语下册
- 小学六年级英语下册“四大核心时态”结构化复习教案
- 2026江苏南京紫金投资集团有限责任公司社会化招聘笔试历年参考题库附带答案详解
- 2026年专升本计算机通关考试题库附参考答案详解(满分必刷)
- 2026年消毒供应中心器械清洗质量控制要点
- 2025年国家电投线上笔试真题及答案
- 中科宇航招聘笔试题库2026
- 检验科信息安全培训内容课件
- 广西壮族自治区林业勘测设计院招聘笔试题库2026
- 2026年河南高考理科综合试卷题库及答案(新课标卷)
- 2025年辽宁省抚顺市辅警协警笔试笔试真题(附答案)
评论
0/150
提交评论