一种基于文件关联网络的软件项目核心开发者评判方法与流程

文档序号:11134920阅读:701来源:国知局
一种基于文件关联网络的软件项目核心开发者评判方法与制造工艺
本发明涉及数据挖掘、数据分析技术,特别是涉及一种基于文件关联网络的软件项目核心开发者评判方法。
背景技术
:随着计算机科学技术的发展和开源软件的日益流行,众人合作完成项目已然成为当下的大势所趋。如何对一个项目团队成员贡献度大小以及角色进行全面客观地评价一直是软件工程领域关注的焦点问题。传统的评价方法一般根据开发者在该项目中的代码量和编译次数来判断成员的贡献量,从而判断其在团队中的角色。这种方法简单有效,但却忽视了在一些项目中,技术水平较高的开发者往往只编写一些技术含量较高的核心功能模块,不参与那些技术含量不高,流程繁杂的文件的编写,导致其工作量在账面上看来反而没有那些技术水平一般的开发者高。因此单纯依靠项目成员的代码量和编译次数较难以全面而真实的评价项目成员的贡献量大小以及项目成员的角色。为了增加当前对项目开发者贡献度考量机制的公平性和有效性,以及较为准确地评判出项目的核心开发者,需要考虑项目文件的难易程度和技术含量高低。在科技论文领域提出的论文贡献度分配算法中,参考文献(ShenHW,BarabásiA-L.Collectivecreditallocationinscience[J],ProceedingsoftheNationalAcademyofSciencesoftheU.S.A,2014,111(34):12325-12330,即ShenHW,BarabásiA-L,科学中的共同信用分配,美国科学院院刊,2014,111(34):12325-12330),可以通过围绕这篇文章的引用网络,来分析评价该文章作者对该篇论文的贡献度大小。以此类比,我们也可以在软件项目中筛选出项目核心文件,构建各核心文件之间的关联网络,从而通过贡献度分配算法得出各个项目成员的在核心项目中的贡献度大小。因此,根据项目核心文件组来分析各项目成员的贡献度大小,需要解决以下三个基本问题:(1)项目核心文件组的选取;(2)核心文件关联网络的构建;(3)项目开发者贡献度大小的计算,从而得出算法意义上的核心开发者。技术实现要素:为了克服现有对软件项目成员贡献度大小的评判仅依赖项目成员的代码量和编译次数,没有考虑到项目中文件的编写难易程度和技术含量等情况导致评价结果的不全面和不真实的不足,本发明提供一种基于项目核心文件组来评判项目核心开发者的办法,对已筛选出来的项目核心文件构建其文件关联网络,并根据科技论文领域的贡献度分配算法,计算出项目成员在各核心文件中的贡献度大小,最后取平均算出项目成员在项目中总的贡献度大小,从而根据结果值的大小选出算法意义上的核心开发者。本发明实现上述发明目的所采用的技术方案如下:一种基于文件关联网络的软件项目核心开发者评判方法,所述软件项目核心开发者评判方法包括以下步骤:步骤1:核心文件组的选取:在项目的数据模型和功能控制文件中选取核心文件,对项目里被调用的文件按它们被调用的次数排序,取前N个文件组成核心文件组,满足这些文件被调用次数占总调用次数达预设阈值;步骤2:核心文件关联网络的构建:选取核心文件组的某个文件,记为p,作为关联网络的第一层,关联网络的第二层为项目中调用文件p的所有文件,其集合记为D={d1,...,dk},k为关联网络中第二层的文件个数,k≥1,关联网络的第三层是这些被第二层文件调用的非核心文件,其集合记为Q={q1,...,qh},h≥1为关联网络中第三层的文件个数,以此构建核心文件关联网络;步骤3:核心文件中开发者的贡献度计算:设一个核心文件p由m个开发者共同完成,其集合记为A={a1,...,am},令P={p,q1,...,qh}为核心文件p关联网络中被集合D中文件调用的文件集合,其中的元素P1=p,Pi=qi-1,i≥2,根据以上定义,提出贡献度分配矩阵B,矩阵元素Bij的值代表项目开发者ai在被调用文件Pj中的贡献度;引入向量集合s=(s1,...,sh+1)T,其元素si代表文件Pi被调用的总次数,开发者ai在文件p中最终贡献度ci由其在各关联文件中的贡献度进行权值累加而得,记为:其对应的矩阵形式为:C=Bs,其中,向量C表示文件p中所有开发者的贡献度集合;步骤4:核心开发者的筛选:求出项目开发者在所有核心文件中的贡献度,取其平均值,得出的结果近似于各个项目开发者对整个项目的贡献度大小,并进行排序,以此筛选出项目中的核心开发者。与现有的技术相比,本发明的有益效果是:提升全面评判项目开发者在团队中的真实贡献度大小的准确性,能够更精准地预测项目成员的参与角色和以后的晋升情况。附图说明图1为核心文件的关联网络模型示例图;图2为文件关联网络中开发者的贡献度计算过程示例图。具体实施方式下面结合说明书附图对本发明的具体实施方式作进一步详细的描述。参照图1和图2,一种基于文件关联网络的软件项目核心开发者评判方法,针对当前的仅依据代码量和编译次数来评判项目成员贡献度不全面和不真实性,在分析了项目开发过程中项目文件之间调用关系的基础上,本发明提出了一种基于文件关联网络的软件项目核心开发者评判方法,即依据项目成员在项目核心文件组中贡献度的大小排序,筛选出项目的核心开发者。图1和图2分别展示了项目单个核心文件的关联网络模型的示例图,和项目开发者在各个核心文件中贡献度分配大小的计算过程示例图。图1是项目核心文件关联网络的两种基本模型。(A)是不对称贡献度分配模型:文件开发者a2在整个文件调用网络中仅仅参与了其中一项文件的编辑,而a1在这个文件关联网络中参与了大量的文件开发。因此将这个文件中的贡献量大都分配给了a1。(B)是对称的贡献度分配模型:开发者a1和a2在文件p的调用网络中都参与其中的大部分文件开发工作,因此他们均等分配该文件的贡献度。在这个案例中,p是具有两个开发者(a1和a2)的文件,D={d1,...,d5}是调用文件p的所有文件组成的集合,P={p,q1,...,q4}是被D中文件调用的文件集合,B是贡献度分配矩阵,集合s中元素对应P中文件的调用次数;C是目标文件p中开发者最终的贡献度大小。本发明具体分为以下五个步骤:步骤1:核心文件组的选取;步骤2:核心文件关联网络的构建;步骤3:核心文件中开发者的贡献度计算;步骤4:核心开发者的筛选。所述步骤1中,具体操作过程如下:选择面向对象编程语言开发的项目,在项目的数据模型(model)和功能控制(Controller)文件中选取核心文件。对项目里被调用的文件按它们被调用的次数排序,取前N个文件组成核心文件组,满足这些文件被调用次数占总调用次数达90%。所述步骤2中,具体操作过程如下:依据科学论文的贡献度分配算法模型,选取核心文件组的某个文件,记为p,关联网络的第二层为项目中调用文件p的所有文件,其集合记为D={d1,...,dk},k为关联网络中第二层的文件个数,k≥1,关联网络的第三层是这些被第二层文件调用的非核心文件,其集合记为Q={q1,...,qh,}h≥1为关联网络中第三层的文件个数,以此构建核心文件关联网络。所述步骤3中,具体操作过程如下:简单假设一个核心文件p由m个开发者共同完成,其集合记为A={a1,...,am}。令P={p,q1,...,q}h为核心文件p关联网络中被集合D中文件调用的文件集合,其中的元素P1=p,Pi=qi-1,i≥2,根据以上定义,提出贡献度分配矩阵B,矩阵元素Bij的值代表项目开发者ai在被调用文件Pj中的贡献度;引入向量集合s=(s1,...,sh+1)T,其元素si代表文件Pi被调用的总次数,开发者ai在文件p中最终贡献度ci由其在各关联文件中的贡献度进行权值累加而得,记为:其对应的矩阵形式为:C=Bs,其中,向量C表示文件p中所有开发者的贡献度集合。图2是在核心文件关联网络中,对文件开发者的贡献度大小计算过程的示例说明。(A)在这个案例中,目标文件p具有两个开发者,分别是a1和a2,也展示出了调用文件p的文件dk(1≤k≤5)和被这些文件共同调用的文件Pj(1≤j≤5);(B)从A中得出以p为中心的共同调用网络,其中连接线的粗细表示在同引文件和目标文件p中调用权重大小;(C)目标文件p和它的同引文件的开发者列表;(D)贡献度分配矩阵B从C中的同引文件的开发者中获得,各文件中每个开发者的贡献量大小均等分配;(E)根据矩阵B和同引权重s,文件p中的两个开发者的贡献度分配根据等式1或者等式2计算得出。所述步骤4中,具体操作过程如下:计算项目中所有的开发者在每个核心文件中的贡献度(如果没有贡献,则记为0),取其平均值,得出的结果近似于各个项目开发者对整个项目的贡献度大小,并进行排序。若值为零,代表该开发者没有参与核心文件的开发,定义为外围开发者;若几名开发者的贡献度值明显高于其他人,定义这几人为核心开发者,代表其对项目中的核心技术做出了较大的贡献。为了验证本文提出的算法,我们选取了2012年3月采集的31个Apache开源项目中具有代表性的9个项目进行研究。因为这9个项目所用的开发语言是典型的面向对象语言,项目文件MVC架构分布明显易于分析,其各异的人员规模、组成和流动能反应不同级别项目的变迁和人员晋升。9个项目中的项目成员角色分析和晋升预测的对比结果如表1所示。表1展示了Apache中的9个项目的数据处理结果:N0表示获得最后数据的项目组的最初开发成员数量;NC表示根据我们的算法得出的项目核心人员数量,NC1表示团队中的现役核心开发者的数量,NC2表示退役的核心开发者数量;NP表示根据我们的算法得出的外围开发者数量,NP1表示项目团队的现役的外围开发者数量,NP2表示项目团队中退役的外围开发者的数量;NN代表团队中现役成员数量;NN1代表当前开发团队中原开发团队中留下来的成员数量。ProjectNONCNC1NC2NPNP1NP2NNNN1Nutch1653211110154Activemq28440242224926Accumulo5440110265Xerces2_j33871258173915Cxf-dev728806429355437Wicket24651181523020Abdera132201156117Axis2_java2522023518107Log4j1854113853113表1通过与该项目官网公布的开发者的实际角色和开发者后期晋升情况对比,可得出该算法能够较为准确的评判出项目的核心成员,并能对项目核心成员进行晋升机会的预测。对发明而言仅仅是说明性的,而非限制性的。本专业技术人员理解,在发明权利要求所限定的精神和范围内可对其进行许多改变,修改,甚至等效,但都将落入本发明的保护范围内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1