The invention discloses a software module division method aiming at the problem of module division in the software system structure. The characteristics of this method using particle swarm algorithm optimization, discrete encoding of software modules, and the software design principle of high cohesion and low coupling for the evaluation of software modules results using software module based on the evaluation criteria of the location update method, software module location update every time closer optimal, finally get the classification results of software modules. The invention provides a software module division method with fast convergence speed, good stability and good division effect, which is used for optimizing the structure of a software system.
【技术实现步骤摘要】
一种软件模块划分方法
本专利技术属于软件工程
,具体涉及到软件系统中模块划分的问题,提供了一种基于搜索的软件模块划分方法,主要解决在软件系统中如何优化系统代码结构的问题,使每个模块尽可能独立的执行其预期功能,达到消除系统冗余,增加软件系统的可理解性,降低软件系统维护费用的目的。
技术介绍
软件维护是软件生命周期中一个非常重要的阶段,其维护成本往往很高。随着业务需求的增加,软件系统逐渐发生变化,这使理解和维护一个规模庞大的软件系统变得越来越复杂,这一问题迫使需要一种合理的软件模块划分方法,特别对于那些缺少文档的遗留系统,如何分解软件结构,使软件系统变得易于理解、维护和管理是一个亟待解决的问题。软件模块划分是组织或重新组织软件系统的一种活动,使每个模块尽可能独立的执行其预期功能,以达到优化软件系统结构,消除冗余,增加软件系统的可理解性,降低软件系统维护费用的目的。软件模块聚类是软件模块划分的一种重要手段,软件聚类是通过模块依赖图利用聚类算法对软件系统进行模块结构划分,将软件系统分解为一些子系统,使复杂的软件系统变得易于理解和管理。目前使用聚类方式进行模块划分的方法主要有以下策略:(1)将经典的聚类技术直接应用到软件模块划分中;(2)根据软件领域的特性将经典的聚类算法改进并使用;(3)应用新的聚类技术进行软件模块划分。用于软件聚类的技术主要可以分为图理论技术、基于信息检索的技术、基于数据挖掘的技术、基于模式匹配的技术和元启发式方法。利用图理论技术的方法是将软件表示为一个图,其中软件实体(如:方法或类)作为节点,方法之间的调用或类之间的继承关系作为边,用图方 ...
【技术保护点】
一种软件模块划分方法,其特征主要包括以下步骤:(1)在面向对象语言编写的软件系统中,以代码中的方法作为节点,方法之间的调用关系作为边,将软件系统表示为一个图,并以矩阵形式存储,若该系统中有n个方法,这些方法可以用集合F表示为F={f
【技术特征摘要】
1.一种软件模块划分方法,其特征主要包括以下步骤:(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,种群中的第w个粒子用Pw表示,则种群可以用集合P表示,P={P1,P2,...,Pw,...,PN}(1≤w≤N),对该软件系统的模块划分方案编码表示为一个m×n的二维矩阵A,矩阵A的每一列代表一个方法,每一行代表划分成的一个模块,则第w个粒子在迭代到第t步时软件系统的模块划分情况由中每一个元素的值决定,若方法fj(1≤j≤n)属于ci(1≤i≤m)模块,则中的第i行第j列的元素值为1,即而第j列的其它元素值为0,即则第w个粒子在迭代到第t步时的模块划分情况编码表示为:n为该软件系统中的方法个数,m为软件系统模块划分后的模块数,t为迭代步数(t≥0);(3)设定基于离散粒子群算法的参数,所述的参数包括粒子群中粒子的数量N、软件系统划分的模块数量m、迭代终止条件;(4)对每个粒子进行初始化种群P中粒子Pw的初始值采用随机生成方式初始化,具体如下:假设对于第w个粒子Pw中的第j(1≤j≤n)个方法fj,则随机生成一个1到m之间的随机整数,当随机生成的整数为i(1≤i≤m)时,代表粒子Pw的第j个方法属于第i个模块,则中而第j列的其它元素值为0,即按照此方法可以确定出粒子Pw中每个方法的所属模块;编码中1的个数应该有n个,分别代表n个方法所选的模块位置,种群中的所有粒子以上述方法进行初始化编码,令迭代次数t=1,开始进行软件系统模块划分;(5)计算每个粒子的适应度值假设第i个模块ci中的方法个数用Ni(1≤i≤m)表示,模块ci与模块cj之间方法的调用次数通过方法调用矩阵B计算,并用Ei,j表示:模块ci内部方法之间的调用次数用Mi表示:软件系统进行模块划分后,第...
【专利技术属性】
技术研发人员:孙家泽,令蓓蕾,王曙燕,
申请(专利权)人:西安邮电大学,
类型:发明
国别省市:陕西,61
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。