论文部分内容阅读
随着软件技术的飞速发展和人们日益高涨的编程热情,开放、灵活、高效的社区群体开发方式得到了全世界的认可和普及,大量汇集了群体智慧的优秀开源软件涌现出来并被广泛应用。在这样的发展趋势下,众多的项目参与者之间相互协作、利益彼此关联,逐渐形成了各种“开源软件生态系统”。由于开源软件生态系统的规模庞大,参与者活动关系复杂,开发者能力参差不齐,各方利益需求不同,极易在演化过程中采用一些折中欠佳的解决方案,由此将可能导致开源软件中技术债务的累积。同时,由于开发者共享对开源代码的所有权,使得大部分的源代码都被不同的开发者不定期地以交替地方式修改过,这对于后来的开发者而言,势必需要花费更多的精力去理解由其他人修改过的代码,可能会造成理解上的偏差,而引入了更多的质量问题。鉴于当前在开源软件项目层级上有关多开发者修改源代码对软件质量影响多是经验性的研究工作,缺少对开发者活动关系的深入剖析,没有充分考虑到不同开发者以交替地方式修改源代码将可能引入更多的缺陷和技术债务等问题。与此同时,技术债务作为一个理解软件质量和可维护性的新角度,目前可用于识别度量软件技术债务水平的方法十分有限。因此,迫切需要一个行之有效的方法定量地探究开源软件中多开发者交替修改源文件对软件质量的影响,并在一定程度上指示项目潜在的技术债务程度。针对以上研究的局限性,本文首先详细介绍了用于衡量开源软件交替修改程度的度量方法,然后设计并实现了一个可用于分析计算开源软件中源文件交替修改指标和缺陷密度的可扩展性工具,接下来遵照本文设计的一套严谨的实验流程做了大规模的案例实验。为了避免实验结果的偶然性,本文以Apache开源软件生态系统中10个大型的Apache开源项目为实验对象,充分利用GitHub和Apache问题跟踪系统提供的项目提交记录、完整源代码和缺陷列表等信息,使用本文所开发的工具和SPSS软件分析并验证源文件的交替修改指标与其缺陷密度的斯皮尔曼相关性。结果表明,源文件的交替修改指标与其缺陷密度之间具有显著的正向相关性,意味着在开源软件的开发过程中,如果多个开发者频繁地交替修改同一源文件,将更容易在该源文件中引入缺陷以及潜在的技术债务,从而导致开源软件的质量降低、可维护性和可理解性变差。