论文部分内容阅读
源代码演化分析是软件开发与运维中版本升级的重要任务,其对代码级别变更控制的指导意义使它成为经验软件工程研究热点之一。本文基于软件仓库挖掘技术研究源代码演化规律,将源代码文件之间关联关系、文件与开发人员之间关联关系以及开发人员的版次提交结合在一起,分析源代码版次变更对后续开发的范围、时间以及开发人员的影响,找出其中规律并进行预测,以帮助软件演化计划的制定和软件开发过程的改进。结合源代码演化分析的特征,本文首先提出了基于软件仓库的源代码演化分析方法。其具体由六个步骤构成:选定数据源,抽取样本数据;初步分析,确定分析指标;数据抽取;数据预处理;核心分析步骤和数据可视化处理。接着,本文从以下三个维度研究提出源代码演化分析模型:1)变更在范围上的影响分析。结合源代码静态关联关系分析和源代码协同变更分析,提出了通过分析源代码复合关联关系,结合PageRank计算网络节点权重的算法,对源代码变更在范围上的影响程度进行描述。2)变更在时间上的影响分析。结合源代码复合关联关系,通过版次曲线和版次条形码辅助分析源代码演化在时间上的分布情况。3)变更对开发人员的影响分析。在源代码复合关联关系中加入开发人员节点,强调开发人员对源代码文件的拥有程度,生成新的复合关联关系,进行源代码变更执行者演化规律的分析。在此基础上,本文设计与实现了源代码演化自动分析工具SEAT,支持上述分析方法和分析模型,并选取GitHub上的8个开源项目进行案例研究,发现了一些有价值的规律:源代码变更会在复合关联关系图中进行传播,传播的趋势是从PageRank值高的节点向PageRank值低的节点。版次的变更规模越大,其对项目造成的扰动也就越大,使得项目需要更长的时间去恢复,从而导致了在时间分布上,变更规模大的版次前后出现Cool-DownPeriod的概率会高于正常版次。在需要进行代码变更时,源代码文件的主要拥有者会被优先考虑分配任务。在开源项目中,核心开发人员的行为对项目总体起到了决定性的影响,非核心开发人员的开发行为稳定性相比核心开发人员的开发行为稳定性弱,这也导致了行为规律性的降低,进而使得非核心开发人员行为的可预测性降低。