本发明是对开源软件参与人员的协同行为的一种测度方法,旨在将通过该技术得到的协同行为测度作为开源软件质量评估的评估属性,能够起到提高开源软件质量评估精确度的作用。
背景技术:
开源软件是一种源代码可以自由获取的计算机软件,通常都是由许多开发者合作共同开发完成。随着软件行业的飞速发展,开源软件数目呈指数增长趋势,开源软件质量评估已经成为了一个巨大的挑战。目前很多开源软件由开发者共同开发完成,项目团队中协同、交互机制对软件项目的成败具有重要的影响。为保证开源软件的开发质量,需要开源软件参与人员之间保持高度的协调一致,尽可能减少无效劳动和由于缺乏交互而导致的重复劳动。因此,评价开源软件开发过程中开发者之间的交互协作状况,是开源软件质量评估的不可或缺的重要属性,也是促进开源软件发展的关键因素之一。
由于软件开发工作的特殊性,如何对开源软件开发者的协同行为进行准确的评价一直是个难题。国内外的研究学者采用开发者合作网络对开发者合作行为进行分析,但是注重于开发者的偏好合作关系研究,对于整个软件的开发者协同行为的评价多数是根据经验而没有具体的量化标准;另一方面,在分析开发者合作关系时,多数网络中的边没有赋予权值,即没有考虑两人合作多次的情况,然而开发者之间合作的次数反映开发者间的合作程度,开发者之间的多次合作可能会对开源软件质量产生不同的影响,使得协同行为分析结果不能满足实际的开源软件质量评估需求,距离实际应用尚有距离,迫切需要一种新型方法来解决开源软件中开发者协同行为测度问题,为开源软件质量评估提供支持。
技术实现要素:
本发明针对现有开源软件质量评估中量化开发者协同行为的不足,提出了一种基于加权开发者合作网络的开源软件协同行为测度方法。该方法结合开发者之间的合作次数,更全面的考虑开发者之间合作的紧密程度,因此在分析开发者协同行为时更符合软件开发过程中的实际情况,从而实现对开源软件开发者协同行为的精确评估。
一种面向开源软件的协同行为测度方法,该方法具体包括如下步骤:
步骤1、采用通用的web爬虫技术从网站爬取开源项目的项目版本信息,获取项目开发者之间的合作次数,构建项目开发者网络,生成项目协同矩阵;具体包括如下步骤:
1)基于开源软件的版本信息,提取项目开发过程中开发者每次提交行为所涉及的文件信息;
2)生成每个项目开发者操作过的文件集合;
3)构建n×n的项目协同矩阵。
步骤2、根据项目协同矩阵,计算网络中每个节点的点权,点权的计算考虑到了邻近节点的个数和与它相连接边的权重;根据各节点的点权值计算项目开发者网络的点权平均值s;具体包括如下步骤:
1)对于开发网络中节点vi,查找其相邻的节点,构建相邻节点集合di;
2)节点vi的点权si为该节点连接边的全体权重之和,si的计算公式为:
3)查找项目开发者网络中所有点权的最大值max(s);
4)标准化节点vi的点权值si,标准化公式为:
5)计算开发者网络中所有节点的点权平均值s,其计算公式为:
步骤3、分析项目开发者网络,计算网络中每个节点的加权集聚系数,加权集聚系数描述了节点的相邻节点之间的合作紧密程度;根据各节点的加权集聚系数计算项目开发者网络的加权集聚系数平均值c;具体包括如下步骤:
1)查找项目开发者网络中所有权重的最大值max(w);
2)标准化节点vi的边权值,标准化公式为:
3)计算节点vi的加权集聚系数ci,
4)计算开发者网络中所有节点加权集聚系数平均值c,公式为c=∑i∈nci/n;n为开发者网络中节点的个数。
步骤4)根据项目开发者网络的点权平均值s和网络的加权集聚系数平均值c,计算开源项目的协同行为测度值;具体包括如下步骤:
对项目开发者网络所有节点权值的平均值s和加权集聚系数的平均值c进行线性加权,公式表示为:q=α*s+β*c,α、β均取为0.5。
本发明的有益效果:
1.该方法考虑开发网络中开发者之间的合作次数以及开发者相邻节点之间的合作紧密程度,反映了开源项目中开发者间的整体合作程度,因此项目中开发者之间协同行为测度结果更符合开发过程中的实际情况。
2.该方法通过数值度量开发者协同合作,能够得到整个软件的开发者协同行为的量化值,从而为开源软件质量评估提供支持。
附图说明
图1为本发明开源软件的协同行为测度方法的具体流程。
具体实施方式
基于开源软件的版本控制系统数据,采用通用的web爬虫技术对开源软件的版本控制系统进行解析获得开源项目版本信息,提取项目开发过程中开发者每次提交行为所涉及的文件信息,生成每个项目开发者操作过的文件集合。
若两个开发者共同参与过同一文件,则在这两个开发者中间用一条边连起来,边代表开发者之间的协同关系,各条边的权值由的开发者共同添加、删除或修改过的文件数目决定,由此构建开源软件协同矩阵。开源软件协同矩阵构建步骤如下:首先获取当前版本的提交人员信息和变更文件集合,然后对变更文件集合中的每个文件按版本号依次查找其曾经的相关操作人员,最后更新或者添加提交人员与操作人员的协同次数。
如图1所示,假设有开源软件g,参与项目g的开发者有3个,分别为a、b、c,在开发过程中,项目g的3个开发者之间的协同矩阵如下:
根据协同矩阵,计算项目开发网络的点权平均值s。对于项目g的开发者网络,根据节点vi的点权si的公式
根据协同矩阵,计算项目开发网络的加权集聚系数c。对于项目g的开发者网络,权重的最大值max(w)为10;根据标准化公式
对于项目g,其开发者协同行为的测度值的计算是对点权值的平均值s和加权集聚系数平均值c进行线性加权,公式表示为:q=α*s+β*c,α、β均取为0.5,经计算得:项目g的开发者协同行为的测度值q为0.79433。