CN113590486A - 一种基于度量的开源软件代码质量评价方法 - Google Patents

一种基于度量的开源软件代码质量评价方法 Download PDF

Info

Publication number
CN113590486A
CN113590486A CN202110882005.1A CN202110882005A CN113590486A CN 113590486 A CN113590486 A CN 113590486A CN 202110882005 A CN202110882005 A CN 202110882005A CN 113590486 A CN113590486 A CN 113590486A
Authority
CN
China
Prior art keywords
software
indexes
extracting
open source
measurement
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.)
Pending
Application number
CN202110882005.1A
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.)
National Defense Technology Innovation Institute PLA Academy of Military Science
Original Assignee
National Defense Technology Innovation Institute PLA Academy of Military Science
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 National Defense Technology Innovation Institute PLA Academy of Military Science filed Critical National Defense Technology Innovation Institute PLA Academy of Military Science
Publication of CN113590486A publication Critical patent/CN113590486A/zh
Pending 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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种基于度量的开源软件质量评价方法,属软件质量评测技术领域。针对现有软件质量评价方法的不足,通过分析开源软件的特点,首先构建一个包含6个度量维度、26个二级度量指标和36个三级度量项的开源软件质量度量体系,并设置各度量项的初始权重因子。然后,针对每个维度选取不同的技术提取相应度量项的度量值。最后,将实际取得的度量值乘以相应的权重因子计算开源软件的综合得分。

Description

一种基于度量的开源软件代码质量评价方法
技术领域
本发明涉及一种基于度量的开源软件质量评价方法,属软件质量评测技术领域。
背景技术
开源软件是指一种源代码可以自由获取和传播的计算机软件,在开源许可证的规定之下允许被许可人对软件进行使用、修改和传播。开源软件的特点是源代码开放共享、大众化协同和群智迭代开发,开源软件在代码托管平台的流行度、活跃度、版本演化信息、开源协议遵守情况以及上下游依赖代码的安全性等可从不同角度刻画软件质量。
然而,现有的传统软件质量模型一般仅从软件产品的外部质量和软件代码的内部质量对软件质量进行评价,而没有考虑开源软件这些特有的质量特征,如社区流行度、许可证安全性、上下游依赖特征以及持续演化特征等。因此,其仅适于传统的闭源软件评价,不适于开源软件的代码质量评价。
发明内容
本发明的目的在于针对现有软件质量评价方法的不足,提出一种基于度量的开源软件质量评价方法。
本方法的创新点在于:通过分析开源软件的特点,首先构建一个包含6个度量维度、26个二级度量指标和36个三级度量项的开源软件质量度量体系,并设置各度量项的初始权重因子。然后,针对每个维度选取不同的技术提取相应度量项的度量值。最后,将实际取得的度量值乘以相应的权重因子计算开源软件的综合得分。
一种基于度量的开源软件质量评价方法,包括以下步骤:
步骤1:基于静态程序解析技术,从开源软件中提取7个特征指标对软件的内在代码质量进行度量,包括:可维护性、可读性、可扩展性、灵活性、简洁性、可复用性和可测试性。
步骤2:基于专家评审和软件测试技术,提取6个二级特征指标和21个三级特征指标对软件的外在产品质量进行度量,包括:
步骤2.1:提取4个功能性指标,分别为适应性、准确性、互操作性和安全保密性;
步骤2.2:提取3个稳定性指标,分别为成熟性、容错性和易恢复性;
步骤2.3:提取2个效率指标,分别为时间特性和空间特性;
步骤2.4:提取4个可维护性指标,分别为易分析性、易改变性、稳定性和易测试性;
步骤2.5:提取4个可移植性指标,分别为适应性、易安装性、易替换性和共存性;
步骤3:基于软件版本管理技术,提取3个二级、15个三级特征指标对开源软件的社区质量进行度量,包括:
步骤3.1:提取3个二级指标,分别为:活跃度、流行度和开发能力;
步骤3.2:提取5个活跃度的度量指标,分别为commit数、代码更新速度、bug修复速度、issue数和issue响应时间;
步骤3.3:提取5个流行度的度量指标,分别为下载量、fork数、star数、watch数和branch数。
步骤4:基于开源许可证检测技术提取4个二级特征指标对开源软件的法律安全性进行度量,包括:
步骤4.1:检测软件代码中声明了许可证的文件数;
步骤4.2:计算软件代码中声明许可证的文件与文件总数的百分比,即许可证的覆盖率;
步骤4.3:计算软件代码中声明的许可证中被OSI认可的许可证比例;
步骤4.4:检测软件代码中是否存在许可证冲突。
步骤5:基于代码同源检测技术提取3个二级特征指标对开源软件的供应链可靠性进行度量,具体为:
步骤5.1:检测软件代码中依赖的第三方库的可靠性;
步骤5.2:检测软件代码中是否存在未声明的复制代码;
步骤5.3:检测软件代码中通过部署方式依赖的服务;
步骤6:基于增量式数据分析技术提取3个二级特征指标对开源软件的演化趋势进行度量,包括:
步骤6.1:获取软件三个月前的质量得分E3;
步骤6.2:获取软件一个月前的质量得分E1;
步骤6.3:获取软件一周前的质量得分E0;
步骤6.4:根据步骤6.1至步骤6.3的得分利用公式Et=f(E3,E1)+g(E1,E0)计算软件质量的演化得分Et。
步骤7:根据设定的各级度量指标的权重计算开源软件的综合质量得分;
至此,经过步骤1到步骤7,完成了一种基于度量的开源软件代码质量评价方法。
附图说明
图1为本发明构建的开源软件质量模型图。
具体实施方式
下面结合附图和实施例对本发明的进行详细的描述。
步骤1:内部质量度量。
基于静态程序解析技术JDT和CheckStyle等工具从给定开源软件的源代码中分别提取代码的可维护性、可读性、可扩展性、灵活性、简洁性、可复用性和可测试性7项度量值;
步骤2:产品质量度量。
基于专家评审和软件测试技术提取6个二级特征指标和21个三级特征指标对软件的外在产品质量进行度量,具体为:
步骤2.1、提取4个功能性指标,分别为适应性、准确性、互操作性和安全保密性;
步骤2.2、提取3个稳定性指标,分别为成熟性、容错性和易恢复性;
步骤2.3、提取2个效率指标,分别为时间特性和空间特性;
步骤2.4、提取4个可维护性指标,分别为易分析性、易改变性、稳定性和易测试性;
步骤2.5、提取4个可移植性指标,分别为适应性、易安装性、易替换性和共存性;
步骤3:社区方面的质量度量。
基于软件版本管理技术提取3个二级、15个三级特征指标对开源软件的社区质量进行度量,具体为:
步骤3.1、提取3个二级指标,分别为:活跃度、流行度和开发能力;
步骤3.2、提取5个活跃度的度量指标,分别为commit数、代码更新速度、bug修复速度、issue数和issue响应时间;
步骤3.3、提取5个流行度的度量指标,分别为下载量、fork数、star数、watch数和branch数。
步骤4:法律方面的质量度量。
基于开源许可证检测技术提取4个二级特征指标对开源软件的法律安全性进行度量,具体为:
步骤4.1、检测软件代码中声明了许可证的文件数;
步骤4.2、计算软件代码中声明许可证的文件与文件总数的百分比,即许可证的覆盖率;
步骤4.3、计算软件代码中声明的许可证中被OSI认可的许可证比例;
步骤4.4、检测软件代码中是否存在许可证冲突。
步骤5:供应链方面的度量。
基于代码同源检测技术提取3个二级特征指标对开源软件的供应链可靠性进行度量,具体为:
步骤5.1、检测软件代码中依赖的第三方库的可靠性;
步骤5.2、检测软件代码中是否存在未声明的复制代码;
步骤5.3、检测软件代码中通过部署方式依赖的服务;
步骤6:演化历史的度量。
基于增量式数据分析技术提取3个二级特征指标对开源软件的演化趋势进行度量,具体为:
步骤6.1、获取软件三个月前的质量得分E3;
步骤6.2、获取软件一个月前的质量得分E1;
步骤6.3、获取软件一周前的质量得分E0;
步骤6.4、根据步骤6.1至步骤6.3的得分利用公式Et=f(E3,E1)+g(E1,E0)计算软件质量的演化得分Et。
步骤7:计算综合得分。根据设定的各级度量指标的权重计算开源软件的综合质量得分。

Claims (1)

1.一种基于度量的开源软件质量评价方法,其特征在于,包括以下步骤:
步骤1:基于静态程序解析技术,从开源软件中提取7个特征指标对软件的内在代码质量进行度量,包括:可维护性、可读性、可扩展性、灵活性、简洁性、可复用性和可测试性;
步骤2:基于专家评审和软件测试技术,提取6个二级特征指标和21个三级特征指标对软件的外在产品质量进行度量,包括:
步骤2.1:提取4个功能性指标,分别为适应性、准确性、互操作性和安全保密性;
步骤2.2:提取3个稳定性指标,分别为成熟性、容错性和易恢复性;
步骤2.3:提取2个效率指标,分别为时间特性和空间特性;
步骤2.4:提取4个可维护性指标,分别为易分析性、易改变性、稳定性和易测试性;
步骤2.5:提取4个可移植性指标,分别为适应性、易安装性、易替换性和共存性;
步骤3:基于软件版本管理技术,提取3个二级、15个三级特征指标对开源软件的社区质量进行度量,包括:
步骤3.1:提取3个二级指标,分别为:活跃度、流行度和开发能力;
步骤3.2:提取5个活跃度的度量指标,分别为commit数、代码更新速度、bug修复速度、issue数和issue响应时间;
步骤3.3:提取5个流行度的度量指标,分别为下载量、fork数、star数、watch数和branch数;
步骤4:基于开源许可证检测技术提取4个二级特征指标对开源软件的法律安全性进行度量,包括:
步骤4.1:检测软件代码中声明了许可证的文件数;
步骤4.2:计算软件代码中声明许可证的文件与文件总数的百分比,即许可证的覆盖率;
步骤4.3:计算软件代码中声明的许可证中被OSI认可的许可证比例;
步骤4.4:检测软件代码中是否存在许可证冲突;
步骤5:基于代码同源检测技术提取3个二级特征指标对开源软件的供应链可靠性进行度量,包括:
步骤5.1:检测软件代码中依赖的第三方库的可靠性;
步骤5.2:检测软件代码中是否存在未声明的复制代码;
步骤5.3:检测软件代码中通过部署方式依赖的服务;
步骤6:基于增量式数据分析技术提取3个二级特征指标对开源软件的演化趋势进行度量,包括:
步骤6.1:获取软件三个月前的质量得分E3;
步骤6.2:获取软件一个月前的质量得分E1;
步骤6.3:获取软件一周前的质量得分E0;
步骤6.4:根据步骤6.1至步骤6.3的得分利用公式Et=f(E3,E1)+g(E1,E0)计算软件质量的演化得分Et。
步骤7:根据设定的各级度量指标的权重计算开源软件的综合质量得分。
CN202110882005.1A 2021-02-23 2021-08-02 一种基于度量的开源软件代码质量评价方法 Pending CN113590486A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110201656 2021-02-23
CN202110201656X 2021-02-23

Publications (1)

Publication Number Publication Date
CN113590486A true CN113590486A (zh) 2021-11-02

Family

ID=78253974

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110882005.1A Pending CN113590486A (zh) 2021-02-23 2021-08-02 一种基于度量的开源软件代码质量评价方法

Country Status (1)

Country Link
CN (1) CN113590486A (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809066A (zh) * 2015-04-30 2015-07-29 重庆大学 一种通过代码质量评估预测开源软件维护工作量的方法
US20160224453A1 (en) * 2015-01-30 2016-08-04 Lindedln Corporation Monitoring the quality of software systems
CN106482777A (zh) * 2015-08-26 2017-03-08 镇江市金舟船舶设备有限公司 基于手机背夹和手机及其应用软件的实时环境质量监测评估系统
CN107797910A (zh) * 2016-08-31 2018-03-13 中国电力科学研究院 一种调度自动化系统软件质量的评价方法
CN110832479A (zh) * 2017-05-22 2020-02-21 Macpaw软件开发公司 用于软件激活和许可证跟踪的系统和方法
CN111177004A (zh) * 2019-12-30 2020-05-19 中信百信银行股份有限公司 软件测试综合评价方法、装置、电子设备及存储介质
CN111913887A (zh) * 2020-08-19 2020-11-10 中国人民解放军军事科学院国防科技创新研究院 一种基于贝塔分布和贝叶斯估计的软件行为预测方法
CN112084309A (zh) * 2020-09-17 2020-12-15 北京中科微澜科技有限公司 基于开源软件图谱的许可证选取方法和系统
CN112380123A (zh) * 2020-11-13 2021-02-19 众信方成智能科技(南京)有限公司 一种面向c/c++混源软件的自动化质量评估系统设计方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160224453A1 (en) * 2015-01-30 2016-08-04 Lindedln Corporation Monitoring the quality of software systems
CN104809066A (zh) * 2015-04-30 2015-07-29 重庆大学 一种通过代码质量评估预测开源软件维护工作量的方法
CN106482777A (zh) * 2015-08-26 2017-03-08 镇江市金舟船舶设备有限公司 基于手机背夹和手机及其应用软件的实时环境质量监测评估系统
CN107797910A (zh) * 2016-08-31 2018-03-13 中国电力科学研究院 一种调度自动化系统软件质量的评价方法
CN110832479A (zh) * 2017-05-22 2020-02-21 Macpaw软件开发公司 用于软件激活和许可证跟踪的系统和方法
CN111177004A (zh) * 2019-12-30 2020-05-19 中信百信银行股份有限公司 软件测试综合评价方法、装置、电子设备及存储介质
CN111913887A (zh) * 2020-08-19 2020-11-10 中国人民解放军军事科学院国防科技创新研究院 一种基于贝塔分布和贝叶斯估计的软件行为预测方法
CN112084309A (zh) * 2020-09-17 2020-12-15 北京中科微澜科技有限公司 基于开源软件图谱的许可证选取方法和系统
CN112380123A (zh) * 2020-11-13 2021-02-19 众信方成智能科技(南京)有限公司 一种面向c/c++混源软件的自动化质量评估系统设计方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ADEWOLE ADEWUMI ET AL.: "A systematic literature review of open source software quality assessment models", 《SPRINGERPLUS》 *
包盼盼 等: "面向开源源码大数据的数据质量研究", 《计算机科学与探索》 *
李光杰 等: "基于实时重构的代码质量教育", 《计算机教育》 *

Similar Documents

Publication Publication Date Title
Da Costa et al. A framework for evaluating the results of the szz approach for identifying bug-introducing changes
CN102722436B (zh) 一种增量覆盖信息的统计方法和装置
Briand et al. An investigation into coupling measures for C++
CN107239458B (zh) 基于大数据推算开发对象关系的方法及装置
US20170357809A1 (en) Systems and methods for flaw attribution and correlation
CN105068921B (zh) 基于App对比分析的Android应用商店可信度的评价方法
US20080320457A1 (en) Intermediate Code Metrics
Zerouali et al. On the diversity of software package popularity metrics: An empirical study of npm
CN106909510A (zh) 一种获取测试用例的方法以及服务器
Alfayez et al. An exploratory study on the influence of developers in technical debt
Chen et al. Extracting and studying the Logging-Code-Issue-Introducing changes in Java-based large-scale open source software systems
CN109857637B (zh) 基于注解的Java语言方法覆盖率和方法输入输出统计方法
Walkinshaw et al. Are 20% of files responsible for 80% of defects?
Ardito et al. Methodological guidelines for measuring energy consumption of software applications
Huang et al. Characterizing and detecting configuration compatibility issues in android apps
Li et al. Logtracker: Learning log revision behaviors proactively from software evolution history
CN112860545B (zh) 一种软件缺陷检测方法与装置
Petrulio et al. SZZ in the time of pull requests
CN113590486A (zh) 一种基于度量的开源软件代码质量评价方法
Xiao et al. An empirical study of regression bug chains in linux
CN112380123A (zh) 一种面向c/c++混源软件的自动化质量评估系统设计方法
CN103970654A (zh) 一种软件可靠性虚拟测试方法
Steidl et al. How do java methods grow?
CN115525575A (zh) 一种基于Dataworks平台的数据自动化测试方法及系统
Buhnova et al. Failure data collection for reliability prediction models: A survey

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