没有合适的资源?快使用搜索试试~ 我知道了~
多目标优化方法提高面向对象系统模块化质量并减少类之间包的移动
制作和主办:ElsevierJournalof King Saud University沙特国王大学沙特国王大学学报www.ksu.edu.sawww.sciencedirect.com用多目标优化和加权类连接改进面向对象软件包结构Jitender Kumar Chhabra印度哈里亚纳邦NIT Kurukshetra计算机工程系接收日期:2015年2月13日;修订日期:2015年7月21日;接受日期:2015年2015年11月2日在线发布摘要软件维护活动不遵循软件包结构的原始设计决策,通常会降低软件模块化的质量,导致系统质量的下降。造成这种结构性混乱的主要原因之一是软件包中源代码类的分组不当改进这种分组/模块化结构,以前的研究人员制定了软件再模块化问题作为一个优化问题,并解决它使用基于搜索的元启发式技术。这些优化方法旨在提高结构的质量度量值,而不考虑原始的封装设计决策,通常会导致全新的软件模块化。完全改变的软件模块化实现起来成本很高,开发人员/维护人员也很难理解。为了缓解这个问题,我们提出了一种多目标优化方法,以提高面向对象系统的模块化质量,最小可能的移动类之间的现有包的原始软件模块化。使用NSGA-II,一个广泛接受的多目标进化算法进行优化。为了保证对原始包结构的修改最小,本文提出了一种利用加权强度计算类关系的新方法。在原包结构的基础上计算不同类之间关系的权重。一个新的目标函数已制定使用这些加权类关系。该目标函数驱动优化过程朝向更好的模块化质量,同时确保原始结构的保存。为了评估所提出的方法的结果,一系列的实验进行了四个真实世界和两个随机的软件应用程序。实验 结果清楚地表明有效性我们的方法,*通讯作者。电子邮件地址:amarjeetnitkkr@gmail.com(Amarjeet),jitenderchhabra@nitkkr.ac.in(J.K. Chhabra)。沙特国王大学负责同行审查http://dx.doi.org/10.1016/j.jksuci.2015.09.0041319-1578© 2015作者。制作和主办由爱思唯尔B.V.代表沙特国王大学。 这是一篇基于CC BY-NC-ND许可证的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。关键词多目标优化软件包重构;模块化;加权方案;维护350Amarjeet,J.K.Chhabra通过在原有软件模块化的包之间进行类的微小移动,提高了现有包结构的模块化质量。©2015作者。制作和主办由爱思唯尔B.V.代表沙特国王大学。这是一篇基于CC BY-NC-ND许可证的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。1. 介绍软件模块化的质量对许多软件系统质量参数有着重要的影响,如可理解性和可维护性(Tonella,2001; Praditwong等人,2011年)。对于面向对象的软件系统,模块化在很大程度上依赖于类。类只不过是数据和相关方法的集合。一般来说,对于小型软件系统,类被认为是模块,然而对于大型和复杂的系统,据报道,一组协作类(即包)可以是比类更好的系统组织模块(Gupta和Chhabra,2009),更大的软件系统通常通过使用这些模块化标准来设计和开发。随着软件系统的发展,类的添加、删除和修改会以不利的方式影响原始软件的模块化。已经观察到,由于期限短,开发人员在维护期间经常不遵循原始的包设计规则,以便提前完成工作,从而导致模块化结构劣化(Marcio等人,2014年)。因此,原始的模块化结构被修改到由于类在不同包中的次优放置而失去结构质量的程度(Gui和Scott,2006)。软件维护是一个持续不断的现象,但恶化的结构质量使维护变得困难,并对软件进化产生负面影响(Mitchell和Mancordee,2006)。因此,软件系统的重新模块化变得必不可少,每当系统质量下降到一个点,进一步的发展是不可行的,在允许的时间和成本。过去,许多研究人员已经通过将软件重新建模问题表述为基于搜索的优化问题并使用元启发式技术解决了该问题(Mitchell,2002; Mahadavi等人,2003; Patel等人,2009年; Abstellar等人,2009,2013; Cui和Chae,2011; Praditwong等人,二〇一一年;Barros,2012)。大多数基于搜索的重新模块化方法通过优化耦合和内聚标准来改进软件结构(Mahadavi等人,2003; Praditwong等人,2011; Barros,2012)。这些方法在绝对意义上改进了耦合和内聚,但是新建议的打包模块化解决方案通常变得如此复杂并且与原始解决方案不同,以至于软件维护人员几乎无法接受(Marcio等人,2014年)。当系统需要彻底检修时,这种方法可能是有用的。这种情况偶尔会出现,但不是在初始/定期维护期间。在初始/定期维护时,系统需要重新模块化,采用改进的模块化结构,减少重组成本。因此,质量标准需要以这种方式建模,以便它可以在保持原始包模块化的情况下驱动优化过程。在文学中,一些研究人员(Abstract等人,2009,2013; Bavota等人,(2014)试图解决这 些 问 题 通 过 使 用 一 些 约 束 控 制 优 化 过 程 。 作 者(Abelman等人,2009年,2013年)通过将包耦合、包内聚和包循环依赖作为单目标和多目标优化问题来改进包结构。他们通过对类在包之间的移动施加约束来控制优化过程。然而,定义这些约束并不容易,维护人员必须对软件模块化的原始设计决策有深刻的见解。在大多数情况下,维护者不是原始模块化的开发人员(Bavota等人,2014年)。在这种情况下,找到可以驱动优化过程朝向原始模块化的设计决策的约束变得非常困难。Bavota等人(2014年)最近提出了另一种方法,而不是通过约束进行优化,其中最终用户的参与成为强制性的。他们的方法是基于结构和语义依赖性。他们通过将软件最终用户置于每次迭代中来请求反馈,从而控制了重新模块化过程。在这种方法中,最终用户必须对原始软件模块化的设计决策有透彻的理解,这在大多数情况下实际上也是不可行的。因此,可以说,软件原始结构的重要性在重新模块化过程中起着重要作用,但将其包含在优化过程中的现有方法是高度个人化的,并且这些人的可用性总是这些方法的限制。因此,有一个巨大的需要,以纳入原来的模块化结构的特点,最好是没有必要的个人有清晰的洞察力,原来的设计。本文试图解决这个问题,所提出的方法是能够包括从源代码的原始结构特征,而不需要任何意识到最终用户/原始开发人员。本文提出了一种多目标优化方法,以保持软件模块化的原始设计决策为目标,改进面向对象系统的现有包结构。为此,优化过程由目标函数控制,目标函数根据新提出的加权关系来制定,这些加权关系反映了原始设计决策的性质。每种类型的现有关系的权重计算的本地(内部和内部关系)的关系在原来的软件模块化。此外,这些加权关系用于计算类对之间的整体连接强度。这种连接强度有助于保持围绕原始软件模块化的优化过程多目标规划包括包装内聚性指数、包装连通性指数、包装内连接密度和包装尺寸指数作为目标函数。为了解决多目标优化,我们使用非支配排序遗传算法(NSGA II)(Deb等人,2002年)被广泛接受的多目标进化算法。我们特别考虑了这个算法,因为面向对象软件包结构的改进351它以前已经成功地应用于解决类似的软件再模块化问题域(Barros,2012;Absolute et al.,2013年)。为了评估所提出的优化方法,我们用两种单目标优化算法进行了比较研究,模拟退火(SA)(Kirkpatrick等人,1983)和BunchAPI的爬山(HC)(Mancorpine等人,1999年)。针对四个真实世界和两个随机软件应用程序进行了一系列实验。实验结果表明,我们的方法的有效性,我们发现,我们计划的多目标优化方法改善了现有的包模块化与部分保留原来的包模块化决策。本文的其余部分组织如下:第二节提供了相关的研究工作。第三节提出了软件再模块化问题的多目标概念。第4节总结了拟定方法。第5节描述了实验装置。第6节介绍了结果和分析。第7节讨论了所提出的方法的主要贡献和局限性,最后第8节总结了未来的工作。2. 相关工作在过去的三十年里,人们对软件系统的自动再复用进行了大量的研究,大多数软件重新模块化方法基于聚类技术( Anquetil 和 Lethbridge , 2002; Wu 等 人 , 2005 年 ;Bittencourt和Guerrero,2009年)。这些方法已经被调整用于各种目的,例如用于软件模块重组(Praditwong等人,2011)、模块提取(Mitchell和Mancorpine,2006)、逻辑组件提取(Erdemir和Buzluca,2014)等。这些方法的特征在于所使用的技术(例如,基于搜索、基于共识、基于分层和分区),实体的类型(例如,变量、方法、类、源文件),实体之间的特征类型(例如,概念的、语义的、静态的、动态的)和用户交互的类型(例如,自动或半自动)(Erdemir和Buzluca,2014年)。Wiggerts(1997)首先提出了基于聚类的软件再模块化算法来提高系统的模块性的理论背景。他们还将模块化方法分为图论方法、构造方法、优化方法和层次方法。他们没有提供任何评价,只是给出了相似性度量标准和重新模拟算法的概念。后来,Anquetil和Lethbridge(1999)进行了一项实证研究,以测试Wiggerts提出的一些重构算法,并进行了一项实证研究,以比较它们的优缺点。随后,Tzerpos和Holt(1999)提出了MOJO度量,用于评估和比较从不同方法获得的模块化。MOJO度量用于度量两个模块化之间的距离,也有助于检验再模块化算法的稳定性。MOJO度量也在文献中广泛用于比较模块化(Tzerpos和Holt,2000)。Wu等人(2005年)进行了一项实证研究,对基于聚类的重新调整算法进行了比较在软件进化的背景下。他们的研究结果表明,基于解析分析的聚类算法不适用于大型复杂的软件系统。 Maqbool和Babri(2007)对软件架构恢复领域中各种层次聚类算法的适用性进行了研究。他们研究了在再调制域中使用的各种相似性和距离度量。软件系统的再模块化也是使用模式聚类来解决的(Tzerpos和Holt,2000年),词汇特征聚类(Bittencourt和Guerrero,2009),语义聚类(Kuhn等人,2007)和共识技术(Forestier等人,2000年; Kashef和Kamel,2000年)。即使在开发了许多基于聚类的软件再调制之后,由于其确定性,它们对于大型和复杂的问题都表现出低效。为了使软件重新模块化有效地解决,基于搜索的元启发式技术的应用可以发挥重要作用(Harman和Jones,2001)。软件再模块化问题表现出各种功能,可以用来制定它作为一个基于搜索的优化问题。Mancorn et al.(1999)是第一个使用基于搜索的优化技术来制定和解决软件重新建模问题的人。作者将再模拟问题转化为单目标优化问题,并采用爬山算法求解。与上述方法类似,Doval等人,1999年也将软件聚类问题表述为单目标优化问题,并提出了一种新的遗传算法来解决该问题。软件工程问题作为搜索问题的不良表示直接影响搜索空间的大小,从而影响执行时间。为了解决这个问题,Harman等人,2002年提出了一种基于搜索的软件聚类问题的规范化表示方法,该方法减小了搜索空间的大小,有助于提高遗传算法的搜索效果。简单的爬山算法(Mancorn等人,1999)已经显示了局部极小和效率问题。为了比较各种软件聚类算法的鲁棒性,Harman等人(2005)进行了一项实证研究。他们用聚类函数EVM检查了模块聚类拟合函数MQ的鲁棒性(Tucker et al.,2001年)。取代遗传算法,进化策略的使用在软件聚类中也得到了关注。Khan等人(2008)提出了一种新的基于进化策略的软件聚类方法,他们的方法在大多数情况下都取得了较好的结果大多数基于搜索的软件再模块化已经被公式化为单目标优化问题(Mancordal等人,1999; Doval等人,1999年)。近年来,基于多目标优化的软件再建模方法受到了广泛的关注. Praditwong等人(2011)首先将软件模块化问题表述为多目标优化问题,并且还提出了多目标进化算法(即,双存档遗传算法)。他们的结论是,软件模块化问题的多目标作者提出了两个多目标公式,即,最大聚类算法(MCA),并与爬山算法进行了比较。随后,Barros et al.(2012年)通过删除和纳入一个352Amarjeet,J.K.Chhabra2新目标他们的实证研究表明,有可能在目标减少的情况下取得与MCA和ECA相似的结果。Absolute等人(2009年)提出了单目标软件重新模块化,以改进软件包通过提高封装结构耦合度、封装内聚性Sn;kk×Sn-1;kSn- 1;k-1;nP 1一组n个元素的不相交子集的总数可以通过第n个贝尔数来计算,贝尔数定义如下:Xn和包循环依赖性。后来,相同的作者(Absanitaryet al.(2013))制定了同样的工作作为多目标Bn¼k¼1Sn;k优化问题,并使用NSGA-II算法求解。最近,Barros等人(2014年)进行了一项案例研究,该研究讨论了基于搜索的重新定制技术在大型开源软件系统的软件恢复背景下的适用性。他们的研究表明,基于搜索优化技术的软件再模块化需要更好的模型来驱动优化过程,而不是当前的耦合和内聚度量。Bavota et al.(2014)提出了一种基于结构和语义依赖性的重新建模方法。他们的方法是基于关系主题模型(RTM),一种概率建模技术。该方法成功地将软件模块之间的耦合从10%减少到30%当前大多数关于软件再开发的方法都集中在改进一些质量度量(例如,耦合和内聚),从而对开发人员产生全新的模块化,而不管现有的模块组织(Harman等人,2002年;Mancorn等人, 1999; Praditwong等人,2011年; Wu等人,2005年)。这些方法在质量度量方面提出了更好的模块化,但其结构与原始的包组织完全不同。因此,这种方法提出的模块化解决方案可能难以理解和/或验证。本文的目标是改进现有软件模块化的包结构,在包之间移动较少的类为了完成这一任务,我们根据类关系在原有软件模块化中的地位,提出了类关系的加权方案,并利用这一概念提出了一种新的软件包重构的再模块化机制。据我们所知,这种方法在文献中首次提出。由于首次考虑了具有不同权重的不同类型的关系,而不仅仅是二进制值,因此所提出的方法必然会提供比以前的方法更好的结果。我们的实验结果支持了我们的观点,因此,本文制定了一个有效的和最佳的软件再模块化的方法,现有的包的组织。3. 多目标软件再建模为了解决软件再模块化问题,软件系统被抽象为一个图,其中节点用类建模,边用它们的连接建模。将软件再模块化问题表示为一个图划分问题,不同的划分表示不同的模块化。一个具有N个节点的图可以被划分为N个不相交子集的集合,其并集为N。For example, a graph with set ofnode N = {a, b, c} is partitioned intofive alternatives {{a}, {b},{c}},{{c}, {a,b}},{{a}, {b,c}},{{b},{a,c}},{{a,b,c}}。 将一组n个元素划分为k个非空子集的方法的数量由第二类Stirling数S(n,k)计算(Harris et al.,2000年)。S(n,k)的定义如下:其中,Bn是软件系统的分区总数有n个类。Bn的大小随n呈指数增长。例如,B1=1,B3=5,B5=52,B7=877,B15=1,382,958,545。随着n(即类的数量)的增长,从软件系统的图中搜索可行的替代分区变得因此,图划分问题被归类为NP-难问题(Farrugia,2004)。确定性或穷举搜索方法不能在合理的计算时间内解决这些问题因此,将软件模块化问题表述基于搜索的优化可以是单目标或多目标,根据要优化的目标函数的数量在以下小节中简要描述了软件再模块化问题的单目标和多目标3.1. 单目标公式在单目标软件优化问题中,只对单个目标进行优化。它确定模块化M*,F Mω min= maxF Mj M2W其中W是所有可行的模块化的集合。M是软件模块化,如F:W?R是目标函数。这里函数F可以是最小化函数或最大化函数。大多数软件模块化问题都是基于单目标优化问题。不同的单目标优化方法因优化函数F和优化方法的不同而不同。单目标优化方法虽然得到了广泛的应用,但仍存在一些不足。(1)这些单目标方法试图仅优化一个目标函数,并且这可能将模块化解决方案限制为一个特定的软件结构属性。(2)单目标方法返回的单一固定模块化方案可能不适合具有多个潜在结构的软件模块化。3.2. 多目标规划在多目标软件优化中,多个目标被优化。它确定模块化解决方案M*,其中F M ω min F 1 M;F 2M;. ; F m Mj M 2 W其中m是目标函数的数量,Fi表示第i个目标函数。在多目标软件优化中,通常不存在单一的最优解,但可能存在多个非支配解。对于两个模块化解M1、M2W,称解M1为支配解M2(记为M16M2)当且仅当面向对象软件包结构的改进3538 i 2 1;. ; mF iM 1 6 F i M 2^9 i 2 1;.. . ; mF i M1:X1/1j2Ni凯杰●ð Þ1/1连接关系C1C2图2类连接和关系的解释。软件系统和良好的软件模块化表现出低耦合(模块间连接强度)和高内聚(模块内连接强度)。在面向对象的软件系统中,每个类与其他类之间存在零个或多个关系.因此,类之间的连接强度根据底层关系实例而变化,并且它们的权重存在于这些类之间。图2描述了两个类C1和C2之间的连接和关系。基于优化的软件再模块化方法通过优化各种质量标准来改进软件包结构。因此,质量标准定义如下:连接强度的术语主要影响集体构成联系的阶级之间的不同类型的关系。● 特定类型关系的实例数● 每种关系类型的权重第一个方面,类之间的不同类型的关系,必须在定义测量目标时定义。在一个类连接中,可以有不止一种类型的关系以及该类型关系的不止一个实例,因此需要考虑关系类型和该类型实例的数量。不同类型的关系为计算连接强度贡献了不同的权重。以下符号用于描述计算类之间的连接强度(CS)● 设Nk(Ci,Cj)表示类Ci和Cj之间的k-关系类型的实例总数。● 为了计算类别Ci到Cj的连接强度CS(Ci,Cj),我们使用以下公式:8>Undefinedif如果不定义,日优化过程以及产生的解决方案。为了提高我们提出的优化方法产生的模块化解决方案的意义,我们将权重分配给CSCi;CjwkNkCi;Cj否则k¼ EXð2Þ这些关系取决于它们相对于原始软件模块化的外部或内部位置。关系权重计算如下:令C表示类C={c1,c2,. . ,c n},软件系统S的原始包组织; |C| =n是S中的类数。● 设关系范畴集 R ={r1,r2,. . ,rm},在类Ci和类Cj之间。● 设Nk(Ci,Cj)是类Ci和Cj之间关系rk的实例数。设Ni是与类i在同一个包中的类的集合。令类范畴rk的关系权重wk计算如下:利用公式2可以计算软件系统类间的连接强度。计算连接强度背后的想法是将高度连接的类放在同一个包中,而将松散连接的类放在不同的包中。4.4.软件系统在计算类之间的连接强度后,我们生成了一个加权类连接图(WCCG)的面向对象的软件系统。<其中V是对应于类的顶点集合{vi},并且E是对应于类之间的连接的边集合{ei模块(即,类连接图中的Mi是一组相关的类或接口连接,彼此相连,也可以与PnPK我NC;;CJjRNiK我Jwk1PnP重量wkNC;C Pn PNC; C 1在[1,2]的范围内变化。转让─如下所示:● Mi是图G的类和子集的群;Mi∈G使得Mi=Vi,E(Vi)>,其中Vi是类的集合以这种方式对关系的权重进行调整,对原始包组织的算法。 这种关系的加权方案技术有助于改进软件包结构,并部分地保留了原有的包组织,而不是产生全新的软件模块化。4.3. 计算连接强度从类A到类B的连接存在,如果有一些关系从类A指向类B。与关系一样,连接也是一个有向实体。通过考虑以下三个方面来计算从一个类到另一个类的连接强度:在Mi中;Vi∈V,E(Vi)是Vi中所有类之间的联系的集合。模集合M={M1,M2,.. . ,Mk},以及|M|=k是模块的数量。Mi是类的非空集合:Vi-; /,和E V i -; /,i= 1,2,.. . ,k.● 模块是不相交集。两个不同的模Mi和Mj不能有公共类和连接Mi\Mj¼/;8016i;j6k^i-j。 这 财产 如下 的Vi\Vj¼/^EVi\EVj¼/8 1 6i;j6k ^i- j。)具有八个类的假设的面向对象软件系统的类连接图的示例在图2中示出,其中,●●●●●系统中的其他模块模块的定义如下:j2Ni1/1356Amarjeet,J.K.ChhabraXXPXX我JV={C 0,C 1,C 2,C 3,C 4,C 5,C 6,C 7}.E={e0,e1,e2,e3,e4,e5,e6,e7,e8},其中e0={CA,CA,RE},e1={EX},e2={RE,CA},e3={IM},e4={M},{CA},e5={HP,TH,CA,RE},e6={CA,CA},e7={HP},e8= {CA,RE,RE}。M={M1,M2,M3},其中M1=封装-1,M2= Package-2,M3= Package-3。M1 ={C0,C3,C4},M 2 ={C5,C6,C7},M 3={C1,C2}为了将进化算法应用于软件模块化问题,需要定义软件系统的表示(Praditwong等人,2011年)。在软件再模块化的情况下,我们将软件系统建模为WCCG。为了表示WCCG,使用了一个简单的数组,其中类映射到数组索引,包映射到数组元素。假设条件下的WCCG的数组表示软件系统的模块化强度M对于给定的模块化M,具有总共n个类,它可以通过以下公式计算:n公司简介CS C i; C j3i½ 1j2Ni其中,Ni是与类i在同一包中的类的集合,CS(Ci,Cj)是类Ci和Cj之间的连接强度。PCcoh(M)值的范围为零(当所有类都在单独的包中时)和所有连接强度的总和(当所有类都在单个完全连接的包中时)。对于许多软件应用来说,高质量的软件包在包内具有高的连接强度(从而具有高的包内聚性)。包装内聚性指数如下:图中给出的cal软件系统。 3表示为{1,3,3,模块(即,包-1)。公司简介MaxðMÞni¼1Pj2Ni CSCi;Cj1,1,2,2,2}。例如,C0、C3和C4类在相同的PCIcoh¼PCðMÞ¼PnPnCSC;C44.5. 重新调节目标在定义了软件系统的适当表示之后,接下来我们必须制定质量特性,该质量特性可以用作目标函数,以指导优化过程朝向更好的包结构。模块间和模块内连接是用于各种测量目标的广泛使用的标准(即,可维护性、可理解性和可重用性)的软件包结构优化。在软件包重构中,除了这些质量特征之外,使用其他一些质量标准也有助于将解决方案空间推向更好质量的包结构。这就是多目标当所有类都在单独的封装中(即,包的数量等于类的数量),因为每个类都相反,当所有类都在一个包中时,它就变成了一个包。因此,需要最大化PCI值以获得更好的软件包结构。4.5.2. 包装连通性指数(PCIcon)封装内聚性指数包含了封装内的连接强度,但没有考虑跨封装边界的连接强度。如果一个封装边界穿过低连接强度,封装对其余封装的影响将是微不足道的。为了测量连接-我们定义了包连接之间的强度-提高包装结构这些目标函数的详细描述如下:EdnessPC con(M),其可计算如下:n4.5.1.包装内聚性指数包内聚性指数(PCIcoh)用于衡量每个包内的类与同一包的其他类封装内聚性PCcoh(M)测量封装内的总连接PC(含PC),CS(含CS),Ci;Cj(含CS),i1jRNi包连接性指数(PCIcon)衡量不同包中的类相互连接的程度。给定模块化的PCIcon评估如下:图3一个假想的面向对象软件系统的WCCG。1/1j/1^i面向对象软件包结构的改进357XKK-¼我J我JjRNk我JjRNkJ我PC电脑MaxPnP1/1CS,CS,CS,CS我J其中{w1,w2,w3,w4}是定义相对PCIcon¼PCðMÞ¼PnPnCSC;C6PCIcoh、PCIcouple、ICD和PCI的重要性。但与PCIcoh不同,当所有类都在同一个包中时,任何模块化M的PCIcon值都被评估为零,因为没有到其他包的连接。对于所有类都在不同包中的模块化,PCIcon被评估为一个。因此,为了获得更好的软件包结构,需要最小化PCIcon值以获得更好的软件包结构。4.5.3. 包装内连接密度(ICD)包模块化解决方案(其中所有类都被打包到单个模块中)表现出最佳的包连接性,但它不是最佳的包内聚性。因此,ICD的目标是限制过度的包连接性,但不是完全消除包连接性。ICD是耦合和内聚之间的折衷。对于每个包k,ICDk被计算为内部和外部关系权重之间的比率,其必须被最大化。最后,将整个封装模块结构的ICD计算为每个ICDk的平均值。5. 实验装置我们已经进行了一系列的实验,不同的现实世界和随机软件系统与我们提出的多目标优化方法。实验的目的是研究我们的加权关系方法的软件模块化的质量,并将其与非加权关系的模块化质量进行比较。我们的方法的多目标制定也比较单目标优化方法。5.1. 算法和参数为了解决我们提出的多目标优化方法,我们使用非支配排序遗传算法(NSGA-II)(Deb等人,2002年)。它是一种基于非支配排序概念的元启发式遗传算法,词KKKPnPi¼1^ i2Nk我JCS,CS,CS,CSICDk<$CI输入输出<$PnPCSC;CPnPnCS,CSPnCSCICD¼pk¼1ICDkpð8Þ多目标优化技术它生成一组非支配解,称为帕累托集。选择NSGA-II的主要原因是,其中,CI_in是类之间的连接强度,放在同一个包裹里CIout表示包k与其他包之间的连接强度。为了更好的模块化解决方案,需要最大化ICD4.5.4. 封装尺寸索引PCIcoh、PCIcoup和ICD质量标准可能不会产生最佳的包装结构,因为其定义未考虑包装中的类别分布。此目标函数用于避免类在包中的极端倾斜只有一个类的n 1个包和第n个包中的所有剩余类)。为了处理这种情况,我们使用PCI,定义如下:在 最 近 的 文 献 中 报 道 , 它 在 类 似 的 问 题 中 表 现 良 好(Barros,2012; Absolute等人,2013年)。此外,NSGA-II的性能已经与其他两种适用的算法模拟退火(SA)算法(Kirkpatrick等人,1983)&Bunch API的爬山(HC)算法(Mancordal等人, 1999年),我们的结果清楚地表明,NSGA-II优于其他两个算法的情况下,我们的方法已经提出。本文对NSGA-II算法使用了与文献中给出的相同的算子配置(Barros,2012; Absolute等人, 2013年)。NSGA-II中有三个主要操作符,即,交叉、变异和选择算子。他们使用单点交叉算子,交叉概率为80%,少于100节课,100%解决上课问题PCIP最小P最大ð9Þ大于100 μ对于变异算子,给出了变异概率为0.04 *log2(N)的均匀变异算子,其中N为其中Pmin和Pmax分别表示包中的最小和最大类数。如果大封装的尺寸增大,小封装的尺寸减小,则PCI的值变小。因此,优化过程必须避免PCI的减少。4.5.5. 适应度函数为了评估软件模块化解决方案的总体质量(或适合度F),我们使用加性总体适合度函数,计算为上述四个模块化质量度量的加权和。类的数量已被使用。种群大小被设置为类的数量的10倍,并且生成的数量被设置为类的数量的平方的200倍对于SA算法,参数设置与Absolute等人相同。(2009),并且对于 HC 算 法 , 参 数 设 置 与 Bunch API 中 给 出 的 相 同(Mancordal等人, 1999年)。5.2. 问题实例选择我们使用了一组著名的四个现实世界的软件系统,包括JavaCC5.0,JUnit,Java Servlet API和XML APIF¼w1ωPCICOH-w2ωPCIcon 带3ωICD带 4ωPCI的植入式心脏复律除颤器,10例Dom 和 两 随机 面向对象 软件系统实例与不同大小和特色 的conjRNi1/1j/1^i在本文中,我们使用w1=w2=w3=w4= 1的值。j2Nki¼1^ i2Nkj2Nki¼1^ i2Nki½ 1^Nk358Amarjeet,J.K.Chhabrað Þ¼MQ¯2我Pn1/1PjRNiNk Ci; CjPn表2问题实例的特征。问题实例版本缩写#连接#软件包#类现实世界问题JavaCC1.5JC7226154JUnit3.81菊2766100Java Servlet API2.3JS131463XML API DOM1.0.b2XA2099119随机问题随机50NAR1218750随机100NAR234212100真实世界的软件系统实例基于Java编程语言,并且是开放源代码或自由软件项目。所选面向对象软件系统实例的详细信息见下表2。为了应用所提出的方法,所选择的面向对象的软件系统建模的加权类连接图(WCCG)。软件系统被认为是加权关系WCCG,如果关系权重分配使用Eq。(1),以及未加权关系WCCG,如果关系权重被分配二进制值。5.3. 收集实验由于NSGA-II、SA和HC算法在每次运行中都会产生概率结果,因此为了收集分析结果,对所有问题实例执行30次。SA和HC算法在每个运行周期产生单个解,并且可以直接计算每30次运行的SA和HC算法产生的解的拟合函数F的均值。然而,NSGA-II为每个运行周期产生一组称为Pareto集的解决方案。每个问题实例的每个运行周期包含一组目标空间和解空间的Pareto前
下载后可阅读完整内容,剩余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直接复制
信息提交成功