本發(fā)明屬于軟件開(kāi)發(fā)領(lǐng)域,特別涉及基于多重方面實(shí)體感知生成模型的開(kāi)發(fā)者貢獻(xiàn)分析方法。
背景技術(shù):
:對(duì)于軟件公司,軟件開(kāi)發(fā)與維護(hù)過(guò)程需要大量人力財(cái)力,如何衡量一位開(kāi)發(fā)者的實(shí)際工作量與貢獻(xiàn),作為評(píng)價(jià)開(kāi)發(fā)者的依據(jù),使項(xiàng)目經(jīng)理更好地了解開(kāi)發(fā)者,督促開(kāi)發(fā)者積極改進(jìn)工作提高工作效率,甚至作為決定開(kāi)發(fā)者去留的依據(jù),關(guān)系到整個(gè)開(kāi)發(fā)團(tuán)隊(duì)的開(kāi)發(fā)質(zhì)量以及公司未來(lái)的發(fā)展。為了使項(xiàng)目經(jīng)理掌握開(kāi)發(fā)者工作情況,督促開(kāi)發(fā)者改進(jìn)工作,提供與實(shí)際貢獻(xiàn)相對(duì)等的薪水,一種準(zhǔn)確的、高效的工作量分析方法亟待解決。為了完成這個(gè)任務(wù),目前對(duì)開(kāi)發(fā)者的研究缺乏工作質(zhì)量和貢獻(xiàn)這方面的研究技術(shù),出現(xiàn)的相關(guān)研究也僅僅限于對(duì)開(kāi)發(fā)者偏好和行為的研究,以預(yù)測(cè)開(kāi)發(fā)者所適合的項(xiàng)目,但如果不以工作質(zhì)量的評(píng)估為前提,而直接根據(jù)開(kāi)發(fā)者的偏好來(lái)推薦項(xiàng)目,若某些開(kāi)發(fā)者工作質(zhì)量低下,對(duì)各個(gè)項(xiàng)目所做出的貢獻(xiàn)寥寥無(wú)幾,再向他們推薦項(xiàng)目是沒(méi)有必要的,所以迫切需要對(duì)開(kāi)發(fā)者貢獻(xiàn)的分析方法進(jìn)行研究。另外有些公司尚未對(duì)開(kāi)發(fā)者的實(shí)際工作量和貢獻(xiàn)進(jìn)行監(jiān)測(cè),即使進(jìn)行了監(jiān)測(cè),也僅限于統(tǒng)計(jì)開(kāi)發(fā)者修改代碼的行數(shù),簡(jiǎn)單的統(tǒng)計(jì)代碼修改行數(shù)或commit總提交數(shù)并不能真正反映開(kāi)發(fā)者的貢獻(xiàn)。比如:開(kāi)發(fā)者為增加其代碼修改行數(shù),大量進(jìn)行注釋添加、定義無(wú)用變量等等以謀求更高報(bào)酬,或者開(kāi)發(fā)者的報(bào)告不規(guī)范,提交的描述信息與實(shí)際代碼修改并不相符,以上情況涉及的提交信息應(yīng)視為無(wú)用工作量,這些效率低下甚至影響后期軟件維護(hù)效率的工作對(duì)公司的軟件開(kāi)發(fā)而言是無(wú)效的沒(méi)有貢獻(xiàn)的甚至是有害的,正因?yàn)槿狈?duì)開(kāi)發(fā)者工作質(zhì)量的監(jiān)督才導(dǎo)致開(kāi)發(fā)者開(kāi)發(fā)質(zhì)量的下降,貢獻(xiàn)的減少?;谶@個(gè)思想,一種準(zhǔn)確的、有效的開(kāi)發(fā)者的實(shí)際工作量即貢獻(xiàn)分析方法有待解決。通過(guò)對(duì)開(kāi)發(fā)者的工作質(zhì)量的評(píng)估考量來(lái)判定開(kāi)發(fā)者的貢獻(xiàn),提供給項(xiàng)目經(jīng)理,督促開(kāi)發(fā)者盡快改進(jìn)。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的就在于克服上述缺陷,研制基于多重方面實(shí)體感知生成模型的開(kāi)發(fā)者貢獻(xiàn)分析方法。本發(fā)明的技術(shù)方案是:基于多重方面實(shí)體感知模型的開(kāi)發(fā)者貢獻(xiàn)分析方法,其主要技術(shù)特征在于如下步驟:(1)識(shí)別某開(kāi)發(fā)者在某段時(shí)間內(nèi)的commit提交數(shù)據(jù),建立其個(gè)人提交信息庫(kù),將開(kāi)發(fā)者的每份commit報(bào)告分解為commit描述和代碼修改兩個(gè)文本;(2)使用多重方面實(shí)體感知模型,對(duì)上述結(jié)果commit描述文本和代碼修改文本進(jìn)行關(guān)鍵字提取,得到項(xiàng)目名稱即事件關(guān)鍵字和項(xiàng)目所涉及不同開(kāi)發(fā)任務(wù)即方面關(guān)鍵字,并同時(shí)提取出commit提交時(shí)間;(3)計(jì)算每份commit提交信息的commit描述和代碼修改兩文本通過(guò)步驟(2)所得的事件關(guān)鍵字和方面關(guān)鍵字的相似程度,并對(duì)相似度大小進(jìn)行高質(zhì)量、一般質(zhì)量和低質(zhì)量三個(gè)等級(jí)劃分;(4)對(duì)開(kāi)發(fā)者每份commit報(bào)告通過(guò)步驟(2)和步驟(3)所得的計(jì)算結(jié)果進(jìn)行整合,生成開(kāi)發(fā)者在某段時(shí)間內(nèi)的總工作質(zhì)量和開(kāi)發(fā)者在某項(xiàng)目中的工作量和工作質(zhì)量統(tǒng)計(jì)數(shù)據(jù)文本;(5)根據(jù)步驟(4)的數(shù)據(jù)生成直觀的時(shí)間分布圖、工作質(zhì)量等級(jí)分布柱狀圖、每個(gè)項(xiàng)目的方面實(shí)體圖,開(kāi)發(fā)者在某段時(shí)間內(nèi)的所有commit提交信息報(bào)表提供給項(xiàng)目經(jīng)理,幫助了解開(kāi)發(fā)者某段時(shí)間內(nèi)的實(shí)際開(kāi)發(fā)工作貢獻(xiàn)。所述步驟(3)中高質(zhì)量、一般質(zhì)量和低質(zhì)量三個(gè)等級(jí)分別為>0.8、0.5-0.8和<0.5。本發(fā)明的優(yōu)點(diǎn)和效果在于對(duì)開(kāi)發(fā)者某段時(shí)間內(nèi)的提交信息進(jìn)行事件和方面的挖掘,通過(guò)各種衡量標(biāo)準(zhǔn),進(jìn)而評(píng)價(jià)開(kāi)發(fā)者工作質(zhì)量即貢獻(xiàn),以方便項(xiàng)目經(jīng)理及時(shí)掌握開(kāi)發(fā)者動(dòng)態(tài),加深對(duì)開(kāi)發(fā)者的了解,對(duì)開(kāi)發(fā)者報(bào)酬劃定,由此,督促開(kāi)發(fā)者對(duì)未來(lái)工作的及時(shí)改進(jìn),提高了團(tuán)隊(duì)軟件開(kāi)發(fā)的效率。主要有如下一些優(yōu)點(diǎn):(1)本發(fā)明涉及的方法的處理對(duì)象是commit描述文本和代碼修改文本,從兩者的一致性出發(fā),只需對(duì)從兩者提取出關(guān)鍵字進(jìn)行相似程度計(jì)算得出數(shù)值,即可按照數(shù)值大小進(jìn)行工作質(zhì)量的評(píng)估,簡(jiǎn)單易行。另外,對(duì)于某一給定時(shí)間段來(lái)說(shuō)的,開(kāi)發(fā)者的commit提交數(shù)是有限的,所以處理的數(shù)據(jù)量并不大。(2)本方法有效利用了commit報(bào)告中的時(shí)間信息,通過(guò)提取的時(shí)間信息作為參數(shù),可以對(duì)項(xiàng)目經(jīng)理所指定得某一時(shí)間段,動(dòng)態(tài)構(gòu)建出該時(shí)間段內(nèi)的項(xiàng)目-工作量統(tǒng)計(jì)表,以衡量該段時(shí)間內(nèi)開(kāi)發(fā)者的貢獻(xiàn)。更加準(zhǔn)確客觀地評(píng)價(jià)了開(kāi)發(fā)者所有歷史工作中不同時(shí)間段內(nèi)的工作,體現(xiàn)出開(kāi)發(fā)者不同時(shí)間段內(nèi)的工作質(zhì)量。(3)本發(fā)明涉及的方法最終可以提供直觀的時(shí)間分布圖、工作質(zhì)量等級(jí)分布柱狀圖、每個(gè)項(xiàng)目的方面實(shí)體圖,開(kāi)發(fā)者在某段時(shí)間內(nèi)的所有commit提交信息報(bào)表提供,項(xiàng)目經(jīng)理可以快速地通過(guò)查閱這些圖表了解開(kāi)發(fā)者貢工作質(zhì)量。附圖說(shuō)明圖1——本發(fā)明流程示意圖。圖2——本發(fā)明多重方面實(shí)體感知模型示意圖。圖3——本發(fā)明分解層次示意圖。圖4——本發(fā)明項(xiàng)目-事件分布統(tǒng)計(jì)示意圖。圖5——本發(fā)明工作質(zhì)量對(duì)比示意圖。圖6——本發(fā)明項(xiàng)目的工作分布示意圖。圖7——本發(fā)明提交信息匯總示意圖。具體實(shí)施方式本發(fā)明的技術(shù)思路是:多方面實(shí)體感知事件/方面發(fā)現(xiàn)模型(Multi-AspectEntity-awareEvent/aspectDiscoveryModel簡(jiǎn)稱多重方面實(shí)體感知模型)將遞歸分解和動(dòng)態(tài)實(shí)體感知相結(jié)合,通過(guò)其自上而下的遞歸應(yīng)用可以將文本節(jié)點(diǎn)劃分為不同的事件節(jié)點(diǎn),即開(kāi)發(fā)項(xiàng)目節(jié)點(diǎn),再通過(guò)遞歸調(diào)用,可以進(jìn)而將事件節(jié)點(diǎn)劃分為方面節(jié)點(diǎn),即項(xiàng)目部涉及的不同開(kāi)發(fā)任務(wù)節(jié)點(diǎn),項(xiàng)目所涉及的不同開(kāi)發(fā)任務(wù)有系統(tǒng)相關(guān)、接口相關(guān)、用戶界面相關(guān)、數(shù)據(jù)庫(kù)相關(guān)、軟件包相關(guān)和文檔相關(guān)等等,各個(gè)節(jié)點(diǎn)用相關(guān)的描述符表示。通過(guò)對(duì)某開(kāi)發(fā)者在某段時(shí)間內(nèi)的所有commit提交信息進(jìn)行逐個(gè)分解,對(duì)commit描述與代碼修改兩文本進(jìn)行事件和方面關(guān)鍵字提取,計(jì)算相似度大小,進(jìn)行質(zhì)量等級(jí)劃分,生成開(kāi)發(fā)者在某段時(shí)間內(nèi)的總工作質(zhì)量和開(kāi)發(fā)者在某項(xiàng)目中的工作量和工作質(zhì)量統(tǒng)計(jì)數(shù)據(jù)文本。下面具體說(shuō)明本發(fā)明。本發(fā)明有如下步驟:(1)識(shí)別開(kāi)發(fā)者的所有歷史commit提交數(shù)據(jù),建立其個(gè)人提交信息庫(kù),將開(kāi)發(fā)者的每份commit報(bào)告分解為commit描述和代碼修改兩個(gè)文本。例如:對(duì)每位開(kāi)發(fā)者進(jìn)行編號(hào)D1,D2,…,Dn,將commit報(bào)告分解后形成的commit描述和代碼修兩個(gè)文本也進(jìn)行編號(hào),下表為開(kāi)發(fā)者D1個(gè)人提交信息庫(kù)匯總表,表中第i份Commit報(bào)告、Commit描述文本和代碼修改文本分別用ri、di和ci表示。Commit報(bào)告編號(hào)Commit描述文本編號(hào)代碼修改文本編號(hào)r1d1c1………rndncn(2)使用多重方面實(shí)體感知模型,按照附圖中圖3的分解層次結(jié)構(gòu)先挖掘項(xiàng)目功能時(shí)間,再挖掘功能的子任務(wù)方面,對(duì)步驟1)的結(jié)果commit描述文本和代碼修改文本進(jìn)行關(guān)鍵字提取,得到項(xiàng)目名稱、項(xiàng)目所涉及不同方面,同時(shí)提取commit提交時(shí)間作為之后統(tǒng)計(jì)的參數(shù),其中commit描述文本短小,易于分解和提取。例如:對(duì)開(kāi)發(fā)者D1的編號(hào)為r1的commit報(bào)告進(jìn)行項(xiàng)目、項(xiàng)目所涉及不同方面進(jìn)行實(shí)體關(guān)鍵字提取,按照關(guān)鍵字比例從大到小的順序進(jìn)行編號(hào),同時(shí)從commit描述中提取提交時(shí)間,下表是對(duì)提取信息的匯總,其中項(xiàng)目關(guān)鍵字用pi表示,項(xiàng)目pi方面關(guān)鍵字用aij表示,commit報(bào)告不存在提交時(shí)間不一致問(wèn)題,所以僅需從描述文本中提取出提交時(shí)間ti作為時(shí)間關(guān)鍵字即可。考慮到開(kāi)發(fā)者撰寫(xiě)的commit描述不夠規(guī)范,因此,在關(guān)鍵字提取時(shí)將commit報(bào)告名稱歸并到commit描述文本中。關(guān)鍵字的比例=關(guān)鍵字/文本總詞匯。(3)計(jì)算commit描述和代碼修改兩文本通過(guò)步驟2)所得的項(xiàng)目名稱和項(xiàng)目涉及不同方面的關(guān)鍵字的相似程度,并對(duì)相似度大小進(jìn)行高質(zhì)量(>0.8)、一般(0.5-0.8)和低質(zhì)量(<0.5)三個(gè)等級(jí)劃分。例如:對(duì)于開(kāi)發(fā)者D1編號(hào)為r1的commit報(bào)告的兩個(gè)文本提取出的關(guān)健字先對(duì)項(xiàng)目關(guān)鍵字進(jìn)行相似度計(jì)算,若為低質(zhì)量工作(<0.5),則該項(xiàng)目所涉及的不同方面不再計(jì)算相似度;若為一般及以上(>0.5),則計(jì)算相應(yīng)項(xiàng)目涉及方面的相似度。假設(shè)計(jì)算結(jié)果如下,其中項(xiàng)目的各個(gè)方面的相似度和工作質(zhì)量等級(jí)要與之前的方面關(guān)鍵字對(duì)應(yīng):上表中的相似度計(jì)算方法為向量相似度計(jì)算,其公式如下:cosdi,ci>=di→*ci→|di→|*|ci→|]]>其中的向量表示commit描述i和代碼修改i的關(guān)鍵字向量。(4)對(duì)開(kāi)發(fā)者每份commit報(bào)告通過(guò)步驟2)和步驟3)所得的計(jì)算結(jié)果進(jìn)行整合,生成按時(shí)間、項(xiàng)目和工作質(zhì)量等級(jí)為參數(shù)的統(tǒng)計(jì)數(shù)據(jù)文本。例如:開(kāi)發(fā)者D1的所有歷史commit提交信息匯總假設(shè)如下表:再對(duì)匯總的數(shù)據(jù)進(jìn)行整合,計(jì)算出開(kāi)發(fā)者的工作質(zhì)量數(shù)據(jù),例如:對(duì)開(kāi)發(fā)者D1的所有工作按項(xiàng)目進(jìn)行匯總,計(jì)算出各個(gè)項(xiàng)目的工作質(zhì)量,計(jì)算公式為:其中Aij表示項(xiàng)目i的j方面的相似度,pi表示項(xiàng)目i的相似度,分母為項(xiàng)目i涉及的方面數(shù)。按相同的等級(jí)劃分假設(shè)得到一下結(jié)果:項(xiàng)目p1…pn工作質(zhì)量0.6…0.9工作質(zhì)量等級(jí)一般…高再對(duì)匯總數(shù)據(jù)進(jìn)行整合,計(jì)算出開(kāi)發(fā)者在一段時(shí)間內(nèi)的總工作質(zhì)量,例如:對(duì)開(kāi)發(fā)者D1在某時(shí)間段內(nèi)的開(kāi)發(fā)項(xiàng)目進(jìn)行匯總,計(jì)算出這段時(shí)間內(nèi)的總工作質(zhì)量,計(jì)算公式為:其中Ai為項(xiàng)目i涉及的方面數(shù),pi為項(xiàng)目i的相似度,分母為所有項(xiàng)目涉及的方面總數(shù)。假設(shè)計(jì)算結(jié)果如下表:時(shí)間t0-t1t1-t2t2-t3總工作量質(zhì)量0.60.70.8工作質(zhì)量等級(jí)一般一般高(5)根據(jù)步驟(4)的數(shù)據(jù)生成直觀的時(shí)間分布圖、工作質(zhì)量等級(jí)分布柱狀圖、每個(gè)項(xiàng)目的方面實(shí)體圖,開(kāi)發(fā)者所有提交報(bào)表項(xiàng)目提供給項(xiàng)目經(jīng)理,幫助了解開(kāi)發(fā)者,對(duì)開(kāi)發(fā)者未來(lái)工作提出意見(jiàn)。例如:假設(shè)對(duì)開(kāi)發(fā)者D1進(jìn)行基于多重方面實(shí)體感知模型的開(kāi)發(fā)者貢獻(xiàn)衡量,得出附圖中的四幅圖表提供給項(xiàng)目經(jīng)理。圖4為開(kāi)發(fā)者D1項(xiàng)目-時(shí)間分布統(tǒng)計(jì)圖,每個(gè)項(xiàng)目的峰值處標(biāo)出了時(shí)間,該時(shí)間表示涉及該項(xiàng)目代碼行數(shù)最多的commit報(bào)告提交時(shí)間,同時(shí)可以賦予曲線不同的顏色以區(qū)分不同的項(xiàng)目。圖5為開(kāi)發(fā)者D1在具體的tb-tf時(shí)間段總commit提交數(shù)和一般以上工作提交數(shù)的對(duì)比柱狀圖,每個(gè)項(xiàng)目由兩矩形構(gòu)成,左邊為提交總數(shù)右邊為一般質(zhì)量提交數(shù),并在一般質(zhì)量提交數(shù)中劃分出高質(zhì)量提交數(shù),所占總提交數(shù)的百分比,通過(guò)比例直觀看出開(kāi)發(fā)者工作質(zhì)量。圖6為開(kāi)發(fā)者D1的工作所涉及的項(xiàng)目p1中不同方面工作的餅狀分布圖,這是對(duì)開(kāi)發(fā)者某時(shí)間段內(nèi)對(duì)某一項(xiàng)目的工作的評(píng)估。圖中將整個(gè)項(xiàng)目用餅圖表示,按照不同方面的工作所占該項(xiàng)目總工作的比例進(jìn)行劃分,可以直觀地看出開(kāi)發(fā)者對(duì)項(xiàng)目最多作出的是哪些方面的貢獻(xiàn),開(kāi)發(fā)者其他項(xiàng)目也將生成與p1類似的餅狀圖。圖7為開(kāi)發(fā)者D1在ta-tg時(shí)間段內(nèi)所有commit提交信息報(bào)表,表中匯總出開(kāi)發(fā)者每份commit的標(biāo)題描述、項(xiàng)目和項(xiàng)目涉及不同方面的關(guān)鍵字及分析得出的commit亮點(diǎn),該亮點(diǎn)標(biāo)注出該份報(bào)告的優(yōu)點(diǎn)或存在的問(wèn)題等等。當(dāng)前第1頁(yè)1 2 3