大数据源中代码演化的追踪工具的设计与实现

来源 :北京大学 | 被引量 : 0次 | 上传用户:daoshi100
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
开源软件迅速发展,产生了大量优秀的软件制品,这些软件制品不仅被广泛应用到各个开源项目中,在商业领域也有越来越多的应用。一方面,开源软件所积累的大量软件制品为人们提供了良好的研究素材。另一方面,开源软件一般由自由贡献者创作,相比商业组织的有偿招募,严密组织,它提供了一种新颖的软件开发方法。因而,人们广泛研究开源软件的生产过程和演化过程以帮助提高软件生产效率和产品质量。代码演化研究是其中的一个重要方面,它能够帮助人们更好地理解软件各模块及其组合关系的演变过程,还有助于对各种遗产软件的理解和维护,以及帮助探索软件开发的最佳实践等。  鉴于版本控制系统(Version Control System,VCS)记录了代码的创建、修改、分支等事件,近年来人们普遍通过挖掘VCS记录的历史数据来回答代码演化相关的研究问题。然而,目前的代码演化研究大多针对单个或几个工程的小数据源,而且往往不考虑工程问的代码复用等情况,因而所得结果的有效性比较有限。面向包含多种版本控制系统以及成千上万工程的大数据源的数据提取、过滤、分析和代码演化历史的追踪是目前软件工程研究者和实践者面临的一个很大的挑战。  本文尝试应对上述挑战,提出一种大数据源中代码演化历史的追踪方法。通常,人们把开发过程中产生的源代码和配置文件等称为代码数据,代码数据的创建、修改、分支、复用等事件构成了其演化历史。代码演化历史包含三个非常重要的方面:第一,在版本控制系统中,代码(文件或目录)的各个版本是如何迭代的。第二,代码在工程内部或工程间是怎样复用的。第三,工程各版本的代码文件的组织结构如何。本文面向大数据源回答上述三个问题,其难点在于:首先,本文面向大量的版本控制系统和其中存储的数万个工程,建立一个统一的模型来表示其中的代码演化过程比较困难。另外,各版本控制系统有其特定的数据存储格式,与它们交互获取所需的数据有一定难度。最后,利用现有的算法和硬件平台分析数亿个文件的版本迭代和复用关系也是一大难点。  针对上述问题和挑战,本文提出了代码演化图模型来表示代码的演化过程,并在此基础上设计和实现了一个代码演化历史追踪工具。该方法收集代码演变历史中的各种数据,跟踪代码的各种演化事件,并将这些数据和事件抽象为代码演化图中的顶点和边。本文关注的代码版本迭代、复用情况和组织结构等三方面内容都能够通过模型中不同类型的顶点和边等元素来表示。演化图模型屏蔽了各种版本控制系统中的细节,提供了代码演化相关的统一视图,使得对代码演化过程中的各种事件的检索抽象成为了在该图上的遍历等操作。  本文的主要贡献在于设计了一个代码演化追踪工具,该工具能够提供一种重现代码演化历史的方法,能够追踪每一个源文件的版本迭代历史,能够建立不同开源工程间代码复用的关系,能够获取代码在每一个演化关键点的组织结构。在此基础上,该工具可以服务于很多研究目标,比如利用演化图中的提交信息度量开发者的生产效率;利用代码演化图中的复用信息度量开源工程的影响力;利用代码演化图探索源代码的模块结构演变过程等等。
其他文献
自然语言处理的核心内容就是研究“怎样让计算机理解并自动生成自然语言”,作为语言理解第一步的自动句法分析一直是本领域的一大技术难关。而计算机进行自动句法分析,首先要
互联网,作为现代社会人们获取信息、学习知识、相互交流的载体,越来越成为人们日常生活中的必要组成部分。随着互联网应用的日益增加,如:个性定制、搜索引擎、社交网络、喜好推荐
学位
随着互联网的快速发展,互联网已经成为全球最大的信息数据库,而如何在这些海量数据中快速定位到我们所需要的信息,这一问题已经成为当前重要研究课题。现有的搜索引擎排序技
人脸是人类个体差异性判别的最主要部分,其独特性使得人脸建模技术成为计算机图形学领域中一个持久的研究热点。基于颅面软组织厚度进行三维颅面复原是人脸建模技术的重要分
在信息化时代,互联网已经融入日常生活的各个层面。互联网用户的不断增加和信息传播方式的多样化使得互联网已经成为社会舆情产生和传播的重要场所,这使得网络舆情不仅对国家
学位
计算机的流体模拟已在计算机图形领域受到广泛的重视。基于光滑粒子动力学(SPH,Smoothed Particle Hydrodynamics)的实时可交互流体模拟的研究在动画游戏、虚拟现实等诸多领
在网络应用软件开发中,界面开发是一个重要环节,因为界面与最终用户直接相关。随着互联网快速发展,开发平台数量逐渐增多,不同平台的应用软件界面因为平台之间的差异往往需要
骨架作为一种简单有效的形状描述方法,已被广泛应用于计算机动画、图像压缩与检索、文字识别、电路板检测、机器人路径规划、以及科学与生物医学图像分析等领域。如何快速地