首页> 中国专利> 一种软件质量评价装置及软件质量评价的定量分析方法

一种软件质量评价装置及软件质量评价的定量分析方法

摘要

本发明公开了一种软件质量评价装置及软件质量评价的定量分析方法,包括代码解析模块、度量分析模块、评价规则库模块,其中,代码解析模块,用于对输入的软件的源程序代码进行词法、语法分析,从中提取信息,并将该信息通过抽象语法树的形式来表示后,将生成的数据发送给度量分析模块;评价规则库模块,用于为度量分析模块提供程序代码质量评价规则及算法;度量分析模块,用于根据评价规则库模块中的程序代码质量评价规则及算法,遍历代码解析模块发送数据的抽象语法树,计算出相应的度量指标值并由此对软件的质量进行分析,生成该软件的质量评价结果的数据。应用本发明,解决了当前软件质量评价方法难以对软件质量做出定量分析的问题。

著录项

  • 公开/公告号CN101261604A

    专利类型发明专利

  • 公开/公告日2008-09-10

    原文格式PDF

  • 申请/专利权人 中兴通讯股份有限公司;

    申请/专利号CN200810090674.X

  • 发明设计人 王继刚;钟卫东;李翌;

    申请日2008-04-09

  • 分类号G06F11/36(20060101);

  • 代理机构11262 北京安信方达知识产权代理有限公司;

  • 代理人龙洪;霍育栋

  • 地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法律部

  • 入库时间 2023-12-17 20:45:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-03-29

    未缴年费专利权终止 IPC(主分类):G06F11/36 授权公告日:20100929 终止日期:20180409 申请日:20080409

    专利权的终止

  • 2019-01-04

    专利权的转移 IPC(主分类):G06F11/36 登记生效日:20181214 变更前: 变更后: 申请日:20080409

    专利申请权、专利权的转移

  • 2018-11-23

    专利权的转移 IPC(主分类):G06F11/36 登记生效日:20181105 变更前: 变更后: 申请日:20080409

    专利申请权、专利权的转移

  • 2018-01-12

    专利权的转移 IPC(主分类):G06F11/36 登记生效日:20171222 变更前: 变更后: 申请日:20080409

    专利申请权、专利权的转移

  • 2010-09-29

    授权

    授权

  • 2008-10-29

    实质审查的生效

    实质审查的生效

  • 2008-09-10

    公开

    公开

查看全部

说明书

技术领域

本发明涉及软件工程领域中软件质量保证技术,尤其涉及一种软件质量评价装置及软件质量评价的定量分析方法。

背景技术

随着信息技术的蓬勃发展,计算机已经越来越广泛地应用到各行各业中。作为信息技术的灵魂,软件的规模也在日益扩大,这不仅导致了程序复杂度的提高,也降低了软件自身的可靠性。因此,保证软件质量,是贯穿到整个软件生命周期的重要问题,而对软件质量进行有效定量地评价则是保证软件质量的一种重要手段。

由于软件产品具有复杂性、抽象性、不确定性和难于度量等特点,以及人们对软件质量认识的局限性和非系统性,软件质量的评价往往是模糊且不确定的,这使得软件质量评价一直是软件质量保证中一个难题。多年来,各国研究人员对其进行了深入细致的研究。1976年,Boehm等人提出了定量的评价软件质量的模型,他们把软件产品的质量分为三个方面:可移植性、可使用性、可维护性,从而得到软件质量的整体评价。1978年,McCall等人提出了三层次的质量度量模型:质量要素-评价准则-度量。并定义了11个质量要素和23个评价准则来对分别对这些质量要素进行描述,从而反映产品的质量。这两种模型都是网状结构模型,他们都是从产品的角度进行度量,没有从用户需求的角度进行考虑。而且他们复杂的网状结构,在度量的过程中并不易实现定量化。1991年,由国际标准化组织(ISO,InternationalOrganization for Standardization)和国际电工委员会(IEC,InternationalElectrotechnical Commission)联合制定了ISO/IEC 9126软件产品评价标准,首次将软件质量评价以标准的形式确定,该标准从用户的角度出发考虑了软件的6个质量因素,并规定了其相应的21个质量标准。它的软件质量度量模型为树形结构,分为3层:质量因素-质量标准-度量指标,如图1所示。虽然9126标准并未提及具体的评价方法,但对于软件的质量评价还是具有重要的指导作用。

经过不断地应用改进,ISO/IEC 9126标准现已成为软件质量评价的主要参考依据。基于该标准的软件质量评价工具也出现了不少,但是大多不能完全适应实际需求,在通用性和灵活性等方面存在缺陷。例如有的度量工具只能度量某种语言编写的软件,受语言版本的限制,通用性不够;有的度量工具在度量指标上存在局限,不能灵活地适应用户各种度量需求。虽然一些研究人员提出了相应的改进措施,比如以度量中间件为核心或基于知识库的软件架构等,但都属于理想状态下的解决方案,结构复杂,在现实中难于实现。

对于软件质量的评价方法目前研究比较多,具体的实现方式也各有特色。总的来看,目前已公布的方法并不能对软件质量做出准确定量的评价。比如:有的评价方法在度量指标上采用0~1判别标准,也就是说,如果度量指标的值落在给定的区间内,则评判值为1,如果落在区间的外面,则评判值为0。此判别方法对目前软件的质量判别过于笼统。而另一些评价方法只给出软件代码各度量指标的测量值,而不做进一步的定量分析,无法对软件质量进行客观准确地评价。

当前存在一种软件源代码质量自动评价的技术方案,但该技术方案的在以下不足:一、从硬件角度描述了软件质量评价所需的设备,如键盘、显示器、内存等。这些设备都是当前通用计算机系统所必有的,对软件质量评价系统的具体实现不能起到指导作用;二、提出的评价方法不具有定量分析功能,无法得到软件代码质量量化的评价结果。综上所述,当前需要一种软件质量评价的技术方案。

发明内容

本发明所要解决的技术问题是提供一种软件质量评价装置及软件质量评价的定量分析方法,解决了当前软件质量评价方法难以对软件质量做出定量分析的问题,该软件质量评价装置从源代码入手,根据语法与语义,分析程序的结构与关键特征,从而生成程序的抽象语法树(Abstract Syntax Tree,简称为AST),并通过评价规则与算法,最终获得软件质量评价结果;同时,本发明还可以将质量分析结果以报表和图像的形式提交给用户进行审核与评估。

为了解决上述问题,本发明提供了一种软件质量评价装置,

包括代码解析模块、度量分析模块、评价规则库模块,其中,

代码解析模块,用于对输入的软件的源程序代码进行词法、语法分析,从中提取信息,并将该信息通过抽象语法树的形式来表示后,将生成的数据发送给度量分析模块;

评价规则库模块,用于为度量分析模块提供程序代码质量评价规则及算法;

度量分析模块,用于根据评价规则库模块中的程序代码质量评价规则及算法,遍历代码解析模块发送数据的抽象语法树,计算出相应的度量指标值并由此对软件的质量进行分析,生成该软件的质量评价结果的数据。

进一步地,上述软件质量评价装置还可包括,结果处理模块、用户接口模块,其中,

结果处理模块,用于对度量分析模块发送的质量评价结果的数据进行处理,生成各种文档并保存,将该文档发送给用户接口模块;

用户接口模块,用于将源程序文件和/或工程文件输入代码解析模块;还用于将用户自定义的规则输入评价规则库模块;接收结果处理模块生成的文档,提供给用户查看。

进一步地,上述软件质量评价装置还可包括,所述代码解析模块,还用于对不同程序设计语言的源程序代码进行扫描分析,支持解析项目工程文件,获取工程文件中全部源程序代码信息;

所述评价规则库模块,还用于为用户提供自定义规则的功能,用户根据不同环境下软件代码的多样性和复杂性对程序代码质量评价规则进行修改或扩充;

度量分析模块,还用于根据用户自行选择的度量指标来计算出相应的度量指标值并由此对软件的质量进行分析,生成该软件的质量评价结果的数据。

进一步地,上述软件质量评价装置还可包括,所述评价规则库模块提供的程序代码质量评价规则及算法以国际标准化组织/国际电工委员会标准模型为基础;

所述结果处理模块生成的各种文档,包括评价报告或各种分析视图;

其中,所述分析视图包括,源程序代码结构的显示图、度量指标数字结果的列表显示图、各种度量指标的统计图。

本发明还提供了一种软件质量评价的定量分析方法,包括以下步骤,

a、对输入的软件的源程序代码进行词法、语法分析,从中提取信息,并生成数据,该生成的数据中将提取的信息通过抽象语法树的形式来表示;

b、读取程序代码质量评价规则及算法,根据程序代码质量评价规则及算法,遍历生成数据的抽象语法树,计算出相应的度量指标值并由此对软件的质量进行分析,生成该软件的质量评价结果的数据。

进一步地,上述定量分析方法还可包括,所述步骤a中还包括,

a11、将用户配置好的需要进行质量评价的软件项目工程文件,或源代码目录、或编程语言、或头文件目录导入硬件平台;

a12、对输入的源程序代码进行预处理,将程序中已经定义的头文件和宏解开,替换到源程序代码中相应的位置上;

a13、对每一个预处理过的源程序代码进行词法和语法分析,在经过宏解析和头文件处理后,采用自底向上分析法进行词法解析,生成相关数据,该生成的数据通过抽象语法树的形式来表示。

进一步地,上述定量分析方法还可包括,所述步骤a13进一步包括,

a131、对输入的源文件的类型进行扫描过滤,根据扩展名提取所需的源程序代码;

a132、对提取的源程序代码进行预编译处理,解析程序代码中所有的头文件信息和宏信息,并将其解开到指定的文件中;

a133、进行词法分析,将源程序代码转换为自底向上描述的文法;

a134、进行语法分析,将词法分析的结果转换生成相关数据,该生成的数据通过抽象语法树的形式来表示。

进一步地,上述定量分析方法还可包括,所述步骤b中还包括,

b1、读取规则文件,解析相关存储规则,获得所需要的程序代码质量评价规则及算法;

b2、读取程序代码质量评价规则,遍历生成数据的抽象语法树,对源程序代码进行预分析,如果得到软件质量的评价分析结果,则将得到的评价分析结果的数据存储到内存中,对其进行可读化处理,并将处理后的评价分析结果的数据存储在本地磁盘。

进一步地,上述定量分析方法还可包括,所述步骤b2中,如果对源程序代码进行预分析后,没有得到软件质量的评价分析结果,则还包括以下步骤,

b21、根据程序代码质量评价规则及算法,遍历生成数据的抽象语法树,寻找并获取软件质量评价所需的度量指标序列;

b22、根据程序代码质量评价规则中所指定的各度量指标分布区间,按照正态分布的原理,计算出每个度量指标的标准分;

b23、根据各质量标准的映射公式,通过专家算法预定加权因子,对所辖度量指标值进行加权并求和,得到相应质量标准的评价值;

b24、根据分配给质量因素所辖标准的权值,计算因素所辖标准的评价值的加权平均值,从而获得因素的评价值;

b25、根据程序代码质量评价规则中分配给因素的权值,计算因素评价值的加权平均值,从而获得软件质量综合评价分析结果的数据;

b26、将评价分析结果的数据存储到内存中对其进行可读化处理,并将处理结果的数据存储在本地磁盘。

与现有技术相比,本发明采用抽象语法树对各种程序设计语言的源代码进行统一描述和分析,实现了软件质量评价与编程语言的无关性;同时,还提供了质量评价规则用户定制功能,用户可以对软件质量评价模型、规则进行自定义和修改,使得质量评价工作更适应于软件实际情况。此外,本发明还根据正态分布原理确定了度量指标量化值,采用专家算法得到加权因子,从而解决了现有方法难以对软件质量进行量化分析的问题,具有直接高效,客观准确,应用范围广等特点。

附图说明

图1为软件质量度量模型图;

图2为本发明的软件质量评价装置的结构图;

图3为本发明的软件质量评价的定量分析方法的流程图;

图4为本发明软件质量评价方法中代码解析流程图;

图5为本发明软件质量评价方法中定量计算流程图;

图6为本发明进行实施试验应用流程图。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步说明。

如图2所示,一种软件质量评价装置,包括代码解析模块、度量分析模块、评价规则库模块、结果处理模块、用户接口模块,其中,

代码解析模块,用于接收用户接口模块输入的软件的源程序文件和/或工程文件,对源程序代码进行词法、语法分析,从中提取足够多的信息,并将该信息通过抽象语法树的形式来表示后,将生成的数据发送给度量分析模块;该模块还可以支持解析项目工程文件,获取工程文件中全部源程序代码信息;

代码解析模块处于系统的前端,由文件分析、词法分析和语法分析等部分所组成,实现以下功能:可以对不同程序设计语言的源程序代码进行扫描分析;收集相关的计算度量指标的信息;在分析过程中构造出抽象语法树。

由于软件往往包含多个源程序,这些源程序总是利用工程文件来管理,所以代码解析模块需要能够解析工程文件。

度量分析模块,用于根据评价规则库模块中的程序代码质量评价规则及算法,遍历代码解析模块发送数据的抽象语法树,计算出相应的度量指标值并由此对软件的质量进行分析,最后将生成的质量评价结果的数据发送给结果处理模块,还用于根据用户自行选择的度量指标来计算出相应的度量指标值并由此对软件的质量进行分析;

度量分析模块包括结果缓冲池,该结果缓冲池用于保存生成的质量评价结果的数据。

评价规则库模块,用于为度量分析模块提供程序代码质量评价规则及算法;同时还为用户提供了自定义规则的功能,用户可以根据不同环境下软件代码的多样性和复杂性对程序代码质量评价规则进行修改或扩充;

其中,程序代码质量评价规则及算法以ISO/IEC标准模型为基础。

结果处理模块,用于对度量分析模块发送的质量评价结果的数据进行处理,生成各种文档(包括评价报告或各种分析视图等),同时保存生成的各种文档,将文档发送给用户接口模块;

结果处理模块可以把统计与分析产生的度量结果以各种分析视图的方式进行处理,包括:(1)源程序代码结构的显示图,类层次图、相互有消息传递的类间关系图;(2)度量指标数字结果的列表显示,方便度量指标进行横向比较;(3)各种度量指标的统计图,如直方图、饼图或Kiviat图等;通过这些数字或图形结果,可以对软件质量做出直观地判断,同时,结果处理模块还可以自动生成各种文档用于保存和分析。

用户接口模块,用于将源程序文件和/或工程文件输入代码解析模块;还可用于将用户自定义的规则输入评价规则库模块;接收结果处理模块生成的文档,提供给用户查看,使用户能够对软件质量做出直观地判断。

如图3所示,一种软件质量评价的定量分析方法,包括以下步骤:

步骤100、将用户配置好的需要进行质量评价的软件项目工程文件,或源代码目录、或编程语言、或头文件目录等导入硬件平台;

步骤110、对输入的源程序代码进行预处理,将程序中已经定义的头文件和宏解开,替换到源程序代码中相应的位置上;

步骤120、对每一个预处理过的源程序代码进行词法和语法分析,在经过宏解析和头文件处理后,采用自底向上分析法进行词法解析,生成相关数据,该生成的数据通过抽象语法树的形式来表示;

所述步骤120进一步包括下列操作内容:

步骤1201、对输入的源文件的类型进行扫描过滤,根据扩展名提取所需的源程序代码;

步骤1202、对提取的源程序代码进行预编译处理,解析程序代码中所有的头文件信息和宏信息,并将其解开到指定的文件中;

步骤1203、进行词法分析,将源程序代码转换为自底向上描述的文法;

步骤1204、进行语法分析,将词法分析的结果转换生成相关数据,该生成的数据通过抽象语法树的形式来表示。

步骤130、读取规则文件,解析相关存储规则,获得所需要的程序代码质量评价规则及算法;

步骤140、读取程序代码质量评价规则,遍历生成数据的抽象语法树,对目标工程文件的源程序代码进行预分析,如果发现无需深入分析就可得到软件质量的评价分析结果,则将得到的评价分析结果的数据存储到内存中,执行步骤160;否则,执行步骤150;

步骤150、根据程序代码质量评价规则及算法,对生成数据的抽象语法树作进一步分析,包括度量指标计算,质量标准计算,质量因素计算,最终得到软件质量综合评价分析结果的数据,并将各阶段计算分析结果存储在内存中;

所述步骤150进一步包括下列操作内容:

步骤1501、根据程序代码质量评价规则及算法,遍历生成数据的抽象语法树,寻找并获取软件质量评价所需的度量指标序列;

步骤1502、根据程序代码质量评价规则中所指定的各度量指标分布区间,按照正态分布的原理,计算出每个度量指标的标准分;

步骤1503、根据各质量标准的映射公式,通过专家算法预定加权因子,对所辖度量指标值进行加权并求和,得到相应质量标准的评价值;

步骤1504、同理,根据分配给质量因素所辖标准的权值,计算因素所辖标准的评价值的加权平均值,从而获得因素的评价值;

步骤1505、根据程序代码质量评价规则中分配给因素的权值,计算因素评价值的加权平均值,从而获得软件质量综合评价分析结果的数据;

步骤1506、将评价分析结果的数据存储到内存中。

步骤160、将存储在内存中的评价分析结果的数据取出,对其进行可读化处理,并将处理后的评价分析结果的数据存储在本地磁盘用于用户进行审阅。

本发明所述装置和方法可以采用Lex/Yacc自动编译器生成工具及C语言得以实现。需要指出的是,本发明不局限于任何具体的硬件平台和操作系统,具有较广泛的通用性。

下面结合具体实例对本发明作进一步说明。

该实例中,描述了软件质量评价方法流程的主要处理步骤:

(1)将用户配置好的需要进行质量评价的软件源代码目录、编程语言、头文件目录导入软件质量评价装置;

(2)对输入的源代码进行预处理,将程序中已经定义的头文件和宏解开,替换到源代码中相应的位置上;

(3)对每一个预处理过的源文件进行词法/语法解析,在经过宏解析和头文件处理后,进行文法解析,将源代码解析成自底向上LR描述文法所描述的数据,此后解析为标准的AST语法树;

该步骤可细分为下述各个具体操作内容(如图4所示):

(3.1)代码解析模块先对输入的源文件的类型进行过滤,根据扩展名提取所需的源代码;

(3.2)对提取的源代码进行预处理,解析代码中所有的头文件信息和宏信息,并将其解开到指定的文件中;

(3.3)进行词法分析,将源代码转换为自底向上描述文法;

(3.4)进行语法分析,将文法分析的结果转换成抽象语法树。

(4)读取规则文件,解析存储规则所使用的可扩展标记语言XML文件,获得所需要的质量评价规则;

(5)读取质量评价规则,遍历AST语法树,对目标工程源代码进行预分析,如果发现无需深入分析就可得到软件质量结果,则直接把分析结果存储到指定缓冲池相应的数据列表中,执行步骤(7);否则,根据质量评价规则与算法对抽象语法树作进一步处理,执行步骤(6);

(6)根据质量评价规则即算法,对AST语法树作进一步分析,包括度量指标计算,质量标准评价,质量因素评价,最终得到软件质量评价结果,并将计算分析结果送入结果处理模块;

该步骤可细分为下述各个具体操作内容(如图5所示):

(6.1)首先由计算分析模块遍历AST语法树,寻找并获取软件质量评价所需的度量指标序列;

(6.2)根据质量评价规则中所指定的各度量指标分布区间,按照正态分布的原理,计算出每个度量指标的量化值;

例如计算度量指标STMT,该指标表示函数中可执行语句的数量,STMT度量指标对于衡量函数的复杂性是很有用。评价规则中设定它的上限值为50,下限值为0,通过计算可知STMT的正态分布函数中总体均数为25,总体标准差为9.69,当STMT的实际值为25时,所得的指标值最高为1。

(6.3)根据各质量标准的映射公式,通过预定的加权因子对所属度量指标值进行加权并求和,得到相应质量标准的评价值;

以函数的稳定性function_STABILITY质量标准评价规则为例:function_STABILITY=NBCALLING+RETU+DRCT_CALLS+PARA,公式表明,该质量标准由四个度量指标所决定,即NBCALLING、RETU、DRCT_CALLS、PARA,专家算法设定的每个度量指标权重均为1。该质量标准的最高得分4分,即当构成该质量标准的四个度量指标的值均为1时,该项质量标准得分为4分,以此类推。

(6.4)同理,根据各质量因素的映射公式,通过预定的加权因子对所属标准进行加权求和,得到相应质量因素的评价值;

(6.5)通过上述各层的计算,最后得到软件质量综合评价值,根据具体的得分,能够判定该程序代码质量所处的等级;

(6.6)将分析评价结果存储到指定缓冲池相应的数据列表中,方便下一步使用。

(7)软件质量评价结束后,将存储在结果缓冲池中的分析结果取出,存储在本地磁盘,并提交给用户审阅。

图6是本发明进行实施试验应用流程图。进行软件开发的企业和个人可以通过本发明度量历史项目,获取每个软件度量指标的预测值;在新软件项目开发过程中,使用本发明对已完成的源代码进行评价,获得软件代码质量评价结果,并将其与预测值对比,从而进一步控制并改进软件的质量,提高软件过程能力。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号