更全的杂志信息网

基于软件网络加权k-核分析的关键类识别方法

更新时间:2016-07-05

1 引言

软件维护是软件生存期中一项频繁进行的活动,自其第一个版本发布之后便开始[1],占了软件总预算的90%以上[2].要维护软件,首先必须理解软件[3,4].然而理解软件并不是一件容易的事情[5],特别是当软件变得异常复杂而分配给维护的人力、物力等资源又比较稀缺的时候,理解软件更是难上加难.类是面向对象软件的基本组成单元,是理解和维护的主要对象[6].关键类作为实现系统核心功能的类,更是软件理解的重点[5,6].选择从关键类开始分析和理解软件已成为理解复杂软件的有效方式之一[5~10].因此,提供有效的技术,识别软件中的关键类,对于分析和理解软件,进而控制和降低维护费用具有重要意义.

目前,软件关键类识别方面已有一些工作,但是仍然比较欠缺.Inoue等人[7]使用构件图(component graph)抽象构件及构件间的使用关系,并使用PageRank算法的一个修改版本计算节点及边的权重,实现构件排序,最终用于构件检索.Zaidman和Demeyer[8]通过运行一组测试用例收集软件的执行轨迹,进而构建类依赖图并计算动态耦合度量值,最后利用HITS(hyperlink-induced topic search)算法识别关键类.该方法在识别关键类上准确度较高,但是其时间和空间开销比较大.在此基础上,Zaidman等人[5]进一步提出了一种基于静态度量的关键类识别方法,通过构建静态类依赖图并使用HITS算法识别关键类,在一定程度上缓解了空间开销,但时间开销仍然比较大.周毓明等人[9]用类依赖图抽象类及类间依赖关系,分别使用PageRank算法、HITS和介数中心性识别关键类.在此基础上,周毓明等人[10]进一步使用h指数及其衍生指数a指数量度类的重要性,取得了较好的效果.姜淑娟等人[6]用状态转换模型抽象软件,并通过求解转换模型的唯一输入输出序列构造状态转换树,最后通过计算状态转换树节点的复杂度来量度类的重要性.

根据采购申请、需求合并、采购计划、确定货源、询价报价等多个环节的处理后产生采购订单,向《合格供应目录》内的供应商购买物料;供应商生产备货,发到工厂仓库后进行采购收货质检,并接收供应商开具的采购发票进行合同核销;最后转到存货系统进行存货核算以及转到应付系统进行付款结算。各个功能可相互参照,也可手工录入,减少人工操作的工作量。

我们发现,上述工作提出的方法都包含两个关键步骤:依赖图的构建和类重要性的量度.大部分方法构建的依赖图是无权的,未考虑类之间交互的种类及次数.尽管周毓明等人在文献[10]中考虑了类间交互的种类及次数,但他们仅考虑了类间由于继承、方法参数、成员属性和方法返回值类型产生的交互,忽略了类间由于方法调用和局部变量产生的交互,也未考虑接口及类与接口间由于实现产生的交互.同时,他们的方法在计算交互次数时,采用了简化处理,所得次数不太精确.但是,从他们的结果可见,采用了加权依赖图得到的结果要优于Zaidman等人[5,8]提出的静态方法.

论证区水样经云南地质工程勘察设计研究院测试研究所检测,水中阴离子以重碳酸根HCO3-、硫酸根SO42-为主,阳离子以钠(Na+)为主,pH值7~7.1地下水化学特征为HCO3-·SO42--Na+型。

(1)第一阶段:ICAN采用快速排序算法[16]将每个k-壳内的类节点按照离散化处理前的加权度(根据整个WCCN计算)降序排列.

2 ICAN方法

ICAN方法主要包含3个部分:解析源代码获得软件结构信息;用加权网络形式化的表示软件的结构信息;引入加权k-核分解方法计算网络中类节点的加权核数用以量度类的重要性,并按照加权核数降序排列类节点,过滤得到候选关键类.以下各小节将详述各主要部分.

2.1 软件结构信息提取

我们将类节点的加权核数作为其重要性的度量指标,采用一个两阶段排序过程实现类重要性的排序.

2.2 加权软件网络模型

软件结构是影响软件质量的重要因素之一[4],主要包括软件元素及元素间的交互[11],表现为一种内部互连的复杂网络拓扑的形态.我们将构建类粒度的加权软件网络形式化的抽象软件的拓扑结构信息.

定义1 加权类耦合网络(weighted class coupling network,WCCN):

WCCN=(NEP),

(1)

(1)继承关系:如果类i通过关键字extends继承另外一个类j,反之亦然.

其中,N是网络的节点集,抽象软件中的类或接口(在不特别说明时,下文的类也包含了接口).E是网络的边集,表示类节点间的交互关系.P是一个对称矩阵,存储类间是否存在交互及交互的次数,即:若类i和类j之间存在交互,且交互了n次,则WCCN中相应的节点间存在一条无向边(j,i)(边(i,j)与(j,i)是同一条边),边权P(i,j)=P(j,i)=n;若类i和类j间不存在交互,则P(i,j)=P(j,i)=0.Java软件中,类i和类j在以下7种情况下会发生交互[12]

面对汤武革命以暴力反抗暴政的历史事实,春秋末年的孔子仍持较为审慎的态度,而倾向于以提出和尊重个人化的选择为应对:“谓武:尽美矣,未尽善也”,“邦无道,则可卷而怀之”。然而,随着周王室继续衰微、政治上的变法改革以及领土国家的形成,孔子的选择便越来越缺少现实可能性。取而代之的,是孟子对于武王伐纣的明确赞扬,这实际是对人民武力反抗暴政暴君的权利进行了肯定,而与洛克、卢梭相仿佛。但同时由于孟子对于用武主体在道德上的高标准以及对霸道的否定,最终陷于了天下皆无道但无人有资格相救的困境,符合孟子目标的“天吏”仅存在理论上的可能性。

(2)第二阶段:按照k值从大到小依次输出每个k-壳内的经过第一阶段排序的类节点.

(3)形参关系:如果类i中的某一方法使用了类j的引用作为形式参数,反之亦然.

(4)成员属性关系:如果类i具有一个类型为类j的成员属性,反之亦然.

(5)方法调用关系:如果类i中的某一方法调用了类j对象的一个方法,反之亦然.

(6)局部变量关系:如果类i中的某一方法内定义了一个以类j为类型的局部变量,反之亦然.

(7)方法返回值关系:如果类i中的某一方法的返回值是类j的对象,反之亦然.

将2017年1—11月我院收治的100例子宫肌瘤患者纳入研究,依据随机数字表法,将其分为实验组和参照组,每组患者50例;实验组年龄为32~55岁,平均年龄为(40.9±2.6)岁;参照组年龄30~58岁,平均年龄为(41.9±2.1)岁。将两组患者基础资料进行对比,差异无统计学意义(P>0.05),可以进行对比分析。纳入标准:经病理诊断,确诊为子宫肌瘤者,对本次研究知情且积极配合者。排除患者:精神类疾病患者、合并其它重大疾病患者、妊娠期及哺乳期妇女。本次研究获得医院伦理委员会批准。

两个类之间可能同时存在不止一种的交互,同一种交互也可能存在多次.例如:类i和类j之间存在1次类继承交互、1次形参关系交互和2次方法调用交互,则这两个类间总的交互次数是通过各种交互次数累加得到的,即P(i,j)=P(j,i)=1+1+2=4.与现有工作[7~10]相比,我们构建的加权软件网络能够更加准确的抽象软件的拓扑结构,不但考虑了类也考虑了接口,同时也考虑了类之间的各种交互关系及其次数.

图1给出了一个代码片段及其相应的WCCN.从图1可见,示例代码中存在接口Animal、类Mammal、类Dog、类Zoom和类Adoptor,所以WCCN中共有5个节点,分别代表这5个类.同时,因为Mammal实现了Animal 1次,所以代表Mammal和Animal的节点间存在一条无向边,边权为1;Dog继承了Mammal 1次,所以代表Dog和Mammal的节点间存在一条无向边,边权为1;Adoptor包含一个Dog类的局部变量myDog且返回Dog类的对象,所以代表Adoptor和Dog的节点间存在一条无向边,边权为2;Adoptor拥有1个Zoom类的成员对象myZoom,其方法setZoom以类Zoom的对象为参数,同时方法say调用了myZoom对象的say方法,所以代表Adoptor和Zoom的节点间存在一条无向边,边权为3.

2.3 加权k-核分解方法

本节中我们将引入加权k-核分解方法(Wk-core)[13],它是对k-核分解方法[14]的扩展,广泛应用于挖掘加权复杂网络中的关键节点.Wk-core主要基于节点的加权度.加权度是对度的扩展,在其计算过程中同时考虑了节点的度及与节点相连边的权值.节点i的加权度k(i)定义为:

(2)

其中,k(i)表示节点i的度,表示与节点i相连边的权值和.在无权网络中,往往用wij=1表示节点ij间存在边,用wij=0表示节点ij间不存在边,所以在无权网络中k(i)可以简化为k(i);在加权网络中,k(i)通常是一个小数,所以文献[13]将其离散化为与该小数最近的整数,即:

(3)

在节点加权度的基础上,我们参照k-核分解方法类似的给出加权k-核、节点加权核数、加权k-壳等的定义.令G(V,E)是一个具有|V|个节点和|E|条边的加权网络,则加权k-核的定义如下:

1)信息型文本:主要用于表现事物与事实,包括信息、知识、观点等。侧重传递原文的内容,语言具有逻辑性和指称性的特点。

定义2 加权k-核(weighted k-core):

图4蓝色的线为单一的UWB测量得到的位置轨迹点,红色的线为机器人行进的实际轨迹,UWB测量值与实际值最大误差为0.294 m,平均误差为0.035 m,平均定位精度达到厘米级,但是在部分位置数据比较发散,单单依靠UWB进行移动机器人的定位导航还存在不足;

网络的加权k-核是指反复去掉加权度值小于或等于k的节点及其连边后剩余的子图,并且该子图是具有这一性质的最大子图.

Wk-core采取类似k-核分解的剪枝过程来得到网络的加权k-核[15]:递归地移除加权度值小于k的所有节点,直到剩余网络中所有的节点的加权度值至少为k

定义3 加权核数(weighted coreness):

若节点i属于加权k-核,但不属于加权(k+1)-核,则节点i的加权核数值为k.加权核数的最大值kmax称为加权网络的核数.节点的加权核数可以描述这个节点在这个网络中的深度.显然地,一个连通图的所有节点属于加权1-核.

定义4 加权k-壳(weighted k-shell):

加权网络的加权k-壳由所有加权核数为k的节点及它们之间的连边构成.

图2给出了一个简单的例子用以说明Wk-core的具体实施过程.示例网络只有5个节点4条边(见图2最左边部分),除了节点B和C之间的边权值为9,其余边的权值均为1.首先,我们计算所有节点的加权度,然后去除网络中加权度<1的所有节点(节点E),得到加权1-核.然后,我们重新计算加权1-core中剩余节点的加权度,移除加权度<2的所有节点(节点D),得到了加权2-核.接着,我们重新计算加权2-core中剩余节点的加权度,移除加权度<3的所有节点(节点A),得到了加权3-核.这个过程不断重复直到网络中没有剩余节点.

2.4 类重要性排序

我们主要以开源的Java软件作为研究对象.软件结构信息提取是ICAN方法的第一步,指从软件的源代码(.java文件)中提取各类软件元素(类、接口、属性、方法、局部变量等)和元素间的交互(类间继承、类对接口的实现、方法调用等)及其次数.结构信息的提取由我们自主研发的软件网络分析平台SNAP(software network analysis platform)[11]实现(由文献[11]中的SSQAT更名而来).SNAP可以提取软件的结构信息,还可以实现一系列的网络分析及可视化.

学术传播体系是一种文化,不是一下子就能改变的。以订阅为基础的学术传播体系形成至今已有数百年的历史,开放获取不仅有赖于出版界的态度,而且学术界本身也难以摆脱对现有学术评价体系的依赖,有的甚至热衷于现有的学术评价体系,将此作为至上的衡量指标。

有鉴于此,本文提出了一种基于软件网络加权k-核分析的关键类识别方法ICAN(Identifying key Classes based on weighted k-core Analysis of software Networks).ICAN用加权软件网络模型抽象类(接口)、类(接口)间的交互及其次数;同时,引入加权k-核分解方法挖掘软件网络的层次结构进而得到类节点的加权核数;最终,以加权核数为排序标准,降序排列所有类节点,并通过过滤得到排名靠前的候选关键类.数据实验部分,我们将ICAN方法运用于开源软件Ant-1.6.1和JMeter-2.0.1的关键类识别中,并与相关方法进行比较,验证了本文方法的有效性.

(2)实现关系:如果类i通过关键字implements实现了一个接口j

经过两阶段排序,ICAN将输出一个经过排序的类列表,但是这个类列表包含了系统中所有的类,规模往往比较大.为了得到候选的关键类,ICAN还将使用一个过滤值p∈[0,1]对类列表进行过滤,仅输出排名top-p×|V|(|V|代表网络中的节点数)的节点作为候选关键类.

随着经济全球化和文化多元化的不断深入,为推动区域性合作与全球性发展,在多种语言交织下达成共识,翻译行业发展迅猛。各国对翻译服务也出台了一系列的标准文件,希望通过统一标准对译文质量进行有效的控制。然而,相对国外比较健全的翻译质量管理体系,国内翻译市场准入门槛较低,屡现压价等恶性竞争,整个行业不够规范,翻译专业的课程设置远不能满足市场对人才的实际需求,这些问题都给翻译产出的质量带来了极大的挑战。

3 实验

本节我们将以真实的软件系统为实验对象,通过与现有工作的对比,验证本文方法的有效性.

3.1 研究问题

通过实验我们重点回答以下两个研究问题.

问题1:ICAN方法与现有工作相比是否更有效?

目前已有一些关键类识别方面的工作,我们希望知道ICAN方法是否比这些方法更有效.

问题2:ICAN方法的扩展性如何?

作为一个可行的关键类识别方法,往往会应用于不同规模的系统中,我们希望知道ICAN方法是否适用于发现大规模复杂软件中的关键类.

3.2 实验系统

本文以开源Java软件项目Ant-1.6.1(http://azureus.sourceforge.net)和JMeter-2.0.1(http://jmeter.apache.org)为实验对象展开研究.其中,Ant是一个跨平台的构建工具,可以实现软件项目的编译、测试、部署等;JMeter是基于Java的压力测试工具.这两个软件是目前关键类识别工作所用的标准测试集,所有的现有工作都用这两个软件验证其方法的有效性.我们实验的软件环境为Windows 7 64位操作系统(旗舰版)和JDK1.7;硬件环境为Intel(R) Core(TM) i7-5600U@2.6 GHz CPU和8G内存.表1列出了这两个项目的一些统计数据.其中,代码行排除了注释行及空行数,包数排除了外部导入的包,类数包含了内部类和接口的数量.

病理诊断 37例经术后病理证实确诊为TIO,其中31例病理为磷酸盐尿性间叶组织肿瘤,2例未行免疫组织化学染色,病理为梭形细胞瘤。

表1 实验系统的统计数据

项目版本号代码行包数类数方法/属性数Ant1.6.197,5123604,52759,844JMeter2.0.178,3042903,47745,936

3.3 实验过程

我们使用自主研发的软件网络分析平台SNAP[11]解析Java软件源代码(.java文件),得到软件的结构信息,进而构建WCCN,并使用Wk-core挖掘WCCN的层次结构,得到类节点的加权核数,接着使用两阶段排序方法将节点按照其加权核数降序排列,并使用过滤值过滤得到候选的关键类.

3.4 结果分析

以下小节,我们将通过对实验结果的分析,回答在3.1节中提出的两个研究问题.

3.4.1 ICAN方法与现有工作相比是否更有效

针对新工科建设下的大学计算机基础教学改革新目标,建立了面向“计算思维”的教学新理念,将教学重心转移到培养学生创新能力和工程实践能力上,并构建了基于“知识+能力+专业拓展”的计算机基础课程新体系。

目前关键类识别方面的工作主要是文献[5-10].本节中我们将ICAN方法与各文献中的最优方法进行比较,即PageRank算法[7]、IC-CC+HITS [5,8]h指数[10]a指数(h指数的衍生指数)[10],以及UIO方法(文献中的算法3)[6]

因为文献[7]并未使用本文的数据集进行关键类的识别,为了便于比较,我们实现了其PageRank算法.而其它几个方法因为无法获取其实验的详细过程性数据,也无法从公开渠道获取其实现源码,且其实现过程较复杂,本文并未实现,而是沿用其工作中给的结果.因此,为了便于比较,对于ICAN方法中的参数——过滤值p,我们采用与文献中相同的设置,即:在与UIO比较时,分别设置p=0.1和p=0.2;而在与其它方法比较时,p=0.15.同时,为了公平的对各方法进行比较,我们使用了与文献中相同规模的数据集.

表2和表3罗列的是各个方法从两个系统中识别的关键类.其中,列“关键类”罗列的是这两个系统中已知的关键类[5,8];“√”表示相应方法识别出了该关键类;“×”表示相应方法未能识别出该关键类.因文献[10]并未给出h指数和a指数所能识别的关键类列表,因此我们未能将h指数和a指数的结果罗列在表2和表3中.

表2 Ant中各方法识别的关键类

关键类ICANPageRankIC-CC′+HITSICANUIOICANUIOp=0.15p=0.1p=0.2Project√√√√√√√UnknownElement√√√√√√√Task√√√√√√√Main××√××√×IntrospectionHelper√√√√√√√ProjectHelper√×√√√√√RuntimeConfigurable√√√√√√√Target√√√√√√√ElementHandler××√××××TaskContainer×√×××××

表3 JMeter中各方法识别的关键类

关键类ICANPageRankIC-CC′+HITSICANUIOICANUIOp=0.15p=0.1p=0.2AbstractAction×√√×√×√JMeterEngine××√××××JMeterTreeModel√√√√√√√JMeterThread√×√√√√√JMeterGUIComponent√√×√×√×PreCompiler××√××××Sampler√√√√√√√SampleResult√√√√×√×TestCompiler√×√√√√√TestElement√√√√√√√TestListener√√√××√√TestPlan√×√√√√√TestPlanGui××√××××ThreadGroup√×√√√√√

为了比较上述方法在关键类识别上的性能差异,我们采用信息检索中常用的召回率(recall)和准确率(precision)作为评价标准.

作为最后的尝试,人们把4头动物园中的北白犀送到肯尼亚,希望它们在野外环境下恢复繁殖能力。但随着雄性“苏丹”的离世,这一希望也成为泡影。

(4)

(5)

其中,R是某一个方法推荐的候选关键类集合,K是系统中已知的关键类.所以recall表示推荐的关键类中已知关键类占已知关键类总数的比例,precision表示推荐的候选关键类中已知关键类占推荐总数的比例.

表4罗列了各方法所得结果的precisionrecall.其中,p是前文所述的过滤值.从表4可见,在两个系统中,ICAN方法的召回率和准确率都仅次于IC-CC+HITS,但是总体而言都优于其它5种方法.在Ant-1.6.1中,ICAN方法的召回率和准确率与PageRank相同,而在JMeter-2.0.1中,ICAN方法的召回率和准确率均高PageRank;在两个系统中,ICAN方法的召回率和准确率均高于h指数;在Ant-1.6.1中,ICAN方法的召回率与a指数同,但是准确率优于a指数;在JMeter-2.0.1中,ICAN方法的召回率和准确率均优于a指数;当p=0.1时,ICAN方法的召回率和准确率在Ant-1.6.1中与UIO相同,而在JMeter-2.0.1中均优于UIO;当p=0.2时,在两个系统中,ICAN方法的召回率和准确率均优于UIO.在两个系统中,ICAN方法的总耗时均不到1分钟,是一种比较高效的方法.

表4 相关工作比较

p值方法Ant-1.6.1JMeter-2.0.1Recall (%)Precision (%)Recall (%)Precision (%)0.15ICAN707.0371.4329.76PageRank707.0350.0020.83IC-CC′+HITS90479346h指数505506.6a指数707577.50.1ICAN7010.5464.2940.18UIO7010.5457.1428.880.2ICAN806.0271.4322.32UIO705.36416

通过分析我们发现,ICAN方法在召回率和准确率方面次于IC-CC+HITS的原因在于:Zaidman等人采用的是一种动态分析方法,他们跟踪的只是测试用例执行轨迹上的类.在Ant-1.6.1中,他们仅跟踪了127个类,约占我们跟踪类的19.13%;在JMeter-2.0.1中,他们跟踪了189个类,约占我们跟踪类的84.38%.动态分析方法IC-CC+HITS在召回率和准确率上均优于静态分析方法ICAN,但是收集测试用例的执行轨迹是比较耗时的(耗时6330秒).同时,测试用例设计的质量也会对方法性能产生影响,方法性能不太稳定.相对而言,ICAN属于静态分析方法,收集软件的静态结构信息相对容易(实验系统中整个方法运行仅48秒),方法性能也会比较稳定.

3.4.2 ICAN方法的扩展性如何

作为一个实用的方法,ICAN方法会被应用于不同规模的系统,用于挖掘系统中的关键类.本节中,我们将通过跟踪ICAN方法应用于实际系统时的时间开销来检验其扩展性.

2.1 两组血浆NT-proBNP水平比较 病例组患儿的NT-proBNP水平在治疗3 d、治疗7d 、治疗14 d时均显著低于组内治疗前(F=176.405,P<0.05),病例组患儿的NT-proBNP水平在治疗前、治疗3 d、治疗7 d、治疗14 d时均显著高于对照组(F=286.557,P<0.05)。见表1。

如前文所述,ICAN方法识别系统中的关键类主要包括3个步骤:(1)解析软件源码获取结构信息;(2)构建WCCN;(3)应用Wk-core方法计算WCCN中节点核数,并过滤得到候选关键类.

此部分我们新增了2个规模比较大的软件作为实验对象.表5列出了这两个系统的一些统计数据.

表6列出了ICAN方法在各实验系统中每一个步骤的耗时.从表6可见,第1步的耗时与系统的代码行存在正相关;第2步和第3步的耗时与网络的规模(节点数)存在正相关.但是,我们发现:尽管Vuze-4400规模极大,具有7572个类,38908个方法和属性,但是挖掘其关键类所需时间不足6分钟.ICAN方法具有较好的扩展性.

表5 新增实验系统的统计数据

项目版本号代码行包数类数方法/属性数Tomcat8.5.4294,9492073,34751,651Vuze4400478,3164737,57238,908

表6 实验系统每一步骤的时间消耗

步骤Ant (s)JMeter (s)Tomcat (s)Vuze (s)11633662232515326830011注:运行时间为0s,表示其运行时间不足0.5秒,并不是不需要时间

4 结论和下一步工作

本文从软件静态结构出发,提出了一种基于软件网络加权k-核分析的关键类识别方法,实现从Java软件源代码中识别关键类,并用Ant-1.6.1和JMeter-2.0.1两个真实软件进行验证.本文方法根据类(接口)间的7种耦合关系构建加权依赖图(加权类耦合网络),在此基础上使用加权k-核分解方法计算类(接口)的加权核数并排序.实验结果表明,我们的方法可以识别大部分的关键类,在检查前15%的类时,可以取得70%的召回率.本文的方法可以帮助开发人员尽快熟悉一个陌生的软件系统.

未来我们将用更多来自不同领域、具有不同规模的软件验证本文方法的有效性;同时分析关键类与软件缺陷分布、可靠性、易变性等的关系,探索关键类识别方法在更多实际环境中的应用价值.

参考文献

[1]Boehm B.The changing nature of software evolution[J].IEEE Software,2010,27(4):26-29.

[2]D’Ambros M.Supporting software evolution analysis with historical dependencies and defect information[A].IEEE International Conference on Software Maintenance[C].Beijing,China:IEEE,2008.412-415.

[3]Yau S,Collofello J S.Design stability measures for software maintenance[J].IEEE Transactions on Software Engineering,1985,11(9):849-856.

[4]Yau S,Collofello J S.Some stability measures for software maintenance[J].IEEE Transactions on Software Engineering,1980,6(6):545-552.

[5]Zaidman A,Demeyer S.Automatic identification of key classes in a software system using webmining techniques[J].Journal of Software Maintenance and Evolution:Research and Practice,2008,20(6):387-417.

[6]姜淑娟,鞠小林,王兴亚,等.基于UIO序列的类重要性度量[J].电子学报,2015,43(10):2062-2068.

Jiang S J,Ju X L,Wang X Y,et al.Measuring the importance of classes using UIO sequence[J].Acta Electronica Sinica,2015,43(10):2062-2068.(in Chinese)

[7]Inoue K,Yokomori R,Yamamoto T,et al.Ranking significance of software components based on use relations[J].IEEE Transactions on Software Engineering,2005,31(3):213-225.

[8]Zaidman A,Calders T,Demeyer S,et al.Applying webmining techniques to execution traces to support the program comprehension process[A].European Conference on Software Maintenance and Reengineering[C].Manchester,UK:IEEE,2005.134-142.

[9]周毓明,徐宝文.基于依赖结构分析的类重要性度量方法[J].东南大学学报(自然科学版),2008,38(3):380-384.

Zhou Y M,Xu B W.Dependence structure analysis-based approach for measuring importance of classes[J].Journal of Southeast University (Natural Science Edition),2008,38(3):380-384.(in Chinese)

[10]王木生,卢红敏,周毓明,等.利用h指数及其衍生度量识别关键类[J].计算机科学与探索,2011,5(10):809-903.

[11]Pan W F,Li B,Ma Y T,et al.Multi-granularity evolution analysis of software using complex network theory[J].Journal of Systems Science and Complexity,2011,24(6):1068-1082.

[12]Briand L C,Daly J W,Wüst J K.A unified framework for coupling measurement in object-oriented systems[J].IEEE Transactions on Software Engineering,1999,25(1):91-121.

[13]Garas A,Schweitzer F,Havlin S.A k-shell decomposition method for weighted networks[J].New Journal of Physics,2012,14(8):83030-83043.

[14]李辉,赵海,徐久强,等.基于k-核的大规模软件宏观拓扑结构层次性研究[J].电子学报,2010,38(11):2635-2643.

Li H,Zhao H,Xu J Q,et al.Research on hierarchy of large-scale software macro topology based on k-core[J].Acta Electronica Sinica,2010,38(11):2635-2643.(in Chinese)

[15]Batagelj V,Zaversnik M.An O(m) algorithm for cores decomposition of networks[J].Computer Science,2003,1(6):34-37.

[16]Sedgewick R.Implementing quicksort programs[J].Communications of the ACM,1978,21(10):847-857.

[17]Shannon P,Markiel A,Ozier O,et al.Cytoscape website[EB/OL].http://www.cytoscape.org,2016-11-13.

[18]Costa L F,Rodrigues F A,Travieso G,et al.Characterization of complex networks:a survey of measurements[J].Advances in Physics,2007,56(1):167-242.

潘伟丰,宋贝贝,胡博,李兵,姜波
《电子学报》 2018年第05期
《电子学报》2018年第05期文献

服务严谨可靠 7×14小时在线支持 支持宝特邀商家 不满意退款

本站非杂志社官网,上千家国家级期刊、省级期刊、北大核心、南大核心、专业的职称论文发表网站。
职称论文发表、杂志论文发表、期刊征稿、期刊投稿,论文发表指导正规机构。是您首选最可靠,最快速的期刊论文发表网站。
免责声明:本网站部分资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有
如有不愿意被转载的情况,请通知我们删除已转载的信息 粤ICP备2023046998号