王议平
(天津中德应用技术大学 天津市 300350)
软件产品的质量是决定软件产品稳定性的一大重要因素。而要提高软件质量就必须增强对软件技术研究重视程度,因为控制的前提是可以被测量,若不可测量控制也就无从说起。如今,软件工程研究的一个重要发现地方是软件度量技术,经过多年发展,软件度量技术为我们创造出一种度量方法,这样为我们在像耦合性和代码行数的软件内部属性的分析中提供了一些帮助,这同时给我们提供了一种控制软件开发的方法,使得像可维护性和可靠性的软件产品外部属性得到一定的提升,让人们能够从非主观的角度来分析以及测评软件的三大过程:设计、生产、使用状况。一般来说,软件内部质量的属性是可测的,但是想更加有力的得到软件产品的外部质量属性是非困难的,这其中就得借助软件质量测评技术,在软件质量内外部属性中建立一种联系。获得高质量软件有许多种方法,而在软件开发的生命周期中运用质量测评技术是一种重要的方法。我们可以在获取软件度量技术质量内部属性数据、科学应用数据分析技术和检测规定的质量预测模型上,得到一些无法直接获取的质量外部属性,以及从用户对软件质量需求出发,把对质量内部属性的测评放到软件开发的过程中,并结合这两大因素给他他们的联系。同时,软件的效率和成本极大程度受科学、有效和及时的质量测评的影响。所以,为理解什么是软件质量测评模型,我们先介绍计算机软件度量的基本理论,随之系统介绍有着强大数据分析能力的人工神经网络技术外构建软件质量预测模型中的应用。
我们普遍认为,在从现实世界或者是经验世界中进入数学世界的过程叫做度量,这其实也是一种映射过程,依据这种映射我们可以更方便地了解实体哥实体的属性之中的联系。在软件质量度量方法论操作中队度量的定义是:度量是一个函数,它的输入是软件数据,输出是单一的数值,能用以解释软件所具有的一个给定属性对软件质量影响的因素。简单来说就是,软件质量度量是对某些引起软件质量属性变化的一种定量测量。
测量是一种不同于标准但类同于估价或者确定值的方法,测量有着很多种刻度,如比率,等间隔、序号、名称等,刻度之间也是不同的,它的前者比后者者更能反映事物的属性。这之中能最大程度体现信息和有最强灵活性的刻度是比率刻度,这其中包括了绝对的0 店,这能够支持各类信息的分析如车辆中的LOC 和错误数都属于比率度量。而与之稍逊一筹的是等间隔刻度,它以点为基础,给出了一个点饭另一个点距离的概念,是能够保持外相间数字点间的距离。这种特性也提供够了接下来要讲的序号刻度所不能提供的信息,像平均值等会。但值得一提的是,等间隔刻度中无绝对的0 点,所以比率是没有意义的,因此在比较时我们要充分注意这一点。举个例子,昨天20 度,今天10 度,我们不能说今天比昨天冷两倍。众所周知,序号刻度肯定和序号相关,它是把各个项目分为像上,中,下等不同的等级,举个例子,它把程序的失败的严重程度由大向小分为,灾难性、中等、小。最后是名称刻度,这是一种常规的项目分类刻度,可以把程序语言分为:C、Ada、Fortran 等。
在IEE 1061:1998 中给出软件质量度量的定义是软件度量是为软件质量属性进行量化测量。它对软件生命周期过程中的阶段产品实施严格度量进行了突出强调,同时它也会分阶段对软件度量水平进行系统评估,这有利于在软件质量问题萌芽时就解决它,同时它也能给管理进行有效的预见,软件质量度量在很多个软件生产加工过程中都要用到,如软件的采购,选用、测评、以及评优。值得一提的是,若想保障软件质量度量能够最大程度地发挥其作用,就必须运用科学、有效的、质量度量过程。在IEE 1061:1998 中,软件质量度量过程被分为4 个阶段,这也是一套比较详细具体的质量度量方法。
质量需求在一定程度上能够反映在具体应用的特定环境下其对软件产品质量的具体要求。而队质量需求的一般定义应该要在软件开发的前期甚至是未开发之前,因为它在构建软件质量和进行软件质量客观评价的基础。质量需要规定把可定量解释为所需质量特性地非间接度量以及非直接度量的预期值。而衡量一个最终产品的质量是否达到了质量需要需要借助直接度量预期值。
软件质量测量在软件特性和其子特性的描述中常常很难进行直接的测量,只能进行间接测量,这就需要具体确定与之相关的度量元(又名为可度量特性)。在预备度量时期,我们要充分考虑内外部的运用环境为各个软件开发的过程和其最后产品分类确定合理的度量元,构建出度量元、质量子特性、质量特性的映射模型,在此基础上进行测量评估并在合理的评估准则下进行。
进行度量结果的整理需要精确确认可度量特性详细指标,还需要对其结果做出正确的评估并得出正确的结论,在此基础上进行哪些可度量特性指标能够与现在软件质量度量活动相适应,以及能运用到软件质量特性值的预测之中。在这之后,我们需要结合预测值和度量值来进行准确的判断,即是否要进一步进行分析和度量。
构建质量预测模型需要借助度量技术,其大概分为:明确待预测值的质量属性和有关的度量指标、系统使用软件度量技术从而得到构建预测模型的初始数据,并且科学使用数据分析技术来建立和检验模型这几步。而科学挑选数据分析技术去进行建模是这几步中最重要的一步,通过合理挑选数据技术建模能够构建出比较符合预期的预测模型,这为之后的准确预测软件质量打好了地基。
当今世界科学技术迅速发展,人们对质量测评技术的研究也大大加深,我们也加大了对质量预测技术的使用,使其被应用到更多的领域之中,这也使得它会被逐渐的完善,逐渐向前发展。软件质量测评常用的数据分析技术主要有以下几点:一是建立在案例的推理(CBR)技术,二是建立在数理统计的多元线性回归和线性回归技术以及建立在数据挖掘的人工神经网络(Artificial Neural Networks,ANN)技术。但由于ANN 技术有着巨大的优势:能完美地展现出模型系数、更能够展现非线性复杂关系,这也使它被广泛运用,所以ANN 是本文介绍的一个重点。
我们对神经网络进行了简单的定义;模仿我们人脑信息决策处理模式的比较高级的非传统的智能型计算方式。提到人工神经网络就不得不说它的最大特性——非常强大的学习功能其,众所周知,历史数据与软件度量有着千丝万缕的关系,而进行度量模型的构建的存在意义就是找到它们的隐形关系。可以这么说,解决质量预测模型构建问题,用神经网络再合适不过了。
神经网络最小的组成部分是神经元,它负责接受外界传来的信息并传递另外一个信息。而目前说介绍个大部分是固定输出、多向输出的模型,而输入便运用软件度量技术来获取我们所需的构建预测模型的质量内部属性数据,但是用户通常更加注重输出,而输出又是一般度量手段不能直接获得的质量外部属性。
上段提到神经元是神经网络最小的组成部分,而神经网络则是由这些最小不能通过不同排列方式组合成的。但神经网络又各不相同,它们依据神经元之间的各类关系大致可分为两种类型:互联网络模型以及分层网络模型。输出端和输入端是依据质量预测模型建模的两个重要特征,这时候我们需要运用分层模型来进行建立,它可再输入层中加入样本输入,在中间层的作用下被输送到输出层。我们现在大部分是用的是一种叫多层感知机(Perception)的模型,它具有较强的学习功能,为了得到相应的预输出期值,它会调整和改变权值。而对于学习方式来说我们大致分为两大方式:有教师学习以及无教师学习。将预计输出作为教师信号的有教师学习可以灵活地平衡实力输出和预期输出,以此调整到合理的权值。而根据应用特点,我们采用有教师的学习方法。这里介绍一个新概念:隐层,它是潜伏在多层网络输入层和输出层之间的被增加地若干神经元。而通过改变各陈之间的权值,可以使得输出哥输入的关系发生改变。
反向传播算法是比较早提出的算法,这是著名学者Rmumelhart提出的,他的反向传播算法为我们更好地处理多层网络提供了方向。该书介绍,它地学习过程由两部分组成:正向传播以及反向传播。正向传播的定义是输入信号从输出层经隐陈处理到达输出层。而反向传播则是期望值和输入值不同一,这时误差信号会原路返回,各层会依据上层传播出来的误差信号修改权重,以吃来达到最小的误差。
当然,神经网络在当今的实现可以借助一些比较特别的方法,如数据包里的工具箱,像MathWorks 出品的MatLab,使用者这些工具能够有很大的推力使得有关神经网络的基本功能得以实现,同时我们也可以运用它的反向传播网络(BP 网络)进行训练模型。在进行训练模型时,我们要确定BP 网络的基本要素(各陈神经元的具体个数、网络的具体层数、带路输出输入的样本数据等)
上段提到人工网络是一种对信息的处理机制,是模拟人脑而形成的智能计算模式。追溯人工神经网络的应用可以到上世纪九十年代。在那个时候,人工神经网络技术就被应用在软件质量预测之中。经过多年的发展,国外已经比较成熟地掌握了人工神经网络的软件质量预测模型技术,同时也得到了更好的应用。但我国对于这方面的研究还比较得迟,所以成果还是不太明显。现如今,我国大体主攻人工神经网在软件质量预测中的两大方向:一是基于软件错误报告,构建软件质量预测模型。二是基于软件质量预测模型的软件质量预测模型技术。由于走势比较明显BP 神经网络被社会各界广泛使用,但随着社会发展传统BP 神经网络的缺点也显现出来,如学习的效率不高、收敛的速度不快、很容易陷入极小值等不足。所以它不能完全地辅助软件的可靠性分析。但是人工神经网络的种类也更多,并不是只有BP一种,即使它用途很广但这难逃被淘汰的事实。我们也可以运用向量的思维量化神经网络的软件预测模型,这也是我们研究的一大重要方向。
综上所述,软件的质量一定程度上牵制了系统的可靠性和维护性,如果能跨越这一限制,在产品开发的初始阶段发现并判定软件的质量,就能够在一定程度上采取合理的弥补措施。因为软件质量预测模型的准确性有待商榷,我们就对网络软件质量预测模型在向量量化中进行了探讨,展现出它独特的优越性,有较好的准确性及稳定性。软质量预测技术的根本是软件质量度量技术,软件质量度量技术为软件开发过程和提高产品的质量提供了一种量化测量的方法:而软件质量评测技术的关键是构建出软件质量预测模型,而预测模型的建立需要科学有序地应用数据分析技术并在度量的基本上进行。我们可以通过预测得到不能直接得到的质量外部属性,从而得到更高质量的软件。当今我们运用较多的是ANN 技术,其独特的优越性(如能够支持模型系数不确定的情况、能够展现非线性关系)让其得到了更多人的青睐。