CN107368303B - 一种基于软件架构的可演进性度量方法 - Google Patents
一种基于软件架构的可演进性度量方法 Download PDFInfo
- 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
Links
- 238000000691 measurement method Methods 0.000 title abstract description 5
- 238000000034 method Methods 0.000 claims abstract description 39
- 230000008569 process Effects 0.000 claims abstract description 16
- 239000011159 matrix material Substances 0.000 claims description 18
- 238000010586 diagram Methods 0.000 claims description 17
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000005259 measurement Methods 0.000 abstract description 12
- 238000011002 quantification Methods 0.000 abstract 1
- 230000007547 defect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000035515 penetration Effects 0.000 description 1
Images
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/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software 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:
式中,Modifieability为1与各组件所关联的组件数占总组件数比例的平均值的差值,N表示软件架构图中组件的数目,i∈[1,N]表示组件的编号,Outi表示组件i的出度,Ini表示组件i的入度;
步骤3.2),根据以下公式计算可扩展性Expansibility:
式中,Expansibility为组件公共方法数的和与组件中方法的和之比,Mi表示组件i中的方法数,Pi表示组件i中的公共方法的数;
步骤3.3),根据以下公式计算易测试性Testability:
式中,Testability为1与各组件所依赖的组件数占总组件数比例的平均值的差值;
步骤3.4),根据以下公式计算可替换性Replaceability:
式中,Replaceability为1与组件可替换性的平均值的差值,Ri表示组件i的可替换性;
步骤3.5),根据以下公式计算易理解性Understandability:
式中,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:
式中,Modifieability为1与各组件所关联的组件数占总组件数比例的平均值的差值,N表示软件架构图中组件的数目,i∈[1,N]表示组件的编号,Outi表示组件i的出度,Ini表示组件i的入度;
步骤3.2),根据以下公式计算可扩展性Expansibility:
式中,Expansibility为组件公共方法数的和与组件中方法的和之比,Mi表示组件i中的方法数,Pi表示组件i中的公共方法的数;
步骤3.3),根据以下公式计算易测试性Testability:
式中,Testability为1与各组件所依赖的组件数占总组件数比例的平均值的差值;
步骤3.4),根据以下公式计算可替换性Replaceability:
式中,Replaceability为1与组件可替换性的平均值的差值,Ri表示组件i的可替换性;
步骤3.5),根据以下公式计算易理解性Understandability:
式中,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:
式中,Modifieability为1与各组件所关联的组件数占总组件数比例的平均值的差值,N表示软件架构图中组件的数目,i∈[1,N]表示组件的编号,Outi表示组件i的出度,Ini表示组件i的入度;
步骤3.2),根据以下公式计算可扩展性Expansibility:
式中,Expansibility为组件公共方法数的和与组件中方法的和之比,Mi表示组件i中的方法数,Pi表示组件i中的公共方法的数;
步骤3.3),根据以下公式计算易测试性Testability:
式中,Testability为1与各组件所依赖的组件数占总组件数比例的平均值的差值;
步骤3.4),根据以下公式计算可替换性Replaceability:
式中,Replaceability为1与组件可替换性的平均值的差值,Ri表示组件i的可替换性;
步骤3.5),根据以下公式计算易理解性Understandability:
式中,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。
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)
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)
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)
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 |
-
2017
- 2017-06-28 CN CN201710507265.4A patent/CN107368303B/zh not_active Expired - Fee Related
Patent Citations (4)
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)
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 |