范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

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

  引言
  近十多年来,复杂网络理论研究逐渐得到深入和推广,其应用非常广泛,涉及社会学、生物、计算机等领域。在软件工程领域,软件系统尤其是大型软件系统规模的持续增长引发系统复杂性的质变,许多大型软件系统在内部结构、外部交互、演化方式等维度上表现出新特性。从结构方面,由于规模变大,从局部度量系统内部结构复杂性变得越来越困难,网络思想有助于从全局的角度解决这一问题。根据软件系统内部实体(如包,类、方法、组件等)间的依赖关系,将软件系统抽象为一个网络,即软件网络。从参与者角度而言,软件系统的开发不再是单个精英团队或专家所能完成,而是依靠大众开发,利用群体智慧才能达到目标,是一个典型的社会-技术交融系统。技术层面分析主要是对已有软件采用逆向工程方法抽象其组织结构,构建软件网络;社会层面分析主要是根据社区群体交互采用社会网络分析方法,挖掘群体行为。复杂网络与软件工程的交叉研究,已引起了众多学者的关注与认可,如李兵等基于软件网络的拓扑结构度量开源软件系统的复杂性,提高软件设计质量;Bhattachary等根据软件网络中节点的重要性进行缺陷预测,为测试人员提供检测优先顺序;鉴于软件拓扑结构的多粒度性,潘伟丰等分别从软件包、类和方法3个粒度研究了开源软件系统的演化特性。
  软件网络的研究结合了复杂网络和软件工程理论,它以软件系统的结构特征为切入点,将复杂网络的理论应用到软件工程领域。持续演化是计算机软件的固有特性,了解和发现软件演化规律,有助于提高软件产品质量,降低软件开发和维护成本。针对软件演化问题,Lehman提出8个典型的定律,涉及软件的规模、质量、复杂度、生产率与开发过程等。目前,随着软件的网络化趋势越来越明显,软件与网络的关系更加密不可分,用网络的观点来分析软件演化,为软件工程实践提供了新的视角。然而,软件开发是一个社会性(人)和技术性(软件)汇聚的过程,很多已有研究只是从技术层面出发,探索了软件系统技术维度的复杂性与应用。在软件生命周期中,从需求获取、到系统的设计与开发,以及后期维护等阶段都离不开人的参与,即软件系统的社会属性。软件的结构决定功能,而Conway定律指出系统的最终设计结构等同于设计系统的组织成员之间的交互结构。因此,一个软件系统既是一个技术依赖的制品,也涉及一个社会交互的群体,其网络模型可抽象为一个社会-技术网络。
  软件系统在不断适应环境和需求变化的过程中持续演化,软件演化作为一种技术,主要关心对软件进行修改的方法;作为一种现象,主要关心谁驱动的演化以及演化效果如何。基于社会-技术网络模型,本文尝试从软件演化分析角度探讨社会-技术网络中的协同演化问题,弥补已有研究工作只从单一网络层面审视软件的演化过程。本文采用类依赖关系描述软件网络,任务参与关系描述开发者网络,基于复杂网络度量研究与验证开源软件系统版本演化过程中存在的规律。本文的主要工作为:构建开源软件系统的社会-技术网络模型,统计开源软件系统中软件网络与开发者网络的网络规模、平均度、最短路径、聚类系数、社区结构网络度量指标等;依次对比分析两类网络在10个软件版本中网络指标的演化趋势,发掘它们演化规律的一致性与差异。
  1 相关工作
  Valverde等首次将复杂网络方法引入软件结构分析中,将软件系统的类图用无向网络来表示,分析软件网络中的复杂网络特性(如小世界和无标度),认为软件开发中局部优化过程可能是导致软件网络呈现这些特性的原因。Valverde等还考虑了类之间的有向性,构建有向网络对系统结构进行研究,发现除了以上特性外,软件网络同时具有层次性和模块性。随后,一些研究者从不同方面(开发语言、项目规模、分析粒度等)再次验证了软件网络的诸多特性并成功应用于工程实践。在软件生命周期中,软件处在一个不断变化的环境(新需求、新应用环境、性能改进等)中,为适应环境软件系统必须不断演化。Jenkins等对软件包之间的关系进行建模,分析一系列版本中软件架构图的结构稳定性。Wang等获取了Linux kernel模块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即可呈现对应的软件网络。另外,我们根据对应版本的提交时间,有选择地爬取项目的邮件列表信息与提交日志。我们先对开发者信息进行去重,例如Paul Gardner与P.Gardner实际上是指同一个开发者;以往在对邮件列表信息处理时,会发现同一个开发者使用多个邮箱进行交互的情况,而本次处理过程中并未发现此类情况。最后我们把在同一个线程出现和修改了同一个类文件的开发者间视为有一条合作连边,构建无向非加权开发者网络。
  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。关于软件网络的详细介绍,推荐感兴趣的读者参考我们之前的工作。
  开发者网络模型:开源软件社区中的开发者大部分是来自世界各地的志愿者,他们加入一个开源软件的开发主要是为了增加开发经验和体检虚拟团队合作的乐趣,通过知识共享、信息交互体现群体智慧在软件开发过程中的作用。开发者可以通过各种交互渠道,如邮件列表、版本控制工具CVS/SVN/Git、Bug库和论坛等,来实现交互。在构建开发者合作网络(Developer Collaboration Network,简称DCN)过程中,用Gd=(Vd,Ed)表示一个开发者网络,其中Vd代表参与项目的开发者,Ed为开发者之间的合作,即若开发者C 与开发者D 参与了同一任务(包括bug修复,功能改进)则被视为存在一条合作连边ecd=1,否则ecd=0。本文没有考虑两个开发者间的合作次数。
  3 演化分析
  3.1 节点与边的协同演化
  网络的节点数与边数直接反映了一个网络的规模,一个开源软件系统的软件网络节点代表系统中类的个数,而边代表类之间的依赖关系,功能越多类越多,边越多系统越复杂。因此,软件网络规模的变化能够体现软件系统内部结构复杂性的变化。与软件网络相对应,开源社区开发者合作网络中节点代表参与的社区开发者,开源社区中的开发者可自由选择感兴趣的项目,因此节点规模间接反映项目的受欢迎程度;开发者间的合作紧密程度可通过网络的连边进行体现,边越多表示开发者间合作越紧密,加权网络中边的权重还可表示合作的频率。已有研究关注开发者潜在合作同行的推荐,以缓解合作的稀疏性。
  为分析两类网络节点与边的演化情况,分别给出了它们在10个版本中的变化趋势,其中横轴表示每个版本对应的版本序列号(1-10),纵轴表示对应的指标值。显示SDN网络与DCN网络的节点数均随时间不断增多,只是增长趋势有所不同。SDN网络中节点与边的增长在一定周期内幅度很小,之后存在一个大的增加,随后又保持相对稳定,如版本1-3,4-7,8-10这3个阶段增长幅度很少,可能的解释是这些阶段主要负责系统的维护工作,无新的功能添加;而3-4,7-8之间却有一个大幅度的增长,分别增加了90和98个类文件,说明在这两个阶段版本间有新的功能添加。SDN网络规模的演化也表明大致3-4个版本周期后会有一次大的更新。
  虽然同样呈增长趋势,但DCN网络与SDN网络的演化趋势明显存在差异。首先,开发者数量线性增长更明显,不存在周期性增长的现象,其中一个主要原因可能与开源社区的零散、自由的松耦合合作方式有关,感兴趣的开发者任何时刻都可以参与项目提供贡献,这种自愿性使得项目成员随时间一直增长,经历10个版本,开发者数由原来的38人增加到144人。其次,DCN 网络中边的增长幅度相对更缓慢,说明合作并不紧密;在版本6-9期间,网络的合作仅增加了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 总结与展望
  随软件版本的更新,软件网络与开发者合作网络的规模不断增大,软件网络以3-4个版本为周期有规律地增长,而开发者合作网络呈明显的线性增长;两类网络的平均度均满足近似线性增长,但整体上增长并不一致;它们均有小世界特性,且最短路径都表现为阶段性下降,但开发者间局部合作更明显;它们的社区结构都不断地变化,且整体上模块度呈下降趋势,但开发者合作网络的变化更大。总之,我们的工作发现开源软件系统的社会-技术网络模型中两类网络既有共性又有差异,一定程度上既相互促进又相互影响。
  我们的下一步工作将主要关注两个方面:引入更多的版本,考虑不同语言(除Java之外)、不同规模的软件系统作为研究对象,进一步验证并丰富我们的结论;软件网络中类之间的依赖实际是有向带权重的,开发者合作网络中合作的次数也会对结果产生一定影响,因此,考虑边的方向与权重,能使结论更贴近现实和更具一般性。

苏丹天然砂和砾石的潜在碱活性反应研究论文1概述苏丹是非洲最大的国家,面积为2560000km2。南北贯穿尼罗河。西部干旱的内陆毗邻乍得和利比亚,东临红海和埃塞俄比亚。地区大多偏远不良地质的映射和恶劣的气候抑制着苏丹的发展浅谈物理教学中创新能力的培养论文摘要在实施新课标中,要逐步消除教学工作中的种种弊端,重视学生创新能力的培养。如何改革传统的教学,构建一种适合培养学生创新能力的课堂教学模式,就成为当前新课改的一项重要任务。现结合个初中英语教学中的新课导入技巧论文巧妙的课堂导入是创设良好课堂教学氛围的重要环节,可将学生的注意力迅速集中起来,使其饶有兴趣地投入到新的学习情境中去,提高效率。作为英语教师,如何营造良好的课堂氛围,激励唤醒和鼓励学精益化管理在高校后勤餐饮服务中的应用分析论文1现阶段我国高校后勤服务工作的现状以及存在的问题1。1高校后勤餐饮服务管理不到位目前,我国高校餐饮后勤服务管理过程中存在诸多问题,例如管理观念保持管理方式落后缺乏服务意识饭餐质量不中学美术教育论文美术教师的教学任务之一就是想尽一切办法激发学生的学习兴趣,然后在此基础上传授美术知识,培养学生的美术观察能力想象能力审美能力表现能力创作能力。尽管任务艰巨,困难重重,但是我们必须在初中美术教育论文导语就在学校美术教育遭遇冷落的同时,整个社会对美的追求却是日甚一日,这种追求已浸润到生活的方方面面,以下是小编为大家收集初中美术教育论文,欢迎借鉴!从初中美术教育的现状,初中美术学公正是教育政策的伦理诉求论文论文关键词教育政策公正参与主体政策内容论文摘要教育政策是党和政府在一定历史时期为教育工作制定的基本要求和行动准则。公正的教育政策要保障受教育者的发展权利与发展机会发展条件和发展水平多媒体技术在教育教学应用中的必要性论文论文摘要由于多媒体计算机具有生动形象的特点,可以将图文声等直观地展示在学生面前,能提供最理想的教学环境,所以其在教学领域的应用范围一直在扩展,多媒体技术必然会对教育教学过程产生深刻现代远程教育的新技术应用反思的论文摘要技术是远程教育得以发展的基础,随着信息技术的发展,更多的新技术被运用到现代远程教育中来。但盲目过度地追求新技术的使用,不但提升了远程教育的成本,未能取得预期的使用效果,在一定程多媒体技术应用与远程教育的发展论文摘要数字网络科技飞速进步,新技术新理念日新月异。信息知识的传播与获取已广泛依赖网络技术的平台。而多媒体技术在网络远程教育中的应用,使现代的远程教育的内容形式更趋丰富生动,信息的传播网络技术在医院信息管理中的应用论文摘要在医院信息管理过程中,计算机网络技术扮演者至关重要的作用,其在药品管理人事管理财务管理以及患者病案管理过程中均起着非常关键的作用和影响。基于此,本文首先对于医院信息管理中计算机
浅论商务俄语课程设计的基本原则与不足论文摘要随着中俄经贸往来的不断扩大,商务俄语越来越受到各高校俄语教学的重视。它既基于常规俄语教学,又有别于纯语言教学。无论授课方式,还是师资上都有着特殊的要求。商务俄语教学涉及大量的专有关交通问题的论文支线航空是民航运输的重要组成部分,也是近几年我国民航发展的工作重点。下面是有关交通问题的论文,欢迎参考阅读!论文关键词我国支线航空的发展浅析引言支线航空一般指航线距离在500公里左小学农村课改论文精选一要做好观念转变工作新的基础教育课程改革之所以深刻,就在于从根本上改变了旧的教学观念。新课程要求教师提高素质,更新观念,改变角度,如果教师的教学观念不更新,教学方式不改变,课程改革风电运维人员安全管理研讨论文摘要近些年,各行各业对风能的需求量越来越大,风电企业得以快速发展。然而,过度追求发展规模的风电企业在安全管理尤其是运维人员安全管理中问题丛生,增加了安全事故的发生几率,严重影响了企基于安全心理学的运维安全管控论文随着运维一体化改革在电力企业的不断深化,运维一体化模式下的安全管控显得更为重要。本文将安全心理学的基本理论应用与电力安全生产,深入分析了运维一体化模式下的安全管控,提出了行为的强化电力运维合一论文1运维合一的特点1。1组织机构扁平化在水电厂中应用运维合一管理,打破了传统多个部门协同管理的模式,通常只设置有一个部门,如运维部或者生技部,而这种单一性的部门需要完成多部门的工作,中小型加油站防雷系统设计研究的论文经济的发展和人们生活水平的提高使得汽车的数量增加,而加油站数量也随之剧增。如今,汽车加油站已成为城市发展不可或缺的一部分。然而,近年来,加油站雷电灾害事故频发,不仅严重影响了周边居关于幼儿园的教学论文随着我国的经济发展,人们综合素质的提高,幼儿教育也越来越被社会和教育机构所认可,幼儿教育是对学龄前儿童的启蒙教育,对幼儿以后的发展有着重要的作用,以下是幼儿园的教学论文,希望给大家绘本在礼仪教育中的有效实施论文摘要礼仪教育是幼儿园德育教育的一个重要组成部分,幼儿期也是塑造健康人格的重要时期。要想成功必先成人,注重幼儿礼仪的培养,是幼儿能够成人的前提和保障,所以幼儿园的礼仪教育显得尤其重要展示教学思路论文吴祖缃先生的我国古代小说的发展及其规律是一篇新入选高中语文课本(第五册)的文学评论,这是一篇文质兼美的论文,在结构安排阐述方式上都有独到之处。要教好这篇课文,要求教师认真揣摩教材,园林设计中植物配置及造景的作用分析论文1植物配置与植物造景的原则及形式科学性原则主要是指在植物配置过程中,应充分遵循植物的生物学特性和环境协调性,从而做到不同种类型植物之间的和谐统一。综合考虑植物配置土壤环境气候条件等