如何对软件质量进行评估?

摘要:本文从软件质量的有关概念出发 , 根据指标选取原则,在分析软件质量特征的基础上提出了相应的软件质量评估指标的选取原则 , 并进而建立了软件质量评估体系 。
关键词:软件质量 质量评估指标体系
1 软件质量的有关概念
软件质量是“软件产品具有满足规定的或隐含要求能力要求有关的特征与特征总和” 。根据软件质量国家标准GB-T8566--2001G,软件质量评估通常从对软件质量框架的分析开始 。
1.1 软件质量框架模型
如图1所示,软件质量框架是一个“质量特征—质量子特征—度量因子”的三层结构模型 。
在这个框架模型中 , 上层是面向管理的质量特征 , 每一个质量特征是用以描述和评价软件质量的一组属性 , 代表软件质量的一个方面 。软件质量不仅从该软件外部表现出来的特征来确定 , 而且必须从其内部所具有的特征来确定 。
第二层的质量子特征是上层质量特征的细化,一个特定的子特征可以对应若干个质量特征 。软件质量子特征是管理人员和技术人员关于软件质量问题的通讯渠道 。
最下面一层是软件质量度量因子(包括各种参数),用来度量质量特征 。定量化的度量因子可以直接测量或统计得到,为最终得到软件质量子特征值和特征值提供依据 。
图1 软件质量框架模型
1.2 软件质量特征
按照软件质量国家标准GB-T8566--2001G,软件质量可以用下列特征来评价:
a.功能特征:与一组功能及其指定性质有关的一组属性,这里的功能是满足明确或隐含的需求的那些功能 。
b.可靠特征:在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性 。
c.易用特征:由一组规定或潜在的用户为使用软件所需作的努力和所作的评价有关的一组属性 。
d.效率特征:与在规定条件下软件的性能水平与所使用资源量之间关系有关的一组属性 。
e.可维护特征:与进行指定的修改所需的努力有关的一组属性 。
f.可移植特征:与软件从一个环境转移到另一个环境的能力有关的一组属性 。
其中每一个质量特征都分别与若干子特征相对应 。
2 评估指标的选取原则
选择合适的指标体系并使其量化是软件测试与评估的关键 。评估指标可以分为定性指标和定量指标两种 。理论上讲 , 为了能够科学客观地反映软件的质量特征,应该尽量选择定量指标 。但是对于大多数软件来说 , 并不是所有的质量特征都可以用定量指标进行描述,所以不可避免地要采用一定的定性指标 。
在选取评估指标时,应该把握如下原则:
a.针对性
即不同于一般软件系统,能够反映评估软件的本质特征,具体表现就是功能性与高可靠性 。
b.可测性
即能够定量表示,可以通过数学计算、平台测试、经验统计等方法得到具体数据 。
c.简明性
即易于被各方理解和接受 。
d.完备性
即选择的指标应覆盖分析目标所涉及的范围 。
e.客观性
即客观反映软件本质特征,不能因人而异 。
应该注意的是,选择的评估指标不是越多越好,关键在于指标在评估中所起的作用的大小 。如果评估时指标太多,不仅增加结果的复杂性,有时甚至会影响评估的客观性 。指标的确定一般是采用自顶向下的方法,逐层分解 , 并且需要在动态过程中反复综合平衡 。
3 软件质量评估指标体系
通常,我们在软件的测试与评估时,主要侧重于功能特征、可靠特征、易用特征和效率特征等几个方面 。在评价活动的具体实施中,应该把被评估软件的研制任务书作为主要依据,采用自顶向下逐层分解的方法,并参照有关国家软件质量标准 。
3.1 功能性指标
功能性是软件最重要的质量特征之一,可以细化成完备性和正确性 。目前对软件的功能性评价主要采用定性评价方法 。
a.完备性
完备性是与软件功能完整、齐全有关的软件属性 。如果软件实际完成的功能少于或不符合研制任务书所规定的明确或隐含的那些功能,则不能说该软件的功能是完备的 。
b.正确性
正确性是与能否得到正确或相符的结果或效果有关的软件属性 。软件的正确性在很大程度上与软件模块的工程模型(直接影响辅助计算的精度与辅助决策方案的优劣)和软件编制人员的编程水平有关 。
对这两个子特征的评价依据主要是软件功能性测试的结果 , 评价标准则是软件实际运行中所表现的功能与规定功能的符合程度 。在软件的研制任务书中,明确规定了该软件应该完成的功能,如信息管理、提供辅助决策方案、辅助办公和资源更新等 。那么即将进行验收测试的软件就应该具备这些明确或隐含的功能 。
目前 , 对于软件的功能性测试主要针对每种功能设计若干典型测试用例,软件测试过程中运行测试用例,然后将得到的结果与已知标准答案进行比较 。所以 , 测试用例集的全面性、典型性和性是功能性评价的关键 。
3.2 可靠性指标
根据相关的软件测试与评估要求,可靠性可以细化为成熟性、稳定性、易恢复性等 。对于软件的可靠性评价主要采用定量评价方法 。即选择合适的可靠性度量因子(可靠性参数),然后分析可靠性数据而得到参数具体值 , 最后进行评价 。
经过对软件可靠性细化分解并参照研制任务书,可以得到软件的可靠性度量因子(可靠性参数) 。
a.可用度
可用度指软件运行后在任一随机时刻需要执行规定任务或完成规定功能时,软件处于可使用状态的概率 。可用度是对应用软件可靠性的综合(即综合各种运行环境以及完成各种任务和功能)度量 。
如何保证软件质量通常,我们在软件的测试与评估时,主要侧重于功能特征、可靠特征、易用特征和效率特征等几个方面 。在评价活动的具体实施中,应该把被评估软件的研制任务书作为主要依据,采用自顶向下逐层分解的方法,并参照有关国家软件质量标准 。功能性是软件最重要的质量特征之一 , 可以细化成完备性和正确性 。对软件的功能性评价主要采用定性评价方法 。
a.完备性
完备性是与软件功能完整、齐全有关的软件属性 。如果软件实际完成的功能少于或不符合研制任务书所规定的明确或隐含的那些功能,则不能说该软件的功能是完备的 。
b.正确性
正确性是与能否得到正确或相符的结果或效果有关的软件属性 。软件的正确性在很大程度上与软件模块的工程模型(直接影响辅助计算的精度与辅助决策方案的优劣)和软件编制人员的编程水平有关 。
对这两个子特征的评价依据主要是软件功能性测试的结果,评价标准则是软件实际运行中所表现的功能与规定功能的符合程度 。在软件的研制任务书中,明确规定了该软件应该完成的功能 , 如信息管理、提供辅助决策方案、辅助办公和资源更新等 。那么即将进行验收测试的软件就应该具备这些明确或隐含的功能 。
对于软件的功能性测试主要针对每种功能设计若干典型测试用例,软件测试过程中运行测试用例,然后将得到的结果与已知标准答案进行比较 。所以,测试用例集的全面性、典型性和权威性是功能性评价的关键 。根据相关的软件测试与评估要求,可靠性可以细化为成熟性、稳定性、易恢复性等 。对于软件的可靠性评价主要采用定量评价方法 。即选择合适的可靠性度量因子(可靠性参数),然后分析可靠性数据而得到参数具体值,最后进行评价 。
经过对软件可靠性细化分解并参照研制任务书,可以得到软件的可靠性度量因子(可靠性参数) 。
a.可用度
可用度指软件运行后在任一随机时刻需要执行规定任务或完成规定功能时,软件处于可使用状态的概率 。可用度是对应用软件可靠性的综合(即综合各种运行环境以及完成各种任务和功能)度量 。
b.初期故障率
初期故障率指软件在初期故障期(一般以软件交付给用户后的三个月内为初期故障期)内单位时间的故障数 。一般以每100小时的故障数为单位 。可以用它来评价交付使用的软件质量与预测什么时候软件可靠性基本稳定 。初期故障率的大小取决于软件设计水平、检查项目数、软件规模、软件调试彻底与否等因素 。
c.偶然故障率
指软件在偶然故障期(一般以软件交付给用户后的四个月以后为偶然故障期)内单位时间的故障数 。一般以每1000小时的故障数为单位 , 它反映了软件处于稳定状态下的质量 。
d.平均失效前时间(MTTF)
指软件在失效前正常工作的平均统计时间 。
e.平均失效间隔时间(MTBF)
指软件在相继两次失效之间正常工作的平均统计时间 。在实际使用时,MTBF通常是指当n很大时 , 系统第n次失效与第n+1次失效之间的平均统计时间 。对于失效率为常数和系统恢复正常时间很短的情况下,MTBF与MTTF几乎是相等的 。
国外一般民用软件的MTBF大体在1000小时左右 。对于可靠性要求高的软件,则要求在1000~10000小时之间 。
f.缺陷密度(FD)
指软件单位源代码中隐藏的缺陷数量 。通常以每千行无注解源代码为一个单位 。一般情况下,可以根据同类软件系统的早期版本估计FD的具体值 。如果没有早期版本信息,也可以按照通常的统计结果来估计 。“典型的统计表明,在开发阶段,平均每千行源代码有50~60个缺陷,交付后平均每千行源代码有15~18个缺陷” 。
g.平均失效恢复时间(MTTR)
指软件失效后恢复正常工作所需的平均统计时间 。对于软件 , 其失效恢复时间为排除故障或系统重新启动所用的时间,而不是对软件本身进行修改的时间(因软件已经固化在机器内,修改软件势必涉及重新固化问题,而这个过程的时间是无法确定的) 。易用性可以细化为易理解性、易学习性和易操作性等 。这三个特征主要是针对用户而言的 。对软件的易用性评价主要采用定性评价方法 。
a.易理解性
易理解性是与用户认识软件的逻辑概念及其应用范围所花的努力有关的软件属性 。该特征要求软件研制过程中形成的所有文档语言简练、前后一致、易于理解以及语句无歧义 。
b.易学习性
易学习性是与用户为学习软件应用(例如运行控制、输入、输出)所花的努力有关的软件属性 。该特征要求研制方提供的用户文档(主要是《计算机系统操作员手册》、《软件用户手册》和《软件程序员手册》)内容详细、结构清晰以及语言准确 。
c.易操作性
易操作性是与用户为操作和运行控制所花的努力有关的软件属性 。该特征要求软件的人机界面友好、界面设计科学合理以及操作简单等 。
3.4 效率特征指标
效率特征可以细化成时间特征和资源特征 。对软件的效率特征评价采用定量方法 。
a.输出结果更新周期
输出结果更新周期是软件相邻两次输出结果的间隔时间 。为了整个系统能够协调工作,软件的输出结果更新周期应该与系统的信息更新周期相同 。
b.处理时间
处理时间是软件完成某项功能(辅助计算或辅助决策)所用的处理时间(注意:不应包含人机交互的时间) 。
c.吞吐率
吞吐率是单位时间软件的信息处理能力(即各种目标的处理批数) 。未来的社会情况复杂、信息众多,软件必须具有处理海量数据的能力 。吞吐率就是体现该能力的参数 。随着信息的泛滥,要求软件的吞吐率应该达到数百批 。
d.代码规模
代码规模是软件源程序的行数(不包括注释) , 属于软件的静态属性 。软件的代码规模过大不仅要占用过多的硬盘存储空间,而且显得程序不简洁、结构不清晰,容易存在缺陷 。
因为这些参数属于软件的内部表现,所以需要用专门的测试工具和特殊的途径才可以获得 。将测试数据与研制任务书中的指标进行比较,得到的结果可以作为效率特征评价的依据 。随着计算机技术、数据融合技术、网络技术和通信技术的飞速发展 , 对软件功能提出的要求也越来越高,如何评估软件质量已成为一个迫切需要解决的课题 。选择合适的指标体系并使其量化是做好软件质量评估的关键 。当然,由于软件的评估具有其特有的规范和要求,其评估指标涉及面广、不确定性因素较多、量化困难,至今还没有统一的标准 。
【如何对软件质量进行评估?】
国产软件在最近10年来发展迅速,从最早的应用软件开发,到现在拥有自己国产品牌的操作系统、数据库、中间件,以及自己的集成应用商 , 已经可以满足企业的一般办公需求 。“可能在稳定性上或者兼容性上还存在一些问题,但是这并不影响它的日常使用和在一些领域的推广和应用 。” 国家应用软件产品质量监督检验中心副主任左家平如是说 。但她也强调 , 软件的正版化肯定是有利于自身行业的发展 。“如果你做一个东西很快就被盗版,没有了价值,大家就都不去做了,行业也就乱了 。”她说 。谈到测试,左家平给出了一个简单明了的解释:“系统测试其实起到一个连接作用 。”即完成从操作系统到中间件,到数据库,到Office应用中所有相关接口、功能、性能等的一连串测试,以保证这个系统的可用性 。从解决方案的角度来说 , 就是先要对单个软件产品进行测试,再把相关的软件集成起来进行测试 , 这样才能对整个解决方案是否可用进行评价 。软件的质量分三部分:内部质量、外部质量和使用质量 。内部质量是由厂商内部做的,就是厂商通过自己内部的测试方式来进行保证 。每一个源代码要开放,然后看有没有死循环,有没有语法错误 , 有没有其他问题,是通过这种完全开放源代码的形式进行测试的 。外部质量度量主要是通过测试用例的输入,来验证输出结果能不能达到预期要求 , 在测试工具应用、测试思路设计、测试重点选择和人才技能需求等方面都与内部质量度量有很大的差异 。而使用质量,实际上也就是用户质量,是通过模拟用户使用来进行评价的 。国家应用软件产品质量监督检验中心现有的人员和技术能够对软件的内部质量、外部质量,以及使用质量进行全面度量,因为只有这样才能把软件产品质量测试做成一条线,才能形成系统的质量评测方法,这也是国际标准中通常所采用的方法 。虽然叫做软件质量监督检验中心 , 但在左家平看来,中心更多的工作是在做服务,是从服务角度来推动软件产业的发展 。按照国家《产品质量法》的相关要求,如果要开展对一种产品的监督抽查工作,就必须依据相应的标准、规范,因此监督抽查是要标准先行的 。如果标准滞后,就会影响到抽查结果的判定和评价 。对于软件产业中产品标准严重滞后的现象,中心更多的工作还是从服务需求方、开发方角度来做软件产品的质量监督 。比如,通过软件质量测试服务告诉用户,产品中有什么样的问题 , 它技术瓶颈在哪里,然后再提出改进方案 。