[发明专利]一种概率选择的软件模块聚类方法有效
申请号: | 201711100834.X | 申请日: | 2017-11-07 |
公开(公告)号: | CN107766076B | 公开(公告)日: | 2021-02-09 |
发明(设计)人: | 孙家泽;令蓓蕾 | 申请(专利权)人: | 西安邮电大学 |
主分类号: | G06F8/72 | 分类号: | G06F8/72;G06K9/62 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 710061 陕西*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明针对软件系统重构中软件模块聚类问题,公开了一种概率选择的软件模块聚类方法。本方法首先从软件系统源程序中提取获得软件系统的模块依赖关系图,然后从图中稀疏点出发基于概率选择对结点进行局部合并操作得到软件系统的初步模块聚类,最后根据结点与各个模块之间的联系数基于概率动态调整每个结点的所属聚类,得到软件模块的聚类结果。本发明为软件模块聚类问题提供了一种简单的、收敛速度快且聚类效果好的工程化方法,用于重构软件系统结构,提高软件系统的可理解性。 | ||
搜索关键词: | 一种 概率 选择 软件 模块 方法 | ||
【主权项】:
一种概率选择的软件模块聚类方法,其特征主要包括以下步骤:(1)在面向对象语言编写的软件系统中,以代码中的方法作为节点,方法之间的调用关系作为边,将软件系统表示为一个图,并以矩阵形式存储,若该系统中有n个方法,这些方法可以用集合F表示为F={f1,f2,...,fj,...,fn},j为1到n之间的任意一个整数值,fj(1≤j≤n)表示该软件系统中的第j个方法,则该软件系统中方法之间的调用关系用一个n×n的二维矩阵B进行编码表示,若方法fi(1≤i≤n)调用方法fj(1≤j≤n),则B的第i行第j列的元素值为1,即bij=1,若方法fi(1≤i≤n)没有调用方法fj(1≤j≤n),则B的第i行第j列的元素值为0,即bij=0,按照上述方法,软件系统的方法调用关系编码表示为:(2)假设该软件系统需要被聚类形成m(m<<n)个模块,则经过模块聚类之后的软件系统可以用集合C表示为C={c1,c2,...ci,...cm},i为1到m之间的任意一个整数值,ci(1≤i≤m)表示软件系统经过模块聚类后的第i个模块,对该软件系统的模块聚类方案可以表示为一个n维向量Cluster,其中ai表示向量中的元素,0≤ai≤m且ai为整数,若方法fi(1≤i≤n)属于第j(1≤j≤m)个模块,则Cluster中的第i个元素的值为j,即ai=j,若ai=0,则fi还不属于任何一个聚类,因此软件系统的模块聚类结果可以用向量表示为:Cluster={a1 a2 a3 … an}初始化的聚类结果向量表示为Cluster0,合并操作迭代到第t步时的聚类结果向量表示为Clustert,t为合并操作阶段的迭代步数(t≥0);(3)设定概率选择的软件模块聚类算法的参数,所述的参数包括合并操作中的迭代次数r1,动态调整操作中的迭代次数r2;(4)对模块聚类的结果进行初始化,使聚类结果向量Cluster中每一维的值ai=0,1≤i≤n,即Cluster0={0,0,.......,0},初始化最优聚类结果向量Cluster*={0,0,.......,0},使聚类形成的模块数为0,即int clus=0,初始化聚类结果的最优MQ值为gbestMQ=0,令局部合并操作的迭代次数t=1,开始进行局部合并操作;(5)进行局部合并操作将每个方法fi的直接调用方法保存在列表listi中(1≤i≤n),将列表listi按照长度进行升序排序,形成一个有序的列表序列list1,list2,.......listi,.......listn,对应于一个有序的方法序列f1,f2....fi....fn(1≤i≤n),对每个方法:根据上一步的聚类结果Clustert‑1,计算SCi是列表listi中结点的聚类结果序列,0≤j≤l,l≤m,计算每个聚类在SCi中的方法数目计算方法fi选择聚类的概率值以概率决定方法fi是否属于聚类如果否则,ai=++clus,更新聚类向量Clustert的值;(6)计算当前聚类方案Cluster的MQ值:假设第i个模块ci中的方法个数用Ni(1≤i≤m)表示,模块ci与模块cj之间方法的调用次数通过方法调用矩阵B计算,并用Ei,j表示:模块ci内部方法之间的调用次数用Mi表示:软件系统进行模块聚类后,第i个模块ci和第j个模块cj之间的耦合性用εi,j表示:第i个模块ci的内聚性由μi表示:高内聚、低耦合是评价软件模块聚类优劣的标准,使用软件模块质量(Modularization Quality,简称MQ)将模块内部的内聚性和模块之间的耦合性结合起来综合评价软件模块聚类的优劣,当前合并操作进行到第t步时的软件模块聚类方案的MQ值用MQt进行评估表示,其中,m表示将软件系统划分成m个模块,在优化过程中,软件系统耦合性尽可能减小,内聚性尽可能增大,即MQ的值不断增大;(7)将当前该步计算出的MQ值与全局最优的gbestMQ进行比较,若MQ大于gbestMQ,使gbestMQ=MQ,使全局最优聚类结果为当前聚类结果Cluster*=Clustert,t=t+1;(8)若t<r1,则重复上述(5)‑(8)步,若t≥r1,则重复下列(9)‑(13)步;(9)令动态调整操作的迭代次数为p=1(p≥0),动态调整操作的聚类结果表示为Clusterp,根据上述局部合并操作得到的初步结果,使用动态调整操作进行聚类结果的动态优化;(10)根据局部合并操作的结果Cluster得到聚类结果集合C={C1,C2,.......,Cm},1≤Ci≤m,对每一个方法计算选择各个聚类的概率值:计算方法fi与聚类Cj之间的调用次数Ni,j,1≤i≤n,1≤j≤m,计算方法fi选择每个聚类Cj的概率值p′i,j,生成一个0到1之间的随机数,确定方法fi是否需要改变当前聚类,更新聚类向量Clusterp的值;(11)利用步骤(6)的方法计算当前聚类方案Cluster的MQ值;(12)将当前该步计算出的MQ值与全局最优的gbestMQ值进行比较,若MQ大于gbestMQ,使gbestMQ=MQ,使全局最优聚类结果为当前聚类结果Cluster*=Clusterp,p=p+1;(13)若p<r2,则重复上述(10)‑(12)步,若p≥r2,则结束整个步骤,完成整个软件模块聚类。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安邮电大学,未经西安邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201711100834.X/,转载请声明来源钻瓜专利网。