软件质量的概念•软件质量的定义•软件质量模型软件质量的定义•1.软件质量的定义1)ANSI/IEEEStd729-1983定义软件质量为:“与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体”。2)M.J.Fisher将软件质量定义为:“所有描述计算机软件优秀程度的特性的组合。”3)GB/T6583–ISO8402(1994)定义软件质量为:“反映实体满足明确和隐含需要的能力和特性总和”也就是说,为满足软件的各项精确定义的功能、性能需求,符合文档化的开发标准,需要相应地给出或设计一些质量特性及其组合,作为在软件开发与维护中的重要考虑因素。如果这些质量特性及其组合都能在产品中得到满足,则这个软件产品质量就是高的。软件质量的定义•软件质量反映了以下三方面的问题:–软件需求是度量软件质量的基础。不符合需求的软件就不具备质量。–规范化的标准定义了一组开发准则,用来指导软件人员用工程化的方法来开发软件。如果不遵守这些开发准则,软件质量就得不到保证。–往往会有一些隐含的需求没有显式地提出来。如软件应具备良好的可维护性。如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求,软件质量也不能保证。软件质量的定义•2.软件质量特性软件质量特性,反映了软件的本质。讨论一个软件的质量,问题最终要归结到定义软件的质量特性。而定义一个软件的质量,就等价于为该软件定义一系列质量特性。软件质量的定义通常,软件质量可由以下主要特性来定义:(1)功能性:软件所实现的功能达到它的设计规范和满足用户需求的程度;(2)效率:在规定条件下,用软件实现某种功能所需的计算机资源(包括时间)的有效程度;(3)可靠性:在满足一定条件的应用环境中,软件能够正常维持其工作的能力;(4)安全性:为了防止意外或人为的破坏,软件应具备的自身保护能力能力;软件质量的定义(6)可维护性:当环境改变或软件运行发生故障时,为了使其恢复正常运行所做努力的程度;(7)可扩充性:在功能改变和扩充情况下,软件能够正常运行的能力;(8)可移植性:为使一个软件从现有运行平台向另一个运行平台过度所做努力的程度(9)重用性:整个软件或其中一部分能作为软件包而被再利用的程度。软件质量的定义•3.软件生存期与质量特性从用户的角度看,软件的生存期可分为如下三个阶段:1)初期运用:运行新开发的软件产品。2)维护与扩充:在运行过程中修改缺欠的内容;而且,为了进一步的使用,需根据运行环境(主要指应用环境和技术环境)的变化做功能上和性能上的扩充。3)移植和连接:把在原有平台上运行的软件向其它新的运行环境转移、或者组成软件包以便重用、或与其它软件进行连接。软件质量的定义•对于软件所需求的质量特性,在软件生存期的不同阶段中情况各有不同,要求也不一样,这可由下图说明。Back软件质量模型•所谓质量模型是指提供声明质量需求和评价质量基础的特性以及特性之间关系的集合。换句话说质量模型是用来描述质量需求以及对质量进行评价的理论基础。•早在1976年,由Boehm等提出软件质量模型的分层方案。1979年McCall等人改进Boehm质量模型又提出了一种软件质量模型。模型包括质量要素(factor)、准则(criteria)和度量(metric)三层次。如图所示。特性是软件质量的反映,软件属性可用做评价准则,定量化地度量软件属性可知软件质量的优劣。软件质量模型McCall质量度量模型框要素(特性)评价准则评价准则评价准则度量度量度量面向管理观点的产品质量决定产品质量的软件属性定量化地度量软件属性软件质量模型•软件质量要素直接影响软件开发过程各个阶段的产品质量。•由于对软件质量理解的不断深化,软件质量要素不是一成不变的。•McCall等人给出的软件质量要素共11个,分为三类,分别面向软件产品的运行、修正、转移。它们与特性的关系如图所示。软件质量模型产品修正产品转移产品运行可维护性测试性灵活性互联性可移植性复用性正确性可靠性可使用性效率完整性McCall软件质量模型软件质量模型•正确性:在预定环境下,软件满足设计规格说明及用户预期目标的程度。它要求软件没有错误。•可靠性:软件按照设计要求,在规定时间和条件下不出故障,持续运行的程度。•效率:为了完成预定功能,软件系统所需的计算机资源的多少。•完整性:为了某一目的而保护数据,避免它受到偶然的,或有意的破坏、改动或遗失的能力。•可使用性:对于一个软件系统,用户学习、使用软件及为程序准备输入和解释输出所需工作量的大小。软件质量模型•可维护性:为满足用户新的要求,或当环境发生了变化,或运行中发现了新的错误时,对一个已投入运行的软件进行相应诊断和修改所需工作量的大小。•可测试性:测试软件以确保其能够执行预定功能所需工作量的大小。•灵活性:修改或改进一个已投入运行的软件所需工作量的大小。软件质量模型•可移植性:将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需工作量的大小。•复用性:一个软件(或软件的部件)能再次用于其它应用(该应用的功能与此软件或软件部件的所完成的功能有联系)的程度。•互连性:连接一个软件和其他系统所需工作量的大小。如果这个软件要联网,或与其他系统通信,或要把其他系统纳入到自己的控制之下,必须有系统间的接口,使之可以联结。互连性很重要。它又称相互操作性。软件质量模型•通常,对以上各个质量特性直接进行度量是很困难的,在有些情况下甚至是不可能的。因此,McCall定义了一组比较容易度量的软件质量要素评价准则,使用它们对反映质量特性的软件属性分级,以此来估计软件质量特性的值。•定义评价准则的关键是确定影响软件质量要素的属性。这些属性必须满足①比较完整、准确的描述软件质量要素;②比较容易量化和测量,能够反映软件质量的优劣。•McCall定义的软件质量要素评价准则共21种,它们是:McCall软件质量要素评价准则1.可审查性(Auditability):检查软件需求、规格说明、标准、过程、指令、代码及合同是否一致的难易程度。2.准确性(Accuracy):计算和控制的精度,最好表示成相对误差的函数,值越大表示精度越高。3.通信通用性(CommunicationCommonality):使用标准接口、协议和频带的程度。4.完全性(Completeness):所需功能完全实现的程度。5.简明性(Conciseness):程序源代码的紧凑性。6.一致性(Consistency):设计文档与系统实现的一致性。7.数据通用性(DataCommonality):在程序中使用标准的数据结构和类型。8.容错性(Errortolerance):系统在各种异常条件下提供继续操作的能力McCall软件质量要素评价准则9.执行效率(ExecutionEfficiency):程序运行效率。10.可扩充性(Expandability):能够对结构设计、数据设计和过程设计进行扩充的程度11.通用性(Generality):程序部件潜在的应用范围的广泛性12.硬件独立性(HardwareIndependence):软件同支持它运行的硬件系统不相关的程度。13.检测性(Instrumentation):监视程序的运行,一旦发生错误时,标识错误的程度。14.模块化(Modularity):程序部件的功能独立性。McCall软件质量要素评价准则15.可操作性(Operability):操作一个软件的难易程度。16.安全性(Security):控制或保护程序和数据不受破坏的机制,以防止程序和数据受到意外的或蓄意的存取、使用、修改、毁坏或泄密。17.自文档化(Self-documentation):源代码提供有意义文档的程度。18.简单性(Simplicity):理解程序的难易程度。19.软件系统独立性(SoftwareSystemIndependence):程序与非标准的程序设计语言特征、操作系统特征、以及其他环境约束无关的程度。20.可追踪性(Tracebility):对软件进行正向和反向追踪的能力。21.易培训性(Training):软件支持新用户使用该系统的能力。计算软件质量要素软件质量要素Fj的值可用下式计算LFj=∑CjkMkj=1,2,...,11.k=1其中Mk是软件质量要素Fj对第k种评价准则的测量值CjkMcCall定义的评价准则多数都没有客观的测量方法,只能凭主观印象为评价准则定值。McCall将评价准则分为0--10级。0级最低,10级最高。Mk的取值是0,0.1,0.2,…,1.0计算软件质量要素软件质量要素Fj的值可用下式计算LFj=∑CjkMkj=1,2,...,11.k=1其中Mk是软件质量要素Fj对第k种评价准则的测量值CjkMcCall定义的评价准则多数都没有客观的测量方法,只能凭主观印象为评价准则定值。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)要素关系准则正确性可靠性有效性完整性可维护可测试可移植可重用互操作可用性灵活性硬件独立性VVVV检测性VVV模块化VVVVVVV可操作性VV安全性V自文挡化VVVVV简单性VVVV软件独立性VV可追踪性V易培训性VMcCall软件质量要素评价准则•McCall软件质量度量模型为软件质量管理奠定了基础•模型由软件质量要素和评价准则组成•加权系数Cjk满足∑Cjk=1其中Cjk≥0当质量要素Fj与k项评价准则无关时,Cjk=0•McCall评价准则项数L=21软件质量模型•ISO软件质量度量模型1985年国际标准化组织(ISO)建议,软件质量度量模型由三层组成。1.高层称软件质量需求评价准则(SQRC);2.中层称软件质量设计评价准则(SQDC);3.低层称软件质量度量评价准则(SQMC)。分别对应McCall等人的要素、评价准则和度量。ISO认为应对高层和中层建立国际标准,以便在国际范围内推广软件质量管理,而低层可由各单位自行制定。ISO高层由8个要素组成、中层由23个评价准则组成。它们之间的关系如表所示。ISO的质量要素与评价准则(1/2)要素关系准则正确性可容性有效性安全性可用性可维护灵活性互操作可追踪性V完全性V一致性VVV准确性V容错性V简单性VV模块化VV通用性V可扩充性V检测性V自描述性VVISO的质量要素与评价准则(2/2)要素关系准则正确性可容性有效性安全性可用性可维护灵活性互操作执行效率V存储效率V存取控制V存取审查V可操作性V易培训性V通信性V软件独立性V硬件独立性V通信通用性V数据通用性V简明性V软件质量模型–1991年,ISO发布了ISO/IEC9126质量特性的国际标准,将质量特性降为6个,即功能性、可靠性、可维护性、效率、可使用性、可移植性,并定义了21个子特性。1991年发布的ISO/IEC9126标准现在被分为了两部,ISO/IEC9126(软件产品质量)和ISO/IEC14598(软件产品评价)。软件质量模型软件质量特性之间的竞争在软件的质量特性与质量特性之间、质量特性与质量子特性之间存在着有利的影响和不利的影响。例如,由于效率的要求,应尽可能采用汇编语言。但是用汇编语言编制出的程序,可靠性、可移植性以及可维护性都很差。因此在系统设计过程中应根据具体情况对各种要素的要求进行折衷,以便得到在总体上用户和系统开发人员都满意的质量标准。质量要素之间的关系表软件质量特性之间的竞争软件质量的度量和评价•软件质量的度量是软件属性的量化,是经验关系系统到数值关系系统的一种映射。软件质量特性度量有两类:预测型和验收型。–预测度量是利用定量的或定性的方法,对软件质量的评价值进行估计,以得到软件质量的比较精确的估算值。它是用在软件开发过程中的。•尺度度量:这是一种定量度量。它适用于一