论文部分内容阅读
软件度量存在于整个软件开发生命周期的各个阶段,是理解、评估、预测、控制和改善软件开发的重要活动。通过度量所得的信息是软件组织一种极其重要的资源,软件组织的管理者可以有效地利用这些信息做出明智的决策,这些决策又对软件的质量产生了积极影响。软件度量作为一项基本的软件工程实践,早已包括在软件过程标准中,并成为最活跃的的软件工程研究领域。随着物联网、大数据、云计算等技术的逐渐深入推广和应用,软件技术发生了重大变革。为了更方便处理海量信息,满足个性化和多元化的用户需求,从而让软件更好地服务于大众,群体软件工程应运而生。群体软件工程实践大大改变了传统的软件工程实践,它实现了软件开发的组织方式从工厂到社区,开发人员从精英到大众,开发过程从封闭到开放,开发方法从机器工程到社会工程的重要转变,人们越来越认可并采用这种以开源社区为平台的开源群体软件开发模式,从而形成了开源软件生态系统。群体软件开发过程中生成了大量的相关数据,这为开源软件生态系统中的度量提供了丰富的数据基础。成熟的开源软件开发组织应该充分利用这些度量数据和相关的分析结果来制定短期或长期的决策。对开源软件生态系统的相关数据进行有效分析和挖掘,是实现精准度量和推荐的基础,有利于提高开源软件生态系统开发和维护过程的效率以及开源软件的质量。本文以开源软件生态系统中的开源软件和开发者为对象,对开源软件源代码、版本日志、开发者之间的合作以及开发者和项目之间的交互数据进行分析和挖掘,分别从技术(项目)和社会(开发者)层面验证了 h指数极其变体指标在度量中的应用,为软件工程度量和推荐提供新的指导依据。本文的具体的内容和取得的成果主要体现在以下几个方面:(1)提出了一种基于h指数的软件系统重要类的度量方法当新成员在参与软件项目的开发和维护活动时,理解系统的结构和功能往往需要花费他们的大量时间和精力。为了加速新成员对系统的理解,通常优先推荐他们关注系统中一些重要的类。通过构建无向加权软件网络模型,分别从邻居节点的度和连边的权重提出了四个基于h指数的指标度量软件网络中的重要类,并与常用的指标进行了对比,发现一些度量效果较好的新指标。研究结果对软件开发和维护具有一定的指导意义。(2)提出了一种h指数变体的软件系统重要类的度量方法在软件网络模型的基础上,结合邻居节点的度与边的权重提出了一种h指数变体的软件网络类的重要性度量方法。对比分析了所提的三个指标与常用指标之间的关系,以及在度量重要类上的差异。发现结合邻居节点的度与边的权重的h指数变体指标相比于已有指标在识别关键类上更加准确。(3)提出了一种基于h指数的开发者度量方法并对开发者合作行为进行分析理解开发者之间的合作行为是了解开源软件生态系统群体软件开发及组织过程的重要途径,也是促进开源软件生态系统协作开发的关键。利用h指数对开发者进行了度量,分析了新开发者的合作偏好与原有开发者基于h指数新指标的关系,发现新成员优先选择与h指标值大的原有开发者进行合作;分析了原有开发者之间的合作关系,发现了他们之间“强强合作”的行为。研究结果有利于开发相关的推荐工具,促进开源软件生态系统的健康、稳定与持续发展。(4)提出了一种基于内部边的群体软件开发中的项目推荐方法开源软件生态系统的快速发展,为软件开发提供了一种新的模式,开发者和项目的协调直接关系到开发的效率和质量。开源社区有过合作经验的原有开发者更有可能再次合作,内部边恰恰符合这个性质。通过分析开发者和项目之间的交互行为,从中找出内部边并进行排序从而对开发者进行项目推荐。与协同过滤方法相比,基于内部边的推荐方法效果更好。该方法能帮助解决开源软件生态系统人员闲置的问题。