CN112380123A - 一种面向c/c++混源软件的自动化质量评估系统设计方法 - Google Patents

一种面向c/c++混源软件的自动化质量评估系统设计方法 Download PDF

Info

Publication number
CN112380123A
CN112380123A CN202011271320.2A CN202011271320A CN112380123A CN 112380123 A CN112380123 A CN 112380123A CN 202011271320 A CN202011271320 A CN 202011271320A CN 112380123 A CN112380123 A CN 112380123A
Authority
CN
China
Prior art keywords
source
mixed
indexes
information
software
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
CN202011271320.2A
Other languages
English (en)
Inventor
李必信
金晓骁
王璐璐
廖力
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongxin Fangcheng Intelligent Technology Nanjing Co ltd
Original Assignee
Zhongxin Fangcheng Intelligent Technology Nanjing Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhongxin Fangcheng Intelligent Technology Nanjing Co ltd filed Critical Zhongxin Fangcheng Intelligent Technology Nanjing Co ltd
Priority to CN202011271320.2A priority Critical patent/CN112380123A/zh
Publication of CN112380123A publication Critical patent/CN112380123A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Abstract

本发明公开了一种面向C/C++混源软件的自动化质量评估系统设计方法,该方法根据混源软件的特点在ISO25010模型的基础上构建一个针对C/C++混源软件的质量模型,并对模型中的所有指标设计计算公式,结合混源项目的代码和文档所提取的基本度量元信息,与函数或文件间的调用关系进行计算得到所有指标值,通过指标权重矩阵构造模块计算各指标权重并进行组合计算得到度量结果,提供了一种面向C/C++混源软件的自动化质量评估系统设计方法。

Description

一种面向C/C++混源软件的自动化质量评估系统设计方法
技术领域
本发明涉及面向C/C++的混源软件的自动化质量评估系统设计方法,属于软件质量度量技术领域。
背景技术
随着计算机技术及其应用的不断发展,各行各业对软件的依赖性越来越大,由软件质量问题而导致失败的风险越来越高,因此软件质量的重要性日益突出,保证软件质量已经成为软件开发过程中必须考虑的重要问题。当前对于传统闭源软件质量模型的研究颇有成效,这些模型是研究人员根据多年的软件工程实践经验提出来的,他们把软件质量分为多个层次,并对软件质量因素进行研究,通过多个指标进行量化计算来反映软件的质量。
混源软件是伴随着开源软件产生而产生的,指兼有闭源代码与开源代码的混合体。当前混源软件广泛运用到多个领域,许多企业对其核心的业务采用闭源策略,对次要的业务采取开源策略,混源软件由于其复杂庞大,来源多样等特征为当前软件的开发带来更为复杂的挑战,但当前混源软件的质量评估模型研究还处在探索阶段,仅有的模型大多也没有提供自动化工具对其进行评估。
综上所述,构建混源软件的质量模型可以及时的适应当前软件发展变化,同时因为C语言和C++语言所具有的广泛流行性,本发明将面向C/C++这两个主流语言的混源软件提供一种自动化度量系统设计方法。
发明内容
本发明的目的是提供一种面向C/C++混源软件的自动化质量评估系统设计方法。此方法可以对面向C/C++语言的混源软件质量进行自动化度量,解决了当前对于混源软件的自动化度量工具的缺失问题,极大的方便了相关软件软件开发人员在开发过程中对于软件质量的把控。
本发明为解决上述问题采用以下技术方案:
本发明提供一种面向C/C++混源软件的自动化质量评估系统设计方法,具体步骤如下:
步骤1,提取指标;
根据闭源软件,开源软件和混源软件的不同特性分别提取不同的一级指标和二级指标。
步骤2,构建模型;
以步骤1中提取的指标构建面向C/C++的混源软件质量模型,模型为“质量属性—质量子属性—度量指标”的三层软件质量框架。每一层包含不同的指标,质量属性对应所有一级指标,质量子属性对应所有二级指标,度量指标包含每个二级指标的度量元。
步骤3,获取度量元与设计度量方法;
3.1,通过代码的抽象语法树,测试文档,用户手册文档,运行日志解析度量元信息;
3.2,设计所有二级指标计算公式。
步骤4,设计自动化度量系统;
系统主要分为前端和后端两大模块,前端负责上传混源项目代码,文档与所使用开源代码、选择使用的模型、勾选指标、设置指标相对权重矩阵和展示度量结果功能。后端包含解析模块、矩阵构造模块、计算模块3个子模块。
本发明方法的优选方案中,步骤1中从ISO25010模型中提取的和闭源软件特性相关的二级指标根据C/C++语言的特性进行一些修改。对混源软件中C/C++语言交互带来的影响在可移植性下增加共存性和互操作性两个二级指标,安全性下的漏洞情况二级指标。根据C/C++语言的特性,如C/C++中指针的引用规范性,在可维护性指标下增加代码复杂性二级指标。在自主可控性一级指标下增加多源可控性和数据可交换性两个二级指标表示混源项目中开源代码与闭源代码交互所带来的影响。
本发明方法的优选方案中,步骤3中度量元的获取主要来自3个方面:
1)对C/C++代码使用CDT工具构建抽象语法树AST,AST上的每个节点都表示源代码中的一种结构,通过继承ASTVisitor对象,并重写其中的visit()方法访问AST中的节点获取源代码的静态信息,包括圈复杂度,类或函数的个数,C语言函数的调用关系,有效代码,文件间调用关系等。
2)对日志文档、测试文档、用户手册文档进行解析获取一些体现软件实际运行情况的信息,如日志信息中的总运行时间,平均无故障运行时间等,测试文档信息的总功能数,交换数据量等,用户指南信息的界面数,安装步骤等。
3)对所使用的开源项目在GitHub上的信息进行比较来获取和开源特性相关的二级指标的度量元,如收藏数,代码提交次数,版本分支数等。并比较上传到开源代码库中的开源代码与混源代码获取相似度信息和开源协议信息。对上传到开源代码库的开源代码和混源项目代码进行相似度匹配获取,将相似度0.9以上的代码定为相似代码,然后遍历混源软件代码获取相似代码片段并计算开源代码占比信息。
本发明方法的优选方案中,步骤4中计算子模块首先根据步骤3.1中得到的度量元信息和3.2中设计的每个二级指标的计算公式进行计算得到每个二级指标的度量值,然后采用层次分析法获得每个二级指标的权重,最后通过线性法对所有二级指标和其权重进行计算得到最终结果。
相对于现有技术,本发明具有如下优点:本发明提出了一种面向C/C++语言混源软件的自动化质量评估系统设计方法,解决了当前混源软件开发中质量难以把控的问题,通过代码,文档和日志多种方式获取丰富的度量元信息使度量结果更加客观有效,并提供了模型中所有指标的计算方法,提高了度量的自动化程度,极大的方便了对使用C和C++语言开发的混源软件质量的度量。
附图说明
图1为面向C/C++混源软件的质量模型;
图2为面向C/C++混源软件的自动化度量系统的结构图;
图3为系统中计算模块的工作流程图;
图4为系统的整体工作流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明的技术方案,下面结合附图对本发明的技术方案做进一步详细的说明。
本发明提供一个面向C/C++语言混源软件质量系统设计方法,以ISO25010质量模型为基础,根据开源以及混源软件特性提取相关指标构建一个面向C/C++语言的混源软件质量模型,并根据此模型提供了一种面向C/C++混源软件自动化质量评估系统设计方法。
实施例1:参见图1—图3,一种面向C/C++混源软件自动化质量评估系统设计方法,具体过程如下:
步骤1提取指标,根据闭源软件,开源软件和混源软件的特性共提取了9个一级指标和39个二级指标,从ISO25010模型中提取和闭源软件特性相关的指标,包括功能性,可靠性,易用性,可维护性,可移植性,资源效率,安全性7个一级指标和大部分的二级指标。根据开源软件需要频繁的发布、修改、迭代、群体化软件开发等特性提取支持性一级指标,包括社区规模,社区活跃度,服务支持能力3个二级指标。根据混源软件自主性,来源复杂等特性提取自主可控性一级指标,包括产权自主性,技术自主性,组织管理能力,多源可控性和数据可交换性等二级指标。同时对从ISO25010中提取的部分一级指标进行修改,如增加了安全性指标下的漏洞情况二级指标和可维护性下代码复杂性二级指标。
步骤2,构件模型,根据步骤1中所提取的指标构建面向C/C++的混源软件质量模型,如图1所示。模型为“质量属性—质量子属性—度量指标”的三层软件质量框架,有9个一级指标和39个二级指标。每个质量属性代表混源软件质量的一个方面,并且假设他们彼此都是独立的完整的,对应了步骤1中提取的每个一级指标。质量子属性是质量属性的细化,对应了步骤1中提取的每个二级指标。度量指标是质量子属性的度量元,也就是每个二级指标的具体参数指标,为度量评估提供数据支持,是度量评估的依据,度量指标可以借助统计、调查、工具、测量、经验等多种手段获取具体量化或定性参数。
步骤3,获取度量元与设计指标计算;
用来获取步骤2中度量元(度量指标)和设计每个二级指标的计算公式,度量元通过对上传的代码和文档进行解析来获取:
1.对C/C++代码构建抽象语法树AST,通过继承ASTVisitor对象,并重写其中的visit()方法访问AST中的节点获取源代码的静态信息,包括圈复杂度,类或函数的个数,函数
的调用关系,有效代码等;
获取文件间调用关系具体方法是:
a)C文件间调用:对C文件构建抽象语法树AST,通过AST获取所有声明节点IASTDeclarations,遍历所有声明结点,通过其实例类型判断该结点是否为函数定义结点IASTFunctionDefinition,如果是就构建访问器referenceVisitor遍历所有的函数定义结点,获取其中的所有引用结点。通过IBinding判断结点类型是否为函数类型IFunction。如果是就获取该函数名字,此时就获得了定义的函数到该函数的一条调用信息,通过被调用函数的绑定信息可以获取该函数的所在文件,即获得了该C文件到被调用函数所在文件的信息。
b)C++文件间调用:C++文件间调用信息通过函数调用关系和类继承关系两种方法来确定,函数间的调用关系和a)中方法类似,只不过首先对C++文件构建抽象语法树AST,后续步骤一致。而类的继承关系通过声明节点找到复合类型节点IASTCompositeTypeSpecifier,通过IBinding判断该节点类型是否为C++类节点,如果是便通过IBinding调用getBase()方法获取其基类。即获取了该文件到其基类所在文件的一条调用信息。
c)C文件与C++文件相互调用:由于C是面向过程语言,没有类的概念,因此C文件和C++文件间最多只有函数级别的调用,因此利用函数间调用关系来获取C文件和C++文件间调用关系。具体方法与a)中类似,利用抽象语法树中函数定义节点获取函数间调用关系,再通过函数所属文件建立C文件和C++文件间调用关系。
2.对日志文档、测试文档、用户手册文档,使用文档解析工具Apache POI对其进行解析,获取一些体现软件实际运行情况的信息,比如日志信息中的总运行时间,平均无故障运行时间等,测试文档信息的总功能数,交换数据量等,用户指南信息的界面数,安装步骤等;
3.通过混源软件所使用的开源项目在GitHub上的信息获取和开源特性相关的二级指标的度量元,如收藏数,代码提交次数,版本分支数获取等。并比较上传到开源代码库中的开源代码与混源代码获取相似度信息和开源协议信息。
步骤4进行自动化度量系统的结构设计,图2给出了面向C/C++混源软件的自动化度量系统的体系结构,主要分为前端和后端两个部分:
1.前端包含5个功能:
A)上传混源项目的代码,文档与所使用的开源代码;
B)选择使用的度量模型:除了面向C/C++的混源软件质量模型,系统还提供一些经典的质量模型进行度量,如ISO25010模型,Boehm模型;
C)勾选指标;通过勾选不同的指标组合,构建使用者想要的模型;
D)设置指标相对权重判断矩阵;对两两指标间的相对重要性进行设置,来计算所有指标的一个相对权重值;
E)展示度量结果:以图表形式展示度量结果和基本信息。
2.后端包含3个子模块:
A)解析模块:负责对进行度量的软件进行解析,包括对其代码、测试文档、用户指南和日志的解析,获取多种度量元信息,通过许多工具可以进行解析,比如CDT可以进行代码的解析,Apache POI进行文档的解析;
B)矩阵构造模块:负责对用户输入的各质量属性两两之间的相对重要权重值构建判断矩阵,并验证输入的相对权重是否符合一致性;
C)评分计算模块:由图3给出计算流程图
1)利用A)中解析得到的度量元和步骤3中设计的每个二级指标的计算公式进行计算得到每个二级指标的度量值,大多数质量模型只是给出定义,并未提出具体的指标度量方法,本发明提供了模型中所有指标的计算公式,极大方便了自动化度量系统设计与实现;
2)根据B)中构造的权重矩阵采用层次分析法获得每个二级指标的权重;
3)最后通过线性法对所有二级指标和其权重进行加权计算得到最终结果。
实施例2:
图4为本发明公开的一种面向C/C++混源软件进行质量度量系统的实施例流程图,根据流程图依次实施:
1.上传项目代码与文档,包括混源项目的代码,项目中所使用的开源代码,用户手册文档,运行日志和测试文档;
2.对混源项目代码构建抽象语法树AST获取圈复杂度,类或函数的个数,函数的调用关系等代码信息,将上传到开源代码库的开源代码和进行度量的混源代码进行对比计算相似代码占比信息,对日志文档、测试文档、用户手册文档使用文档解析工具ApachePOI进行解析,获取一些体现软件实际运行情况的信息,如总功能数,交换数据量等,通过所使用的开源项目在GitHub上的信息获取收藏数,代码提交次数,版本分支数等信息。
3.选择模型,系统初始提供了ISO25010模型,Boehm模型和面向C/C++混源软件质量模型,也可以通过勾选指标使用其他模型;
4.设置权重矩阵,对所有一级指标进行两两间的相对重要性判断,a指标和b指标间相对重要性有9:1,7:1,5:1,3:1,1:1,1:3,1:5,1:7,1:9共9个选择,表示了a指标相对于b指标从非常重要,到同等重要,再到非常不重要共9个级别的相对重要程度,通过所有指标间的相对重要程度构建一个相对权重判断矩阵,然后通过刚才的步骤继续构建二级指标的相对权重判断矩阵;
5.进行计算,通过4构造的权重判断矩阵根据层次分析法计算所有二级指标间相对权重和一级指标间相对权重。结合2中所有度量元信息和3中模型指标的计算公式计算所有二级指标值,根据每个一级指标下所有二级指标的值和他们的权重进行计算得到每个一级指标值,最后将所有二级指标值和二级指标相对权重进行计算得到度量结果;
6.将5中得到的度量结果,每个二级指标值,一级指标值和2中得到的部分度量元信息通过图形或表格形式进行展示。
以上所述仅是本实验优选实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和等同替换,这些对本发明权利要求进行改进和等同替换后的技术方案,均落入本发明的保护范围。

Claims (4)

1.一种面向C/C++混源软件的自动化质量评估系统设计方法,其特征在于,具体步骤如下:
步骤1,提取指标;
根据闭源软件,开源软件和混源软件的不同特性分别提取不同的一级指标和二级指标;
步骤2,构建模型;
以步骤1中提取的指标构建面向C/C++的混源软件质量模型,模型为“质量属性—质量子属性—度量指标”的三层软件质量框架;每一层包含不同的指标,质量属性对应所有一级指标,质量子属性对应所有二级指标,度量指标包含每个二级指标的度量元;
步骤3,获取度量元与设计指标计算;
3.1,通过代码的抽象语法树,测试文档,用户手册文档,运行日志解析度量元信息;
3.2,设计所有二级指标计算公式;
步骤4,设计自动化度量系统;
系统主要分为前端和后端两大模块,前端负责上传混源项目代码,文档与所使用开源代码、选择使用的模型、勾选指标、设置指标相对权重矩阵和展示度量结果功能;后端包含解析模块、矩阵构造模块、计算模块3个子模块,解析模块负责对上传的代码,文档进行解析提取度量元信息,矩阵构造模块负责对用户输入的各质量属性两两之间的相对重要权重值构建判断矩阵,并验证输入的相对权重是否符合一致性,计算模块负责对每个二级指标进行计算,并结合矩阵构造模块获得的权重计算最终度量结果。
2.根据权利要求1所述的面向C/C++语言的混源软件自动化质量评估系统设计方法,其特征在于,所述步骤1中从ISO25010模型中提取的和闭源软件特性相关的二级指标根据C/C++语言的特性进行一些修改,对混源软件中C/C++语言交互带来的影响在可移植性下增加共存性和互操作性两个二级指标,安全性下的漏洞情况二级指标;根据C/C++语言的特性,包括C/C++中指针的引用规范性,在可维护性指标下增加代码复杂性二级指标;在自主可控性一级指标下增加多源可控性和数据可交换性两个二级指标表示混源项目中开源代码与闭源代码交互所带来的影响。
3.根据权利要求1所述的面向C/C++语言的混源软件自动化质量评估系统设计方法,其特征在于,所述步骤3中度量元的获取主要来自3个方面:
1)对C/C++代码使用CDT工具构建抽象语法树AST,AST上的每个节点都表示源代码中的一种结构,通过继承ASTVisitor对象,并重写其中的visit()方法访问AST中的节点获取源代码的静态信息,包括圈复杂度,类或函数的个数,C语言函数的调用关系,有效代码,文件间调用关系;
2)对日志文档、测试文档、用户手册文档进行解析获取一些体现软件实际运行情况的信息,如日志信息中的总运行时间,平均无故障运行时间等,测试文档信息的总功能数,交换数据量等,用户指南信息的界面数,安装步骤;
3)对所使用的开源项目在GitHub上的信息进行比较来获取和开源特性相关的二级指标的度量元,包括收藏数,代码提交次数,版本分支数,并比较上传到开源代码库中的开源代码与混源代码获取相似度信息和开源协议信息,对上传到开源代码库的开源代码和混源项目代码进行相似度匹配获取,将相似度0.9以上的代码定为相似代码,然后遍历混源软件代码获取相似代码片段并计算开源代码占比信息。
4.根据权利要求1所述的面向C/C++语言的混源软件自动化质量评估系统设计方法,其特征在于,所述步骤4中计算子模块首先根据步骤3.1中得到的度量元信息和3.2中设计的每个二级指标的计算公式进行计算得到每个二级指标的度量值,然后采用层次分析法获得每个二级指标的权重,层次分析法是美国运筹学家匹茨堡大学教授萨蒂提出的一种层次权重决策分析方法,根据问题的性质和要达到的总目标,将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系将因素按不同的层次聚集组合,形成一个多层次的分析结构模型,从而最终使问题归结为最低层相对于最高层的相对重要权值的确定或相对优劣次序的排定。最后通过线性法对所有二级指标和其权重进行加权计算得到最终结果。
CN202011271320.2A 2020-11-13 2020-11-13 一种面向c/c++混源软件的自动化质量评估系统设计方法 Withdrawn CN112380123A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011271320.2A CN112380123A (zh) 2020-11-13 2020-11-13 一种面向c/c++混源软件的自动化质量评估系统设计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011271320.2A CN112380123A (zh) 2020-11-13 2020-11-13 一种面向c/c++混源软件的自动化质量评估系统设计方法

Publications (1)

Publication Number Publication Date
CN112380123A true CN112380123A (zh) 2021-02-19

Family

ID=74582323

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011271320.2A Withdrawn CN112380123A (zh) 2020-11-13 2020-11-13 一种面向c/c++混源软件的自动化质量评估系统设计方法

Country Status (1)

Country Link
CN (1) CN112380123A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590486A (zh) * 2021-02-23 2021-11-02 中国人民解放军军事科学院国防科技创新研究院 一种基于度量的开源软件代码质量评价方法
CN113626335A (zh) * 2021-08-23 2021-11-09 公安部交通管理科学研究所 一种面向公安交通管理应用软件的质量评价方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590486A (zh) * 2021-02-23 2021-11-02 中国人民解放军军事科学院国防科技创新研究院 一种基于度量的开源软件代码质量评价方法
CN113626335A (zh) * 2021-08-23 2021-11-09 公安部交通管理科学研究所 一种面向公安交通管理应用软件的质量评价方法及系统

Similar Documents

Publication Publication Date Title
Troy et al. Measuring the quality of structured designs
Tsantalis et al. Identification of move method refactoring opportunities
CN103257921B (zh) 一种基于改进随机森林算法的软件故障预测系统及其方法
CN109408359A (zh) 一种软件测试过程质量度量方法和系统
CN100507869C (zh) 基于关系模型分析系统性能采样数据的方法和设备
Pan et al. Refactoring software packages via community detection in complex software networks
CN102945204B (zh) 一种基于接口模型的操作系统标准符合性测试的充分性评估方法
CN101261604A (zh) 一种软件质量评价装置及软件质量评价的定量分析方法
Nyamawe et al. Recommending refactoring solutions based on traceability and code metrics
CN112380123A (zh) 一种面向c/c++混源软件的自动化质量评估系统设计方法
CN107066384A (zh) 基于Halstead复杂度度量的软件演化评估方法
Galli et al. Software product quality models, developments, trends, and evaluation
CN102156641A (zh) 一种软件成本置信区间预测方法及系统
Chowdhury et al. Revisiting the debate: Are code metrics useful for measuring maintenance effort?
Pan et al. Class structure refactoring of object-oriented softwares using community detection in dependency networks
Saydemir et al. On the use of evolutionary coupling for software architecture recovery
Laake et al. Package ‘mrds’
Lavazza et al. Automated Measurement of UML Models: an open toolset approach.
van den Berg et al. Quality assessment for LCA
Zozas et al. Forecasting the principal of code technical debt in JavaScript applications
Andersson Site descriptive modelling-strategy for integrated evaluation
KR102125010B1 (ko) 데이터베이스 전환 분석 시스템 및 방법
Ratzinger et al. Quality assessment based on attribute series of software evolution
CN110717244B (zh) 基于平均偏离度算法的数据信任度分析计算机仿真方法
Fioravanti et al. A tool for process and product assessment of C++ applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20210219