CN106919373A - 一种程序代码质量评估方法 - Google Patents
一种程序代码质量评估方法 Download PDFInfo
- Publication number
- CN106919373A CN106919373A CN201511000165.XA CN201511000165A CN106919373A CN 106919373 A CN106919373 A CN 106919373A CN 201511000165 A CN201511000165 A CN 201511000165A CN 106919373 A CN106919373 A CN 106919373A
- Authority
- CN
- China
- Prior art keywords
- value
- dimension
- measurement metric
- program code
- quality
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/77—Software metrics
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种程序代码质量评估方法,其中,包括:确定评估维度;确定每一维度的度量元;确定每一维度占权重:确定每一度量元的权重;确定每一度量元评分值;计算评估结果加权值;计算评估结果值,包括:QOC=∑Wdi*(∑ei*Wei);其中,QOC为软件评估结果值,Wdi为维度的权重,ei为每个度量元的权重,Wei为每个度量元的评分值。
Description
技术领域
本发明涉及计算机程序评估技术领域,特别涉及一种程序代码质量评估方法。
背景技术
为了快速完成对应用系统的国产化迁移优化工作,快速给出评估结果,对于较为复杂的问题通过经验分析给出替换方案,完成wintel平台到国产化平台的顺利迁移工作,软件代码质量直接影响了代码迁移工作的效率和迁移后软件工作的效率,因此对软件质量的评估成为了迁移工作中重要的环节。因此要保证软件的质量,就要对软件的质量进行度量,及时的发现问题,针对发现的问题进行修补和补救,才能促进软件迁移工作的可持续发展。
目前的软件度量体系采用评价方式大部分是非0即1的度量方式,这种传统的度量方法不能满足国产化迁移软件复杂度高,高安全性,高可靠性的软件质量评价。因此建立起一套完善的质量评价模型对于迁移工作的推进具有指导性建设。
目前在对软件质量的评价时,通常采用的方法有采用对功能点和代码行进行度量。通过功能点进行度量软件规模比较有影响力的是IFPUG功能点方法和Mark2功能点方法。IFPUG方法是把应用系统按照组件进行分解,并对每类组件以IFPUG定义的功能点为度量单位进行计算,从而得到反映整个应用系统规模的功能点数。MARK2功能点方法将整个应用软件描述成一系列逻辑事务的集合,根据这些集合度量软件,每个逻辑事务包含了输入、过程、输出三个部分。这些软件度量的方法不依赖于软件的具体实现,有些甚至可以在需求明确以后就可以做出对规模的度量,起到了评估预算的作用,但是这些方法的估算是因人而异的,往往偏差的情况比较大。
发明内容
本发明的目的在于提供一种程序代码质量评估方法,用于解决上述现有技术的问题。
本发明的一种程序代码质量评估方法,其中,包括:确定评估维度;确定每一维度的度量元;确定每一维度占权重:确定每一度量元的权重;确定每一度量元评分值;计算评估结果加权值;计算评估结果值,包括:QOC=∑Wdi*(∑ei*Wei);其中,QOC为软件评估结果值,Wdi为维度的权重,ei为每个度量元的权重,Wei为每个度量元的评分值。
根据本发明的程序代码质量评估方法的一实施例,其中,该维度包括:正确性、规范性、易读性、安全性和维护性。
根据本发明的程序代码质量评估方法的一实施例,其中,该度量元包括:类数、类层级数、引用包数、路径数、函数个数、函数参数、函数返回值、直接调用个数、层级数以及调用者个数。
根据本发明的程序代码质量评估方法的一实施例,其中,该度量元评分值的计算方法包括:g(X)=c(x+d)b-1e-a(x+d);其中,X为软件特征值,a、b、c和d为参数,计算的方程组包括:
c(d)b-1e-ad=y0;
C(x1+d)b-1e-a(x1-d)=1;
C(x2+d)b-1e-a(x2-d)=y1;
其中x1表示评分值g(x)是1的时候特征值x的取值;x2表示评分值g(x)为及格的时候特征值x的取值;y0表示x的值是1的时候评分值g(x)的取值,y1表示x的值及格的时候g(x)的取值;x0、x1、y0以及y1为预设值。
综上,本发明在分析了代码质量的理论基础上,在实施对某邮件系统进行的应用中得到了验证,证明了代码质量评估模型在自主可控迁移过程中的可行性,提高了自主可控平台软件迁移的效率。
附图说明
图1所示为本发明一种程序代码质量评估方法的流程图;
图2所示为圈复杂度测量值曲线图;
图3所示为圈复杂度评分模型图;
图4所示为质量模型的结构图;
图5为质量评分值的示意图
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
图1所示为本发明一种程序代码质量评估方法的流程图,参考图1,为了更准确的有效的度量软件质量,本发明将代码质量划分为几个不同的维度,这并不属于可以直接度量的指标,在每个度量维度下面划分出可以直接度量的度量元。
参考图1,本发明的一种程序代码质量评估方法,包括:
确定评估维度;
确定每一维度的度量元;
确定每一维度占权重:
确定每一度量元评分值;
计算评估结果加权值;
计算评估结果值,
根据评估结果值,确定评估结果优化方案,例如是否需要进行改进;
在进行优化方案后,重新进行上述的评估结果值的计算。
参考图1,进一步说明本发明一种程序代码质量评估方法的实现原理。
参考图1,为了更准确的有效的度量软件质量,本发明将代码质量划分为几个不同的维度,这并不属于可以直接度量的指标,在每个度量维度下面划分出可以直接度量的度量元。可以采用一些具体的手段来衡量的指标。
本发明在质量评价过程中选取了一些属于某维度的直接度量元,作为软件度量的指标,分别为类数,类层级数,引用包数,路径数,函数个数,函数参数,函数返回值,直接调用个数,层级数,调用者个数。在对每一具体度量元进行度量时应用函数g(X)=c(x+d)b-1e-a(x+d)作为具体的模型,X是某个软件特征度量值(本领域技术人员公知),g(x)是给出这个特征的评分值,a,b,c,d作为四个待定参数,可以由以下的方程组得出:
c(d)b-1e-ad=y0;
C(x1+d)b-1e-a(x1-d)=1;
C(x2+d)b-1e-a(x2-d)=y1;
其中x1表示评分值g(x)是1的时候特征值x的取值;x2表示评分值g(x)为及格的时候特征值x的取值;y0表示x的值是1的时候评分值g(x)的取值,y1表示x的值及格的时候g(x)的取值。因此应先确定x0,x1,y0,y1的值,才能确定a,b,c,d四个值,才能建立起评分的具体模式。x0,x1,y0,y1的值的确定可以在实际中通过大量统计和积累的结果得出,一般是一个不断调整和改进的过程。
图2所示为圈复杂度测量值曲线图,图3所示为圈复杂度评分模型图,如图2以及图3所示,对于一种实施例,实现对度量元圏复杂度的评分模型:通过对多个软件(例如10个)对应度量元圈复杂度具体测量值的统计,例如,取x0初始值为统计最大值16.0,取x1初始值统计平均值13.26,取y0,y1初始值为0,0,根据上述公式可得参数a,b,c,d四个值,可得初始g(x)-x函数曲线,根据该曲线可得第一次迭代后x0,x1,y0,y1的值,经过大量迭代过程取得多个x0,x1,y0,y1的值取平均值可归纳出x0,x1,y0,y1的具体数值以建立起该度量元的评分模型曲线,其中横坐标表示度量元的具体取值,纵坐标表示评分值g(x)的具体取值。
质量评估模型将代码的质量划分为六个维度,每个维度包含不同的度量元,度量元的评分值构成了这个维度的指标集,而代码的质量可以由个维度的质量总和构成,即代码的质量等于了各个维度质量的总和。六个维度分别为正确性,规范性,易读性,安全性,可维护性,可移植性。代码的质量最终的结果是六个维度质量和乘以各自的权重得到。各个维度下的具体度量元可以由用户根据需求个性化定制,单需涵盖基本的度量元。维度的权重是由于各个用户对软件关注的焦点差别而区别对待,用户应针对不同的需求对质量评价模型进行删减。
根据用户需求确定评估维度:本实施例选取了某邮件系统进行试验具体说明本发明一种程序代码质量评估方法,该模型选取了三个维度来评价,正确性,安全性和可维护性。
图4所示为质量模型的结构图,参考图1以及图4,本实施例的一种程序代码质量评估方法包括:
确定每一维度考量的度量元:确定了三个维度下所选取的度量元以及计算方法和各维度应当遵守的规范,从而初步拟定了各维度的评价标准,将模型转化为实际可操作的具体工作。
确定每一维度占权重:根据用户需求确定个维度权重,正确性40%,可维护性40%,安全性20%。每一度量元占权重见表1,表1所示为计算度量元评分值表。
确定每一度量元评分标准:根据上述算法,通过对多个软件的具体度量元实测得出的评分模型作为评分标准;
表1
计算评估结果加权值:代码质量最终的结果是各维度质量乘以其权重后再累加,用公式表示如下:
QOC=∑Wdi*(∑ei*Wei);
其中,QOC为软件评分值,Wdi为维度的权重,ei为每个度量元的权重,Wei为每个度量元的评分值,
每个维度质量评分等于该维度下所有指标的度量元的评分值之和。正确性评分值(0-1):25%*0.79+25%*0.83+25%*0.76+25%*0.73=0.775;可维护性评分值(0-1):30%*0.88+30%*0.90+40%*0.85=0.874;安全性评分值(0-1):0.89。代码质量等于个维度质量总和:40%*0.775+40%*0.874+20%*0.89=0.838。
确定评估结果优化方案:根据本次代码质量评估结果,发现正确性评分值较低,问题比较多,有代码编写错误,命名不规范以及大量的调试代码等。根据本次结果给出相应问题的修复建议,并要求用户按照优化方案对代码进行修改,对改进后的效果进行再评估。
图5为质量评分值的示意图,如图5所示,重复进行质量评估:经过两轮的改进修复,要求整改的问题已经基本得到修复,通过软件扫描过程中发现的问题数趋于稳定质量评分值达到用户期望的水平。
综上,本发明在分析了代码质量的理论基础上,在实施对某邮件系统进行的应用中得到了验证,证明了代码质量评估模型在自主可控迁移过程中的可行性,提高了自主可控平台软件迁移的效率。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (4)
1.一种程序代码质量评估方法,其特征在于,包括:
确定评估维度;
确定每一维度的度量元;
确定每一维度占权重:
确定每一度量元的权重;
确定每一度量元评分值;
计算评估结果加权值;
计算评估结果值,包括:QOC=∑Wdi*(∑ei*Wei);其中,QOC为软件评估结果值,Wdi为维度的权重,ei为每个度量元的权重,Wei为每个度量元的评分值。
2.如权利要求1所述的程序代码质量评估方法,其特征在于,该维度包括:正确性、规范性、易读性、安全性和维护性。
3.如权利要求1所述的程序代码质量评估方法,其特征在于,该度量元包括:类数、类层级数、引用包数、路径数、函数个数、函数参数、函数返回值、直接调用个数、层级数以及调用者个数。
4.如权利要求1所述的程序代码质量评估方法,其特征在于,该度量元评分值的计算方法包括:g(X)=c(x+d)b-1e-a(x+d);其中,X为软件特征值,a、b、c和d为参数,计算的方程组包括:
c(d)b-1e-ad=y0;
C(x1+d)b-1e-a(x1-d)=1;
C(x2+d)b-1e-a(x2-d)=y1;
其中x1表示评分值g(x)是1的时候特征值x的取值;x2表示评分值g(x)为及格的时候特征值x的取值;y0表示x的值是1的时候评分值g(x)的取值,y1表示x的值及格的时候g(x)的取值;x0、x1、y0以及y1为预设值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511000165.XA CN106919373A (zh) | 2015-12-28 | 2015-12-28 | 一种程序代码质量评估方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511000165.XA CN106919373A (zh) | 2015-12-28 | 2015-12-28 | 一种程序代码质量评估方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106919373A true CN106919373A (zh) | 2017-07-04 |
Family
ID=59454950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511000165.XA Pending CN106919373A (zh) | 2015-12-28 | 2015-12-28 | 一种程序代码质量评估方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106919373A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109471787A (zh) * | 2017-09-07 | 2019-03-15 | 北京京东尚科信息技术有限公司 | 软件质量评价方法及装置、存储介质、电子设备 |
CN110580217A (zh) * | 2018-06-08 | 2019-12-17 | 阿里巴巴集团控股有限公司 | 软件代码健康度的检测方法、处理方法、装置及电子设备 |
CN112069047A (zh) * | 2020-09-02 | 2020-12-11 | 鹏城实验室 | 计算生态检测方法、装置、设备以及存储介质 |
CN112506787A (zh) * | 2020-12-16 | 2021-03-16 | 北京机电工程研究所 | 基于测试结果的多维特性综合决策的软件质量评估方法 |
CN112711530A (zh) * | 2020-12-28 | 2021-04-27 | 航天信息股份有限公司 | 一种基于机器学习的代码风险预测方法及系统 |
CN113535546A (zh) * | 2021-06-17 | 2021-10-22 | 深圳开源互联网安全技术有限公司 | 一种开源组件评估方法、装置及计算机可读存储介质 |
CN116244179A (zh) * | 2022-12-16 | 2023-06-09 | 南京百敖软件有限公司 | 一种可自我改善的系统固件度量方法 |
WO2023179578A1 (zh) * | 2022-03-21 | 2023-09-28 | 中兴通讯股份有限公司 | 代码度量方法、装置、设备及介质 |
CN116244179B (zh) * | 2022-12-16 | 2024-06-04 | 南京百敖软件有限公司 | 一种可自我改善的系统固件度量方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090031266A1 (en) * | 2004-02-04 | 2009-01-29 | Evanthia Papadopoulou | Ic design modeling allowing dimension-dependent rule checking |
CN101377739A (zh) * | 2007-08-31 | 2009-03-04 | 兰雨晴 | 基础软件平台的质量评估方法 |
CN103810102A (zh) * | 2014-02-19 | 2014-05-21 | 北京理工大学 | 一种用于预测软件缺陷的方法和系统 |
CN104461896A (zh) * | 2014-12-18 | 2015-03-25 | 北京轩宇信息技术有限公司 | 基于可信属性的航天系统关键软件评价方法 |
-
2015
- 2015-12-28 CN CN201511000165.XA patent/CN106919373A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090031266A1 (en) * | 2004-02-04 | 2009-01-29 | Evanthia Papadopoulou | Ic design modeling allowing dimension-dependent rule checking |
CN101377739A (zh) * | 2007-08-31 | 2009-03-04 | 兰雨晴 | 基础软件平台的质量评估方法 |
CN103810102A (zh) * | 2014-02-19 | 2014-05-21 | 北京理工大学 | 一种用于预测软件缺陷的方法和系统 |
CN104461896A (zh) * | 2014-12-18 | 2015-03-25 | 北京轩宇信息技术有限公司 | 基于可信属性的航天系统关键软件评价方法 |
Non-Patent Citations (1)
Title |
---|
孙梦璘: ""软件程序代码质量度量技术研究"", 《计算机工程与设计》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109471787B (zh) * | 2017-09-07 | 2022-09-06 | 北京京东尚科信息技术有限公司 | 软件质量评价方法及装置、存储介质、电子设备 |
CN109471787A (zh) * | 2017-09-07 | 2019-03-15 | 北京京东尚科信息技术有限公司 | 软件质量评价方法及装置、存储介质、电子设备 |
CN110580217A (zh) * | 2018-06-08 | 2019-12-17 | 阿里巴巴集团控股有限公司 | 软件代码健康度的检测方法、处理方法、装置及电子设备 |
CN110580217B (zh) * | 2018-06-08 | 2023-05-05 | 阿里巴巴集团控股有限公司 | 软件代码健康度的检测方法、处理方法、装置及电子设备 |
CN112069047A (zh) * | 2020-09-02 | 2020-12-11 | 鹏城实验室 | 计算生态检测方法、装置、设备以及存储介质 |
CN112069047B (zh) * | 2020-09-02 | 2023-02-07 | 鹏城实验室 | 计算生态检测方法、装置、设备以及存储介质 |
CN112506787A (zh) * | 2020-12-16 | 2021-03-16 | 北京机电工程研究所 | 基于测试结果的多维特性综合决策的软件质量评估方法 |
CN112506787B (zh) * | 2020-12-16 | 2024-06-11 | 北京机电工程研究所 | 基于测试结果的多维特性综合决策的软件质量评估方法 |
CN112711530A (zh) * | 2020-12-28 | 2021-04-27 | 航天信息股份有限公司 | 一种基于机器学习的代码风险预测方法及系统 |
CN113535546A (zh) * | 2021-06-17 | 2021-10-22 | 深圳开源互联网安全技术有限公司 | 一种开源组件评估方法、装置及计算机可读存储介质 |
CN113535546B (zh) * | 2021-06-17 | 2023-09-08 | 深圳开源互联网安全技术有限公司 | 一种开源组件评估方法、装置及计算机可读存储介质 |
WO2023179578A1 (zh) * | 2022-03-21 | 2023-09-28 | 中兴通讯股份有限公司 | 代码度量方法、装置、设备及介质 |
CN116244179A (zh) * | 2022-12-16 | 2023-06-09 | 南京百敖软件有限公司 | 一种可自我改善的系统固件度量方法 |
CN116244179B (zh) * | 2022-12-16 | 2024-06-04 | 南京百敖软件有限公司 | 一种可自我改善的系统固件度量方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106919373A (zh) | 一种程序代码质量评估方法 | |
CN109146402A (zh) | 一种软件开发供应商交付质量的评估方法 | |
CN108596678A (zh) | 一种航空公司旅客价值计算方法 | |
CN104778173A (zh) | 目标用户确定方法、装置及设备 | |
CN107833108A (zh) | 基于工程量清单的电网技改大修工程招投标管理控制系统及其控制方法 | |
CN105574680A (zh) | 一种企业竞争能力诊断的方法及系统 | |
CN103366091A (zh) | 基于多级阈值指数加权平均的异常报税数据检测方法 | |
EP3438898A1 (en) | Data processing method and device | |
CN107730158A (zh) | 电网项目智能化评审方法及系统 | |
CN105184078A (zh) | 基于专利相对量分析的技术成熟度评价方法 | |
Raihan | Influences of foreign direct investment and carbon emission on economic growth in Vietnam | |
CN103853939A (zh) | 一种基于社会经济因素影响的电力系统月度负荷的组合预测方法 | |
Liu et al. | How project duration, upfront costs and uncertainty interact and impact on software development productivity? A simulation approach | |
CN106897282A (zh) | 一种用户群的分类方法和设备 | |
CN105740434A (zh) | 网络信息评分方法及装置 | |
CN107368303A (zh) | 一种基于软件架构的可演进性度量方法 | |
Kusuma et al. | The effect of emotional intelligence and Auditor’ s experience on audit quality with Independence as a moderating variable | |
CN103970651A (zh) | 基于组件安全属性的软件体系结构安全性评估方法 | |
CN112200459B (zh) | 一种配电网数据质量分析评价方法及系统 | |
Kanakana et al. | Lean six sigma framework to improve throughput rate | |
CN116596395B (zh) | 用于工程项目测评单位指导及检测的运行质控平台 | |
CN115545088B (zh) | 模型构建方法、分类方法、装置和电子设备 | |
CN105404608A (zh) | 一种基于公式解析的复杂指标集计算方法和系统 | |
CN108491189A (zh) | 一种基于差异比较对设计类图进行评价的方法 | |
CN108446907A (zh) | 安全校验方法及装置 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170704 |
|
WD01 | Invention patent application deemed withdrawn after publication |