本發(fā)明涉及數(shù)據(jù)挖掘、數(shù)據(jù)分析技術(shù),特別是涉及一種基于文件關(guān)聯(lián)網(wǎng)絡(luò)的軟件項(xiàng)目核心開(kāi)發(fā)者評(píng)判方法。
背景技術(shù):
:隨著計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展和開(kāi)源軟件的日益流行,眾人合作完成項(xiàng)目已然成為當(dāng)下的大勢(shì)所趨。如何對(duì)一個(gè)項(xiàng)目團(tuán)隊(duì)成員貢獻(xiàn)度大小以及角色進(jìn)行全面客觀地評(píng)價(jià)一直是軟件工程領(lǐng)域關(guān)注的焦點(diǎn)問(wèn)題。傳統(tǒng)的評(píng)價(jià)方法一般根據(jù)開(kāi)發(fā)者在該項(xiàng)目中的代碼量和編譯次數(shù)來(lái)判斷成員的貢獻(xiàn)量,從而判斷其在團(tuán)隊(duì)中的角色。這種方法簡(jiǎn)單有效,但卻忽視了在一些項(xiàng)目中,技術(shù)水平較高的開(kāi)發(fā)者往往只編寫(xiě)一些技術(shù)含量較高的核心功能模塊,不參與那些技術(shù)含量不高,流程繁雜的文件的編寫(xiě),導(dǎo)致其工作量在賬面上看來(lái)反而沒(méi)有那些技術(shù)水平一般的開(kāi)發(fā)者高。因此單純依靠項(xiàng)目成員的代碼量和編譯次數(shù)較難以全面而真實(shí)的評(píng)價(jià)項(xiàng)目成員的貢獻(xiàn)量大小以及項(xiàng)目成員的角色。為了增加當(dāng)前對(duì)項(xiàng)目開(kāi)發(fā)者貢獻(xiàn)度考量機(jī)制的公平性和有效性,以及較為準(zhǔn)確地評(píng)判出項(xiàng)目的核心開(kāi)發(fā)者,需要考慮項(xiàng)目文件的難易程度和技術(shù)含量高低。在科技論文領(lǐng)域提出的論文貢獻(xiàn)度分配算法中,參考文獻(xiàn)(ShenHW,BarabásiA-L.Collectivecreditallocationinscience[J],ProceedingsoftheNationalAcademyofSciencesoftheU.S.A,2014,111(34):12325-12330,即ShenHW,BarabásiA-L,科學(xué)中的共同信用分配,美國(guó)科學(xué)院院刊,2014,111(34):12325-12330),可以通過(guò)圍繞這篇文章的引用網(wǎng)絡(luò),來(lái)分析評(píng)價(jià)該文章作者對(duì)該篇論文的貢獻(xiàn)度大小。以此類(lèi)比,我們也可以在軟件項(xiàng)目中篩選出項(xiàng)目核心文件,構(gòu)建各核心文件之間的關(guān)聯(lián)網(wǎng)絡(luò),從而通過(guò)貢獻(xiàn)度分配算法得出各個(gè)項(xiàng)目成員的在核心項(xiàng)目中的貢獻(xiàn)度大小。因此,根據(jù)項(xiàng)目核心文件組來(lái)分析各項(xiàng)目成員的貢獻(xiàn)度大小,需要解決以下三個(gè)基本問(wèn)題:(1)項(xiàng)目核心文件組的選??;(2)核心文件關(guān)聯(lián)網(wǎng)絡(luò)的構(gòu)建;(3)項(xiàng)目開(kāi)發(fā)者貢獻(xiàn)度大小的計(jì)算,從而得出算法意義上的核心開(kāi)發(fā)者。技術(shù)實(shí)現(xiàn)要素:為了克服現(xiàn)有對(duì)軟件項(xiàng)目成員貢獻(xiàn)度大小的評(píng)判僅依賴項(xiàng)目成員的代碼量和編譯次數(shù),沒(méi)有考慮到項(xiàng)目中文件的編寫(xiě)難易程度和技術(shù)含量等情況導(dǎo)致評(píng)價(jià)結(jié)果的不全面和不真實(shí)的不足,本發(fā)明提供一種基于項(xiàng)目核心文件組來(lái)評(píng)判項(xiàng)目核心開(kāi)發(fā)者的辦法,對(duì)已篩選出來(lái)的項(xiàng)目核心文件構(gòu)建其文件關(guān)聯(lián)網(wǎng)絡(luò),并根據(jù)科技論文領(lǐng)域的貢獻(xiàn)度分配算法,計(jì)算出項(xiàng)目成員在各核心文件中的貢獻(xiàn)度大小,最后取平均算出項(xiàng)目成員在項(xiàng)目中總的貢獻(xiàn)度大小,從而根據(jù)結(jié)果值的大小選出算法意義上的核心開(kāi)發(fā)者。本發(fā)明實(shí)現(xiàn)上述發(fā)明目的所采用的技術(shù)方案如下:一種基于文件關(guān)聯(lián)網(wǎng)絡(luò)的軟件項(xiàng)目核心開(kāi)發(fā)者評(píng)判方法,所述軟件項(xiàng)目核心開(kāi)發(fā)者評(píng)判方法包括以下步驟:步驟1:核心文件組的選取:在項(xiàng)目的數(shù)據(jù)模型和功能控制文件中選取核心文件,對(duì)項(xiàng)目里被調(diào)用的文件按它們被調(diào)用的次數(shù)排序,取前N個(gè)文件組成核心文件組,滿足這些文件被調(diào)用次數(shù)占總調(diào)用次數(shù)達(dá)預(yù)設(shè)閾值;步驟2:核心文件關(guān)聯(lián)網(wǎng)絡(luò)的構(gòu)建:選取核心文件組的某個(gè)文件,記為p,作為關(guān)聯(lián)網(wǎng)絡(luò)的第一層,關(guān)聯(lián)網(wǎng)絡(luò)的第二層為項(xiàng)目中調(diào)用文件p的所有文件,其集合記為D={d1,...,dk},k為關(guān)聯(lián)網(wǎng)絡(luò)中第二層的文件個(gè)數(shù),k≥1,關(guān)聯(lián)網(wǎng)絡(luò)的第三層是這些被第二層文件調(diào)用的非核心文件,其集合記為Q={q1,...,qh},h≥1為關(guān)聯(lián)網(wǎng)絡(luò)中第三層的文件個(gè)數(shù),以此構(gòu)建核心文件關(guān)聯(lián)網(wǎng)絡(luò);步驟3:核心文件中開(kāi)發(fā)者的貢獻(xiàn)度計(jì)算:設(shè)一個(gè)核心文件p由m個(gè)開(kāi)發(fā)者共同完成,其集合記為A={a1,...,am},令P={p,q1,...,qh}為核心文件p關(guān)聯(lián)網(wǎng)絡(luò)中被集合D中文件調(diào)用的文件集合,其中的元素P1=p,Pi=qi-1,i≥2,根據(jù)以上定義,提出貢獻(xiàn)度分配矩陣B,矩陣元素Bij的值代表項(xiàng)目開(kāi)發(fā)者ai在被調(diào)用文件Pj中的貢獻(xiàn)度;引入向量集合s=(s1,...,sh+1)T,其元素si代表文件Pi被調(diào)用的總次數(shù),開(kāi)發(fā)者ai在文件p中最終貢獻(xiàn)度ci由其在各關(guān)聯(lián)文件中的貢獻(xiàn)度進(jìn)行權(quán)值累加而得,記為:其對(duì)應(yīng)的矩陣形式為:C=Bs,其中,向量C表示文件p中所有開(kāi)發(fā)者的貢獻(xiàn)度集合;步驟4:核心開(kāi)發(fā)者的篩選:求出項(xiàng)目開(kāi)發(fā)者在所有核心文件中的貢獻(xiàn)度,取其平均值,得出的結(jié)果近似于各個(gè)項(xiàng)目開(kāi)發(fā)者對(duì)整個(gè)項(xiàng)目的貢獻(xiàn)度大小,并進(jìn)行排序,以此篩選出項(xiàng)目中的核心開(kāi)發(fā)者。與現(xiàn)有的技術(shù)相比,本發(fā)明的有益效果是:提升全面評(píng)判項(xiàng)目開(kāi)發(fā)者在團(tuán)隊(duì)中的真實(shí)貢獻(xiàn)度大小的準(zhǔn)確性,能夠更精準(zhǔn)地預(yù)測(cè)項(xiàng)目成員的參與角色和以后的晉升情況。附圖說(shuō)明圖1為核心文件的關(guān)聯(lián)網(wǎng)絡(luò)模型示例圖;圖2為文件關(guān)聯(lián)網(wǎng)絡(luò)中開(kāi)發(fā)者的貢獻(xiàn)度計(jì)算過(guò)程示例圖。具體實(shí)施方式下面結(jié)合說(shuō)明書(shū)附圖對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步詳細(xì)的描述。參照?qǐng)D1和圖2,一種基于文件關(guān)聯(lián)網(wǎng)絡(luò)的軟件項(xiàng)目核心開(kāi)發(fā)者評(píng)判方法,針對(duì)當(dāng)前的僅依據(jù)代碼量和編譯次數(shù)來(lái)評(píng)判項(xiàng)目成員貢獻(xiàn)度不全面和不真實(shí)性,在分析了項(xiàng)目開(kāi)發(fā)過(guò)程中項(xiàng)目文件之間調(diào)用關(guān)系的基礎(chǔ)上,本發(fā)明提出了一種基于文件關(guān)聯(lián)網(wǎng)絡(luò)的軟件項(xiàng)目核心開(kāi)發(fā)者評(píng)判方法,即依據(jù)項(xiàng)目成員在項(xiàng)目核心文件組中貢獻(xiàn)度的大小排序,篩選出項(xiàng)目的核心開(kāi)發(fā)者。圖1和圖2分別展示了項(xiàng)目單個(gè)核心文件的關(guān)聯(lián)網(wǎng)絡(luò)模型的示例圖,和項(xiàng)目開(kāi)發(fā)者在各個(gè)核心文件中貢獻(xiàn)度分配大小的計(jì)算過(guò)程示例圖。圖1是項(xiàng)目核心文件關(guān)聯(lián)網(wǎng)絡(luò)的兩種基本模型。(A)是不對(duì)稱貢獻(xiàn)度分配模型:文件開(kāi)發(fā)者a2在整個(gè)文件調(diào)用網(wǎng)絡(luò)中僅僅參與了其中一項(xiàng)文件的編輯,而a1在這個(gè)文件關(guān)聯(lián)網(wǎng)絡(luò)中參與了大量的文件開(kāi)發(fā)。因此將這個(gè)文件中的貢獻(xiàn)量大都分配給了a1。(B)是對(duì)稱的貢獻(xiàn)度分配模型:開(kāi)發(fā)者a1和a2在文件p的調(diào)用網(wǎng)絡(luò)中都參與其中的大部分文件開(kāi)發(fā)工作,因此他們均等分配該文件的貢獻(xiàn)度。在這個(gè)案例中,p是具有兩個(gè)開(kāi)發(fā)者(a1和a2)的文件,D={d1,...,d5}是調(diào)用文件p的所有文件組成的集合,P={p,q1,...,q4}是被D中文件調(diào)用的文件集合,B是貢獻(xiàn)度分配矩陣,集合s中元素對(duì)應(yīng)P中文件的調(diào)用次數(shù);C是目標(biāo)文件p中開(kāi)發(fā)者最終的貢獻(xiàn)度大小。本發(fā)明具體分為以下五個(gè)步驟:步驟1:核心文件組的選??;步驟2:核心文件關(guān)聯(lián)網(wǎng)絡(luò)的構(gòu)建;步驟3:核心文件中開(kāi)發(fā)者的貢獻(xiàn)度計(jì)算;步驟4:核心開(kāi)發(fā)者的篩選。所述步驟1中,具體操作過(guò)程如下:選擇面向?qū)ο缶幊陶Z(yǔ)言開(kāi)發(fā)的項(xiàng)目,在項(xiàng)目的數(shù)據(jù)模型(model)和功能控制(Controller)文件中選取核心文件。對(duì)項(xiàng)目里被調(diào)用的文件按它們被調(diào)用的次數(shù)排序,取前N個(gè)文件組成核心文件組,滿足這些文件被調(diào)用次數(shù)占總調(diào)用次數(shù)達(dá)90%。所述步驟2中,具體操作過(guò)程如下:依據(jù)科學(xué)論文的貢獻(xiàn)度分配算法模型,選取核心文件組的某個(gè)文件,記為p,關(guān)聯(lián)網(wǎng)絡(luò)的第二層為項(xiàng)目中調(diào)用文件p的所有文件,其集合記為D={d1,...,dk},k為關(guān)聯(lián)網(wǎng)絡(luò)中第二層的文件個(gè)數(shù),k≥1,關(guān)聯(lián)網(wǎng)絡(luò)的第三層是這些被第二層文件調(diào)用的非核心文件,其集合記為Q={q1,...,qh,}h≥1為關(guān)聯(lián)網(wǎng)絡(luò)中第三層的文件個(gè)數(shù),以此構(gòu)建核心文件關(guān)聯(lián)網(wǎng)絡(luò)。所述步驟3中,具體操作過(guò)程如下:簡(jiǎn)單假設(shè)一個(gè)核心文件p由m個(gè)開(kāi)發(fā)者共同完成,其集合記為A={a1,...,am}。令P={p,q1,...,q}h為核心文件p關(guān)聯(lián)網(wǎng)絡(luò)中被集合D中文件調(diào)用的文件集合,其中的元素P1=p,Pi=qi-1,i≥2,根據(jù)以上定義,提出貢獻(xiàn)度分配矩陣B,矩陣元素Bij的值代表項(xiàng)目開(kāi)發(fā)者ai在被調(diào)用文件Pj中的貢獻(xiàn)度;引入向量集合s=(s1,...,sh+1)T,其元素si代表文件Pi被調(diào)用的總次數(shù),開(kāi)發(fā)者ai在文件p中最終貢獻(xiàn)度ci由其在各關(guān)聯(lián)文件中的貢獻(xiàn)度進(jìn)行權(quán)值累加而得,記為:其對(duì)應(yīng)的矩陣形式為:C=Bs,其中,向量C表示文件p中所有開(kāi)發(fā)者的貢獻(xiàn)度集合。圖2是在核心文件關(guān)聯(lián)網(wǎng)絡(luò)中,對(duì)文件開(kāi)發(fā)者的貢獻(xiàn)度大小計(jì)算過(guò)程的示例說(shuō)明。(A)在這個(gè)案例中,目標(biāo)文件p具有兩個(gè)開(kāi)發(fā)者,分別是a1和a2,也展示出了調(diào)用文件p的文件dk(1≤k≤5)和被這些文件共同調(diào)用的文件Pj(1≤j≤5);(B)從A中得出以p為中心的共同調(diào)用網(wǎng)絡(luò),其中連接線的粗細(xì)表示在同引文件和目標(biāo)文件p中調(diào)用權(quán)重大??;(C)目標(biāo)文件p和它的同引文件的開(kāi)發(fā)者列表;(D)貢獻(xiàn)度分配矩陣B從C中的同引文件的開(kāi)發(fā)者中獲得,各文件中每個(gè)開(kāi)發(fā)者的貢獻(xiàn)量大小均等分配;(E)根據(jù)矩陣B和同引權(quán)重s,文件p中的兩個(gè)開(kāi)發(fā)者的貢獻(xiàn)度分配根據(jù)等式1或者等式2計(jì)算得出。所述步驟4中,具體操作過(guò)程如下:計(jì)算項(xiàng)目中所有的開(kāi)發(fā)者在每個(gè)核心文件中的貢獻(xiàn)度(如果沒(méi)有貢獻(xiàn),則記為0),取其平均值,得出的結(jié)果近似于各個(gè)項(xiàng)目開(kāi)發(fā)者對(duì)整個(gè)項(xiàng)目的貢獻(xiàn)度大小,并進(jìn)行排序。若值為零,代表該開(kāi)發(fā)者沒(méi)有參與核心文件的開(kāi)發(fā),定義為外圍開(kāi)發(fā)者;若幾名開(kāi)發(fā)者的貢獻(xiàn)度值明顯高于其他人,定義這幾人為核心開(kāi)發(fā)者,代表其對(duì)項(xiàng)目中的核心技術(shù)做出了較大的貢獻(xiàn)。為了驗(yàn)證本文提出的算法,我們選取了2012年3月采集的31個(gè)Apache開(kāi)源項(xiàng)目中具有代表性的9個(gè)項(xiàng)目進(jìn)行研究。因?yàn)檫@9個(gè)項(xiàng)目所用的開(kāi)發(fā)語(yǔ)言是典型的面向?qū)ο笳Z(yǔ)言,項(xiàng)目文件MVC架構(gòu)分布明顯易于分析,其各異的人員規(guī)模、組成和流動(dòng)能反應(yīng)不同級(jí)別項(xiàng)目的變遷和人員晉升。9個(gè)項(xiàng)目中的項(xiàng)目成員角色分析和晉升預(yù)測(cè)的對(duì)比結(jié)果如表1所示。表1展示了Apache中的9個(gè)項(xiàng)目的數(shù)據(jù)處理結(jié)果:N0表示獲得最后數(shù)據(jù)的項(xiàng)目組的最初開(kāi)發(fā)成員數(shù)量;NC表示根據(jù)我們的算法得出的項(xiàng)目核心人員數(shù)量,NC1表示團(tuán)隊(duì)中的現(xiàn)役核心開(kāi)發(fā)者的數(shù)量,NC2表示退役的核心開(kāi)發(fā)者數(shù)量;NP表示根據(jù)我們的算法得出的外圍開(kāi)發(fā)者數(shù)量,NP1表示項(xiàng)目團(tuán)隊(duì)的現(xiàn)役的外圍開(kāi)發(fā)者數(shù)量,NP2表示項(xiàng)目團(tuán)隊(duì)中退役的外圍開(kāi)發(fā)者的數(shù)量;NN代表團(tuán)隊(duì)中現(xiàn)役成員數(shù)量;NN1代表當(dāng)前開(kāi)發(fā)團(tuán)隊(duì)中原開(kāi)發(fā)團(tuán)隊(duì)中留下來(lái)的成員數(shù)量。ProjectNONCNC1NC2NPNP1NP2NNNN1Nutch1653211110154Activemq28440242224926Accumulo5440110265Xerces2_j33871258173915Cxf-dev728806429355437Wicket24651181523020Abdera132201156117Axis2_java2522023518107Log4j1854113853113表1通過(guò)與該項(xiàng)目官網(wǎng)公布的開(kāi)發(fā)者的實(shí)際角色和開(kāi)發(fā)者后期晉升情況對(duì)比,可得出該算法能夠較為準(zhǔn)確的評(píng)判出項(xiàng)目的核心成員,并能對(duì)項(xiàng)目核心成員進(jìn)行晉升機(jī)會(huì)的預(yù)測(cè)。對(duì)發(fā)明而言僅僅是說(shuō)明性的,而非限制性的。本專業(yè)技術(shù)人員理解,在發(fā)明權(quán)利要求所限定的精神和范圍內(nèi)可對(duì)其進(jìn)行許多改變,修改,甚至等效,但都將落入本發(fā)明的保護(hù)范圍內(nèi)。當(dāng)前第1頁(yè)1 2 3