[发明专利]基于多目标社团发现的软件系统可维护性评估与提升方法有效
申请号: | 201410330742.0 | 申请日: | 2014-07-11 |
公开(公告)号: | CN104133766B | 公开(公告)日: | 2017-01-04 |
发明(设计)人: | 郑庆华;李剑;王志文;屈宇;刘烃 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 西安通大专利代理有限责任公司61200 | 代理人: | 陆万寿 |
地址: | 710049 *** | 国省代码: | 台湾;71 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 多目标 社团 发现 软件 系统 可维护性 评估 提升 方法 | ||
1.基于多目标社团发现的软件系统可维护性评估与提升方法,其特征在于,包括以下步骤:
步骤S101:使用静态代码分析工具Understand和复杂网络分析包igraph,实现对Java软件系统方法调用的最大弱连通子图的生成;
步骤S102:运用四种基于不同目标的社团划分算法划分步骤S101所生成的最大弱连通子图,并计算每个类的方法社团内聚度;
步骤S103:计算四种社团划分算法结果的斯皮尔曼相关系数,最后挑选出最大斯皮尔曼相关系数的两个算法来计算类内聚度和模块度;
步骤S104:使用阈值过滤算法,找出一些内聚度较低类中可以迁移的方法,输出这些迁入/迁出的方法,提高这些类的内聚度,提升了整体的模块度,从而提升了JAVA软件系统的可维护性。
2.根据权利要求1所述的基于多目标社团发现的软件系统可维护性评估与提升方法,其特征在于,步骤S101具体包括以下步骤:
步骤S201:对待分析的Java软件系统解析.java文件,获取项目中定义的方法列表;
步骤S202:利用静态代码分析软件Understand分析Java软件系统源代码,获取所有方法调用对;
步骤S203:根据步骤S201中获取到的Java软件系统中的方法列表以后,对比步骤S202获取到的所有方法调用对,去掉冗余方法,最终获得软件自身方法调用对;
步骤S204:根据软件自身方法调用对生成软件方法调用网络图;
步骤S205:利用复杂网络分析包igraph过滤掉软件方法调用网络图的孤立的节点,生成软件系统方法调用的最大弱连通子图。
3.根据权利要求1所述的基于多目标社团发现的软件系统可维护性评估与提升方法,其特征在于,步骤S102具体包括以下步骤:
步骤S301:运用开源的复杂网络分析包iGraph中的四种社团划分算法对得到的方法调用的最大弱连通子图进行划分;所述四种社团划分算法为基于模块度优化(fg)、知识地图(im)、多级分层(ml)和标签传播(lp)的社团划分算法;
步骤S302:根据步骤S301的划分结果统计出Java软件系统中每个类的所属社团编号;
步骤S303:获取每个类所属各个社团的方法数;
步骤S304:计算出每个类的四种社团划分算法对应的方法社团内聚度;
方法社团内聚度的定义为:令某个类C共有m个方法,经过某个社团划分算法后,m个方法分布在N个社团中,第k个社团中分布有nk个方法,k=1,…,N,令n1为nk中的最大值,那么可以得到类C基于该社团划分算法的方法社团内聚度为n1/m。
4.根据权利要求1所述的基于多目标社团发现的软件系统可维护性评估与提升方法,其特征在于,步骤S103具体包括以下步骤:
步骤S401:计算每两个社团划分算法之间的斯皮尔曼相关系数;
步骤S402:挑选6组斯皮尔曼相关系数中的最大值,记录这这个最大值所对应的两种社团划分算法;
步骤S403:运用步骤S402中的两种社团划分算法计算JAVA软件系统的平均模块度(和每个类的平均社团内聚度;
步骤S404:输出JAVA软件系统的平均模块度和其中每个类的平均社团内聚度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410330742.0/1.html,转载请声明来源钻瓜专利网。