CN107368303B - 一种基于软件架构的可演进性度量方法 - Google Patents

一种基于软件架构的可演进性度量方法 Download PDF

Info

Publication number
CN107368303B
CN107368303B CN201710507265.4A CN201710507265A CN107368303B CN 107368303 B CN107368303 B CN 107368303B CN 201710507265 A CN201710507265 A CN 201710507265A CN 107368303 B CN107368303 B CN 107368303B
Authority
CN
China
Prior art keywords
testability
software architecture
evolvable
component
replaceability
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.)
Expired - Fee Related
Application number
CN201710507265.4A
Other languages
English (en)
Other versions
CN107368303A (zh
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.)
Southeast University
Original Assignee
Southeast University
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 Southeast University filed Critical Southeast University
Priority to CN201710507265.4A priority Critical patent/CN107368303B/zh
Publication of CN107368303A publication Critical patent/CN107368303A/zh
Application granted granted Critical
Publication of CN107368303B publication Critical patent/CN107368303B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • 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)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于软件架构的可演化性度量方法,首先对源程序进行解析,提取源程序的基本信息,然后结合基本信息与组件信息,计算出组件的内在指标信息。基于以上信息,计算可演进性的可修改性、可扩展性、易测试性、可替换性、易理解性的度量值。通过层次分析法,合理分配权重。最后通过子指标的度量值及权重计算出可演进性,从而实现软件架构可演进性的度量与量化。

Description

一种基于软件架构的可演进性度量方法
技术领域
本发明涉及软件度量与评估技术领域,尤其涉及一种基于软件架构的可演进性度量方法。
背景技术
随着软件技术的迅猛发展和广泛的应用,软件规模在逐渐的扩大,软件的开发成本和维护成本也随之增长。在软件系统中采用恰当的软件架构能够清晰并且合理的定义组件功能、组件层次和组件之间的依赖关系,从而达到降低后期的测试与维护的成本的目的,可演化性作为衡量软件架构生命力和架构竞争力的质量指标,对度量软件质量具有十分重要的现实意义。
现有的软件架构可演化性在实际应用过程中所存在不足是:
(1)缺少从软件架构角度出发的可演化性分析。可演化性不单单是软件所具有的质量属性,同时也存在于软件架构中,因此软件的演化性与软件架构具有一定的区别,从而需要区分对待及量化;
(2)缺少从源代码出发的度量的方法。软件源代码是软件产品中最基本的一部分,相比于设计文档或需求文档等具有较高的可获取性。因此若无法从源代码出发进行度量,则减少了度量模型的可用性;
(3)粒度较粗。当仅通过UML图或架构图对软件架构度量时,会损失较多的代码信息,从而易造成度量结果的偏差,度量结果的可信性降低。
发明内容
本发明所要解决的技术问题是针对背景技术中所涉及到的缺陷,提供一种基于软件架构的对可演化的度量方法,通过对源代码的分析,提取出软件源代码中的基本信息,从而实现对软件架构和组件信息的提取,将软件架构可演进性划分为5个子指标,通过层次分析法赋予权重,进而计算软件架构的可演化性。
本发明为解决上述技术问题采用以下技术方案:
一种基于软件架构的可演化性度量方法,包含以下步骤:
步骤1),对源程序进行解析,提取软件源代码的基本信息,并将其存入预先设定的基本信息知识库中,所述基本信息包括软件代码行数、公共方法数和方法总数;
步骤2),获得软件架构图,将软件架构图与软件源代码基本信息的相结合,汇总出架构内在指标,并将其存入预先设定的内在指标知识库中,所述架构内在指标包含软件架构图中各个组件的出度、入度;
步骤3),利用步骤1)和步骤2)中获取到的源程序基本信息和架构内在指标,进行如下计算:
步骤3.1),根据以下公式计算可修改性Modifieability:
Figure BDA0001334956580000021
式中,Modifieability为1与各组件所关联的组件数占总组件数比例的平均值的差值,N表示软件架构图中组件的数目,i∈[1,N]表示组件的编号,Outi表示组件i的出度,Ini表示组件i的入度;
步骤3.2),根据以下公式计算可扩展性Expansibility:
Figure BDA0001334956580000022
式中,Expansibility为组件公共方法数的和与组件中方法的和之比,Mi表示组件i中的方法数,Pi表示组件i中的公共方法的数;
步骤3.3),根据以下公式计算易测试性Testability:
Figure BDA0001334956580000023
式中,Testability为1与各组件所依赖的组件数占总组件数比例的平均值的差值;
步骤3.4),根据以下公式计算可替换性Replaceability:
Figure BDA0001334956580000024
式中,Replaceability为1与组件可替换性的平均值的差值,Ri表示组件i的可替换性;
步骤3.5),根据以下公式计算易理解性Understandability:
Figure BDA0001334956580000025
式中,Understandability为组件中包含注释的组件数与组件总数的比值,Comments表示组件中包含注释的组件数;
步骤4),依据步骤3)中的计算结果,通过层次分析法计算可演进性:
步骤4.1),建立层次分析法判断矩阵标准:
建立用于衡量各个子指标的重要性的判断矩阵标准,将重要性分为预设的层级数目,并对每个层级进行量化;
步骤4.2),建立判断矩阵并计算权重:
依据判断矩阵标准,建立可修改性、可扩展性、易测试性、可替换性、易理解性之间的判断矩阵,从而分别计算出可修改性、可扩展性、易测试性、可替换性、易理解性的权重值;
步骤4.3),依据指标权重值计算可演进性Evolvability,所述可演进性Evolvability即Modifieability、Expansibility、Testability、Replaceability和Understandability的加权平均值,计算公式如下;
Evolvability=(Wmodifieability*Modifieability+WExpansibility*Expansibility+WTestability*Testability+
WReplaceability*Re placeability+WUnderstandability*Unders tan dability)/5
式中,Wmodifieability为可修改性的权重,WExpansibility为可扩展性的权重,WTestability为易测试性的权重,WReplaceability为可替换性的权重,WUnderstandability为易理解性的权重值。
通过上述公式,可计算出软件架构的可演进性,当演进性越高,则当前软件架构的演进能力越高,更便于为适应新的需求而演进。当演进性越低,则当前软件架构的演进能力越低,需要为适应新的需求付出更多的成本。
作为本发明一种基于软件架构的可演化性度量方法进一步的优化方案,所述步骤3)中,当所述软件架构图中仅包含1个组件时,可修改性和易测试性均采用极值1。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
(1)本发明从软件架构角度出发,分析软件架构的可演进性,从而度量结果具有更高的针对性;
(2)本发明通过对软件源代码,提取出源代码中所包含的基本信息,具有高度的易获取性,因此该度量方法具有高度的实用性。与此同时,通过源代码所提取的数据更真实可靠,具有较高的可信性;
(3)实现细粒度的度量,对所有的功能模块自动化批量化进行可复用性的度量,降低操作复杂性,提高的平均度量时间。
(4)引入层次分析法,通过用户基于应用场景和需求的判断,计算可演进性中的5个子指标的权重值,从而得出合理权重值,从而提高可演进性的参考价值。
附图说明
图1是本发明的流程示意图;
图2是本发明的软件架构图。
具体实施方式
下面结合附图对本发明的技术方案做进一步的详细说明:
为了便于描述,我们假定一个软件架构如图2所示。
如图1所示,按照以下步骤进行可复用性度量:
步骤1),对源程序进行解析,提取软件源代码的基本信息,并将其存入预先设定的基本信息知识库中,所述基本信息包括软件代码行数、公共方法数和方法总数;
下表展示了各个组件的基本信息:
组件编号 代码行数 是否含有注释 公共方法数 方法总数
1 1510 5 130
2 2140 12 183
3 2011 8 115
4 3410 10 194
5 1151 2 52
6 2043 2 81
步骤2),获得软件架构图,将软件架构图与软件源代码基本信息的相结合,汇总出架构内在指标,并将其存入预先设定的内在指标知识库中,所述架构内在指标包含软件架构图中各个组件的出度、入度;
下表展示了各个组件的内在指标:
组件编号 出度 入度
1 0 2
2 3 0
3 1 0
4 0 1
5 0 1
6 0 0
步骤3),利用步骤1)和步骤2)中获取到的源程序基本信息和架构内在指标,进行如下计算:
步骤3.1),根据以下公式计算可修改性Modifieability:
Figure BDA0001334956580000051
式中,Modifieability为1与各组件所关联的组件数占总组件数比例的平均值的差值,N表示软件架构图中组件的数目,i∈[1,N]表示组件的编号,Outi表示组件i的出度,Ini表示组件i的入度;
步骤3.2),根据以下公式计算可扩展性Expansibility:
Figure BDA0001334956580000052
式中,Expansibility为组件公共方法数的和与组件中方法的和之比,Mi表示组件i中的方法数,Pi表示组件i中的公共方法的数;
步骤3.3),根据以下公式计算易测试性Testability:
Figure BDA0001334956580000053
式中,Testability为1与各组件所依赖的组件数占总组件数比例的平均值的差值;
步骤3.4),根据以下公式计算可替换性Replaceability:
Figure BDA0001334956580000054
式中,Replaceability为1与组件可替换性的平均值的差值,Ri表示组件i的可替换性;
步骤3.5),根据以下公式计算易理解性Understandability:
Figure BDA0001334956580000055
式中,Understandability为组件中包含注释的组件数与组件总数的比值,Comments表示组件中包含注释的组件数;
步骤4),依据步骤3)中的计算结果,通过层次分析法计算可演进性:
步骤4.1),建立层次分析法判断矩阵标准:
建立用于衡量各个子指标的重要性的判断矩阵标准,将重要性分为预设的层级数目,并对每个层级进行量化;
本例中采用如下的判断矩阵标准:
指标相比于另一指标 量化值
同等重要 1
稍微重要 3
较强重要 5
强烈重要 7
极端重要 9
两相邻判断的中间值 2,4,6,8
步骤4.2),建立判断矩阵并计算权重:
依据判断矩阵标准,建立可修改性、可扩展性、易测试性、可替换性、易理解性之间的判断矩阵,从而分别计算出可修改性、可扩展性、易测试性、可替换性、易理解性的权重值;本例中,采用如下的判断矩阵:
指标名称 可修改性 易理解性 可替换性 可扩展性 易测试性
可修改性 1 1 1/3 1/2 1
易理解性 1 1 1/3 1 1
可替换性 3 3 1 1 1
可扩展性 2 1 1 1 2
易测试性 1 1 1 1/2 1
通过判断矩阵可以得出各子指标的权重值如下表:
指标名称 权重
可修改性 0.1301
易理解性 0.1551
可替换性 0.2986
可扩展性 0.2498
易测试性 0.1664
步骤4.3),依据指标权重值计算可演进性Evolvability,所述可演进性Evolvability即Modifieability、Expansibility、Testability、Replaceability和Understandability的加权平均值,计算公式如下;
Evolvability=(Wmodifieability*modifieability+WExpansibility*Expansibility+WTestability*Testability+
WReplaceability*Replaceability+WUnderstandability*Understandability)/5
=(0.1301*0.7778+0.1551*0.0517+0.2986*0.8889+
0.2498*0.2778+0.1664*0.5000)/5
=0.1054
式中,Wmodifieability为可修改性的权重,WExpansibility为可扩展性的权重,WTestability为易测试性的权重,WReplaceability为可替换性的权重,WUnderstandability为易理解性的权重值。
由度量结果可知,该软件架构的可演进性为0.1054。
所述步骤3)中,当所述软件架构图中仅包含1个组件时,可修改性和易测试性可以均采用极值1。
本技术领域技术人员可以理解的是,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (2)

1.一种基于软件架构的可演化性度量方法,其特征在于,包含以下步骤:
步骤1),对源程序进行解析,提取软件源代码的基本信息,并将其存入预先设定的基本信息知识库中,所述基本信息包括软件代码行数、公共方法数和方法总数;
步骤2),获得软件架构图,将软件架构图与软件源代码基本信息的相结合,汇总出架构内在指标,并将其存入预先设定的内在指标知识库中,所述架构内在指标包含软件架构图中各个组件的出度、入度;
步骤3),利用步骤1)和步骤2)中获取到的源程序基本信息和架构内在指标,进行如下计算:
步骤3.1),根据以下公式计算可修改性Modifieability:
Figure FDA0002396803930000011
式中,Modifieability为1与各组件所关联的组件数占总组件数比例的平均值的差值,N表示软件架构图中组件的数目,i∈[1,N]表示组件的编号,Outi表示组件i的出度,Ini表示组件i的入度;
步骤3.2),根据以下公式计算可扩展性Expansibility:
Figure FDA0002396803930000012
式中,Expansibility为组件公共方法数的和与组件中方法的和之比,Mi表示组件i中的方法数,Pi表示组件i中的公共方法的数;
步骤3.3),根据以下公式计算易测试性Testability:
Figure FDA0002396803930000013
式中,Testability为1与各组件所依赖的组件数占总组件数比例的平均值的差值;
步骤3.4),根据以下公式计算可替换性Replaceability:
Figure FDA0002396803930000014
式中,Replaceability为1与组件可替换性的平均值的差值,Ri表示组件i的可替换性;
步骤3.5),根据以下公式计算易理解性Understandability:
Figure FDA0002396803930000021
式中,Understandability为组件中包含注释的组件数与组件总数的比值,Comments表示组件中包含注释的组件数;
步骤4),依据步骤3)中的计算结果,通过层次分析法计算可演进性:
步骤4.1),建立层次分析法判断矩阵标准:
建立用于衡量各个子指标的重要性的判断矩阵标准,将重要性分为预设的层级数目,并对每个层级进行量化;
步骤4.2),建立判断矩阵并计算权重:
依据判断矩阵标准,建立可修改性、可扩展性、易测试性、可替换性、易理解性之间的判断矩阵,从而分别计算出可修改性、可扩展性、易测试性、可替换性、易理解性的权重值;
步骤4.3),依据指标权重值计算可演进性Evolvability,所述可演进性Evolvability即Modifieability、Expansibility、Testability、Replaceability和Understandability的加权平均值,计算公式如下;
Evolvability=(Wmodifieability*Modifieability+WExpansibility*Expansibility+WTestability*Testability+WReplaceability*Replaceability+WUnderstandability*Understandability)/5
式中,Wmodifieability为可修改性的权重,WExpansibility为可扩展性的权重,WTestability为易测试性的权重,WReplaceability为可替换性的权重,WUnderstandability为易理解性的权重值;
通过上述公式,能够计算出软件架构的可演进性,当演进性越高,则当前软件架构的演进能力越高,更便于为适应新的需求而演进;当演进性越低,则当前软件架构的演进能力越低,需要为适应新的需求付出更多的成本。
2.根据权利要求1所述的基于软件架构的可演化性度量方法,其特征在于,所述步骤3)中,当所述软件架构图中仅包含1个组件时,可修改性和易测试性均采用极值1。
CN201710507265.4A 2017-06-28 2017-06-28 一种基于软件架构的可演进性度量方法 Expired - Fee Related CN107368303B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710507265.4A CN107368303B (zh) 2017-06-28 2017-06-28 一种基于软件架构的可演进性度量方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710507265.4A CN107368303B (zh) 2017-06-28 2017-06-28 一种基于软件架构的可演进性度量方法

Publications (2)

Publication Number Publication Date
CN107368303A CN107368303A (zh) 2017-11-21
CN107368303B true CN107368303B (zh) 2020-06-12

Family

ID=60305714

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710507265.4A Expired - Fee Related CN107368303B (zh) 2017-06-28 2017-06-28 一种基于软件架构的可演进性度量方法

Country Status (1)

Country Link
CN (1) CN107368303B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108509217B (zh) * 2018-03-17 2021-05-25 东南大学 一种软件架构可持续演进原则达成性度量方法
CN110858141B (zh) * 2018-08-23 2023-07-28 西门子股份公司 分层架构软件中代码评估方法、装置及存储介质
CN109976802B (zh) * 2019-03-31 2022-08-12 东南大学 一种面向模式的软件架构重构方法
CN116303026B (zh) * 2023-03-20 2024-01-23 安徽工业大学 一种基于演进历史的软件架构腐化预测方法、装置及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101976222A (zh) * 2010-11-03 2011-02-16 北京航空航天大学 一种基于框架的实时嵌入式软件可测试性测量方法
CN102750145A (zh) * 2012-06-05 2012-10-24 怯肇乾 一种网络系统软件体系框架及其实现方法
CN105867906A (zh) * 2016-03-22 2016-08-17 东南大学 一种面向软件演化的代码可替换性评估方法
CN105893257A (zh) * 2016-03-30 2016-08-24 东南大学 一种基于演化的软件架构评估方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8336028B2 (en) * 2007-11-26 2012-12-18 International Business Machines Corporation Evaluating software sustainability based on organizational information
US9354865B2 (en) * 2013-02-18 2016-05-31 Software Ag System and method for controlling the development of a software application

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101976222A (zh) * 2010-11-03 2011-02-16 北京航空航天大学 一种基于框架的实时嵌入式软件可测试性测量方法
CN102750145A (zh) * 2012-06-05 2012-10-24 怯肇乾 一种网络系统软件体系框架及其实现方法
CN105867906A (zh) * 2016-03-22 2016-08-17 东南大学 一种面向软件演化的代码可替换性评估方法
CN105893257A (zh) * 2016-03-30 2016-08-24 东南大学 一种基于演化的软件架构评估方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"SAABNet: Managing qualitative knowledge in software architecture assessment";J.van Gurp等;《Proceedings Seventh IEEE International Conference and Workshop on the Engineering of Computer-Based Systems》;20020806;第45-53页 *
"基于源代码的软件可维护性度量系统的研究与实现";殷翔;《中国优秀硕士学位论文全文数据库信息科技辑》;20150115(第01期);第5-43页 *

Also Published As

Publication number Publication date
CN107368303A (zh) 2017-11-21

Similar Documents

Publication Publication Date Title
CN107368303B (zh) 一种基于软件架构的可演进性度量方法
US8745588B2 (en) Method for testing operation of software
CN107636690B (zh) 基于卷积神经网络的全参考图像质量评估
CN112445875B (zh) 数据关联及检验方法、装置、电子设备及存储介质
CN106991325B (zh) 一种软件漏洞的防护方法和装置
CN111768096A (zh) 基于算法模型的评级方法、装置、电子设备及存储介质
CN107688589A (zh) 数据库系统优化的方法及装置
CN113516417A (zh) 基于智能建模的业务评估方法、装置、电子设备及介质
CN112801315A (zh) 电力二次设备的状态诊断方法、装置及终端
CN106708729A (zh) 代码缺陷的预测方法及装置
CN104022899A (zh) 一种网络管理系统的三维评估方法及系统
CN114139931A (zh) 企业数据评估方法、装置、计算机设备及存储介质
CN116467551B (zh) 一种基于相关系数的供水管网漏损定位方法及系统
US11227288B1 (en) Systems and methods for integration of disparate data feeds for unified data monitoring
Jiang et al. An examination of the factors influencing software development effort
CN112598228B (zh) 企业竞争力的分析方法、装置、设备及存储介质
CN114331237A (zh) 基于ahp-熵权法的污水处理质量评估方法及装置
CN112907141A (zh) 一种压力测试方法、装置、设备及存储介质
CN105446959B (zh) 日志内容审核优化方法及装置
CN114170000A (zh) 信用卡用户风险类别识别方法、装置、计算机设备和介质
CN113254352A (zh) 测试案例的测试方法、装置、设备及存储介质
CN113822464A (zh) 用户信息的处理方法及装置、电子设备、存储介质
CN108235324B (zh) 一种短信模板的测试方法及服务器
CN106980495B (zh) 一种基于程序切片的功能可复用性度量方法
CN117235480B (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
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20200612