开源软件系统中社会技术网络的协同演化探析
引言
近十多年来,复杂网络理论研究逐渐得到深入和推广,其应用非常广泛,涉及社会学、生物、计算机等领域。在软件工程领域,软件系统尤其是大型软件系统规模的持续增长引发系统复杂性的质变,许多大型软件系统在内部结构、外部交互、演化方式等维度上表现出新特性。从结构方面,由于规模变大,从局部度量系统内部结构复杂性变得越来越困难,网络思想有助于从全局的角度解决这一问题。根据软件系统内部实体(如包,类、方法、组件等)间的依赖关系,将软件系统抽象为一个网络,即软件网络。从参与者角度而言,软件系统的开发不再是单个精英团队或专家所能完成,而是依靠大众开发,利用群体智慧才能达到目标,是一个典型的社会技术交融系统。技术层面分析主要是对已有软件采用逆向工程方法抽象其组织结构,构建软件网络;社会层面分析主要是根据社区群体交互采用社会网络分析方法,挖掘群体行为。复杂网络与软件工程的交叉研究,已引起了众多学者的关注与认可,如李兵等基于软件网络的拓扑结构度量开源软件系统的复杂性,提高软件设计质量;Bhattachary等根据软件网络中节点的重要性进行缺陷预测,为测试人员提供检测优先顺序;鉴于软件拓扑结构的多粒度性,潘伟丰等分别从软件包、类和方法3个粒度研究了开源软件系统的演化特性。
软件网络的研究结合了复杂网络和软件工程理论,它以软件系统的结构特征为切入点,将复杂网络的理论应用到软件工程领域。持续演化是计算机软件的固有特性,了解和发现软件演化规律,有助于提高软件产品质量,降低软件开发和维护成本。针对软件演化问题,Lehman提出8个典型的定律,涉及软件的规模、质量、复杂度、生产率与开发过程等。目前,随着软件的网络化趋势越来越明显,软件与网络的关系更加密不可分,用网络的观点来分析软件演化,为软件工程实践提供了新的视角。然而,软件开发是一个社会性(人)和技术性(软件)汇聚的过程,很多已有研究只是从技术层面出发,探索了软件系统技术维度的复杂性与应用。在软件生命周期中,从需求获取、到系统的设计与开发,以及后期维护等阶段都离不开人的参与,即软件系统的社会属性。软件的结构决定功能,而Conway定律指出系统的最终设计结构等同于设计系统的组织成员之间的交互结构。因此,一个软件系统既是一个技术依赖的制品,也涉及一个社会交互的群体,其网络模型可抽象为一个社会技术网络。
软件系统在不断适应环境和需求变化的过程中持续演化,软件演化作为一种技术,主要关心对软件进行修改的方法;作为一种现象,主要关心谁驱动的演化以及演化效果如何。基于社会技术网络模型,本文尝试从软件演化分析角度探讨社会技术网络中的协同演化问题,弥补已有研究工作只从单一网络层面审视软件的演化过程。本文采用类依赖关系描述软件网络,任务参与关系描述开发者网络,基于复杂网络度量研究与验证开源软件系统版本演化过程中存在的规律。本文的主要工作为:构建开源软件系统的社会技术网络模型,统计开源软件系统中软件网络与开发者网络的网络规模、平均度、最短路径、聚类系数、社区结构网络度量指标等;依次对比分析两类网络在10个软件版本中网络指标的演化趋势,发掘它们演化规律的一致性与差异。
1相关工作
Valverde等首次将复杂网络方法引入软件结构分析中,将软件系统的类图用无向网络来表示,分析软件网络中的复杂网络特性(如小世界和无标度),认为软件开发中局部优化过程可能是导致软件网络呈现这些特性的原因。Valverde等还考虑了类之间的有向性,构建有向网络对系统结构进行研究,发现除了以上特性外,软件网络同时具有层次性和模块性。随后,一些研究者从不同方面(开发语言、项目规模、分析粒度等)再次验证了软件网络的诸多特性并成功应用于工程实践。在软件生命周期中,软件处在一个不断变化的环境(新需求、新应用环境、性能改进等)中,为适应环境软件系统必须不断演化。Jenkins等对软件包之间的关系进行建模,分析一系列版本中软件架构图的结构稳定性。Wang等获取了Linuxkernel模块233个版本的类调用网络,研究软件网络的演化特性。李兵等将复杂网络与演化算法相结合,提出一种新的软件网络演化模型,发现该方法能够很好地刻画实际软件系统复杂网络特性的涌现过程。潘伟丰等更是从包、类和方法3个粒度分析了软件网络中节点度、聚类系数、最短路径等指标的演化特性。Businge等研究了Eclipse系统及相关插件的演化规律,发现结果基本满足Lehman的8项目演化定律。
软件开发团队的演化对软件质量也会带来很大影响,研究开发者网络的演化有助于更好地理解团队成员在参与开发过程中的改变。Ngamkajornwiwat等使用社会网络分析方法研究了KOffice项目开发者社区的演化。Hong等讨论分析了开发者合作网络中幂律分布、模块性和社区大小等属性的演化。Datta等在IBM提供的Jazz平台上,将开发者合作网络的平均最短路径、聚集系数、巨型组件大小和平均度等指标与科学家合作网络进行时间序列的演化对比。Kumar等研究了贡献者数、社区大小、聚类系数等6个指标的演化。此外,Cataldo等、Lim等、Sharma等应用社会网络分析方法分别分析了分布式项目、合作网络与涉众投入关系、项目测试阶段团队的演化。
以上研究工作存在一个主要的不足:局限于单个网络层面分析软件系统中的演化问题,忽略了软件系统的社会技术一致性,以及开发者合作网络与软件网络之间的相互影响。软件是由人开发的,现实中,由于人员的动态调整,尤其是核心成员的变动,可能使得原有的设计方案受到影响,最后导致软件结构发生变化。针对此类情况,仅从软件网络或开发者网络的演化分析并不能全面反应实际软件系统的演化问题。
2研究方法
本文的研究主要分为3部分,首先利用我们团队开发的聚焦爬虫工具从Sourcforge。net网站爬取开源项目Vuze的邮件列表信息,并结合使用TortoiseSVN工具导出该项目的版本日志信息;根据网上提供的项目版本信息,使用Dependencyfinder工具解析源代码构建软件网络,再根据所获取的项目历史信息构建开发者网络;基于所得的软件网络与开发者网络,进行协同演化分析。
1)数据获取。我们的工作需要具备获取项目源代码和修改日志相关信息的权限,所以选取开源软件为实
验对象。开源软件Vuze(原名Azureus)是一款知名的采用BitTorrent协议的P2P文件共享客户端软件,可用于查找下载种子文件。该软件项目的开发信息都公开部署在开源平台Sourceforge。net上,任何感兴趣的开发者都可以为项目提供个人的贡献。通常一个成功的开源软件在其生命周期中都会有一系列版本,本文选取从版本4。3。1。0开始的10个连续版本作为演化分析对象,为便于描述,我们将版本V4310标记为1,依此类推版本V4502标记为10。
针对每个目标版本,我们先编译源代码并将编译后的压缩文件。zip导入dependencyFinder中,得到。xml解析文件;然后利用自行开发的工具分析。xml解析文件,获取类之间的依赖关系并保存为。net网络格式;最后利用网络可视化工具Gephi即可呈现对应的软件网络。另外,我们根据对应版本的提交时间,有选择地爬取项目的邮件列表信息与提交日志。我们先对开发者信息进行去重,例如PaulGardner与P。Gardner实际上是指同一个开发者;以往在对邮件列表信息处理时,会发现同一个开发者使用多个邮箱进行交互的情况,而本次处理过程中并未发现此类情况。最后我们把在同一个线程出现和修改了同一个类文件的开发者间视为有一条合作连边,构建无向非加权开发者网络。
2)网络模型。软件网络模型:根据选取的粒度不同,常用的软件网络有包级软件网络、类级软件网络和方法级软件网络。考虑到包级粒度过于粗糙而方法级粒度一定程度上太细会加重数据处理负担,本文所使用的网络是基于类之间依赖关系的软件网络(SoftwareDependencyNetwork,简称SDN),定义为:Gc(Vc,Ec),其中Vc为节点集,即为开源软件中所有的类和接口;Ec为节点对之间的边集,即为对象之间的关联关系。在CDN中,4种情况下类A与类B之间被视为存在关联关系:类A与类B之间有继承关系;类A与接口B之间有实现关系;类A中有类B的变量;类A中的方法调用了类B对象。在软件实现中,类之间的依赖关系是有向的,而考虑到开发者合作的相互性,我们的软件网络为无向非加权网络,即类A与类B之间只有存在以上4种关系中的至少一种便有eab1,否则eab0。关于软件网络的详细介绍,推荐感兴趣的读者参考我们之前的工作。
开发者网络模型:开源软件社区中的开发者大部分是来自世界各地的志愿者,他们加入一个开源软件的开发主要是为了增加开发经验和体检虚拟团队合作的乐趣,通过知识共享、信息交互体现群体智慧在软件开发过程中的作用。开发者可以通过各种交互渠道,如邮件列表、版本控制工具CVSSVNGit、Bug库和论坛等,来实现交互。在构建开发者合作网络(DeveloperCollaborationNetwork,简称DCN)过程中,用Gd(Vd,Ed)表示一个开发者网络,其中Vd代表参与项目的开发者,Ed为开发者之间的合作,即若开发者C与开发者D参与了同一任务(包括bug修复,功能改进)则被视为存在一条合作连边ecd1,否则ecd0。本文没有考虑两个开发者间的合作次数。
3演化分析
3。1节点与边的协同演化
网络的节点数与边数直接反映了一个网络的规模,一个开源软件系统的软件网络节点代表系统中类的个数,而边代表类之间的依赖关系,功能越多类越多,边越多系统越复杂。因此,软件网络规模的变化能够体现软件系统内部结构复杂性的变化。与软件网络相对应,开源社区开发者合作网络中节点代表参与的社区开发者,开源社区中的开发者可自由选择感兴趣的项目,因此节点规模间接反映项目的受欢迎程度;开发者间的合作紧密程度可通过网络的连边进行体现,边越多表示开发者间合作越紧密,加权网络中边的权重还可表示合作的频率。已有研究关注开发者潜在合作同行的推荐,以缓解合作的稀疏性。
为分析两类网络节点与边的演化情况,分别给出了它们在10个版本中的变化趋势,其中横轴表示每个版本对应的版本序列号(110),纵轴表示对应的指标值。显示SDN网络与DCN网络的节点数均随时间不断增多,只是增长趋势有所不同。SDN网络中节点与边的增长在一定周期内幅度很小,之后存在一个大的增加,随后又保持相对稳定,如版本13,47,810这3个阶段增长幅度很少,可能的解释是这些阶段主要负责系统的维护工作,无新的功能添加;而34,78之间却有一个大幅度的增长,分别增加了90和98个类文件,说明在这两个阶段版本间有新的功能添加。SDN网络规模的演化也表明大致34个版本周期后会有一次大的更新。
虽然同样呈增长趋势,但DCN网络与SDN网络的演化趋势明显存在差异。首先,开发者数量线性增长更明显,不存在周期性增长的现象,其中一个主要原因可能与开源社区的零散、自由的松耦合合作方式有关,感兴趣的开发者任何时刻都可以参与项目提供贡献,这种自愿性使得项目成员随时间一直增长,经历10个版本,开发者数由原来的38人增加到144人。其次,DCN网络中边的增长幅度相对更缓慢,说明合作并不紧密;在版本69期间,网络的合作仅增加了18。需要注意的是,DCN网络中开发者既可以自由加入,同样可以随时离开,所以这里的增长都是相对前一个时间段而言。
实验结果表明:DCN网络与SDN网络的规模随时间均满足持续增长规律,只是SDN网络节点与边的增长趋势表现出一定的周期性,而DCN网络的线性增长趋势更明显,但节点与边增长不同步。
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网络的有效性。
5总结与展望
随软件版本的更新,软件网络与开发者合作网络的规模不断增大,软件网络以34个版本为周期有规律地增长,而开发者合作网络呈明显的线性增长;两类网络的平均度均满足近似线性增长,但整体上增长并不一致;它们均有小世界特性,且最短路径都表现为阶段性下降,但开发者间局部合作更明显;它们的社区结构都不断地变化,且整体上模块度呈下降趋势,但开发者合作网络的变化更大。总之,我们的工作发现开源软件系统的社会技术网络模型中两类网络既有共性又有差异,一定程度上既相互促进又相互影响。
我们的下一步工作将主要关注两个方面:引入更多的版本,考虑不同语言(除Java之外)、不同规模的软件系统作为研究对象,进一步验证并丰富我们的结论;软件网络中类之间的依赖实际是有向带权重的,开发者合作网络中合作的次数也会对结果产生一定影响,因此,考虑边的方向与权重,能使结论更贴近现实和更具一般性。
医院管理系统信息标准化改造策略〔摘要〕分析医院管理与决策支持系统信息标准化现状,从编码、指标、信息技术、管理人员能力标准化个方面探讨提高系统数据质量、推进系统信息标准化改造的策略,为进一步规范医院信息化建设……
FLASH怎么制作LED灯?FLASH制作LED灯的步骤今天小编为大家带来FLASH怎么制作LED灯,步骤很简单,感兴趣的朋友和小编一起到下文了解一下吧方法步骤:打开FLASH软件,新建FLASH文档;修改其属性;……
如何调制路由器移动宽带路由器如何设置详解移动宽带接无线路由器怎么设置?其实无论那个运营商的宽带设置路由器的方法几乎都是一样的!一样的简单!跟着下面的步骤一也可以通过几步设置好你的wifi。设置一个新的无线路由器也就只……
通脉丸有效组分配伍浓缩液在大鼠体内的毒代动力学讨论通脉丸是由附子、黄芪、两头尖、制马钱子、当归、赤芍、甘草等中药组成的纯中药制剂,已有30余年的使用历史。具有祛风湿、通经络、消肿痛之功效,用于治疗血栓闭塞性脉管炎、动脉硬化闭塞……
华为mate40系列绿边怎么解决绿屏怎么办随着华为mate40系列手机的热销,也有很多问题被反映出来,其中就包括屏幕绿边,那么华为mate40绿边严重吗,绿屏问题怎么解决呢,快来看看吧!华为mate40系列屏幕绿……
谈川芎素对结直肠癌Lovo细胞生长的体内外抑制作用及机制中药是我国的特色治疗方式之一,目前已有多种中药制剂获批用于常规手段无效时的肿瘤治疗。川芎素广泛用于心脑血管疾病的治疗,近年来其抗肿瘤活性成为研究的热点。川芎素对人结直肠癌是否具……
漆黄素抗卵巢癌的体内外作用讨论在妇科恶性肿瘤中卵巢恶性肿瘤发病率居第三位,其病死率居女性生殖系统肿瘤的首位。由于其早期起病隐匿,缺乏明显临床症状,很难被及时发现和诊断,故约6070的患者初诊时已是中晚期。目……
抗生素在儿科呼吸道感染中的临床应用与探究儿童处于生长发育阶段,其身体的免疫系统比较薄弱,处于完善阶段,体质较成年人弱,容易受到各类微生物病菌的感染,在儿科中呼吸道感染病例比较多,是比较常见的疾病,该疾病也是较多疾病的……
2013年刑事诉讼法学研究状况(9)刑法论文(八)关于缺席审判审判时在场是《公民权利和政治权利国际公约》明确赋予刑事被追诉者的一项权利。缺席审判则意味着在特定情况下对在场权的限制。有论者指出,由于我国刑事诉讼法并未……
华为荣耀畅玩5a怎么样及报价图文华为手机目前可以说是国产手机中一款手机了。华为近两年间出的旗舰机华为mate7、mate9以及华为p7、p8、p9手机可谓是为华为赚足了眼球。进入今年的第三季度华为旗下的子品牌……
魅蓝2和IUNIi1哪个好魅蓝2和IUNIi1哪个好屏幕方面,魅蓝2采用一块5。0英寸的LTPS屏幕,从这一代(魅蓝note2、MX5)开始,魅族屏幕回归16:9。其分辨率为1280x720,NT……
2013年刑事诉讼法学研究状况(14)刑法论文〔28〕参见周洪波:《沉默权问题:超越两种理路之新说》,《法律科学》2009年第5期。〔29〕参见张小玲:《论刑事诉讼中的程序分流》,《政法论坛》2009年第2期。〔30……
研究近代中国人的土耳其认知的回顾与展望近代中国人在认知世界的过程中,不仅瞩目于那些与自己有着密切往来的西方大国,还对于以土耳其、希腊、越南、菲律宾等为代表的弱小国家进行过细致考察。土耳其就是中国人在观察世界与反观自……
消毒柜如何安装消毒柜安装注意事项详解在很多家庭中为了全家人的饮食安全会选择在家中购置一台厨具消毒柜。但是消毒柜由于自身的产品工作原理也带来很多的隐患,所以在消毒柜安装过程中有许多的注意事项需要大家格外留意。……
支付宝转账到卡实时到帐吗支付宝转账到卡实时到帐开通方法支付宝转账到卡实时到帐吗?支付宝转账到卡实时到帐怎么开通?近期,支付宝中的蚂蚁金服功能全面升级,升级之后支付宝又多了许多方便实用的功能,如转账到卡实时到账,那么支付宝转账到卡实……
从国际文化发展战略看中国文化安全从国际文化发展战略看中国文化安全第二次世界大战后,特别是冷战后,文化的功能急剧膨胀,世界各国对自身的文化发展给予高度重视,从世情和自己的国情出发,提出自己的文化发展战略,……
雀巢胶囊咖啡机怎么使用雀巢胶囊咖啡机使用方法图文介绍雀巢这个品牌大家应该清楚吧,它的咖啡非常的有名,在市面上可以见到各种各样类型的雀巢速溶咖啡产品。雀巢除了咖啡有名外,它还有生产咖啡机的,不少办公室、咖啡馆等用的咖啡机都是雀巢的……
走近微型发电机的世界,小编带你简单认识!详解微型发电机相信大家都知道的。微型发电机应用在很多方面。在很多机械设备上都有微型发电机的存在。微型发电机是用来必须时起到发电作用的。微型发电机能够很好地传输电量,能够使机器连接电……
曼瑞德新风系统怎么样曼瑞德新风系统特点分析介绍详解大家在购买新风系统的时候,购买一款好的新风系统品牌是很有必要的,这决定了新风系统的品质,而曼瑞德新风系统就是一款非常不错的新风系统品牌,小编来为大家介绍下曼瑞德新风系统的一些情……
制度变迁路径下的会计制度与会计文化研究制度变迁路径下的会计制度与会计文化研究联合国教科文组织将文化定义为:一个社会和集团的精神和物质、知识和情感的所有与众不同的显著特色的集合总体,包括艺术、文学、生活方式、人……
小型风冷热泵好不好小型风冷热泵特点及选购要点介绍风冷热泵,是空调行业内区别于风冷冷水机组的一种空调机组。除具备风冷冷水机组制取冷水的功能外,风冷热泵机组还能切换到制热工况制取热水。风冷热泵主要用于家用中央空调领域,大型中央空……
当代中国民生制度创新研究经济的快速发展让中国人民尝到了改革开放的甜头,但日益尖锐的民生问题给我国民生建设以及社会保障体系建设提出了更高的要求。健全的民生制度能够给民生事业的发展起到制约和规范的作用,而……
当代中国老龄化社会之下的成年监护制度当代中国老龄化社会之下的成年监护制度我国现行民事立法没有规定成年监护制度,这是一个重大的缺失,应当在民法典的制定中予以补充,这是学界的共识;但是,至于该制度如何进一步制定完善以……
电力经营中加强物资制度管理的重要作用分析摘要:文章首先对电力经营中物资管理制度存在的普遍问题进行综述,包括物资采购管理机制不够健全,询价和采购操作不甚合理,询价力度不足、产品价格没有保障,物资预算体制不够健全,退料规……