基于关联度分析的舰艇作战软件可修改性评估*

2020-12-07 05:26陈云阁张永胜
计算机与数字工程 2020年10期
关键词:源代码关联度度量

王 超 陈云阁 张永胜

(海军大连舰艇学院 大连 116018)

1 引言

在软件生存周期的各个阶段中,软件维护是公认容易被忽视的活动,而事实上,软件维护是软件生存周期中需要资源最多的一个阶段,现有资料表明,软件系统整个生存周期中总成本的40%到70%要用于软件维护[1~3]。

由于修改程序和评价软件修改所引起的潜在连锁反应通常需要大量的软件维护工作,因此软件的可修改性被看作是软件可维护性的一个主要属性[4]。虽然软件的可维护性己经开始引起业界的重视,并且己有一定的研究,但仅有少量的文献论述了软件可维护性中的软件可修改性[5~7],因此,对舰艇作战软件的可修改性开展深入的研究是非常有必要的。

软件可修改性通常被解释成修改构件或者程序的难易程度[8]。因为软件可修改性往往会与构件之间的关联反应相关,该特性可以看作是对软件变更导致的连锁反应的评价,由此可知,软件可修改性实质上主要取决于软件变更时构件之间的关联度。

2 软件构件关联度影响要素分析

根据舰艇作战软件的工作实际,决定舰艇作战软件修改难易程度的关键原因,是在依据软件变更需求对某个软件构件实施修改时,其他软件构件需要同步进行变更,即所谓的“波及效应”[9~10],产生的主要原因则来源于软件构件间的关联性。因此,在开展舰艇作战软件可修改性评估工作时,可以从度量软件构件的关联性着手,定量评估软件构件的关联度,计算构件的可修改性,最终实现整个软件可修改性的评估。

可修改性代表了软件容易修改的程度,一个易修改的软件应该是内部关联关系清晰且容易理解的[11]。软件内部的关联度主要依赖于构件之间的耦合性、内聚性等因素。

其中,耦合是构件之间互相连接的紧密程度的度量,构件之间的连接越紧密,联系越多,耦合性就越高,其构件独立性就越弱。

软件构件之间的常见的耦合方式有九种,构成耦合的九种类型[12],包括外部耦合、引入耦合、类型使用耦合、程调用耦合、数据耦合、标记耦合、控制耦合、公共耦合、内容耦合,按照耦合性从松散到紧密的程度由低至高排列,如图1所示。

图1 耦合类型及与构件关联度之间关系

内聚是构件内部各个元素之间彼此结合紧密程度的度量[13]。一个构件内部各个元素之间的联系越紧密,其内聚性越高。软件构件之间常见的内聚方式有七种,包括实用程序内聚、时间内聚、过程内聚、顺序内聚、通信内聚、层内聚、功能内聚,如图2所示。

图2 内聚类型及与构件关联度之间的关系

根据软件构件关联性影响因素的分析,为实现软件构件关联度的定量度量,首先应识别出影响软件构件关联性的关键变量,然后依据关键变量的种类、个数与其他构件的相关程度,来来评估该构件的修改难度系数。

3 软件可修改性评估模型

3.1 软件可修改性评估的基本思路

图3 为软件可修改性评估的基本思路。通过对软件代码的扫描进行代码词法分析和语法分析,识别出软件的内部结构,包括软件构件内部的控制流和数据流,统计所有的关键变量,计算各个软件构件的关联度量化值,进而计算构件和软件的可修改性。

图3 软件可修改性计算的基本思路

3.2 软件可修改性评估原理

1)确定关联元

关联元是软件构件中能够传递关联关系的变量。对于构件P 来说,假设存在一行赋值语句,赋值代码中某个赋值运算符的左边是构件P 的扇出元,右边是变量m,则称m 为关联元。根据程序的语法规则,在软件代码扫描的过程中可以识别出构件的关联元。

2)构件关联元关联程度的评价

假设构件P1有一个关联元m,m 通过数据流或控制流关联影响到另一构件P2的扇入元β ,导致构件P2可能进一步将这种关联关系延伸到别的构件。这种由于相互关联给构件P2带来程序修改的难度,称为构件关联元的关联程度。构件关联元关联程度的评价通过搜索构件P2的扇出元数量、计算构件内部复杂度来实现。

3)构件与软件可修改性的评估

构件的可修改性根据该构件平均每个关联元造成的传递性修改难度来确定,通过综合各个构件可修改性来实现整个软件系统的可修改性评估。

3.3 软件可修改性评估模型

根据软件可修改性评估的思路和原理,建立了软件可修改性的评估模型。

1)构件P 的原始关联度评估:

其中,FP是构件P 的扇出元个数,CP是构件P 量化的内部复杂性,可以采用经典的McCabe 方法计算。

2)关联元m(m ∈P)关联影响构件Q 的次数:

其中,β 可能是普通变量或数据结构变量。

在分析关联元对外传递产生关联关系的时候发现,一个关联元对其它构件产生关联影响的次数是不同的,可能是一次,也可能是多次,具有不同的关联影响效果,因此,计算软件关联程度时需要统计关联元影响构件的次数。

3)关联元累积的综合关联度:

其中,NPm是指受关联元m 关联影响的所有构件。

一个关联元有可能会关联影响到某个构件的多个扇出元,而各扇出元又可能同时对多个构件造成传递的关联影响,因此,一个关联元累积的综合关联度是由关联影响构件的次数和构件的原始关联度共同决定的。

4)RSP:构件P 的软件修改难度:

构件的修改难度可以根据该构件平均每个关联元造成的传递性修改难度来确定,其中,TP是构件P 关联元的数量,E 是代表经验系数的常量,1 ≥RSP≥0,RSP=0 表示构件P 的修改难度最小,RSP=1表示构件P 的修改难度最大。

5)MP:构件P 的可修改性:

MP=0 表示构件P 具有最差的可修改性,MP=1表示构件P 具有最好的可修改性。

6)M :整个软件的可修改性:

其中,CNS 表示软件构件数量,M 的值域同MP。

4 软件可修改性评估系统设计

基于软件可修改性评估的原理,我们设计并实现了一个软件可修改性自动评估的系统。系统的体系结构如图4 所示,主要由软件静态分析组件和可修改性度量组件组成。

4.1 软件静态分析组件

为实现软件可修改性的度量,首先需要对软件的源代码进行静态分析,通过词法分析和语法分析识别、分析出软件代码的基础架构信息和数据控制信息。该组件主要由源代码关键字匹配器、源程序语法分析器和程序信息库构成。

1)源代码语句模式匹配器:通过词法分析并经过语句模式匹配,识别代码的语句类型,将源程序细分为若干个程序块,进行分类存储。

2)源代码语法识别器:根据程序的语法规则,构造用于识别软件控制信息和数据信息的有限自动机,并在语句模式匹配的基础上,调用相应类型的有限自动机对源代码语法信息进行识别和分析。

3)源代码信息库:将语法识别器分析出来的软件信息按照可修改性度量的需要进行筛选和存储。

4.2 可修改性度量组件

可修改性度量组件以软件静态分析数据为基础,采用软件可修改性评估模型对软件可修改性进行计算。该组件主要包括代码关联程度分析器、构件复杂度度量器和可修改性解算器。

1)代码关联程度分析器:运用源代码信息库数据,对软件构件之间由于耦合性而引起的关联关系进行分析,建立构件关联关系影响链图。

2)构件复杂度计算器:在软件静态分析的基础上,使用经典的McCabe 方法计算构件的内部复杂度。

3)可修改性解算器:在构件关联程度分析和复杂度度量基础上,运用3.3 节建立的软件可修改性评估模型计算构件和软件的可修改属性值。

图4 软件可修改性评估系统体系结构

5 结语

依据软件可修改性评估系统,对多个软件项目进行了测试,结果表明系统解算的软件可修改性度量值与人工分析一致,说明提出的软件可修改性评估方法对于软件项目具有一定的实用性和可操作性,为软件可修改性的验证提供了途径。

此外,通过实施软件可修改性评估,能够在软件开发阶段就对今后软件修改的难易程度进行预测,并根据预测结果,对软件产品和过程进行改进,对于提高软件质量、减少下一步软件维护阶段所占用的资源,将发挥积极有效的作用。

猜你喜欢
源代码关联度度量
基于熵值法与灰色关联度分析法的羽毛球技战术综合评价分析
鲍文慧《度量空间之一》
基于熵权法改进的TOPSIS法和灰色关联度分析的压榨脱水过程优化研究
基于TXL的源代码插桩技术研究
代数群上由模糊(拟)伪度量诱导的拓扑
中国制造业产业关联度分析
中国制造业产业关联度分析
突出知识本质 关注知识结构提升思维能力
度 量
保护好自己的“源代码”