没有合适的资源?快使用搜索试试~ 我知道了~
沙特国王大学学报Java语言组件AmitRathee,Jitender K.Chhabra印度哈里亚纳邦Kurukshetra 136119国家技术学院计算机工程系阿提奇莱因福奥文章历史记录:收到2021年2022年4月11日修订2022年5月13日接受2022年5月24日在线提供关 键 词 :JavaBeansCBSD组件A B S T R A C T软件复用是软件开发过程中的一个很有前途的机会,有助于提高开发的软件系统的质量。质量的提高也促进了软件体系结构重用的机会。在过去的几十年里,软件复用以基于组件的软件开发(CBSD)的形式越来越流行。构件作为CBSD的基本单元可重用性的程度可以基于组件的属性/特征的内部和互连性的程度来量化。这可以通过定义合适的度量来计算,以衡量组件的可重用性。虽然已有CK、MOOD、Halstead、McCabe等度量面向对象软件系统可重用性的度量标准,但它们都不是直接可重用的在CBSD环境中。这是因为这些指标仅适用于类级别,并且它们不针对重要的组件接口,并且定义了组件在CBSD环境中的可组合性因此,本文旨在研究软件构件的可重用性、灵活性、可组合性和适应性。在此基础上,提出了一个专门针对JavaBean的可重用性度量标准.这个度量标准有助于度量JavaBean的体系结构级别的可重用性。JavaBean组件标准是本文的主要目标,因为基于该标准的组件尚未得到充分的研究,并且只有少数度量套件可用于度量JavaBean的可重用性。建议的组件可重用性度量套件验证实验以及对Briand©2022作者(S)。由爱思唯尔公司出版代表沙特国王大学这是一个开放的访问CC BY-NC-ND许可证下的文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。1. 介绍软件复用是一项关键技术,它有助于快速开发大型和复杂的软件系统,并在一个成本有效的方式。软件复用可以帮助实现体系结构级的可复用性。软件复用的重要性可以很容易地从以下事实中理解:仅美国国防部每年就可以通过将软件复用提高1%而节省3亿美元(Anthes,1993)。在过去的几十年里,可重用性一直是软件开发的一个活跃部分,它的根源可以追溯到1969年,当时Mcllroy引入了con-sign,*通讯作者。电子邮件地址:amit1983_rathee@rediffmail.com(A.Rathee),jitenderchhab-ra@gmail.com(J.K. Chhabra)。在这项工作中,我们提出了一个新的可重用性度量套件测量Java语言组件的可重用性制作和主办:Elsevier在德国加米施举行的一次国际会议上提出了可重复使用部件的概念(McIllroy,1968)。基于Frakes和Succi的研究,旨在确定复用程度、软件质量和生产率增益之间的关系,可以得出结论,促进复用总是导致底层软件系统质量的改进(Frakes和Succi,2001)。随着FOSS(自由和开放源码软件)的普及,软件组件以包的形式被管理(Cosmo等人, 2009年)。1.1. 软件开发软件开发中的可重用性可以以多种形式为目标,即设计模式、架构模式、软件库、框架、算法、测试用例、组件、工件、过程、需求规范、技能和/或想法。基于构件的软件开发(CBSD)是一种能够高度促进体系结构级重用的方法。CBSD方法的重点是通过集成独立的可重用单元(称为组件)来开发软件。组件的重要部分是其接口,它在https://doi.org/10.1016/j.jksuci.2022.05.0101319-1578/©2022作者。由爱思唯尔公司出版代表沙特国王大学这是一篇基于CC BY-NC-ND许可证的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。可在ScienceDirect上获得目录列表沙特国王大学学报杂志首页:www.sciencedirect.comA. Rathee和J.K. Chhabra沙特国王大学学报5534确定组件的可重用性组件的接口通过定义一组操作,向外界提供其提供的服务的详细信息组件的接口扮演着重要的角色,并有助于将不同的组件集成在一起,从而在CBSD环境中拥有功能齐全的软件。为了利用可重用性的好处,重要的是要测量组件的可重用性因素,因此它的底层架构,以便可以确定其在软件开发中的适用性/有用性。出现此要求是因为可能存在不止一个组件,这些组件提供CBSD环境中软件开发人员所需的功能。在这种情况下,开发人员需要比较并从相似组件池中选择最佳组件。这就要求必须有一些度量标准,这些度量标准能够量化组件的特性,从而有助于评估、比较并最终选择最佳组件。这些指标可以帮助开发人员识别与CBSD环境相关的可能风险,从而帮助改进各种底层软件质量,如可靠性、可维护性等。1.2. 面向对象软件复用技术及其局限性在工业界和研究界,在文献中已经提出了几种成熟的软件度量和模型用于面向对象的软件系统,并且它们已经成功地组合用于测量面向对象(OO)软件系统的可重用性和/或质量方面(Onyango等人,2020;Padhy等人,2018年)。这些成熟的软件度量和模型包括Chidamber和Kemerer度量套件、McCabe的圈复杂性度量、Halstead复杂性度量和MOOD度量套件(Aggarwal等人,2006年;哈里森例如,1998;Chidamber和Kemerer,1994; Ampatzoglou等人, 2018年)。但是,由于以下几个原因,这些指标不能直接应用于CBSD环境中的组件:1. 许多指标,如McCabe和MOOD指标套件,都需要访问代码的内部。 然而,有时这种访问在黑盒组件的情况下受到限制。因此,抑制了许多标准OO度量的使用。2. 一个组件通常是两个或多个软件元素(类/接口)的集合,而OO度量通常在单个软件元素的上下文中定义和使用。因此,面向对象的度量构成了CBSD中的可伸缩性问题。3. 大多数现有的面向对象的可重用性度量都有一个特定的目标,并集中在测量软件的某些复杂性方面,通常利用其结构特征。然而,还有其他重要的软件资产,如文档,语义特征和其他外部质量参数,可以用来提高组件的可重用性测量精度。因此,是改进现有度量套件的一个范围4. 各种关键的特定于组件的特性/特征,例如接口的存在、接口的复杂性、完整性和可定制性,仍然是传统OO度量无法检测到的。5. 组件的整体架构与普通类不同。因此,常规OO度量不能最佳地确定准确的分量间和分量内关系。6. 传统的尺寸度量,如Halstead尺寸度量,不能度量组件的可重用性。这是因为具有较少依赖性的冗长组件被认为与具有更高依赖性的等效小型组件相比,它的可重用性更高。7. McCabe例如,对于黑盒组件,只有接口是可见的。因此,基于线性独立路径的总数的存在的定量测量变得无用。除了上面提到的软件可重用性/质量度量,还有另一个度量,称为涡 轮 模 块 化 质 量 ( TurboMQ ) , 由 Mitchell 和 Mancordarin(2008)提出。该度量是用于评估软件的不同恢复架构的质量评估度量它是一种独立于架构的地面实况方法,可以促进内聚集群并惩罚过度的集群间耦合。基于TurboMQ度量的这一特性,它也被应用于衡量软件组件的质量(Rathee和Chhabra,2019)。然而,在这里,有必要确定这个度量在确定JavaBean的总体可重用性分数时有何用处。本文的其余部分组织如下:第2节提供了一个正式的软件组件的定义,解释了计算可重用性在组件级的需要,并进一步提供有关的贡献和采用的方法的文件的细节。第3节提供了在组件级可重用性和可用度量方面所做的大量工作的必要细节。第4节简要讨论了在建议的可重用性度量套件中计算不同度量时使用的各种关键术语。在第5节中,详细阐述了属于度量套件的不同度量以及案例研究的细节。本节之后是第6节,其中提供了有关拟议度量套件的理论验证的详细信息。第7节详细介绍了实验步骤和制定不同的研究问题。第8节给出了本文所获得结果的必要细节,以及它们在研究问题背景下的相应解释。最后,第10节通过指定必要的结论和未来可能的工作细节来完成本文。2. 构件级可重用性的形式化表示正如本文1.1小节中所讨论的,软件工程中的可重用性可以以许多不同的形式实现。这就造成了在软件工程中缺乏广泛的、系统的重用方法的问题。因此,声称当前的研究社区对软件组件的可重用形式没有达成共识并没有错。在软件工程领域,“组件”(也称为可重用单元)有不同的同义词,包括设计模式、架构模式、框架和/或以方法、类、模块、包和库的形式底层现有源代码。因此,首先,它是强制性的,正式回答不同的问题,在本文中,实际上解释建议的度量套件:如何定义一个软件组件?哪些不同的组件属性有助于提高可重用性和适应性?2.1. 组件的可作者在Sametinger(1997)中将组件定义为软件系统中进一步描述特定功能的可识别、自包含和可重用的部分它可以通过其独特的接口(封装内部组件)轻松地与系统中的其他组件集成,以提供更广泛的功能。这些组件必须遵循组成A. Rathee和J.K. Chhabra沙特国王大学学报5535为了在CBSD环境中直接可重用,底层组件模型制定了标准(Lau和Wang,2007)。在该文献中指定的不同组件模型标准包括.NET组件模型、JavaBean组件模型、公共对象请求代理体系结构(CORBA)组件模型、X-MAN组件模型、企业JavaBean(EJB)组件模型和组件对象模型(COM )(Niekamp,2005; Crnkovic等人, 2010年)。JavaBeans组件模型的适用性在不同领域中被广泛认为是富有成效的(Feljan等人,2009; Lau和Di Cola,2017; Furht,2019)。Feljan等人(2009)的作者利用JavaBeans组件模型提出了一种新的特定于领域的组件模型,称为SaveCCM,用于实时车载嵌入式系统。此外,Rathee和Chhabra(2019)的作者提出了一种建模方法,通过从底层软件系统中挖掘面向对象的可重用软件组件来识别JavaBean 组件 。因 此, 由于 Java 编程 语言的 广泛 流行及 其与JavaBean组件模型标准的密切相似性(Jendrock等人, xxxx),本文重点介绍了在CBSD环境中按照JavaBean组件模型规范设计和提供的软件组件。据作者可重用性度量提供了非常琐碎的信息并且遗漏了重要的参数,例如组件的复杂性(Washizaki等人,2004年)。此外,这些度量中的许多在本质上是通用的,并且不针对任何特定的组件模型,例如COM、JavaBean、CORBA等。此外,JavaBean是Java语言最重要和最有用的组件模型之一(Englander,1997)。 基于人工调查,并据作者所知,只有一个单一的度量套件(Washizaki et al., 2004年)提出了一种度量不同JavaBean(组件)可重用性的方法。然而,这个指标套件有以下缺点:-。1. 该度量套件是专门为黑盒组件提出的因此,对于白色/玻璃盒组件,它失败或不那么有效。2. 这个度量标准套件并不以测量JavaBean接口的复杂性为目标。复杂组件难以理解,因此其在CBSD环境中的适用性受到限制(Gosain和Sharma,2017; Anguswamy和Frakes,2012)。因此,度量JavaBean组件接口的复杂性3. 作者在Washizaki et al. (2004)强调了这样一个事实,即具有大量没有参数或返回值的业务方法的组件被认为是自完成的。我们认为这种限制不是一个好的选择。4. 度量的计算很简单,只考虑JavaBean中存在或不存在的特性2.2. 贡献和方法基于CBSD在IT行业的发展趋势和JavaBean的发展,以及缺乏合适的JavaBean可重用性度量标准的现状,提出了一种新的JavaBean可重用性度量标准。所提出的度量套件捕获了许多特性,如软件的内聚性、复杂性、完整性、耦合性、可定制性,这些特性有助于在宏观/微观层面上理解所考虑的软件的体系结构提出的度量套件测量不同的质量维度的Java-Bean,并最终计算其可重用性得分。这个可重用性分数反映了组件的重用质量,可以帮助从专为特定功能而设计。本文的主要贡献概述如下:1. 提出了一个度量组件的可重用性得分,遵循JavaBeans组件模型的规范。2. 提出了多个标准,即内聚性、复杂性、完整性、耦合性和可定制性,这些标准以前没有在组件级别上处理过。据作者所知,用于这些度量的度量标准是唯一的本文作者采用的方法包括提取JavaBean的不同关键特征,计算属于度量套件的不同度量,并对所提出的度量套件进行理论和实证验证。利用作者设计的一个半自动化工具,从JavaBean中提取了关联、继承、方法调用、参数、返回类型、属性用法、间接用法、共变和语义属性等关键信息对不同属性的Briand的框架进行理论验证的通过对不同软件系统的研究,对所提出的可重用性度量标准进行了实验验证所研究的软件系统分为三类。第一类包括根据JavaBean组件模型规范设计的即用型组件。第二类包括最先进的面向对象的软件系统,这些系统的设计和管理都是基于可重用性标准提升的思想。最后,第三类包括普通的面向对象软件系统。3. 文献调查在过去的几十年里,在开发新的软件系统时,在软件重用的方向上做了大量的工作。CBSD是一种被广泛采用的以组件形式促进软件重用的方法。组件提供功能重用性。Szyperski等人 提供了在研究团体中广泛采用的软件组件的定义(Szyperski等人,2002年)。它们强调了这样一个事实,即接口是基本的构建块,每个组件都可能具有属性、方法、事件以及不同组件的接口之间的关系。Rathee和Chhabra(2019)提出了一种基于搜索的多目标方法,用于从面向对象软件系统的现有源代码中识别可重用软件组件。Shatnawi等人给出了一种将面向对象的API转换为相应的基于组件的API的方法(Shatnawi等人,2018年)。作者得出的结论是,基于组件的API与其对应的对应部分相比更易于管理Rathee和Chhabra(2019)的作者得出结论,多媒体软件中的可重用组件有很多研究机会,并提出了一种从传统多媒体软件系统中识别可重用多媒体组件的方法。Thapar和Sarangal(2020)的作者提出了一种基于多标准的混合模糊度量方法,用于根据其基础数量量化软件组件的可重用性。Papamichail等人提出了一种基于平凡静态分析度量的软件可重用性评估方法(Papamichail等人,2019年)。作者通过构建基准数据集来减少主观性,并使用AGORA搜索引擎从中提取基于开发人员的类和包级别的该重用率被用作实际的地面实况,并从源代码的结构属性中提取A. Rathee和J.K. Chhabra沙特国王大学学报5536代码的结构属性以及软件架构(如耦合、内聚和复杂性(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等人对不同研究人员提出的可重用性度量标准进行了系统的调查,并提供了重要信息,如引用最多的论文,影响软件组件可重用性的不同因素,用于测量可重用性的因素数量(MijacandStapic,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 andAraban(2004)仅适用于源代码不容易获得的黑盒组件。根据文献调查,我们得出结论,一些已经提出的度量本质上是非常基本的,并且没有考虑底层组件的复杂性。特别是Washizaki等人(2004)给出了更接近的度量标准,它包括五个度量标准,它们基于有限的可用信息来度量JavaBean的可重用性,即EMI(元信息的存在性)、RCO(组件可观察性的比率)、RCC(组件可定制性的比率)、SCCr(组件返回值的自完整性在这些度量中,EMI度量非常微不足道(给出二进制输出)。RCO指标仅测量可读属性,不测量任何关于提供程序的内容,并且需要底层组件的接口。RCC指标将自定义度量为可写属性/字段的数量,而不考虑内部JavaBean由于其黑盒性质。最后,接口复杂度计算非常简单(使用SCCr和SCCp度量),并且基于确定不返回任何值的方法和没有任何参数的方法。此外,Washizaki等人(2004)认为JavaBean是一个黑盒。考虑内部构件可以提供许多重要的信息,这些信息有助于更准确地度量JavaBean的可重用性。Thapar和Sarangal(2020)提出的基于模糊的方法也不可行,因为模糊决策是基于利益相关者的意见和其他几个因素,如安全性、可恢复性、管理工作、可测试性等。大多数建议的指标缺乏详细的实证分析,以验证建议的指标。很少有度量标准以评估组件的可重用性为A. Rathee和J.K. Chhabra沙特国王大学学报5537ðþ Þ-日使用JavaBean组件模型设计此外,为黑盒组件设计的度量套件不能直接应用于白盒/玻璃盒组件,其源代码是可访问的。一些建议的方法只考虑内聚和耦合因素,而确定组件的整体可重用性。最后,一些建议的metrics是主观的,是非常难以衡量的实时应用程序。因此,我们提出了一套新的度量方法来度量组件的可重用性,并提出了一种新的度量方法来度量底层组件的不同维度。这些维度包括内聚性、耦合性、可定制性、自完整性和相应的接口复杂性。最后,基于这些测量的维度,计算最终的可重用性分数4. 背景和使用的术语在介绍用于度量JavaBean可重用性的不同指标之前,必须介绍用于获得精确定义的各种术语和命名约定在面向对象的软件环境中的软件组件。它有助于用户理解本文中提出的想法和概念。本文中所用的各种术语和数学表达式如下:4.1. 软件组件软件组件基本上被定义为一个软件(模块化单元),通过其接口(提供和需要接口)提供统一的预定义服务,并且能够与其他组件通信(Rathee和Chhabra,2019)。它封装了它的内容,可以很容易地用另一个类似的组件替换它在软件设计中提供了即插即用的功能此外,它有助于将软件分解为可管理的部分,从而降低复杂性。因此,软件组件促进了体系结构级的重用。在OO软件工程中,术语类和包是帮助在Java编程语言中实现模块化编程的关键组成元素。但是,类、包和组件之间存在在面向对象术语中,类是程序员使用它代表一个实体,通常在应用程序中执行微功能(特定的小任务)。在面向对象术语中,组件是系统设计人员使用的设计时单元,并且在复杂性方面比类更大。组件通常表示为一起执行宏功能(更大的功能,更接近业务描述,如“购物车”和“库存”)的类组件的接口将其底层内容对外界隐藏起来。Java中的包是一个命名空间,用于组织类和子包,以处理命名冲突并提供受控访问。下面总结了类、组件和包之间的主要区别,并强调了组件的重要性:1. 一个类通常是一个可重用性较低的单位相比,其组件的副本。这是因为类通常与其他类有更多的依赖关系,而组件具有较少的外部依赖关系。因此,组件是一个更可重用的单元。2. 类的主要重用关系是继承,而组件的重用关系是聚合/组合。3. 与类组件相比,组件在接口和实现关注点之间有着更清晰的区别4. 该包还包含一组类和子包,但是,并不总是强制要求这些分组的类彼此相关。因此,它不能被视为CBSD环境中的可重用组件。软件组件可以从头开始创建,也可以作为独立的集群从现有软件中提取。在基于组件的软件体系结构中,一个组件可能包含其他组件(集群内的另一个集群),导致软件体系结构的层次化组织数学-通常,软件体系结构中第i层的组件基本上表示为一对Ci/Ei;Ri>,其中Ei是属于第i层组件的一组元素(组件的内容)。组件的内容是一组类(和/或Java/C#接口)。Ri表示第i层组件所拥有的关系集由于第i层的组件可能需要第i层组件的服务,第一次它可以为在该级别1000-1000级。因此,将集合Ri定义为Ri],该集合是一个二元关系集,它表示第i层成分的内容的有向联系与i处存在的任何一种内容一 起 输入第1个或i第一次水平组件。4.2. 软件构件在基于构件的软件体系结构中,接口是构件的重要组成部分.这些接口代表了基于组件的软件系统中不同组件之间的体系结构交互。以非常常见的方式,这些接口根据一组操作(方法/功能)来指定,并且它们通常被分类为提供接口(典型组件向其环境提供的一组操作)和要求接口(典型组件从其环境需要的一组操作)(Crnkovic等人,2010年)。作为源代码的一部分,可以使用两种方法之一来指定软件组件的接口描述接口的一种方法是独立于语言的方法,其中使用各种接口描述语言(IDL) Guerrero-Garcia et al. (2009年)。描述组件接口的另一种方法是依赖于语言的方法,其中使用特定的编程语言风格来表示一组方法和属性。在文献中,存在几种技术来识别构成组件接口的一组方法和属性(Liu等人,2018; Shatnawi等人,2018;Rathee和Chhabra,2019; Rathee和Chhabra,2019)。这里,重要的是要注意,构成组件接口的方法和属性列表可能不同,因为文献中的不同方法使用不同的机制。因此,本文考虑了接口的形式化定义,以便以抽象的方式定义度量在形式上,一个compo-软件体系结构中第 i 层的组件基本上表示为一对Interfaces [ 接口]i;Requires [提供]i;Requires [需要] j。在这里,Providesi是属于第i个组件的一组方法和属性,表示由组件与其外部环境的连接。类似地,Requiresj是一组方法和属性,它们实际上属于某个第j个组件(CBSD环境中的另一个组件)并且表示第i个组件对其外部环境的依赖性A. Rathee和J.K. Chhabra沙特国王大学学报5538我SC我我1我我我212SC4.3. 软件子组件从OO遗留软件系统的现有源代码识别的组件C i通常被认为拥有其内容的平面组织,即,在从现有软件系统识别的其不同内容之间没有特定的组织(Mishra等人,2009; Shatnawi等人,2018年:Rathee和在数学上,一对两个元素e 1和e 2之间的任何类型i的关系(如表1所述)都表示为r ie1;e2。的存在的任何等关系是表示为ri=e1;e2=1,并且它表示e1对e2的依赖性。它代表着--我说,我!埃岛此外,这些关系本质上是不对称的,这意味着任何以e i! e i不自动暗示e i!埃岛所有这些关系都存在于Chhabra,2019)。相反,它的所有内容通常都被认为是21因为这样的组件是通过将不同的单独软件元素聚集在一起来标识的。这与包不同,其中包的内容可以具有其内容的分层组织,即,一个包可以包含子包,的子包。这意味着在包的定义的情况下,子包可以包含另一个子包。因为组件被认为具有其内容的平面组织,而不是具有其内容的分层布置(如包的情况)。因此,本文认为,有必要描述子组件的概念(被共同标识为单个实体的组件的内容的动态组),其对于测量CBSD环境中组件的可重用性是重要的。子组件的概念很重要,有助于提供不同组件的逻辑组织。这种逻辑结构有助于我们轻松地理解一个组件,并计算本文中提出的各种指标。在本文中,考虑了一个子组件在任何阶段作为除了当前考虑用于计算特定度量值的任何一个内容之外的一个组件的内容的组。例如,假设一个组件总共有t个内容属于它,那么,动态收集(t-1)个内容,对于要为其计算度量的分量,通常称为子分量。在数学上,子分量表示为:属于不同组件的类、接口、子包为了便于计算,将所有这些关系分为以下几类:4.6.1. 类-子包关系这些关系存在于给定组件的内容之间,并且被称为组件的内部关系。这些关系用于计算组件的内聚质量参数(也称为不同内容之间的相关性)。它表示特定类/接口与其他类/接口的相关性相同成分的含量。这些关系帮助我们用于测量组件内容物之间的功能相关性,因此是组件质量的直接指示器。在数学上,对于分量Ci<$Ei;Ri>,类-子包关系表示为rtei;Sj,其中Sj表示发送C i和Sj的子包Ei和eiRSj。类型t的任何类-子包关系存在于表示为rt=ei;Sj=1的组件中,使得存在至少一个元素,例如ej2Sj,使得对于类型t的某个关系,rt=ei;ej=1。换句话说,我们可以说类-子包关系存在,当且仅当在给定的类之间存在任何类型的关系一个组件和属于同一个组件的子包的任何类。这里,需要注意的是,表1中提到的所有类型的关系都可以属于类-子包类别,直到它们被限制在组件中,体育赛事 ;Rin;s:t:即,涉及依赖关系的软件元素(内容)仅属于同一组件。我ESCE;&jESCj¼ jEj-1子组件的概念用于确定组件的各种质量参数,即内聚性、耦合性等。4.4. 不相交分量从软件系统提取的组件本质上是不重叠的,使得对于任何两个组件C1和C2,CJ 在不同的层次上,有Ei\EjU。 因此,任何4.6.2. 组件-组件关系由于属于不同组件的内容之间的相互作用/依赖性,这些关系也被称为组件间关系。这些关系用于计算组件的耦合从可重用性的角度来看,没有或更少的相互依赖性的组件被认为是最好的。数学上,为任何两组件Ci1/4Ei;Ri>和Cj<$Ej;Rj>,则分量-分量关系表示为两个不同的组成部分不包含共同的内容,它们在本质上总是不相交的。4.5. 空零部件一个组件不包含任何内容,因此组件的内容之间没有关系,称为空组件。在数学上,它被表示为.4.6. 关系的定义本文中的术语关系表示组件的不同内容之间的依赖关系以及组件对其他组件的依赖关系。 这些依赖关系可以是不同的类型,即继承、引用、语义、聚合等。Mahouachi,2018; Chhabra等人,2017年。表1详细说明了为评估组件质量而考虑的不同类型的关系其中e i和e j是分别属于第i个和第j个组件的两个不同的软件元素(类/接口),即e i2E i和e j2E j。任意两个分量Ci和Cj之间的分量-分量关系的值存在,即.rtei;ej1 if只有当两个成分之间存在T型关系内容和内容,如:1.换句话说,我们可以说,当且仅当属于不同类的任何两个类之间存在某种类型的关系时,组件-组件关系存在。成分这里,表1中提到的所有类型的关系都可以属于组件-组件类别,只要关系中涉及的元素,即ei和ej属于不同的组件,即依赖关系涉及的软件元素(内容)仅属于同一组件。图1通过考虑一个假设的例子,示意性地显示了存在于类、子包和组件级别的这两种关系。在这个假设的组件图中,考虑了三个组件,即分别为C-1、C-2和C-3。CR我A. Rathee和J.K. Chhabra沙特国王大学学报5539表1组件中不同种类的依赖关系S.N.关系名称/类型用符号描述12协会继承ARIR表示这里,类C1具有与另一个类C2的关联关系,当且仅当C1具有类型C2的属性表示比如C1和C2两个类来,同学们C1与另一个3呼叫CR类C2当且仅当C1(子类)是C2(父类)的特殊形式。代表存在于C1和C2两个类这里,类C1与类C2有调用关系,如果类C1对一个或多个属于类C2的方法。4参数PR两个类C1和C2有这种关系当且仅当5返回RRC1中的方法有一个类C2的参数两个类C1和C2有这种关系当且仅当6属性AuRC1中的任何方法都具有类C2的返回类型。如果类中的任何方法比如C1直接访问使用另一个类的属性说C2或相同的类C1。这种关系也存在于给定的类。78间接/传递共同改变INRCCR表示类之间的间接方法调用。在这里,如果C1有一个方法调用了另一个类C3的方法,并且C3有一个方法调用了C2,则类C1与另一个类C2有间接关系。代表了班这里,两个类分别是C1和C29语义Sr具有协同变更关系当且仅当它们在版本控制系统中是相互关联的。表示基于令牌的关系,不同的类或属于一个类的方法之间。活泼地这些组件绘制为矩形,其内容显示为圆形(实心和空心)。在任何时刻,组件的子包都被定义为除一个内容(由空白圆圈显示)之外的所有内容的集合这里,在假设的图中,子包显示为实心圆的集合。在所考虑的假设示例中,假设两种类型的关系存在于相同或不同组件的不同内容之间(如上所述),并且用两种箭头示出。实线箭头表示组件级别的类-子包关系这些类型的关系仅限于组件内部,它们是由于属于组件的内部类之间的相互作用。这些关系用于计算组件级的内聚性。类似地,组件-组件关系由虚线箭头示出。由于组件类间的相互作用,组件之间存在这种关系这些关系有助于确定组件与其他组件的耦合。5. 软件构件本文的这一部分提出了数学公式和细节的案例研究进行了拟议的可重用性评估指标套件在本文中提出。本节分为以下两节:5.1. 度量套件定义和计算软件组件是使用Fig. 1.描述组件、类、子包、类-子包关系和组件-组件关系的图。CBSD技术。这些组件为开发人员提供了一个节省成本和加速的开发环境,并有助于促进重用组件形式的现有资源。在新软件的开发过程中,现有资源的可用性有助于从头开始开发然而,组件重用仍然面临着采用问题,由于开发人员需要从大量的第三方或内部组件中选择最好的组件这是因为多个现有组件可以满足开发人员的需求。这就产生了从可能的组件池中选择最佳组件的问题。软件度量学可以通过提供一种自动化的方法来缓解这个问题,开发人员可以使用这种方法来评估组件的质量。此外,每个软件组件都满足由组件模型之一(如JavaBean)制定的规范因此,本文提出了一个度量标准,该标准根据组件的不同特征,对JavaBean的不同维度进行度量,并最终给出JavaBean的总体可重用性评分,从而给出其底层体系结构。本文中提出的不同指标将在以下小节中详细介绍:5.1.1. 分量内聚度(CCoh)度量软件构件是符合构件模型的软件元素,其设计主要集中在为整个软件系统提供独特的功能。这意味着组件的内聚性必须足够高,组件的构造元素(不同的类和接口)具有在许多方面相似的不同方法,并且相关方法存在于一个地方。在这里,组件的内聚性取决于其内容之间的内聚性。原始的面向对象度量集不能直接应用于度量组件的内聚。这是因为原始的面向对象度量仅适用于单个类级别。但是,通常,组件是两个或更多类的集合。因此,它们不能直接应用于组件级别。此外,存在于组件中的不同种类的关系被分为两类,即类-子包关系和组件-组件关系(如上面的第4节所讨论的)。在这两种可能的关系中,类-子包关系用于计算组件的整体内聚。在本文中,所提出的内聚度量CCoh基于两种内聚度量:1. 内在凝聚力2. 外部凝聚力A. Rathee和J.K. Chhabra沙特国王大学学报5540ðÞ不 X.Σ;.Σω ð- -XXNðÞð Þ ¼ω ð- -yzX由专家(开发人员),他们帮助灌输专家意见MMIJ内部内聚表示属于组件的单个内容(类/接口)的内聚A的内在凝聚力属于组件Ci的内容ej表示为InCohi;j,其目的是测量不同方法/函数和属于内容的成员变量之间的内聚水平e j。因为内聚度量了不同方法和成员变量在功能上相互关联的效率。因此,本文中的内聚测量基于两种关系,即AuR和SR,如上表1AuR关系表示属于同一个类或另一个类的方法中的成员变量访问SR关系用于计算属于一个类的不同方法对之间的语义内聚内聚性测量中。属于组件的内容的外部内聚是指该内容与属于组件的其余内容的内聚(称为组件的子包)。属于分量C i的内容e j的外内聚性被表示为OutCoh i;j而且旨在衡量单个内容与其余
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功