您好,欢迎访问三七文档
软件质量的度量摘要:随着软件的复杂性日益增长,软件开发的周期以及费用也日益增长,软件质量的保证与提高越来越成为了人们高度重视的问题。软件质量的度量的理论和研究也随之发展起来,好的度量模型和标准能够有效地提高软件开发效率和软件质量。本文主要介绍软件质量的概念和度量模型以及软件质量度量的方法,并对未来的发展趋势做一些展望。关键词:软件质量、度量模型、发展趋势、软件质量度量0.引言在过去几十年里,因为软件的质量问题而导致整个系统发生失效的事例屡见不鲜,进而给人类生命安全和环境造成了巨大的损失。美国IBM公司于1963年~1966年开发的IBM360系列机的操作系统。该软件系统花了大约5000人一年的工作量,最多时,有1000人投入开发工作,写出近100万行的源程序。尽管投入了这么多的人力和物力,得到的结果却极其糟糕。而在1996年6月,在阿丽亚娜5号火箭首次发射后不到一分钟的时间内,就因为软件故障问题致使火箭发生了爆炸,导致了巨大的经济损失和相应计划的延迟。因此软件的质量问题已引起了人们的极度重视,软件质量的度量问题自然也得到重视。由于计算机技术、数据融合技术、网络技术和通信技术的飞速发展,人们对软件性能及功能提出的要求也越来越高,度量软件质量已成为一个迫切需要解决的问题。如何通过选择合适的软件质量指标体系、确定软件质量的量化过程和方法来进行客观性地度量,对于评价软件的质量是关键的一步,进而对于减少软件失效的发生和提升软件的总体质量也是具有极其重要的意义。1.软件质量的理论基础1.1软件质量的定义至今为止,软件质量还没有一个统一的、惟一的定义,不同的组织或应用可能会有不同的定义。ANSI/IEEEStd729—1983定义软件质量为:与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体;M.J.Fisher给出的定义为:表征计算机软件卓越程度的所有属性的集合。不同的人从不同的角度来看软件质量问题,会有不同的理解。从用户的角度看,质量就是满足客户的需求;从开发者的角度看,质量就是与需求说明保持一致;从产品的角度看,质量就是产品的内在特点;从价值的角度看,质量就是客户是否愿意购买。概括地说,软件质量就是“软件与明确的和隐含的定义的需求相一致的程度”。具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。1.2软件质量引出的问题M.J.Fisher定义软件质量为“所有描述计算机软件优秀程度的特性的组合”。也就是说,为满足软件的各项精确定义的功能、性能需求,符合文档化的开发标准,需要相应地给出或设计一些质量特性及其组合,作为在软件开发与维护中的重要考虑因素。如果这些质量特性及其组合都能在产品中得到满足,则这个软件产品质量就是高的。软件质量反映了以下三方面的问题:(1)软件需求是度量软件质量的基础,不符合需求的软件就不具备质量。(2)规范化的标准定义了一组开发准则,用来指导软件人员用工程化的方法来开发软件。如果不遵守这些开发准则,软件质量就得不到保证。(3)往往会有一些隐含的需求没有显式地提出来。如软件应具备良好的可维护性。如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求,软件质量也不能保证。软件质量是各种特性的复杂组合。它随着应用的不同而不同,随着用户提出的质量要求不同而不同。因此,有必要讨论各种质量特性,以及评价质量的准则,还要介绍为保证质量所进行的各种活动。1.3软件质量度量模型软件的质量由一系列质量要素组成,每一个质量要素又由一些衡量标准组成,每个衡量标准又由一些量度标准加以定量刻划。质量度量贯穿于软件工程的全过程以及软件交付之后,在软件交付之前的度量主要包括程序复杂性、模块的有效性和总的程序规模,在软件交付之后的度量则主要包括残存的缺陷数和系统的可维护性方面。勃姆(BarryW.Boehm)在《软件风险管理》(SoftwareRiskManagement)中第一次提出了软件质量度量的层次模型。而麦考尔(McCall)等人将软件质量分解至能够度量的层次,提出FCM3层模型(参见下表):软件质量要素(factor)、衡量标准(criteria)和量度标准(metrics),包括11个标准,分为产品操作(productoperation)、产品修正(productrevision)和产品转移(producttransition)。层级名称内容第一层质量要素:描述性和评价软件质量的一组属性。功能性、易用性、可靠性、可维护性、可移植性等质量特性以及将质量特性细化产生的副特性第二层衡量标准:衡量标准的组合,反应某一软件质量要素。精确性、稳健性、安全性、通信有效性、处理有效性、设备有效性、可操作性、培训性、完备性、一致性、可追踪性、可见性、硬件系统无关性、软件系统无关性、可扩充性、公用性、模块性、清晰性、自描述性、简单性、结构性、文件完备性等第三层量度标准:可由各使用单位自定义根据软件的需求分析、概要设计、详细设计、编码、测试、确认、维护与使用等阶段,针对每一个阶段制定问卷表,以此实现软件开发过程的质量度量。表1软件质量度量FCM模型其中,可以简单地描述使用缺陷密度(缺陷数量/软件规模)、缺陷检出率(某阶段当时发现的缺陷/该阶段的全部缺陷100%)、发布前缺陷去除率(发布前发现的缺陷/(发布前发现的缺陷软件运行的前3个月发现的缺陷)100%)、潜在缺陷数((100%发布前缺陷去除率)缺陷密度)、平均失效时间(软件持续运行时间/缺陷数量)、平均修复时间(∑缺陷修复时间/缺陷数量)等作为产品质量的指标。在软件质量度量活动中,同样需要建立一条性能基线,作为软件产品的质量、软件测试性能评估的起点,并作为对系统评估是否通过的标准。缺陷评测的基线是对某一类或某一组织的结果的一种度量,这种结果可能是常见的或典型的,如10000行源程序(LOC)是程序规模的一个基准,每一千行代码有3个错误是测试中错误发现率的基准。基准对期望值的管理有很大帮助,目标就是相对基准而存在,也就是定义可接受行为的基准,如表3所示。条目目标低水平缺陷清除率95%70%缺陷密度每个功能点4每个功能点7超出风险之外的成本0%=70%全部需求功能点1%每月平均值=50%全部程序文档每个功能点页数3每个功能点页数6表3某个软件项目质量的基准和目标ISO9126将软件质量总结为6大特性每个特性包括一系列副特性其软件质量模型包括3层,即高层:软件质量需求评价准则(QSRC);中层:软件质量设计评价准则(SQDC);低层:软件质量度量评价准则(SMQC)。凯悦(LawrenceE.Hyatt)和罗森贝克(LindaH.Rosenberg)在《识别项目风险以及评价软件质量的软件质量模型与度量》(ASoftwareQualityModelandMetricsforIdentifyingProjectRisksandAssessingSoftwareQuality)中比较了这3种最常用的软件质量模型,其基本情况如下表所示。度量标准/目标麦考尔勃姆ISO9126,1993正确性(Correctness)XX可维护性可靠性(Reliability)XXX完整性(Integrity)XX可用性(Usability)XXX效率性(Efficiency)XXX可维护性(Maintainability)XXX可测试性(Testability)XX可维护性互操作性(Interoperability)X适应性(Flexibility)XX可重用性(Reusable)XX可移植性(Portability)XXX明确性(Clarity)X可变更性(Modifiability)X可维护性文档化(Documentation)X恢复力(Resilience)X易懂行(Understandability)X有效性(Validity)X可维护功能性(Functionality)X普遍性(Generality)X经济性(Economy)X表2三种软件质量模型之比较2.软件质量的度量2.1软件质量度量过程软件的度量过程主要可以分为五个步骤进行:(1)确定软件的质量度量需求。这一步是软件质量度量最为前提和基础的一步,主要活动包括设计可能的质量因素集合,优化并确定这一因素集合和建立软件质量模型。(2)确定软件质量度量元。这是软件度量过程较为关键的一步,度量元选取的好坏直接影响着质量评估的结果。首先在基于软件质量度量框架的基础之上,将质量特性分解成度量元;继而执行度量元的成本效益分析,根据其结果调整优化已选度量元集合。(3)执行软件质量度量。包括定义度量数据收集过程并且收集数据、根据已有数据计算度量值等环节。需要注意的是,采集的数据应该基于正确定义的度量和模型,从而保证数据的正确性、准确性和精度;因此,在收集数据之前,应当设定数据采集的目标,并且定义有意义的问题。(4)分析软件质量度量结果。通过分析比较收集的度量数据与目标值,发现两者之间的区别。确定那些不可接受的度量值,详细分析那些数值偏离关键值的度量元并依据分析结果重新设计软件质量度量。(5)软件质量度量的验证。验证的目的就是为了证明通过软件产品和过程度量可以预测具体的软件质量因素值。验证的过程中,在运用相关的验证方法和标准的前提下,必须确定软件质量因素样本和度量样本,然后执行对度量的统计分析,检验度量的作用是否实现。整个具体过程如图1所示。图1软件质量度量过程示意图2.2软件度量的验证与预测在软件开发和维护的过程中,定量地评价软件的质量,必须对软件质量特性进行度量,以测定软件具有要求质量特性的程度。软件质量特性度量有两类:预测型和验收型。预测度量是利用定量的或定性的方法,对软件质量的评价值进行估计,以得到软件质量的比较精确的估算值。它是用在软件开发过程中的。而验收度量则是在软件开发各阶段的检查点,对软件的要求质量进行确认性检查的具体评价值,它可以看成是对预测度量的一种确认,是对开发过程中的预测进行评价。预测度量有两种。第一种叫做尺度度量,这是一种定量度量。它适用于一些能够直接度量的特性,例如,出错率定义为:错误数/KLOC/单位时间。一般它作为相对量进行度量。第二种叫做二元度量,这是一种定性度量。它适用于一些只能间接度量的特性,例如,可使用性、灵活性等等。通常,对质量特性制定检查表,通过对照检查项目,确定一种质量特性的有无。例如,在设计和编码阶段的复杂性度量,利用尺度度量方法来做。而对模块复执行度量确定产品、过程中的问题选择和定义度量数据采集数据分析决策支持杂性的度量采用Mc—Cabe环路度量。基本思想是基于程序的分支、循环、顺序等摔制结构来估算模块中的结构上的复杂性,其检查表;给出了评价设计文档是否完备的检查表,这是二元度量的例子。我们对检查表中每一项都应给以记分,指定信息存在时记“1”,否则记“0”。表中所有各项的分数相加,即得度量结果。2.3软件质量度量的方法(1)面向结构度量方法较早出现的度量是建立在结构化程序设计和模块化思想基础上的,分析的对象包括程序的控制流图,实现中的操作复杂性,方法间的传递耦合和流程耦合等。其中影响比较大的有McCabe提出的循环计数复杂度度量,直到今天历经改进,仍然被实践者所采纳。McCabe1976年提出了环形复杂度(cyclomaticcomplexity)理论,该理论以图论为基础,通过分析程序的控制流图来获得程序的复杂度,为度量程序逻辑复杂性提供了一种很好的方法。(2)面向软件复用的度量20世纪90年代后期,软件复用的研究兴起。复用的度量主要包括可复用性度量和复用度量。可复用性度量主要用来判定一个构件的可复用性和质量,复用度量主要用于判定复用对生产率、质量和开发时间的作用,它可以在不同级别上进行度量,包括构件级、产品族级、项目级和机构级。目前面向复用的度量大致可分为以下4大类:经济模型类、成熟度模型、复用比率模型以及复用潜力度量模型。(3)面向对象度量方法软件度量进一步作的开展主要在80、90年代,尤其是在90年代,软件度量的
本文标题:软件质量的度量
链接地址:https://www.777doc.com/doc-6221898 .html