代码的结构属性以及软件架构(如耦合、内聚和复杂性(
CCC
))
已被用于通过提出一个框架来自动识别软件中的漏洞(
Chowdhury
和
Zulkernine
,
2011
)。这些架构属性中的许多属性也以不同的动
态内聚度量的形式在动态级别上进行了计算,这些度量有助于观察软
件系统的行为方面(
Gupta
和
Chhabra
,
2011
)。计算所有这些度
量的全部目的是促进可重用性和基于组件的开发方法(
CBSD
)。在
Sun
和
Huang
(
2011
)中,
CBSD
也得到了访问控制架构(
ACC
)
概念的支持,其中作者提出了各种算法和度量,可以有效地评估和配
置具有不同
ACC
的软件架构。通过上述度量和算法,提取了许多独
立和优化的类
/
组件,并以具有合适接口的
API
的形式表示。
Cimino
等人使用了
API
的概念,通过利用客户端
API
和用户界面来开发独立
于设备的移动应用程序
Cimino
和
Marcelloni
(
2012
)。该方法首先
对移动应用进行平台无关的建模,最后使用转换模型将其转换为特定
平台的应用。可重用性的许多度量和方法通常包含一些冗余,并且一
些研究人员已经通过在泛在网络领域中使用基于深度学习的卷积神经
网络来减少这种冗余(
Song
等人,
2019
年)。
Papamichail et al.
(
2019
)为研究社区贡献了一个大规模的数据集,其中包含软件组件
的可重用性方面,即特定软件组件可重用的程度。 特定组件可重用
的程度基于使用
AGORA
代码搜索引擎和六个源代码属性(即文档、
内聚性、大小、复杂性、耦合性和
继承性)挖掘的实际重用率。提出
了一种自动化可重用服务识别(ReSIde)
方法,用于通过分析来自多
个 面 向 对象的软件产品变体 的 可 变 性 和 共 性 来 识 别 可 重 用 服 务
(
Shatnawi
等人,
2020
年)。作者在
Mohammed et al.
(
2021
)
提出了一种使用基于
NLP
的信息检索(
IR
)技术从存储库中检索可
重用软件组件的新方法。
Mehlawat
等人(
2020
)提出了一个多阶段
多目标模型,以优化多阶段可交付系统中软件组件的相关维护成本和
适应性评估
Papamichail
和
Symeontill
(
2020
)提出了一种通用方
法,用于在软件演化的早期阶段使用基于源代码的复杂性、耦合
性、继承性和内聚性特征的一类分类方法来识别非主流软件组件
Sharma
等人提出了一种基于人工神经网络的构件可重用性评估方法。
(
2009
年)。可重用性评估方法基于四个关键因素,即可移植性、
可定制性、可理解性和界面复杂性。
除此之外,还提出了一些度量方法,
面向对象软件和组件的可重用性。C K度量是一个广泛使用的度量集,
它 由 六 个 度 量 组 成 . 其 中 , 类 加 权 方 法 ( WMC ) 、 继 承 树 深 度
(DIT)、方法缺乏内聚性(LCOM)和对象类之间的耦合(CBO)是
常用的可重用性度量,主要应用于类级别(Chidamber和Kemerer,
1994)。Cho等人提出了用于测量不同组件特性的度量标准,即可定制
性 、 复杂 性 和 可 重 用 性 ( Cho等 人 , 2001 年 ) 。 Boxall和 Araban
(2004)的作者提出了度量使用.NET COM组件模型设计的组件接口
的可理解性和可重用性的指标。 Sharma等人研究了JavaBeans组件
通过进行小实验并提出用于该实验的度量(Sharma等人,2008年)。
Bertoa等人提出了一套用于软件组件的可用性度量套件,该套件测量五
个特征,即可操作性、顺应性、可理解性、吸引力和可学习性(Bertoa
等人, 2006年)。Mijac等人对不同研究人员提出的可重用性度量标准
进行了系统的调查,并提供了重要信息,如引用最多的论文,影响软件
组件可重用性的不同因素,用于测量可重用性的因素数量
(
Mija
c
and
Stapi
c
,
201 5
)。
除了1.2小节中讨论的一些OO可重用性度量之外,已经提出了一些度
量和框架来帮助测量组件的可重用性(Koteska和Velinov,2012; Gui
和Scott,2009; Bi等人,2009; Boxall和Araban,2004; Washizaki等
人,2004年)。Gui和Scott(2009)的作者提出并使用了一组新的加
权静态耦合和内聚度量来评估使用组件搜索引擎从互联网上检索到的
Java组件的可重用性。三个因素,即不同实体之间的相似度,间接耦
合,类和方法的功能复杂性,将建议的静态度量与其他度量区分开来。
作者在Washizaki et al.(2004)中提出了一个度量套件,用于基于组
件的可理解性、可移植性和适应性因素等特征来度量黑盒软件组件的可
重用性。Koteska和Velinov(2012)提出了一个用于度量组件可重用
性的统一模型,该模型可以很容易地适应不同的可重用性需求。在此基
础上,提出了一种新的属性添加方法,以有效地计算构件的可重用性。
Bi et al.(2009)基于组件的可重用性与其底层复杂性度量之间的关系
构建了一个定量度量模型。Boxall等人提出了一组度量标准,被认为与
衡量黑盒软件组件的可理解性和可重用性有 关(Boxall和Araban,
2004) 。 在这 些 指 标 中 , Washizaki et al. ( 2004 ) 和 Boxall and
Araban(2004)仅适用于源代码不容易获得的黑盒组件。
根据文献调查,我们得出结论,一些
已经提出的度量本质上是非常基本的,并且没有考虑底层组件的复杂
性。特别是Washizaki等人(2004)给出了更接近的度量标准,它包括
五个度量标准,它们基于有限的可用信息来度量JavaBean的可重用
性,即EMI(元信息的存在性)、RCO(组件可观察性的比率)、
RCC(组件可定制性的比率)、SCCr(组件返回值的自完整性在这些
度量中,EMI度量非常微不足道(给出二进制输出)。RCO指标仅测量
可读属性,不测量任何关于提供程序的内容,并且需要底层组件的接
口。RCC指标将自定义度量为可写属性/字段的数量,而不考虑内部
JavaBean由于其黑盒性质。最后,接口复杂度计算非常简单(使用
SCCr和SCCp度量),并且基于确定不返回任何值的方法和没有任何参
数的方法。此外,Washizaki等人(2004)认为JavaBean是一个黑
盒。考虑内部构件可以提供许多重要的信息,这些信息有助于更准确地
度量JavaBean的可重用性。Thapar和Sarangal(2020)提出的基于模
糊的方法也不可行,因为模糊决策是基于利益相关者的意见和其他几个
因素,如安全性、可恢复性、管理工作、可测试性等。大多数建议的指
标缺乏详细的实证分析,以验证建议的指标。很少有度量标准以评估组
件的可重用性为