开源软件系统中社会-技术网络的协同演化分析

2015-12-19 09:16:04鹏,李兵,程璨,b,曾
复杂系统与复杂性科学 2015年2期
关键词:开发者开源软件

何 鹏,李 兵,程 璨,b,曾 诚

(1.武汉大学a.软件工程国家重点实验室计算机学院,b.国际软件学院,c.复杂网络研究中心,武汉430072;2.湖北大学计算机与信息工程学院,武汉430062)

0 引言

近十多年来,复杂网络理论研究逐渐得到深入和推广,其应用非常广泛,涉及社会学、生物、计算机等领域。在软件工程领域,软件系统尤其是大型软件系统规模的持续增长引发系统复杂性的质变,许多大型软件系统在内部结构、外部交互、演化方式等维度上表现出新特性[1]。从结构方面,由于规模变大,从局部度量系统内部结构复杂性变得越来越困难,网络思想有助于从全局的角度解决这一问题。根据软件系统内部实体(如包,类、方法、组件等)间的依赖关系,将软件系统抽象为一个网络,即软件网络。从参与者角度而言,软件系统的开发不再是单个精英团队或专家所能完成,而是依靠大众开发,利用群体智慧才能达到目标,是一个典型的“社会-技术”交融系统。技术层面分析主要是对已有软件采用逆向工程方法抽象其组织结构,构建软件网络;社会层面分析主要是根据社区群体交互采用社会网络分析方法,挖掘群体行为。复杂网络与软件工程的交叉研究,已引起了众多学者的关注与认可,如李兵等[2]基于软件网络的拓扑结构度量开源软件系统的复杂性,提高软件设计质量;Bhattachary等[3]根据软件网络中节点的重要性进行缺陷预测,为测试人员提供检测优先顺序;鉴于软件拓扑结构的多粒度性,潘伟丰等[4]分别从软件包、类和方法3个粒度研究了开源软件系统的演化特性。

软件网络的研究结合了复杂网络和软件工程理论,它以软件系统的结构特征为切入点,将复杂网络的理论应用到软件工程领域。持续演化是计算机软件的固有特性,了解和发现软件演化规律,有助于提高软件产品质量,降低软件开发和维护成本。针对软件演化问题,Lehman提出8个典型的定律,涉及软件的规模、质量、复杂度、生产率与开发过程等[5]。目前,随着软件的网络化趋势越来越明显,软件与网络的关系更加密不可分,用网络的观点来分析软件演化,为软件工程实践提供了新的视角。然而,软件开发是一个社会性(“人”)和技术性(“软件”)汇聚的过程[6],很多已有研究只是从技术层面出发,探索了软件系统技术维度的复杂性与应用。在软件生命周期中,从需求获取、到系统的设计与开发,以及后期维护等阶段都离不开人的参与,即软件系统的社会属性。软件的结构决定功能,而Conway定律[7]指出系统的最终设计结构等同于设计系统的组织成员之间的交互结构。因此,一个软件系统既是一个技术依赖的制品,也涉及一个社会交互的群体,其网络模型可抽象为一个社会-技术网络[8]。

软件系统在不断适应环境和需求变化的过程中持续演化,软件演化作为一种技术,主要关心对软件进行修改的方法;作为一种现象,主要关心谁驱动的演化以及演化效果如何[1]。基于社会-技术网络模型,本文尝试从软件演化分析角度探讨社会-技术网络中的协同演化问题,弥补已有研究工作只从单一网络层面审视软件的演化过程。本文采用类依赖关系描述软件网络,任务参与关系描述开发者网络,基于复杂网络度量研究与验证开源软件系统版本演化过程中存在的规律。本文的主要工作为:构建开源软件系统的社会-技术网络模型,统计开源软件系统中软件网络与开发者网络的网络规模、平均度、最短路径、聚类系数、社区结构网络度量指标等;依次对比分析两类网络在10个软件版本中网络指标的演化趋势,发掘它们演化规律的一致性与差异。

1 相关工作

Valverde等[9]首次将复杂网络方法引入软件结构分析中,将软件系统的类图用无向网络来表示,分析软件网络中的复杂网络特性(如“小世界”和“无标度”),认为软件开发中局部优化过程可能是导致软件网络呈现这些特性的原因。Valverde等[10]还考虑了类之间的有向性,构建有向网络对系统结构进行研究,发现除了以上特性外,软件网络同时具有层次性和模块性。随后,一些研究者从不同方面(开发语言、项目规模、分析粒度等)再次验证了软件网络的诸多特性并成功应用于工程实践[10-11,13-15]。

在软件生命周期中,软件处在一个不断变化的环境(新需求、新应用环境、性能改进等)中,为适应环境软件系统必须不断演化。Jenkins等[16]对软件包之间的关系进行建模,分析一系列版本中软件架构图的结构稳定性。Wang等[17]获取了Linux kernel模块233个版本的类调用网络,研究软件网络的演化特性。李兵等[2]将复杂网络与演化算法相结合,提出一种新的软件网络演化模型,发现该方法能够很好地刻画实际软件系统复杂网络特性的涌现过程。潘伟丰等[4]更是从包、类和方法3个粒度分析了软件网络中节点度、聚类系数、最短路径等指标的演化特性。Businge等[18]研究了Eclipse系统及相关插件的演化规律,发现结果基本满足Lehman的8项目演化定律。

软件开发团队的演化对软件质量也会带来很大影响,研究开发者网络的演化有助于更好地理解团队成员在参与开发过程中的改变。Ngamkajornwiwat等[19]使用社会网络分析方法研究了KOffice项目开发者社区的演化。Hong等[20]讨论分析了开发者合作网络中幂律分布、模块性和社区大小等属性的演化。Datta等[21]在IBM提供的Jazz平台上,将开发者合作网络的平均最短路径、聚集系数、巨型组件大小和平均度等指标与科学家合作网络进行时间序列的演化对比。Kumar等[22]研究了贡献者数、社区大小、聚类系数等6个指标的演化。此外,Cataldo等[23]、Lim等[24]、Sharma等[25]应用社会网络分析方法分别分析了分布式项目、合作网络与涉众投入关系、项目测试阶段团队的演化。

以上研究工作存在一个主要的不足:局限于单个网络层面分析软件系统中的演化问题,忽略了软件系统的社会-技术一致性,以及开发者合作网络与软件网络之间的相互影响。软件是由人开发的,现实中,由于人员的动态调整,尤其是核心成员的变动,可能使得原有的设计方案受到影响,最后导致软件结构发生变化。针对此类情况,仅从软件网络或开发者网络的演化分析并不能全面反应实际软件系统的演化问题。

2 研究方法

本文的研究主要分为3部分,首先利用我们团队开发的聚焦爬虫工具从Sourcforge.net网站爬取开源项目Vuze的邮件列表信息,并结合使用TortoiseSVN工具导出该项目的版本日志信息;根据网上提供的项目版本信息,使用Dependencyfinder工具解析源代码构建软件网络,再根据所获取的项目历史信息构建开发者网络;基于所得的软件网络与开发者网络,进行协同演化分析,图1为整个研究的框架。

1) 数据获取。我们的工作需要具备获取项目源代码和修改日志相关信息的权限,所以选取开源软件为实验对象。开源软件Vuze(原名Azureus)是一款知名的采用BitTorrent协议的P2P文件共享客户端软件,可用于查找/下载种子文件。该软件项目的开发信息都公开部署在开源平台Sourceforge.net上,任何感兴趣的开发者都可以为项目提供个人的贡献。通常一个成功的开源软件在其生命周期中都会有一系列版本,本文选取从版本4.3.1.0开始的10个连续版本作为演化分析对象,为便于描述,我们将版本V4310标记为1,依此类推版本V4502标记为10。

针对每个目标版本,我们先编译源代码并将编译后的压缩文件.zip导入dependencyFinder中,得到.xml解析文件;然后利用自行开发的工具分析.xml解析文件,获取类之间的依赖关系并保存为.net网络格式;最后利用网络可视化工具Gephi即可呈现对应的软件网络。另外,我们根据对应版本的提交时间,有选择地爬取项目的邮件列表信息与提交日志。我们先对开发者信息进行去重,例如Paul Gardner与P.Gardner实际上是指同一个开发者;以往在对邮件列表信息处理时,会发现同一个开发者使用多个邮箱进行交互的情况,而本次处理过程中并未发现此类情况。最后我们把在同一个线程出现和修改了同一个类文件的开发者间视为有一条合作连边,构建无向非加权开发者网络。表1列出了首尾两个版本中软件网络与开发者网络的统计信息。

图1 研究框架Fig.1 The framework of our study

表1 项目统计信息Tab.1 Statistics of the project vuze

2) 网络模型。软件网络模型:根据选取的粒度不同,常用的软件网络有包级软件网络、类级软件网络和方法级软件网络。考虑到包级粒度过于粗糙而方法级粒度一定程度上太细会加重数据处理负担,本文所使用的网络是基于类之间依赖关系的软件网络(Software Dependency Network,简称SDN),定义为:Gc=(Vc,Ec),其中Vc为节点集,即为开源软件中所有的类和接口;Ec为节点对之间的边集,即为对象之间的关联关系。在CDN中,4种情况下类A与类B之间被视为存在关联关系:类A与类B之间有继承关系;类A与接口B之间有实现关系;类A中有类B的变量;类A中的方法调用了类B对象。在软件实现中,类之间的依赖关系是有向的,而考虑到开发者合作的相互性,我们的软件网络为无向非加权网络,即类A与类B之间只有存在以上4种关系中的至少一种便有eab=1,否则eab=0。关于软件网络的详细介绍,推荐感兴趣的读者参考我们之前的工作[4]。

开发者网络模型:开源软件社区中的开发者大部分是来自世界各地的志愿者,他们加入一个开源软件的开发主要是为了增加开发经验和体检虚拟团队合作的乐趣,通过知识共享、信息交互体现群体智慧在软件开发过程中的作用。开发者可以通过各种交互渠道,如邮件列表、版本控制工具CVS/SVN/Git、Bug库和论坛等,来实现交互。在构建开发者合作网络(Developer Collaboration Network,简称DCN)过程中,用Gd=(Vd,Ed)表示一个开发者网络,其中Vd代表参与项目的开发者,Ed为开发者之间的合作,即若开发者C与开发者D参与了同一任务(包括bug修复,功能改进)则被视为存在一条合作连边ecd=1,否则ecd=0。本文没有考虑两个开发者间的合作次数。

图2是社会-技术网络模型构建示意图,一个开发者发现问题后提交相应报告,其他感兴趣的开发者可以对看到的报告有选择地提供修改建议,例如开发者4提交报告report 1后,开发者3提出修改意见,开发者1在开发者3的基础上再次提交修改,最后由开发者2解决。这种在修改过程中开发者间形成的关系可视为合作关系。同时,提交的报告可能涉及一个或多个软件包,在一个包中又常包含多个类,类与类之间通过前面提到的4种关系建立关联。开发者通过对相应类的修改来解决问题,这种修改关系使得开发者合作网络与软件依赖网络关联起来,从而构成一个双层的社会-技术网络(Socio-Technical Network,简称STN)。

图2 社会-技术网络模型示意图Fig.2 A simple example and its corresponding socio-technical network model

3 演化分析

3.1 节点与边的协同演化

网络的节点数与边数直接反映了一个网络的规模,一个开源软件系统的软件网络节点代表系统中类的个数,而边代表类之间的依赖关系,功能越多类越多,边越多系统越复杂。因此,软件网络规模的变化能够体现软件系统内部结构复杂性的变化。与软件网络相对应,开源社区开发者合作网络中节点代表参与的社区开发者,开源社区中的开发者可自由选择感兴趣的项目,因此节点规模间接反映项目的受欢迎程度;开发者间的合作紧密程度可通过网络的连边进行体现,边越多表示开发者间合作越紧密,加权网络中边的权重还可表示合作的频率。已有研究关注开发者潜在合作同行的推荐,以缓解合作的稀疏性[26]。

为分析两类网络节点与边的演化情况,图3与图4分别给出了它们在10个版本中的变化趋势,其中横轴表示每个版本对应的版本序列号(1-10),纵轴表示对应的指标值(其他图的轴意思类似)。图3显示SDN网络与DCN网络的节点数均随时间不断增多,只是增长趋势有所不同。SDN网络中节点与边的增长在一定周期内幅度很小,之后存在一个大的增加,随后又保持相对稳定,如版本1-3,4-7,8-10这3个阶段增长幅度很少,可能的解释是这些阶段主要负责系统的维护工作,无新的功能添加;而3-4,7-8之间却有一个大幅度的增长,分别增加了90和98个类文件,说明在这两个阶段版本间有新的功能添加。SDN网络规模的演化也表明大致3-4个版本周期后会有一次大的更新。

图3 软件网络与开发者网络节点数演化Fig.3 Evolution of nodes in SDN and DCN

图4 软件网络与开发者网络边数演化Fig.4 Evolution of edges in SDN and DCN

虽然同样呈增长趋势,但DCN网络与SDN网络的演化趋势明显存在差异。首先,开发者数量线性增长更明显,不存在周期性增长的现象,其中一个主要原因可能与开源社区的零散、自由的松耦合合作方式有关,感兴趣的开发者任何时刻都可以参与项目提供贡献,这种自愿性使得项目成员随时间一直增长,经历10个版本,开发者数由原来的38人增加到144人。其次,DCN网络中边的增长幅度相对更缓慢,说明合作并不紧密;在版本6-9期间,网络的合作仅增加了18。需要注意的是,DCN网络中开发者既可以自由加入,同样可以随时离开,所以这里的增长都是相对前一个时间段而言。

实验结果表明:DCN网络与SDN网络的规模随时间均满足持续增长规律,只是SDN网络节点与边的增长趋势表现出一定的周期性,而DCN网络的线性增长趋势更明显,但节点与边增长不同步。

3.2 平均度的协同演化

节点度用来表示一个节点与网络中其他节点的直接连接情况,一个网络的平均节点度可表示为 〈 k〉=为网络中节点总数,deg(i)为节点i的度。平均节点度可用刻画网络的连接程度,即〈k〉越大,网络的连接度越好。在软件网络中,〈k〉越大表示类之间相互调用越直接,系统运行越灵活;在开发者网络中,〈k〉越大表示开发者间合作更方便,便于知识的共享。已有工作表明一些典型网络(如科学家合作网络[27]、语言网[28])的平均度呈近似线性增长的演化趋势,然而,是否本文中STN网络的两层网络也有近似的增长趋势。

图5为SDN网络与DCN网络平均度〈k〉的演化情况,首先,很明显两类网络均满足近似线性增长的演化趋势,与已有的研究结果保持一致;其次,SDN网络的〈k〉比DCN网络的〈k〉要大,例如版本1时,前者的〈k〉为10.3,而后者为4.38,这与两类网络本身的规模有关,而SDN网络的〈k〉不如DCN网络的〈k〉增长幅度大,前者10个版本的增长幅度仅为0.1左右,而后者从4.38增长到6.39,说明SDN网络的结构相对于DCN网络更稳定,因为版本的升级更多是在已有的基础上进行修复与添加新功能,并不会影响系统的整体架构,而开发团队中个别成员的加入可能会使得整个团队合作气氛变得更加活跃,合作更频繁。然后,从整体上而言,两类网络的增长并不同步,在SDN网络中,版本3至版本5的SDN网络〈k〉有一个增长趋势,而对应的DCN网络中〈k〉表现却相对稳定,甚至相对于前一个版本2有下降趋势。另外,从版本5之后,DCN网络的〈k〉变化明显加快。

实验结果表明:SDN网络与DCN网络的平均度均满足近似线性增长,即复杂性不断增长;DCN网络的增长幅度更大但平均度数值始终比SDN网络小,且两类网络的平均度增长不同步。

3.3 最短路径与聚类系数的协同演化

网络的最短路径(L)和聚类系数(C)是衡量“小世界”特性的两个基本指标,L定义为网络中所有节点对最短路径的平均值:为任意节点对i和j之间的最短路径,N为网络的节点数,常用于衡量网络中节点间的信息传播能力,在SDN网络与DCN网络中分别可用于反映系统调试过程中类之间的响应效率与开发者间知识共享的能力。C定义为网络中所有节点的邻接节点间的连接紧密程度的均值:-1),ni,li分别为节点i的邻接节点数与这些邻接节点间实际的连接数。该指标有助于检测软件系统设计中的依赖关系,以及开发者间“合作者的合作者”之间的合作关系。

图6给出了SDN网络与DCN网络的最短路径L的演化情况,很明显两个网络L的演化趋势很相似,都随时间逐渐变小,且L的数值规模相同均小于4。从下降幅度而言,由于SDN网络在演化过程中整体更稳定,所以L变化幅度更小,与预期的实验结果相吻合。更有趣的是,两类网络的L都表现出一定程度的阶段性下降,说明网络中存在部分更重要的节点,由于这些节点的加入使得网络的节点拓扑距离变得更近。

图5 软件网络与开发者网络平均度〈k〉的演化Fig.5 Evolution of〈k〉in SDN and DCN

图6 软件网络与开发者网络平均最短路径长度的演化Fig.6 Evolution of average path length Lin SDN and DCN

图7是聚类系数C的演化结果,可以看到SDN网络中C有先减后增的变化趋势,虽然这种变化相对于DCN网络非常轻微。在DCN网络中,聚类系数C明显呈增长趋势,说明社区中合作者的合作者更倾向于建立新的合作。整体上,10个版本的DCN网络聚类系数C比SDN的要大,结合最短路径特性,可见两类网络都有“小世界”特性,且DCN网络中节点连接更紧密。鉴于DCN网络规模比SDN网络小很多,加上开发者合作的定义原本就相对较为粗糙,所以其“小世界”现象更显著。

实验结果表明:SDN网络与DCN网络均有“小世界”特性,两类网络的最短路径L都表现出阶段性下降,但DCN网络聚类效果比SDN网络越来越明显。

3.4 模块度的协演化

现实网络中,社区结构是一种非常普遍的现象,如社交网络中人以类聚,表现为同一社区的节点连接紧密,跨社区的节点连接比较稀疏。直观上,SDN网络中同一个模块内的类依赖比较紧密(高内聚),不同模块中的类尽量保持不必要的依赖(低耦合),SDN网络中的社区结构有助于为软件重构提供依据;而DCM网络中根据成员的抱团现象有助于了解开发者的实践技能,便于任务分配与人员调度。模块度常用于衡量网络社区划分结果的好坏,社区划分算法很多,如Newman等[29]的快速划分方法、Blondel等[30]的启发式方法,考虑到文章中软件网络的规模相对比较大,我们采用了Blondel等人提出的划分方法,该方法主要份两个阶段:第1阶段,初始化每个节点,假设每个节点为一个独立的社区;第2阶段,对每个节点i,计算该节点从它的社区移动到其邻接节点j的社区时所产生的收益ΔQ,最后将节点i合并到正收益最大的那个社区。重复以上步骤,直到不再有可合并的情况。ΔQ的计算公式为

其中,Σin为社区C中所有的连边数,Σtot为网络中所有连接到社区C中节点的连边数,ki为与节点i相连的连边数,ki,in为节点i与社区C中节点的连边数,m为整个网络的连边数。

我们分析了SDN网络与DCM网络模块度在10个版本中的演化趋势,如图8所示,结果显示两个网络的模块性都存在波动性,但整体性有下降趋势。根据开源软件的开发特性,受时间、资源等因素的影响,为确保不影响软件运行的前提下,一旦发现问题必须尽快修改而且可能由不同的开发者完成,加上新成员对软件结构偏陌生,导致修改后的软件结构变得更加复杂,模块性衰退。DCM网络中,模块度变化越大,可能的原因有:核心人员的变动,使得原来的组织结构发生变化;新任务的分配,使得人员重新调整,一个开发者可能由一个项目组调配到另外一个项目组。对比两个网络的模块度值,SDN网络比DCM网络的模块度值大,而且波动相对更小。

图7 软件网络与开发者网络聚类系数的演化Fig.7 Evolution of clustering coefficient Cin SDN and DCN

图8 软件网络SDN与开发者网络DCN模块度的演化Fig.8 Evolution of modularity in SDN and DCN

实验结果表明:SDN网络与DCN网络的模块度在不同版本中都有波动,DCN中波动更大而SDN网络的模块度值偏大,但两者整体都表现为下降趋势。

4 讨论

很明显,DCN网络与SDN网络的规模差别甚大,他们的演化方式也不同。一个成型的软件系统在维护过程中仅需修改少量的模块,而开发人员变化可能更大。开源社区中开发者往往分布在世界各地,不受时间、地域和文化等因素的约束,任何有能力的个人都可以提供问题的解决方案,甚至一些开发者只是在某一个版本中做出贡献,在以后的版本中都不加参与。这种“低门槛”正是为什么DCN网络节点呈明显的线性增长的一个主要原因。软件系统的每个版本并不会一直有新的功能添加,有些版本只是修改上一版本中存在的缺陷问题,这种修复工作一般不会导致网络规模的明显变化。另外,SDN网络规模与DCN网络规模并不成正比,表明开发团队的壮大并不会直接影响系统内部结构的复杂性。

平均度〈k〉可反映一个网络中节点的平均连接程度,在软件工程实践中,SDN网络〈k〉有助于项目负责人根据需要对新建与维护的工作量进行成本预测,DCN网络〈k〉可为评估项目完成时间与团队协调代价提供参考;加上SDN网络与DCN网络最短路径均小于6,聚类系数较大且随时间还有不同程度的增大,说明在STN网络中,尽管SDN网络与DCN网络的一些指标增长并不同步,但随着时间的变化,两类网络中节点的直接或间接的关联关系会越来越明显。根据开发者的开发历史信息与DCN网络的“小世界”特性,一个修改任务可以很快分配到具备完成任务能力的人手中。

随着需求的变动与运行环境的改变,软件系统的结构会相应变动,而模块度的波动是最直观的体现。SDN网络模块度的演化可用于软件重构,例如两个版本间的模块度大幅度下降意味着存在重构点。相对于SDN网络,DCN网络的抱团现象不明显且波动较大,说明社区开发者更多的是小范围的局部合作,整体上合作比较稀疏。众所周知,这种合作不利于知识的传播,所以可根据DCN网络中模块度的变化对社区成员合作进行协调,提供更多的交互渠道,建立开发者推荐和激励方法。

通过对比STN网络中DCN网络与SDN网络在一些指标上的演化,我们得到了一些有趣的发现,但本文也存在一些不足之处:首先,10个版本的时间跨度并不相等,我们仅以网上提供的提交时间为划分基准,虽然在数据处理过程中不可避免会引入一些偏差,但实验结果表明,这些小的偏差并没有影响最终的演化分析,所以,文中的发现具有一定的代表性。其次,开发者的历史信息只考虑了邮件列表和提交日期,针对开发者间的合作,我们假设参与同一个任务的开发者间存在合作,且构建的DCN网络为无权网络,无法呈现他们之间的合作次数。虽然DCN网络的定义比较狭隘,但很多已有研究工作采用了这种基于“共事”关系构建DCN网络的方法,并证实了这种 DCN 网络的有效性[18-20]。

5 总结与展望

随软件版本的更新,软件网络与开发者合作网络的规模不断增大,软件网络以3-4个版本为周期有规律地增长,而开发者合作网络呈明显的线性增长;两类网络的平均度均满足近似线性增长,但整体上增长并不一致;它们均有“小世界”特性,且最短路径都表现为阶段性下降,但开发者间局部合作更明显;它们的社区结构都不断地变化,且整体上模块度呈下降趋势,但开发者合作网络的变化更大。总之,我们的工作发现开源软件系统的社会-技术网络模型中两类网络既有共性又有差异,一定程度上既相互促进又相互影响。

我们的下一步工作将主要关注两个方面:引入更多的版本,考虑不同语言(除Java之外)、不同规模的软件系统作为研究对象,进一步验证并丰富我们的结论;软件网络中类之间的依赖实际是有向带权重的,开发者合作网络中合作的次数也会对结果产生一定影响,因此,考虑边的方向与权重,能使结论更贴近现实和更具一般性。

[1] 王怀民,吴文峻,毛新军,等.复杂软件系统的成长性构造与适应性演化[J].中国科学:信息科学,2014,44(6):743-761.Wang Huaimin,Wu Wenjun,Mao Xinjun,et al.Growing construction and adaptive evolution of complex software system[J].Scientia Sinica Informationis,2014,44(6):743-761.

[2] 李兵,王浩,李增扬,等.基于复杂网络的软件复杂性度量研究[J].电子学报,2006,32(12A):2371-2375.Li Bing,Wang Hao,Li Zengyang,et al.Software complexity metrics based on complex networks[J].Acta Electronica Sinica,2006,32(12A):2371-2375.

[3] Bhattacharya P,Iliofotou M,Neamtiu I,et al.Graph-based analysis and prediction for software evolution[C]//Proceedings of the 34th International Conference on Software Engineering(ICSE).Zurich,Switzerland:IEEE,2012:419-429.

[4]Pan W F,Li B,Ma Y T,et al.Multi-granularity evolution analysis of software using complex network theory[J].Journal of System Science and Complexity,2010,24(4):1-14.

[5] Lehman M M,Ramil J F,Wernick P D,et al.Metrics and laws of software evolution-the nineties view[C]//Proceedings of the 4th International Symposium on Software Metrics.Washington,USA:ACM,1997:20-32.

[6] Kleinberg J.The convergence of social and technological networks[J].Communications of the ACM,2008,51(11):66-72.

[7] Conway M E.How do committees invent[J].Datamation,1968,14(4):28-31.

[8] Zanetti M S.The co-evolution of socio-technical structures in sustainable software development:Lessons from the open source software communities[C]//Proceedings of the 34th International Conference on Software Engineering.Zurich,Swizerland:IEEE,2012:1587-1590.

[9] Valverde S,Cancho R,and Sole R.Scale-free networks from optimal design[J].Euro physics Letters,2002,60(4):512-517.

[10]Valverde S and Sole R.Hierarchical small worlds in software architecture[DB/OL].arXiv preprint cond-mat/0307278,2003.

[11]Subelj L.Software systems through complex networks science:review,analysis and applications[C]//Proceedings of the First International Workshop on Software Mining.Beijing,China:ACM,2012:9-16.

[12]Chatzigeorgiou A,Melas G.Trends in object-oriented software evolution:investigating network properties[C].Proceedings of the 34th International Conference on Software Engineering.Zurich,Switzerland:IEEE,2012:1309-1312.

[13]Valverde S and Sole R.Network motifs in computational graphs:a case study in software architecture[J].Physical Review E,2005,72(2):026107.

[14]Tosun A,Turhan B,and Bener A.Validation of network measures as indicators of defective modules in software systems[C]//Proceedings of the 5th International Conference on Predictor Models in Software Engineering.Vancouver,Canada:ACM,2009:9.

[15]Steidl D,Hummel B,Juergens E.Using network analysis for recommendation of central software classes[C]//Proceedings of the 19th Working Conference on Reverse Engineering.Kingston,Canada:IEEE,2012:93-102.

[16]Jenkins S,Kirk S R.Software architecture graphs as complex networks:a novel partitioning scheme to measure stability and evolution[J].Information Science,2007,17(12):2587-2601.

[17]Wang L,Wang Z,Yang C,et al.Linux kernels as complex networks:a novel method to study evolution[C]//Proceedings of IEEE International Conference on Software Maintenance.Edmonton,Canada:IEEE,2009:41-50.

[18]Businge J,Serebrenik A,Brand M.An empirical study of the evolution of eclipse third-party plug-ins[C]//Proceedings of the Joint ERCIM Workshop on Software Evolution and International Workshop on Principles of Software Evolution Antwerp,Belgium:ACM,2010:63-72.

[19]Ngamkajornwiwat K,Zhang D,Koru A G,et al.An exploratory study on the evolution of OSS developer communities[C]//Proceedings of the 41st Annual Hawaii Int′l Conf on System Sciences.Hawaii:IEEE,2008:305-305.

[20]Hong Q,Kim S,Cheung S,et al.Understanding a developer social network and its evolution[C]//Proceedings of 27th IEEE International Conference on Software Maintenance.Williamsburg,USA:IEEE,2011:323-332.

[21]Datta S,Sindhgatta R,and Sengupta B.Evolution of developer collaboration on the Jazz Platform:a study of a large scale agile project[C]//Proceedings of the 4th India Software Engineering Conference,2011:21-30.

[22]Kumar A,Gupta A.Evolution of developer social network and its impact on bug fixing process[C]//Proceedings of the 6th India Software Engineering Conference.New Delhi,India:ACM,2013:63-72.

[23]Cataldo M,Herbsleb J D.Communication networks in geographically distributed software development[C]//Proceedings of the 2008ACM conference on Computer supported cooperative work.San Digeo,USA:ACM,2008:579-588.

[24]Lim S L,Bentley P J.Evolving relationships between social networks and stakeholder involvement in software projects[C]//Proceedings of the 13th annual conference on Genetic and evolutionary computation.Dublin,Ireland:ACM,2011:1899-1906.

[25]Sharma V S,Kaulgud V.Studying team evolution during software testing[C]//Proceedings of the 4th International Workshop on Cooperative and Human Aspects of Software Engineering.Waikiki,Honolulu,USA:ACM,2011:72-75.

[26]何鹏,李兵,杨习辉.Roster:一种开发者潜在同行推荐方法[J].计算机学报,2014,37(4):859-872.He Peng,Li Bin,Yang Xihui.Roster:an approach to potential peer recommendation[J].Chinese Journal of Computers,2014,37(4):859-872.

[27]Barabasi A L,Jeong H,Neda Z.Evolution of the social network of scientific collaborations[J].Physica A,2002,311(3/4):590-614.

[28]Sole R,Corominas-Murtra B,Valverde S,et al.Language networks:their structure,function,and evolution[J].Complexity,2010,15(6):20-26.

[29]Newman M E J.Fast algorithm for detecting community structure in networks[J].Physical Review,2004,69(6):006133.

[30]Blondel V D,Guillaume J L,Lambiotte R.Fast unfolding of communities in large networks[J].Journal of Statistical Mechanics:Theory and Experiment,2008,10:P10008.

猜你喜欢
开发者开源软件
禅宗软件
英语文摘(2021年10期)2021-11-22 08:02:26
五毛钱能买多少头牛
软件对对碰
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
16%游戏开发者看好VR
CHIP新电脑(2016年3期)2016-03-10 13:06:42
开源计算机辅助翻译工具研究
开源计算机辅助翻译工具研究
iOS开发者调查
电脑迷(2015年8期)2015-05-30 12:27:10
iOS开发者调查
电脑迷(2015年4期)2015-05-30 05:24:09