APP下载

开发过程和测试结果的软件质量评价研究

2021-09-18郭栋刘文红陈聪彭普周东红

品牌与标准化 2021年5期
关键词:度量质量评价软件

郭栋 刘文红 陈聪 彭普 周东红

【摘要】 本文在结合现有软件质量评价研究成果基础上,将软件研制过程中的质量评审问题和软件测试过程中的问题进行综合分析,提出了一种基于开发过程和测试结果的软件质量评价方法。此方法通过将软件研制过程中的质量评审问题和软件测试过程中的问题进行综合分析,能够为快速判断软件质量提供支持。

【关键词】 软件过程评估;测试结果;软件;质量评价;度量

【DOI编码】 10.3969/j.issn.1674-4977.2021.05.018

Research on Software Quality Evaluation Method Based on Development Process and Test Results

GUO Dong1,LIU Wen-hong2,CHEN Cong1,PENG Pu1,ZHOU Dong-hong1

(1.China Aerospace Academy of Systems Science and Engineering,Beijing 100048,China

2.Beijing Institute of Tracking and Communication Technology,Beijing 100095,China)

Abstract: Based on the existing research results of software quality evaluation,this paper comprehensively analyzes the quality review problems in the software development process and the problems in the software testing process,and proposes a software quality evaluation method based on the development process and test results. This method can provide support for quickly judging software quality by comprehensively analyzing the quality review problems in the software development process and the problems in the software testing process.

Key words: software process evaluation;test results;software;quality evaluation;measurement

随着软件规模和复杂度的不断增长,如何抓住有限的信息来快速度量软件系统中各软件配置项的质量,从而能迅速抓住质量薄弱环节,提高整系统的软件质量,是人们亟待解决的难题。

软件产品质量是软件质量的重要组成部分,因此软件产品质量度量是软件度量的重要组成部分。同时,由于软件经设计与开发之后,在具备满足用户需求功能的同时,软件质量的优劣也就形成在软件设计与开发过程之中。软件产品生产设计的过程是影响所开发软件质量的关键,软件质量的提高是软件生产过程中各项质量活动共同作用的结果。因此,评估软件质量有必要从软件的研制过程着手,将对软件研制过程的评估加入到软件的质量评价中去[1]。

1 软件质量评价方法概述

国内外软件质量评价研究中,基于测试结果对软件质量进行评价的模型很多。以目前定义和测量软件质量的现行国际标准ISO/IEC 25010:2011为例[2],采用了“特性—子特性—度量元”的结构模型来定义软件质量的度量。通过软件测试的方式,根据选定的测试方法得出对应各度量元的度量值,然后根据各度量元的权重,加权平均得出对应子特性的值,最后根据各子特性的权重加权平均得出软件独立值。GB/T 25000系列标准也借鉴了该模型。参考该模型重新修订GJB 5236的工作正在立项。

以上各种软件质量度量评估都是依据软件测试的结果来进行,这种度量方式需要针对软件的特定度量元进行大量指定方法的测试工作,计算也非常烦琐。度量出的结果与软件实际效能缺乏联系,并不能实际反映软件的质量。软件研制开发和测试过程中所积累的大量原始数据也没有被考虑进去,对软件开发过程影响软件质量的因素和机制尚缺乏有效研究。

2 基于开发过程和测试结果的软件质量评价方法

软件的质量是在软件研制过程中逐步得到实现的,不能只依靠软件测试环节控制质量。因此,本文提出通过对软件研制过程的监控来评价软件质量,即软件研制过程的监控与评价作为软件质量评价的一部分参数,利用各阶段测试结果实现对软件全生命周期的质量进行度量和评价。

如图1所示,软件质量的评估模型可以由两个观察侧面的评估值来构成,分别是产品侧面(软件测试结果)和过程侧面(软件研制过程评估)。每个观察侧面各选取多个度量要素来计算其取值,最后将它们归一化到统一的衡量尺度上,加权汇总成为最终的软件质量评价数据。

2.1 软件开发过程分析

软件产品的研制过程评估,一方面需要将软件开发组织的过程能力成熟度考虑在内;另一方面,对于当前软件研制项目的相关参数的度量,也要作为重要的指标予以考虑,这些指标主要包括:软件规模度量、软件安全关键级别度量以及针对项目各条基线的质量有效性度量等。其中软件规模和软件安全关键级别不直接影响软件的质量,而是作为软件质量参数的基准调整参数来使用。

2.1.1 軟件项目基线评审结果评估

在软件研制过程中,对应基线产品的历次质量评审中的意见个数与更改比例,是软件研制过程质量的一项重要体现。能有效地评审出问题,并根据评审意见进行了修改,对促进软件研制能力的提升有正面帮助。以同类软件平均基准值作为参考,记第n个阶段基线评审中提出了m10,m20,m30…mn0条意见,当前项目的实测值为a1,a2,a3…条意见。如表1所示。

那么,针对软件研制项目基线评审结果的计算公式如下。PJX的范围在(0,1)之间。

[PJX=1÷1ni=1i=n(mi-mi0)2=ni=1i=n(mi-mi0)2]

该计算公式还可以进一步精细化处理。考虑到根据质量评审中所提出意见的严重程度,以及与其对应阶段之间的关系,还应有不同权重予以计算。例如,在设计评审阶段发现了需求中的问题(本应在需求评审中提出并修改),其严重性应大于在需求评审中所发现的同类问題,其折合扣分权重也应更高。

2.1.2 软件研制能力成熟度评估

一般一个具有较高等级软件研制能力成熟度评价的组织,能开发出更高质量的软件。因此,我们读入评价机构对该组织的软件研制能力成熟度评分的成绩,并根据其成熟度等级,通过权值对分数进行调整。当读入的分数成绩相同时,成熟度三级的单位比成熟度二级的单位得分更高。

评价机构对软件研制能力成熟度的评分方式使用SCAMPI方法[3]进行,由被评单位自行提供自己的四个项目来进行度量,根据这些项目的相关质量数据,对每个实践域进行评价,给出每个实践以S/L/P/NY的分值。最终的统计评分采用木桶原理式,以短板作为能力的记录点。一个目标未实现,则整体过程域评价为不通过;一个过程域不通过,则本级别评价不通过[4]。那么,通过对应级别软件研制能力成熟度的单位,统计其所有实践,最终得到的得分成绩记为A。A必然是大于6分,最大能得到8分。我们读入某单位的软件研制能力成熟度成绩为A,该单位的成熟度等级为[N0]。

考虑到软件研制能力成熟度共分为5个等级,我们设置成熟度等级5级的权重为1.0,成熟度成绩保持为读入的原始值。当成熟度等级降低,权重也随之降低,记每降低一级所减少的权重为[p0],[p0]的初始值可以采用专家打分法来确定,后期积累大量历史数据后,也可采用客观赋权法来确定其权重值。该软件的研制单位的软件研制能力成熟度评分值对软件质量的影响度量初始计算公式即为:

[PSCM=A×[1-p0×(5-N0)]]

[A]的取值范围在(6,8)之间,则[PSCM]的取值范围也在(6,8)之间。对[PSCM]进行归一化处理,该项度量的归一化计算公式为:

[PSCM_1=A-6(8-6)×[1-p0×(5-N0)]]

归一化处理之后,[PSCM_1]的范围在(0,1)之间。评价机构对研制单位的软件研制能力成熟度评审并打分完后,每年还要组织对该软件研制单位进行年度监督[5-6]。一般的,年度监督时评价机构会对软件研制单位提出若干条年检意见。年检问题的严重等级是评估该软件研制单位的研制过程质量非常重要的参数,能直接的反应研制单位当前(而不是过往)的软件研制项目过程管理水平。

当年检结果问题中存在严重不符合项时,认为该单位的软件研制能力与其初始评分极不相称,考虑对初始评分做清零处理,即:

[PSCM_final=0]

当年检结果问题中没有严重不符合,但存在一般不符合项时,则认为该单位的软件研制能力与其初始评分有较大出入,考虑对初始评分做减半处理,即:

[PSCM_final=12PSCM_1]

当年检问题均为改进项,认为该单位的软件研制能力与初始评分基本相符,但仍有待改进处,需要对初始评分做一定减分处理,但保证其最终的得分比年检问题存在一般不符合的得分高。

具体的减分处理,需要参考当前软件研制单位年审改进项的个数多少,以及是否存在重复性问题来进行调整。提出的改进建议越多得分越低,改进建议中重复问题越多得分越低。当无改进建议,则得分依旧为[PSCM_1]。

记最近一次软件研制单位的年审改进项的个数为m条,一年内各软件研制单位年审改进项个数的均值为n条,当每比均值多一条改进项,则权重减少的比例为[p1];这m条改进项中,有[l]条改进项在本单位以往年审中曾经出现过,记每多一个重复问题的扣除权重比例为[p2]。

[PSCM_ final=12PSCM_1+12PSCM_1(1-p1)m-nn(1-p2)l]

同样,[p1]和[p2]初始值可以根据专家经验确定,后期有历史数据可根据实际数据和评价结果进行调整。

2.2 软件测试结果分析

对于每个软件测试问题,从软件的问题严重等级、该问题的引入阶段和发现该问题所需技术难度三个方面进行考察。

2.2.1 软件问题严重等级

软件问题的严重等级分为五个等级,分别为:

1)致命问题,导致系统/设备任务完全失败,系统/设备安全性和安全保密性丧失,甚至危及人身安全;2)严重问题,会影响/潜在影响设计/需求文档中所规定的主要功能的完成或没有实现设计/需求文档中规定的功能;3)一般问题,会对设计文档中规定的主要功能的完成产生不利/潜在不利的影响,从而导致功能障碍的代码问题;4)轻微问题,不会影响设计/需求文档共规定的主要功能的完成,但对运行或操作会产生轻微影响/潜在影响;5)改进建议,对主要功能的完成,以及运行或操作均无影响,但从代码可读性和结构化程度等方面可以进一步改进优化。

记发现的问题严重等级为[N1]。当发现的问题严重等级每降低一个等级(对应的值增加),则权重增加[p3]。软件问题的严重等级对当前问题的参考值为:

[Pdj=[1-p3×(5-N1+1)]]

2.2.2 软件问题引入阶段

在发现软件问题的时候,同时也能定位到该软件问题是从生命周期的哪个阶段引入的。如果软件研制过程受控,软件测试及交付时应只发现编码阶段引入的问题。如果在测试时发现存在设计阶段的问题,例如设计存在漏项,未覆盖需求,则这类问题的权重值需要增加。

设发现问题发生阶段包括方案、需求、设计、编码、使用等一共S个阶段,按阶段先后顺序对应的标注值为1、2、3、…、[Ns],当软件问题引入阶段越早(而一直未发现),则该问题的权重值越高。记软件编码阶段引入的问题权重值为1.0,问题引入阶段每向前一个阶段,则对应权重增加[p4]。软件问题的引入阶段对当前问题的参考值为:

[Pjd=[1-p4×(S-Ns+1)]]

2.2.3 软件问题发现难易程度

发现软件问题是需要一定的技术手段的。设发现问题难度包括1、2、3、4、5五个等级,表示问题的发现难度逐渐增加。发现问题难度为增加一个等级,则权重增加[p5],发现的问题难度等级为[N2],则发现问题难度对当前问题的参考值为:

[Pnd=[1-p5×(5-N2+1)]]

2.2.4 测试结果总评分

设该软件在提交第三方测试和交付后共计发现k个问题。第k个问题所对应的三个方向参考值分别为[Pdj_k×Pjd_k×Pnd_k][Pdj_k×Pjd_k×Pnd_k]。

当前软件的测试结果分析得分值为:

[PJF=(Pdj_k×Pjd_k×Pnd_k)      =i=1i=k[1-p3*(5-Ni1+1)][1-p4*(5-Nis+1)][1-p5*(S-Ni2+1)]]

其中,[p3],[p4],[p5]初始值可以根据专家经验确定,后期有历史数据可根据实际数据和评价结果进行调整。

3 综合结果分析

综合评价方法采用加权平均,假设综合评价满分为100,项目基线评审结果、研制能力成熟度评估和软件测试结果的权重分别为[η1],[η2],[η3],且有[i=13ηi=1],则该软件的质量评价分数为:

[Qfinal=100×(η1PJX+η2PSCM_final+η3PJF)]

4 总结

本文在现有软件质量评价研究成果的基础上,提出了一种基于过程评估和测试结果的软件质量评价方法,立足于总体单位所能方便获得的质量数据,快速便捷评估各软件的质量。

目前,使用该方法还主要采用主观权重,即专家打分的方式来确定其中各个权重的选择。在积累更多项目历史数据之后,可以不断修正该算法,将主观权重调整为客观赋权,利用各指标间的相互关系或提供的信息量来确定,实际通过对原始数据经过数学处理获取权重。在计算测试结果分析等数据时,本方法使用的是与同类软件基准值进行比较。考虑到软件按其规模分为巨、大、中、小、微五个等级,按其安全关键等级分为I、II、III、IV四个等级,按照嵌入式/非嵌入式以及不同语言、不同行业特点,给予不同的权值后,可以考虑与不同类的软件进行映射对比计算。

【参考文献】

[1] 梅磊,刘鸿飞,董文通.基于测试过程管理的航天软件质量评价[J].西华大学学报(自然科学版),2019(6):67-72.

[2] Systems and software engineering-Systems and software Quality Requirements and Evaluation(SQuaRE)-System and software quality models:IEC 25010:2011[S].

[3] 徐俊.CMMI軟件成熟度模型SCAMPI评估需求分析[J].信息技术与标准化,2008(12):35-37.

[4] 何新贵.GJB 5000《军用软件能力成熟度模型》实施指南[M].北京:国防工业出版社,2004.

[5] 张昱.GJB 5000A过程和产品质量保证实施要点[J].电子技术与软件工程,2021(7):72-74.

[6] 孟磊,陈松,陈心华,等.基于GJB 5000A三级的军用软件过程改进探讨与实践[J].电子质量,2020(12):117-121.

【作者简介】

郭栋,男,1984年出生,高级工程师,硕士,研究方向为软件测评。

刘文红,女,1968年出生,研究员,硕士,研究方向为软件工程、软件测试。

陈聪,男,1987年出生,工程师,硕士,研究方向为嵌入式软件测试。

彭普,男,1984年出生,工程师,学士,研究方向为软件工程。

周东红,男,1981年出生,工程师,硕士,研究方向为嵌入式软件测试、软件工程。

猜你喜欢

度量质量评价软件
不欣赏自己的人,难以快乐
突出知识本质 关注知识结构提升思维能力
基于GARCH—VaR模型的股票市场风险度量研究
基于GARCH—VaR模型的股票市场风险度量研究
三参数射影平坦芬斯勒度量的构造
有趣的识花软件
BP神经网络在软件质量评价中的应用研究 
“中职+应用本科”会计专业人才培养质量评价体系的构建
技工院校校级领导职业素养的建设及质量评价研究
即时通讯软件WhatsApp