1、软件质量的概念软件质量的定义软件质量模型软件质量的定义软件质量的定义1.软件质量的定义1)ANSI/IEEE Std 729-1983定义软件质量为:“与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体”。2)M.J.Fisher将软件质量定义为:“所有描述计算机软件优秀程度的特性的组合。”3)GB/T6583 ISO 8402(1994)定义软件质量为:“反映实体满足明确和隐含需要的能力和特性总和”也就是说,为满足软件的各项精确定义的功能、性能需求,符合文档化的开发标准,需要相应地给出或设计一些质量特性及其组合,作为在软件开发与维护中的重要考虑因素。如果这些质量特性及其组合都能在产
2、品中得到满足,则这个软件产品质量就是高的。软件质量的定义软件质量的定义软件质量反映了以下三方面的问题: 软件需求是度量软件质量的基础 。不符合需求的软件就不具备质量。 规范化的标准定义了一组开发准则,用来指导软件人员用工程化的方法来开发软件。如果不遵守这些开发准则,软件质量就得不到保证。 往往会有一些隐含的需求没有显式地提出来。如软件应具备良好的可维护性。如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求,软件质量也不能保证。软件质量的定义2.软件质量特性软件质量特性,反映了软件的本质。讨论一个软件的质量,问题最终要归结到定义软件的质量特性。而定义一个软件的质量,就等价于为该软件定义一
3、系列质量特性。软件质量的定义通常,软件质量可由以下主要特性来定义:(1)功能性:软件所实现的功能达到它的设计规范和满足用户需求的程度;(2)效率:在规定条件下,用软件实现某种功能所需的计算机资源(包括时间)的有效程度;(3)可靠性:在满足一定条件的应用环境中,软件能够正常维持其工作的能力;(4)安全性:为了防止意外或人为的破坏,软件应具备的自身保护能力能力;软件质量的定义(6)可维护性:当环境改变或软件运行发生故障时,为了使其恢复正常运行所做努力的程度;(7)可扩充性:在功能改变和扩充情况下,软件能够正常运行的能力;(8)可移植性:为使一个软件从现有运行平台向另一个运行平台过度所做努力的程度(
4、9)重用性:整个软件或其中一部分能作为软件包而被再利用的程度。 3.软件生存期与质量特性从用户的角度看,软件的生存期可分为如下三个阶段:1)初期运用:运行新开发的软件产品。2)维护与扩充:在运行过程中修改缺欠的内容;而且,为了进一步的使用,需根据运行环境(主要指应用环境和技术环境)的变化做功能上和性能上的扩充。3)移植和连接:把在原有平台上运行的软件向其它新的运行环境转移、或者组成软件包以便重用、或与其它软件进行连接。 对于软件所需求的质量特性,在软件生存期的不同阶段中情况各有不同,要求也不一样,这可由下图说明。Back 所谓质量模型是指提供声明质量需求和评价质量基础的特性以及特性之间关系的集
5、合。换句话说质量模型是用来描述质量需求以及对质量进行评价的理论基础。早在1976年,由Boehm等提出软件质量模型的分层方案。1979年McCall等人改进Boehm 质量模型又提出了一种软件质量模型。模型包括质量要素(factor)、准则(criteria)和度量(metric)三层次。如图所示。特性是软件质量的反映,软件属性可用做评价准则,定量化地度量软件属性可知软件质量的优劣。 McCall质量度量模型框要素(特性)评价准则评价准则评价准则度量度量度量面向管理观点的产品质量决定产品质量的软件属性定量化地度量软件属性 软件质量要素直接影响软件开发过程各个阶段的产品质量。 由于对软件质量理解
6、的不断深化,软件质量要素不是一成不变的。McCall等人给出的软件质量要素共11个,分为三类,分别面向软件产品的运行、修正、转移。它们与特性的关系如图所示。产品修正产品转移产品运行可维护性测试性灵活性互联性可移植性复用性正确性 可靠性可使用性 效率完整性McCall软件质量模型正确性:正确性:在预定环境下,软件满足设计规格说明及用户预期目标的程度。它要求软件没有错误。可靠性:可靠性:软件按照设计要求,在规定时间和条件下不出故障,持续运行的程度。效率:效率:为了完成预定功能,软件系统所需的计算机资源的多少。完整性:完整性:为了某一目的而保护数据,避免它受到偶然的,或有意的破坏、改动或遗失 的能力
7、。可使用性:可使用性:对于一个软件系统,用户学习、使用软件及为程序准备输入和解释输出所需工作量的大小。可维护性:可维护性:为满足用户新的要求,或当环境发生了变化,或运行中发现了新的错误时,对一个已投入运行的软件进行相应诊断和修改所需工作量的大小。可测试性:可测试性:测试软件以确保其能够执行预定功能所需工作量的大小。灵活性:灵活性:修改或改进一个已投入运行的软件所需工作量的大小。可移植性:可移植性:将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境 中运行时所需工作量的大小。复用性:复用性:一个软件(或软件的部件)能再次用于其它应用(该应用的功能与此软件或软件部件的所完成的功能有联
8、系)的程度。互连性:互连性:连接一个软件和其他系统所需工作量的大小。如果这个软件要联网,或与其 他系统通信,或要把其他系统纳入到自己的控制之下,必须有系统间的接口,使之可以联结。互连性很重要。它又称相互操作性。通常,对以上各个质量特性直接进行度量是很困难的,在有些情况下甚至是不可能的。因此,McCall定义了一组比较容易度量的软件质量要素评价准则,使用它们对反映质量特性的软件属性分级,以此来估计软件质量特性的值。定义评价准则的关键是确定影响软件质量要素的属性。这些属性必须满足 比较完整、准确的描述软件质量要素; 比较容易量化和测量,能够反映软件质量的优劣。McCall定义的软件质量要素评价准则
9、共21种,它们是:McCall软件质量要素评价准则1.可审查性(Auditability) :检查软件需求、规格说明、标准、过程、指令、代码及合同是否一致的难易程度。2.准确性(Accuracy) :计算和控制的精度,最好表示成相对误差的函数,值越大表示精度越高。3.通信通用性(Communication Commonality) :使用标准接口、协议和频带的程度。4.完全性(Completeness):所需功能完全实现的程度。5.简明性(Conciseness):程序源代码的紧凑性。6.一致性(Consistency):设计文档与系统实现的一致性。 7.数据通用性(Data Commonal
10、ity):在程序中使用标准的数据结构和类型。8.容错性(Errortolerance) :系统在各种异常条件下提供继续操作的能力McCall软件质量要素评价准则9.执行效率(Execution Efficiency):程序运行效率。10.可扩充性(Expandability):能够对结构设计、数据设计和过程设计进行扩充的程度11.通用性(Generality):程序部件潜在的应用范围的广泛性12.硬件独立性(Hardware Independence):软件同支持它运行的硬件系统不相关的程度。13.检测性(Instrumentation):监视程序的运行,一旦发生错误时,标识错误的程度。14.
11、模块化(Modularity):程序部件的功能独立性。McCall软件质量要素评价准则15.可操作性(Operability):操作一个软件的难易程度。16.安全性(Security):控制或保护程序和数据不受破坏的机制,以防止程序和数据受到意外的或蓄意的存取、使用、修改、毁坏或泄密。17.自文档化(Self-documentation):源代码提供有意义文档的程度。18.简单性(Simplicity):理解程序的难易程度。19.软件系统独立性(Software System Independence):程序与非标准的程序设计语言特征、操作系统特征、以及其他环境约束无关的程度。20.可追踪性(
12、Tracebility):对软件进行正向和反向追踪的能力。21.易培训性(Training):软件支持新用户使用该系统的能力。计算软件质量要素软件质量要素Fj的值可用下式计算 L FjCjkMk j=1,2,.,11. k=1其中 Mk是软件质量要素Fj对第k种评价准则的测量值 Cjk是相应的加权系数 McCall定义的评价准则多数都没有客观的测量方法,只能凭主观印象为评价准则定值。 McCall将评价准则分为0-10级。 0级最低,10级最高。 Mk的取值是 0 ,0.1 ,0.2 , 1.0计算软件质量要素软件质量要素Fj的值可用下式计算 L FjCjkMk j=1,2,.,11. k=1
13、其中 Mk是软件质量要素Fj对第k种评价准则的测量值 Cjk是相应的加权系数 McCall定义的评价准则多数都没有客观的测量方法,只能凭主观印象为评价准则定值。 McCall将评价准则分为0-10级。 0级最低,10级最高。 Mk的取值是 0 ,0.1 ,0.2 , 1.0质量要素与评价准则 (1/2) 要素 关系 准则正确性可靠性有效性完整性可维护可测试可移植可重用互操作可用性灵活性可审查性VV准确性V通信通用性V完全性V简明性VVV一致性VVVV数据通用性V容错性V执行效率V可扩充性V通用性VVVV质量要素与评价准则 (2/2) 要 素 关 系 准 则正确性可靠性有效性完整性可维护可测试可
14、移植可重用互操作可用性灵活性硬件独立性VVVV检测性VVV模块化VVVVVVV可操作性VV安全性V自文挡化VVVVV简单性VVVV软件独立性VV可追踪性V易培训性VMcCall软件质量要素评价准则McCall软件质量度量模型为软件质量管理奠定了基础 模型由软件质量要素和评价准则组成 加权系数Cjk满足Cjk1 其中 Cjk0 当质量要素Fj与k项评价准则无关时,Cjk=0McCall评价准则项数 L=21ISO 软件质量度量模型1985年国际标准化组织(ISO)建议,软件质量度量模型由三层组成。1. 高层称软件质量需求评价准则(SQRC);2. 中层称软件质量设计评价准则(SQDC);3. 低
15、层称软件质量度量评价准则(SQMC)。 分别对应McCall等人的要素、评价准则和度量。ISO认为应对高层和中层建立国际标准,以便在国际范围内推广软件质量管理,而低层可由各单位自行制定。ISO高层由8个要素组成、中层由23个评价准则组成。它们之间的关系如表所示。 ISO的质量要素与评价准则(1/2) 要素 关系 准则正确性可容性有效性安全性可用性可维护灵活性互操作可追踪性V完全性V一致性VVV准确性V容错性V简单性VV模块化VV通用性V可扩充性V检测性V自描述性VVISO的质量要素与评价准则 (2/2) 要素 关系 准则正确性可容性有效性安全性可用性可维护灵活性互操作执行效率V存储效率V存取控
16、制V存取审查V可操作性V易培训性V通信性V软件独立性V硬件独立性V通信通用性V数据通用性V简明性V软件质量模型 1991年,ISO发布了ISO/IEC9126质量特性的国际标准,将质量特性降为6个,即功能性、可靠性、可维护性、效率、可使用性、可移植性,并定义了21个子特性。1991年发布的ISO/IEC9126标准现在被分为了两部,ISO/IEC9126(软件产品质量)和ISO/IEC14598(软件产品评价)。 软件质量模型软件质量特性之间的竞争 在软件的质量特性与质量特性之间、质量特性与质量子特性之间存在着有利的影响和不利的影响。例如,由于效率的要求,应尽可能采用汇编语言。但是用汇编语言编
17、制出的程序,可靠性、可移植性以及可维护性都很差。 因此在系统设计过程中应根据具体情况对各种要素的要求进行折衷,以便得到在总体上用户和系统开发人员都满意的质量标准。质量要素之间的关系表 软件质量特性之间的竞争软件质量的度量和评价 软件质量的度量 是软件属性的量化,是经验关系系统到数值关系系统的一种映射。软件质量特性度量有两类:预测型和验收型。 预测度量是利用定量的或定性的方法,对软件质量的评价值进行估计,以得到软件质量的比较精确的估算值。它是用在软件开发过程中的。尺度度量:这是一种定量度量。它适用于一些能够直接度量的特性,一般它作为相对量进行度量。如可靠性度量、复杂度度量、缺陷度量和规模度量等。
18、二元度量:这是一种定性度量。它适用于一些只能间接度量的特性。 验收度量是在软件开发各阶段的检查点,对软件的要求质量进行确认性检查的具体评价值,它可以看成是对预测度量的一种确认,是对开发过程中的预测进行评价。 软件质量的度量和评价软件质量度量的实施在确定要对一个软件(系统)进行度量之后,一般,采取以下几个步骤,来实施对该软件的度量:(1)确定软件质量需求;在用户需求中,除功能需求外,还有非功能需求,包括:质量需求、环境需求、设计约束、开发策略等。质量需求是用户比较关心的内容。但是,我们已经知道,软件的功能需求的确定,存在一定的难度。而非功能需求的确定,则难度更大。这些困难包括:需求如何获取,需求
19、冲突如何协调、需求的确认和变更的授权等。过程:需求获取:首先,你要理解用户的需求,区分哪些是质量需求,把这些需求记录下来,获得用户的确认。需求分析:拿到用户确认的需求后,你可以开始把用户的质量需求与我们设定的质量特性联系起来,一直区分到子特性。这种联系,就是把用户语言描述的需求,转变为计算机工程师语言的需求。建立了这种关联后,可以根据分类,分级,确定直接度量。软件质量度量的实施(2)确定直接度量直接度量就是实际的软件质量测量活动,它的输入是软件或软件过程,输出是一个测量值。它通过执行一系列的任务,获得一个质量值。例如:对一个没有经过培训的用户,让他使用软件系统的某一功能,在界面提示、联机帮助、
20、使用手册的帮助下,他学会掌握该功能所花的时间。而用户需求对此项指标的要求(目标)和现实系统所达到的实际值(比如:10个人次测量后统计意义上的)的比较,就是将提交质量评审的质量值。在进行直接度量前,你应该有以下准备:(1)工具:有助于计算度量值的硬件/软件工具,如:缺陷跟踪工具;(2)应用:描述度量结果的希望值、度量值的意义、作用和对度量结果数据的使用方法;(3)数据:获得度量结果所需的数据、程序、过程等度量对象;(4)计算:度量程序、步骤和方法。(5)费用:测试是要花钱(人力、物力、时间等)的。软件质量度量的实施(3)分析度量结果对度量过程进行跟踪和分析,需要时,可能会对度量程序、度量工具、度
21、量方法,甚至原始数据,做出补充和调整。 (4)确认质量度量在度量过程中,进行度量结果的确认非常重要。首先,要确认度量过程是否与事实相符,脱离现实真实的度量,与目标再相符的结果也是没有意义的。其次,是确认方法的有效性,例如:在度量中,我们用到很多统计学方法,在这些方法中,我们有一些概率分布假设(例如:某些错误的发生,我们假设符合随机概率分布),当这些假设并不成立时,度量的结果是不真实的。软件质量的度量和评价软件质量评价 定量地评价软件的质量,目前还不能精确地做到。一般采取由若干(610)位软件专家进行打分来评价。这些软件专家应是富有实际经验的项目带头人。软件质量评价分两步走。 (1)评分 对每一
22、阶段要达到的质量指标(质量特性目标值或标准)详细开列/建立度量工作表,在表中,以提问题方式,列出在某一阶段为实现某一质量指标,应达到什么标准。所以它也可称为检查表。特别地,有些检查表是针对子系统或模块的。 为了回答度量工作表上的问题,必须积累原始资料。最重要的原始资料是在软件定义与开发的各个阶段提供的文档。其次是在开发过程中积累的各种数据,特别是对出错数据的记录。 评分主要是依据软件实际成果进行的、由于软件使用环境不同,使用目的不同,各人打分会有一定差别。(2)分析结果 根据评分的结果,对照评价指标,检查某个质量特性是否达到了要求的质量标准。如果某个质量特性不符合规定的标准,就应当分析这个质量
23、特性,找出为什么达不到标准的原因。 分析原因应该自顶向下进行。按系统级、子系统级、模块级逐步分析。四层模型四层模型软件质量的度量关键是要定出评定质量的指标和评定优劣的标准。有一种四层模型,第一层是第一层是软件产品质量软件产品质量( (质量需求质量需求) ),第二层是质量特性,第三层是质量子特第二层是质量特性,第三层是质量子特性,第四层是度量指标。性,第四层是度量指标。 软件产品质量层(质量需求):是产品必须满足的质量需求。它是用用户术语描述的,主要有四点:(1)产品将在用户所在组织当前使用的平台和操作系统上运行。(2 2) 产品将是可靠的并能防止数据丢失的机制。(3 3) 产品将提供完成某些任
24、务所必需的功能。(4 4) 产品将易于使用。四层模型 质量特性:表示与整个质量需求有关的特殊质量特性,它代表了用户的质量需求。它采用从用户角度考虑的立场,把软件质量分解成四类质量特性,这四个质量特性是软件的基本特征。 IEEE的四个质量特性是:可移植性、可靠性、功能性、可使用性。可靠性:在规定的时间和条件下,软件所能维持其性能水平的程度。可靠性对某些软件是重要的质量要求,它除了反映软件满足用户需求正常运行的程度,且反映了在故障发生时能继续运行的程度。功能性:软件所实现的功能满足用户需求的程度功能性反映了所开发的软件满足用户指明的或隐含的需求的程度,即用户要求的功能是否全部实现了。可移植性:从一
25、个计算机系统或环境转移到另一个计算机系统或环境的容易程度。易使用性:对于一个软件,用户学习、操作、准备输入和理解输出时,所做努力的程度。易使用性反映了与用户的友善性,即用户在使用本软件时是否方便。四层模型质量需求质量特性质量子特性直接度量度量描述(例子)产品将在多平台和当前用户正在使用的操作系统上运行可移植性硬件独立性硬件依赖性计算硬件的依赖性软件独立性软件依赖性计算软件的依赖性易安装性安装时间测量安装时间可重用性能 够 用 于 其他 应 用 软 件中计算能够或已经应用于其他软件系统的模块数量产品将是可靠的并能提供防止数据丢失的机制可靠性无缺陷性测试覆盖测量测试覆盖度审查覆盖计算已做过的代码审
26、查模块容错性数据完整性统计用户数据被破坏情况数据恢复测量恢复被破坏的数据的能力可用性软 件 可 用 的百分比软件可用时间除以总的软件使用时间产品将提供完成某些任务所必需的功能功能性完备性测试覆盖计算调用或分支测量覆盖正确性缺陷密度计算每一版本发布前的缺陷安全性数据安全性统计用户数据被破坏的情况用户安全性没有被阻止的非法用户入侵数兼容性环境变化软件安装后必须修改的环境变量数量互操作性混合应用环境下软件的可操作性混合应用环境下可正确运行的数量产品将易于使用可使用性易理解性学习所用时间新用户学习软件特性所花费的时间易学性学习所用时间新用户学会操作软件提供的基本功能所花费的时间易操作性人的因素新用户基
27、于人类工程学对软件消极方面的评价数量沟通性人的因素新用户基于人类工程学对软件消极方面的评价数量质量需求质量特性质量子特性直接度量度量描述(例子)四层模型Back 软件质量管理基本概念软件质量管理的主要活动软件质量管理的内容软件质量标准简介软件文件标准与规范软件质量管理的基本概念质量管理体系为实施质量管理所需的组织结构,程序、过程和资源。组织结构:组织为行使其职能按某种方式建立的职责、权限及其相互关系。程序:为进行某项活动所规定的途径。 1 在很多情况下,程序可形成文件如质量体系程序。2 程序形成文件时,通常称之为“书面程序”或“文件化程序”。3 书面或文件化程序中通常包括活动的目的和范围;做什
28、么和谁来做,何时、何地和如何做;应使用什么材料、设备和文件;如何对活动进行控制和记录。过程:将输入转化为输出的一组彼此相关的资源和活动。资源:可包括人员、资金、设施、设备、技术和方法。对于质量管理体系:1 质量体系的内容应以满足质量目标的需要为准。2 一个组织的质量体系主要是为满足该组织内部管理的需要而设计的。它比特定顾客的要求要广泛。顾客仅仅评价质量体系中的有关部分。3 为了合同或强制性质量评价的目的,可要求对已确定的质量体系要求的实施进行证实。软件质量管理的基本概念质量方针 由组织的最高管理者正式发布的该组织总的质量宗旨和质量方向。 质量策划 确定质量以及采用质量体系要素的目标和要求的活动
29、。质量策划包括:a) 产品策划:对质量特性进行识别、分类和比较,并建立其目标、质量要求和约束条件。b) 管理和作业策划:为实施质量体系进行准备,包括组织和安排。c) 编制质量计划和作出质量改进的规定。软件质量管理的基本概念质量控制为达到质量要求所采取的作业技术和活动。1 质量控制包括作业技术和活动,其目的在于监视过程并排除质量环中所有阶段中导致不满意的原因,以取得经济效益。2 质量控制和质量保证的某些活动是互相关联的。质量保证 为了提供足够的信任表明实体能够满足质量要求,而在质量体系中实施并根据需要进行证实的全部有计划和有系统的活动。1 质量保证有内部和外部两种目的。a) 内部质量保证:在组织
30、内部,质量保证向管理者提供信任。b) 外部质量保证:在合同或其他情况下,质量保证向顾客或他方提供信任。2 质量控制和质量保证的某些活动是相互关联的。3 只有质量要求全面反映了用户的要求,质量保证才能提供足够的信任软件质量管理的基本概念质量改进为向本组织及其顾客提供更多的收益,在整个组织内所采取的旨在提高活动和过程的效益和效率的各种措施。质量管理确定质量方针、目标和职责并在质量体系中通过诸如质量策划、质量控制、质量保证和质量改进使其实施的全部管理职能的所有活动。1 质量管理是各级管理者的职责,但必须由最高管理者领导。质量管理的实施涉及到组织中的所有成员。2 在质量管理中要考虑到经济性因素。软件质
31、量管理的基本概念全面质量管理 一个组织以质量为中心,以全员参与为基础,目的在于通过让顾客满意和本组织所有成员及社会受益而达到长期成功的管理途径。1 “全员”指该组织结构中所有部门和所有层次的人员。2 最高管理者强有力和持续的领导以及该组织内所有成员的教育和培训是这种管理途径取得成功所必不可少的。3 在全面质量管理中,质量这个概念和全部管理目标的实现有关。4 “社会受益”意味着在需要时满足“社会需求”。5 有时把“全面质量管理”(TQM)或它的一部分称为“全面质量”、“公司范围内的质量管理(CWQC)”、“TQC”等。软件质量管理的基本概念质量审核确定质量活动和有关结果是否符合计划的安排,以及这些安排是否有效地实施并适合于达到预定目标的、有系统的、独立的检查。1 质量审核一般用于(但不限于)对质量体系或其要素,过程、产品或服务的审核。上述这些审核通常称为“质量体系审核”、“过程质量审核”、“产品质量审核”和“服务质量审核”。2 质量审核应由与被审核领域无直接责任的人员进行,但最好在有关人员的配合下进行。3 质量审核的一个目的是评价是否需要采取改进或纠正措施。审核不能和旨在解决过程控制或产品验收的“质量监督”或“检验”相混淆。4 质量审核可以是为内部或外部的目的而进行。