一种结合特征相关的软件质量研究


  如何提高软件质量是软件项目中非常重要的问题。一个质量问题严重的软件不仅会浪费大量资源,还会给用户带来巨大损失。现在还没有一个被普遍接受的软件质量定义。一般的定义是:软件产品满足给定需求的特征及特征的总体能力;软件拥有所期望的各种属性组合的程度;顾客或用户认为软件满足他们综合期望的程度;软件组合特性在使用中将满足用户预期需求的程度[1]。但仔细分析却发现,它并没有提供一个量化的方法。

  1软件质量提高方法及测试

  1.1软件质量提高方法

  提高软件质量总体上可通过两种途径:

  (1)事前预防法。一般在软件开发过程中采用先进的管理技术或工具,尽量避免缺陷发生[2,3]。其主要手段涉及到:①规范化管理。软件开发工作必须在一个良好的管理环境内进行,管理应遵循规范化、标准化的原则,以便为软件生产过程提供必要的组织、制度保障。②先进的开发技术。这种技术涉及到开发过程的各个阶段,如分析方法、设计方法等。③先进的辅助工具。常用的辅助开发手段包括软件分析工具、集成编译环境、软件配置管理工具等。质量功能调配(QFD)是用于提高软件质量的一种工具[4,5],它是1972年在日本提出的。QFD由不同图表和代表不同控制过程的矩阵表组成。基本的概念是把用户需求转换成适合产品开发的每个阶段的技术要求。矩阵的分级结构有助于使逐级过程从用户相当含糊和抽象的要求变成详细和准确的信息。

  (2)事后改进法。软件完成后,通过测试工具[6]和用户使用发现缺陷加以修正,从而提高质量。但这种方法极可能会改变原有的软件结构,并且每次变化一般都会使其更加复杂,加大了进一步改进的难度,所需费用也逐渐增大,如图1所示。

  1.2软件质量测试

  软件测试技术[7,8]分为两大类,即静态测试和动态测试。静态测试是不执行程序代码而寻找文档、程序代码中可能存在的错误的过程。它可以手工进行,也可以借助软件工具自动进行;不必动态地执行程序,可以由人工进行;实施不需要特别条件,在发现错误的同时也就定位了错误。静态测试主要包括由人工进行的软件需求评审、软件设计评审、代码走查以及主要由软件工具自动进行的工具辅助静态分析。它适用于计算机软件单元、计算机软件部件、计算机软件配置项的源代码。

  动态测试是在抽样测试数据上执行程序并分析输出以发现错误的过程。根据测试理论,如果抽样测试数据满足一定要求,通过测试可以发现程序中大多数错误,并且可以评估程序的质量(正确性、可靠性等)。它必须实际运行被测试程序,必须生成测试数据来运行程序;分析测试结果工作量大,动态测试中涉及多方面工作;人员多、设备多、数据多,要求有较好的管理和工作规程。动态测试包括三部分核心内容,即生成测试数据、执行程序与验证程序的输出结果。动态测试适合单元测试、集成测试、系统测试。关于动态测试中的测试数据生成主要有黑盒测试和白盒测试两种技术。

  2特征因子

  影响软件项目成功的因素很多,如采用能力成熟度模型、采用某一项目管理理念等[9~11],但严格从数学角度分析内在的联系并不多见。本文提出一个特征因子概念。该概念可用于表示软件,并能非常方便地分析影响软件的因素及内在联系。比如:采用新技术i在一定程度上可提高软件质量,用某一数pi表示影响软件的程度,则该数称为软件的一个特征因子。软件项目S可表示为:S=(p1,p2,…,pn)。一般而言,影响软件的特征因子很多,通常提取权值重的特征因子来表示该软件。这一般可根据实际情况而定。为简化起见,一个软件是否成功采用两个值来表示,即y1和y2。其中,y1表示用户对软件的满意程度,y2表示软件使用上的可靠性。假定软件成功与否与特征因子之间存在某种非线性关系,并希望通过一种方法发现这种关系,从而指导软件开发。BP神经网络理论在非线性方面具有很强的函数逼近能力,且自学能力强。笔者首次尝试借助BP神经网络通过特征因子对软件项目进行分析,并获得了较好的结果。 3BP神经网络的工作原理

  BP神经网络[12]由若干神经元组成,神经元之间用线连接。线上的权值代表神经元之间的连接强度。从结构上讲,BP网络是典型的多层网络,分为输入层、隐层和输出层。层与层之间采用全连接方式,同一层之间不存在相互连接。BP模型实现了多层网络学习的设想。

  BP网络模型处理信息的基本原理是:输入信号Pi通过中间节点(隐层点)作用于输出节点;经过非线形变换,产生输出信号Ok;网络训练的每个样本包括输入向量P和期望输出量T,网络输出值O与期望输出值T之间的偏差;通过调整输入节点与隐层节点的连接权值wij和隐层节点与输出节点之间的连接权值Tjk以及阈值,使误差沿梯度方向下降;经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),停止训练。此时经过训练的BP神经网络能对在输入范围内的输入信息自行处理,然后输出误差最小的经过非线形转换的输出信息。BP神经网络对软件项目的处理如图2所示。其中,向量Pi表示含有n个特征因子软件i,y1表示用户对软件的满意程度,y2表示软件使用上的可靠性。

  4评价结果

  在测试软件项目时,根据用户的需求及项目的特点,选择了一组软件特征因子。这组特征因子与软件成功与否相关,反映了目标实现概率下的取值。软件特征因子用0~1之间的一个数来刻画。本文用所收集的一些软件项目样本进行训练,建立一个模型,并人为调整相关特征因子以观察其经过。笔者发现,与用户的交流度和项目管理度在一定范围内对项目质量有极大的影响,但经过某个阈值,过高的度数反而会降低项目质量,如可靠性。测试如表1、2所示。

  表1软件特征因子及目标

  5结束语

  借助神经网络,通过训练和优化,以确定认可质量下各特征因子的具体取值。本文提供了一种定量化的方法以控制软件开发过程和提高软件产品质量。通过实验初步发现了个别特征因子的具体影响。由于所研究的软件项目数n有限,结果可能有些偏差,但研究结果具有借鉴意义。同时,随着样本范围的增大,利用预测可能会得到一些有用的信息。