[发明专利]一种软件模块划分方法有效
申请号: | 201611140354.1 | 申请日: | 2016-12-12 |
公开(公告)号: | CN106775705B | 公开(公告)日: | 2019-10-11 |
发明(设计)人: | 孙家泽;令蓓蕾;王曙燕 | 申请(专利权)人: | 西安邮电大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京汇信合知识产权代理有限公司 11335 | 代理人: | 吴甘棠 |
地址: | 710000 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明针对软件系统结构中模块划分问题,公开了一种软件模块划分方法。本方法利用粒子群算法种群寻优的特性,对软件模块划分问题进行离散编码,同时将高内聚、低耦合的软件设计原则用于软件模块划分的结果评价,采用以软件模块化评估标准为依据的位置更新方式,每次的位置更新都更加接近最优的软件模块划分,最后得到软件模块的划分结果。本发明提供了一种收敛速度快、稳定性好且划分效果好的软件模块划分方法,用于优化软件系统的结构。 | ||
搜索关键词: | 一种 软件 模块 划分 方法 | ||
【主权项】:
1.一种软件模块划分方法,其特征主要包括以下步骤:(1)在面向对象语言编写的软件系统中,以代码中的方法作为节点,方法之间的调用关系作为边,将软件系统表示为一个图,并以矩阵形式存储,若该系统中有n个方法,这些方法可以用集合F表示为F={f1,f2,...,fj,...,fn},j为1到n之间的任意一个整数值,fj表示该软件系统中的第j个方法,则该软件系统中方法之间的调用关系用一个n×n的二维矩阵B进行编码表示,若方法fi调用方法fj,则B的第i行第j列的元素值为1,即bij=1,若方法fi没有调用方法fj,则B的第i行第j列的元素值为0,即bij=0,按照上述方法,软件系统的方法调用关系编码表示为:其中i和j都为1到n之间的任意一个整数值;(2)假设该软件系统需要被划分为m个模块,其中m<<n,则经过模块划分之后的软件系统可以用集合C表示为C={c1,c2,...ci,...cm},i为1到m之间的任意一个整数值,ci表示软件系统经过模块划分后的第i个模块,在离散粒子群算法中,假设初始种群规模为N,种群中的第w个粒子用Pw表示,则种群可以用集合P表示,P={P1,P2,...,Pw,...,PN},w为1到N之间的任意一个整数值,对该软件系统的模块划分方案编码表示为一个m×n的二维矩阵A,矩阵A的每一列代表一个方法,每一行代表划分成的一个模块,则第w个粒子在迭代到第t步时软件系统的模块划分情况由中每一个元素的值决定,其中i为1到m之间的任意一个整数值,j为1到n之间的任意一个整数值,若方法fj属于ci模块,则中的第i行第j列的元素值为1,即而第j列的其它元素值为0,即其中k为1到m之间的任意一个整数值且不等于i,则第w个粒子在迭代到第t步时的模块划分情况编码表示为:n为该软件系统中的方法个数,m为软件系统模块划分后的模块数,t为迭代步数,其中t为正整数;(3)设定基于离散粒子群算法的参数,所述的参数包括粒子群中粒子的数量N、软件系统划分的模块数量m、迭代终止条件;(4)对每个粒子进行初始化种群P中粒子Pw的初始值采用随机生成方式初始化,具体如下:假设对于第w个粒子Pw中的第j个方法fj,其中j为1到n之间的任意一个整数值,则随机生成一个1到m之间的随机整数,当随机生成的整数为i时,其中i为1到m之间的任意一个整数值,代表粒子Pw的第j个方法属于第i个模块,则中而第j列的其它元素值为0,即其中k为1到m之间的任意一个整数值且不等于i,按照此方法可以确定出粒子Pw中每个方法的所属模块;编码中1的个数应该有n个,分别代表n个方法所选的模块位置,种群中的所有粒子以上述方法进行初始化编码,令迭代次数t=1,开始进行软件系统模块划分;(5)计算每个粒子的适应度值假设第i个模块ci中的方法个数用Ni表示,其中i为1到m之间的任意一个整数值,模块ci与模块cj之间方法的调用次数通过方法调用矩阵B计算,并用Ei,j表示:模块ci内部方法之间的调用次数用Mi表示:软件系统进行模块划分后,第i个模块ci和第j个模块cj之间的耦合性用εi,j表示:第i个模块ci的内聚性由μi表示:高内聚、低耦合是评价软件模块划分优劣的标准,使用软件模块质量(Modularization Quality,简称MQ)将模块内部的内聚性和模块之间的耦合性结合起来综合评价软件模块划分的优劣,第w个粒子代表的模块划分方案用MQw进行评估表示,其中,m表示将软件系统划分成m个模块,在优化过程中,软件系统耦合性尽可能减小,内聚性尽可能增大,即MQ的值不断增大,以函数MQ作为粒子群算法中的适应度函数,第w个粒子当前位置的适应度值用fitnessw表示;(6)对于第w个粒子,其中N为种群规模,w为1到N之间的任意一个整数值,将当前适应度值和该粒子局部最优位置的适应度值lwBest进行比较,若其值大于lwBest,则将粒子的当前位置作为该粒子的局部最优位置LocBestw=Aw,且该粒子的当前适应度值作为该粒子的局部最优适应度值lwBest=fitnessw;(7)对于第w个粒子,其中N为种群规模,w为1到N之间的任意一个整数值,将其局部最优适应度值lwBest和全局经历过最优位置的适应度值LGBest进行比较,若第w个粒子Pw的局部最优适应度值lwBest大于LGBest,则将其局部最优位置作为当前粒子群的全局最优位置gBest=LocBestw,该粒子的局部最优适应度值作为粒子群的全局最优适应度值LGBest=lwBest;(8)根据下面方法更新每个粒子各维的位置,第w个粒子在迭代到第t步时的位置表示为要确定迭代到第t+1步时的位置编码即要确定迭代到t+1步时粒子Pw中每个方法所属的模块,假设要确定方法fj,使的第i行第j列的值为1,其中j为1到n之间的任意一个整数值,i为1到m之间的任意一个整数值,第j列的其它值为0,即由此构造矩阵一共可以构造出m个这样的矩阵其中i为1到m之间的任意一个整数值,根据公式(5)计算每个位置编码的适应度值其中j为1到n之间的任意一个整数值,根据计算出的适应度值分别计算选择每个位置编码的概率值则方法fj以概率选择模块i,由此确定方法fj所属的模块,并确定第w个粒子中每个方法所属的模块,即的取值;(9)如果当前的迭代次数t等于最大迭代次数max,或者当前粒子群的LGBest达到期望值1,则全局最优位置gBest所对应的粒子代表的软件模块划分方案即为软件模块划分的最优方案,结束循环;否则,t=t+1,返回第(5)步。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安邮电大学,未经西安邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201611140354.1/,转载请声明来源钻瓜专利网。
- 上一篇:软件属性需求检验方法及装置
- 下一篇:应用属性的管理方法及装置