[发明专利]基于多目标社团发现的软件系统可维护性评估与提升方法有效
申请号: | 201410330742.0 | 申请日: | 2014-07-11 |
公开(公告)号: | CN104133766B | 公开(公告)日: | 2017-01-04 |
发明(设计)人: | 郑庆华;李剑;王志文;屈宇;刘烃 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 西安通大专利代理有限责任公司61200 | 代理人: | 陆万寿 |
地址: | 710049 *** | 国省代码: | 台湾;71 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 多目标 社团 发现 软件 系统 可维护性 评估 提升 方法 | ||
技术领域:
本发明属于可信软件和软件测试交叉领域,特别涉及一种软件系统可维护性评估与提升方法。
背景技术:
软件系统由众多模块组成,依靠模块间的相互调用完成各种复杂的功能,软件模块性的好坏将直接影响软件功能的实现、系统的运行效率以及整体稳定性。软件工程的目标是运用新技术和正确的管理方法来提高软件的质量和生存率,使软件系统具有更高的可维护性、可靠性和可重用性。
面向对象技术采用数据抽象、封装、多态性、信息隐藏、重用等机制,增强了软件的可维护性,提高了生产效率。为了评估和提升面向对象软件设计的质量,研究人员提出了一些指标,这些指标从不同角度评估软件系统,比如内聚度、耦合度和复杂度。随着软件功能需求的日益增加,开发条件的不断改进,软件系统变得越来越复杂,软件系统已经被研究人员验证符合复杂网络的特征,在复杂网路中,一些节点内部的连接密度大于他们和网络中其他节点的连接密度,这样的结构被称为社团结构,软件系统的社团结构和软件的可维护性密切相关,社团发现算法能够很好的检测出复杂网络中的社团结构,社团结构可以用来计算软件系统模块度并评估软件系统可维护性。
开发出高内聚和低耦合的软件系统被广泛认为是模块性比较好的软件结构,内聚就是模块之间的相互关系,高内聚意味着软件的各个模块内聚紧密联系,为此研究人员提出了一系列的类内聚度度量方法,比如:LCOM1,Coh,TCC,LCC,SCOM,CCM等等,这些方法基本上都建立在类中方法对类中实例变量使用和共享的基础上,只考虑了类中方法与变量之间、方法与方法之间的关系,然而这些度量方法并不能有效的对软件系统可维护性进行评估和提升。
发明内容:
本发明的目的在于提出一种基于多目标社团发现的软件系统可维护性评估与提升方法,评价并提升软件系统的可维护性。本发明方法通过分析软件调用网络的社团结构及对应的模块度指标来评价并提升软件的模块性;对不同文件的代码进行重组,提高软件系统中类的内聚度,从而提升软件的模块性。
为了实现上述目的,本发明采用如下技术方案:
基于多目标社团发现的软件系统可维护性评估与提升方法,包括以下步骤:步骤S101:使用静态代码分析工具Understand和复杂网络分析包igraph,实现对Java软件系统方法调用的最大弱连通子图的生成;步骤S102:运用四种基于不同目标的社团划分算法划分步骤S101所生成的最大弱连通子图,并计算每个类的方法社团内聚度;步骤S103:计算四种社团划分算法结果的斯皮尔曼相关系数,最后挑选出最大斯皮尔曼相关系数的两个算法来计算类内聚度和模块度;步骤S104:使用阈值过滤算法,找出一些内聚度较低类中可以迁移的方法,输出这些迁入/迁出的方法,提高这些类的内聚度,提升了整体的模块度,从而提升了JAVA软件系统的可维护性。
优选的,步骤S101具体包括以下步骤:步骤S201:对待分析的Java软件系统解析.java文件,获取项目中定义的方法列表;步骤S202:利用静态代码分析软件Understand分析Java软件系统源代码,获取所有方法调用对;步骤S203:根据步骤S201中获取到的Java软件系统中的方法列表以后,对比步骤S202获取到的所有方法调用对,去掉冗余方法,最终获得软件自身方法调用对;步骤S204:根据软件自身方法调用对生成软件方法调用网络图;步骤S205:利用复杂网络分析包igraph过滤掉软件方法调用网络图的孤立的节点,生成软件系统方法调用的最大弱连通子图。
优选的,步骤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。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410330742.0/2.html,转载请声明来源钻瓜专利网。