|
根据ISO/IEC 9126国际标准的定义,软件的质量包括以下六个方面:
|
|
|
|
|
|
|
|
|
以ISO 9126质量模型作为基础,我们可以构造质量度量模型,用于评估软件的每个方面。例如,按以下方法构造的质量模型可以度量程序的可维护性(maintainability)。首先,该模型从上到下分为3层:质量因素(factors)、分类标准(criteria)和度量规则(metrics)。其中质量因素对应ISO 9126质量模型的质量特性,分类标准对应ISO 9126质量模型的子特性,度量规则用于规范软件的各种行为属性。其次,按以下方式定义各参数及计算公式。
|
|
|
|
度量规则使用了代码行数、注释频度等参数度量软件的各种行为属性,具体参数定义如下表所示。
|
|
|
|
|
|
|
|
|
|
|
每个分类标准由一系列度量规则组成,各个规则分配一个权重,由规则的取值与权重值计算出每个分类标准的取值。各分类标准组成如下表所示。
|
|
|
|
|
各分类标准的结果按以下标准区分等级,如下表一至如下表十二所示。
|
|
|
function_TESTABILITY=DRCT_CALLS+LEVL+PATH+PARA
|
|
|
|
function_TESTABILITY的等级划分
|
|
|
function_STABILITY=NBCALLING+RETU+DRCT_CALLS+PARA
|
|
|
|
|
function_CHANGEABILITY=PARA+LVAR+VOCF+GOTO
|
|
|
|
function CHANGEABILITY的等级划分
|
|
|
function_ANALYZABILITY=VG+STMT+AVGS+COMF
|
|
|
|
function_ANALYZABILITY的等级划分
|
|
|
relativeCall_ANALYZABILITY=STRU_CPX+LEVELS
|
|
|
|
relativeCall ANALYZABILITY的等级划分
|
|
|
relativeCall_STABILITY=CALL_PATHS+HIER_CPX
|
|
|
|
relativeCall_STABILITY的等级划分
|
|
|
relativeCall_TESTABILITY=TESTBTY+CALL_PATHS
|
|
|
|
relativeCall_TESTABILITY的等级划分
|
|
|
这样,依据这些标准和最终测试结果,可将代码的质量分成四个等级。
|
|
|
①优秀(EXCELLENT):符合本模型框架中的所有规则。
|
|
|
|
|
|
其中前三者被认为是可以接受的,最后一个等级则是不可接受的。
|
|
|
|
质量因素的取值与分类标准的计算方式相似:依据各分类标准取值组合权重方法来计算,如下表所示。
|
|
|
|
|
同样,依据质量因素取值,也将其分成四个等级:优秀(EXCELLENT)、良好(GOOD)、一般(FAIR)和较差(POOR),其中前三者被认为是可以接受的,最后一个等级则是不可接受的。
|
|
|
如下表一和如下表二所示为function_MAINTAINABILITY和relative Call_MINTA-INABILITY的等级划分。
|
|
|
|
|
function_MAITAINABILITY的等级划分
|
|
|
|
|
relativeCall_MAINTAINABILITY的等级划分
|
|
|
将上述质量模型应用于被测程序后,就可以通过量化的数据对软件的质量进行评估了。
|
|
|