專利名稱:一種Qone數(shù)據(jù)庫(kù)生產(chǎn)率數(shù)據(jù)自動(dòng)生成方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)軟件工程領(lǐng)域,涉及一種代碼版本控制方法,特別涉及一種 Qone數(shù)據(jù)庫(kù)生產(chǎn)率數(shù)據(jù)自動(dòng)生成方法。
背景技術(shù):
軟件過程管理平臺(tái)(以下簡(jiǎn)稱Qone)基于全面質(zhì)量管理理念,符合IS09000/CMM/ CMMI/GJB5000/GJB5000A要求,是一個(gè)能夠全面、有效管理研發(fā)的協(xié)同工作平臺(tái)。Qone圍繞 軟件組織的基本盈利單位——軟件項(xiàng)目進(jìn)行管理,確保軟件項(xiàng)目依據(jù)軟件開發(fā)組織自行定 義的開發(fā)流程的要求制定項(xiàng)目計(jì)劃、調(diào)配資源、實(shí)施項(xiàng)目監(jiān)督。通過對(duì)開發(fā)過程的量化度 量與控制,盡早發(fā)現(xiàn)和解決項(xiàng)目中存在的問題,規(guī)避項(xiàng)目風(fēng)險(xiǎn)。有效提高軟件開發(fā)的“可視 性”、“可控性”、項(xiàng)目成功率和軟件產(chǎn)品的質(zhì)量,同時(shí)降低管理成本,提高管理效率。軟件過程管理平臺(tái)包括需求管理、項(xiàng)目管理、過程管理、過程與產(chǎn)品度量分析和軟 件質(zhì)量管理五個(gè)部分。依據(jù)PDCA循環(huán)的基本要求和CMM/CMMI/GJB5000分級(jí)模型的指導(dǎo), 對(duì)企業(yè)的各種核心活動(dòng)進(jìn)行組合,Qone依據(jù)CMM/CMMI分級(jí)模型的指導(dǎo),對(duì)企業(yè)的各種核心 活動(dòng)進(jìn)行組合,形成不同的產(chǎn)品級(jí)別滿足企業(yè)從低成熟度到高成熟度的運(yùn)作,可以有效的 協(xié)助軟件開發(fā)組織實(shí)施過程改進(jìn)。Qone主要圍繞開發(fā)周期的活動(dòng)對(duì)開發(fā)和生產(chǎn)的過程進(jìn)行管理,將軟件組織的過程 融入項(xiàng)目的日常開發(fā)中。1. Qone將所有過程活動(dòng)對(duì)應(yīng)到PDCA(如圖1所示)組織軟件過程的服務(wù)流程。PDCA是CMM/CMMI/IS09000/IS015504的理論基礎(chǔ),PDCA環(huán)的不斷實(shí)施和運(yùn)行,確
保軟件質(zhì)量管理過程得到持續(xù)的改進(jìn)。P 策劃(Plan)策劃質(zhì)量方針、目標(biāo)和過程策劃,識(shí)別和定義質(zhì)量過程D 實(shí)施(Do)展開質(zhì)量過程執(zhí)行質(zhì)量計(jì)劃。C:檢查(Check)檢查執(zhí)行結(jié)果,評(píng)價(jià)實(shí)施效果A 處理(Act)分析結(jié)果2.軟件開發(fā)的決定性因素包括人員素質(zhì)、開發(fā)技術(shù)、過程質(zhì)量。軟件過程管理平 臺(tái)通過加強(qiáng)對(duì)過程的管理,降低人員流動(dòng)和技術(shù)能力對(duì)產(chǎn)品質(zhì)量的產(chǎn)生的負(fù)面影響。過程能力成熟度模型CMMI是軟件過程領(lǐng)域中一個(gè)重要的參考模型,CMMI強(qiáng)調(diào)可 度量是持續(xù)軟件過程改進(jìn)的一個(gè)必要條件。這種可度量包括生產(chǎn)率數(shù)據(jù)的可度量,Qone作 為一款軟件過程管理平臺(tái)工具,理應(yīng)實(shí)現(xiàn)對(duì)項(xiàng)目生產(chǎn)率數(shù)據(jù)的定量處理和分析。但在Qone 的實(shí)際使用過程中,由于在各個(gè)項(xiàng)目管理上以及對(duì)Qone使用上的原因,Qone中關(guān)于生產(chǎn)率 的數(shù)據(jù)缺失嚴(yán)重,對(duì)項(xiàng)目的管理,項(xiàng)目成員的評(píng)估,項(xiàng)目進(jìn)度的評(píng)估以及過程監(jiān)控和持續(xù)改 進(jìn)造成不良的影響。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種Qone數(shù)據(jù)庫(kù)生產(chǎn)率數(shù)據(jù)自動(dòng)生成方法,針對(duì)Qone (軟
4件過程管理平臺(tái))項(xiàng)目管理數(shù)據(jù)和SVN版本控制數(shù)據(jù)的特點(diǎn)實(shí)現(xiàn)生產(chǎn)率數(shù)據(jù)的自動(dòng)修復(fù)。本發(fā)明的技術(shù)方案為一種Qone數(shù)據(jù)庫(kù)生產(chǎn)率數(shù)據(jù)自動(dòng)生成方法,其步驟為1)數(shù)據(jù)提取模塊從Qone數(shù)據(jù)庫(kù)中提取軟件項(xiàng)目數(shù)據(jù),建立人力資源-任務(wù)數(shù)據(jù) 集;所述軟件項(xiàng)目數(shù)據(jù)包括人力資源名稱、人力資源所屬任務(wù)的任務(wù)名稱、任務(wù)類型、工 作量、開始時(shí)間、結(jié)束時(shí)間;2)數(shù)據(jù)提取模塊從SVN代碼庫(kù)中提取軟件項(xiàng)目的代碼提交數(shù)據(jù),建立人力資 源-提交數(shù)據(jù)集;所述代碼提交數(shù)據(jù)包括人力資源名稱、人力資源所屬提交的提交日期、 提交文件、動(dòng)作類型、影響行數(shù);3)映射模塊根據(jù)人力資源名稱對(duì)人力資源-任務(wù)數(shù)據(jù)集和人力資源-提交數(shù)據(jù)集 進(jìn)行映射操作,建立任務(wù)-人力資源-提交數(shù)據(jù)集,得到每個(gè)人力資源的任務(wù)數(shù)據(jù)和提交數(shù) 據(jù);4)映射模塊根據(jù)任務(wù)-人力資源-提交數(shù)據(jù)集中任務(wù)的實(shí)際執(zhí)行時(shí)間與提交文件 的提交時(shí)間確定任務(wù)與提交之間狀態(tài);5)映射模塊根據(jù)任務(wù)數(shù)據(jù)和提交數(shù)據(jù)建立網(wǎng)狀關(guān)系結(jié)構(gòu)圖(V,E);然后每次選取 網(wǎng)狀結(jié)構(gòu)圖(V,E)中強(qiáng)度最大的邊及其相應(yīng)的兩個(gè)頂點(diǎn)進(jìn)行狀態(tài)合并,直到網(wǎng)狀關(guān)系結(jié)構(gòu) 圖(V,E)中E為空為止,確定每個(gè)提交文件所對(duì)應(yīng)的任務(wù),生成任務(wù)-提交數(shù)據(jù)集;其中,V 是圖的頂點(diǎn)集合,即提交文件的集合,E是邊的集合,即提交文件間聯(lián)系的強(qiáng)弱程度;6)生產(chǎn)率數(shù)據(jù)生成模塊根據(jù)任務(wù)-提交數(shù)據(jù)集中每個(gè)任務(wù)上提交的數(shù)據(jù),生成每 個(gè)任務(wù)的生產(chǎn)率數(shù)據(jù)。進(jìn)一步的,建立所述人力資源-任務(wù)數(shù)據(jù)集的方法為1)從Qone數(shù)據(jù)庫(kù)中提取每一人力資源,包括人力資源的id和姓名;2)對(duì)于每個(gè)人力資源,提取其所有所屬的葉子任務(wù),包括任務(wù)名稱、任務(wù)類型、工 作量、開始時(shí)間、結(jié)束時(shí)間;3)移除每個(gè)人力資源所屬葉子任務(wù)中處于未分配和已取消狀態(tài)的任務(wù);4)利用任務(wù)類型,移除每個(gè)人力資源所屬葉子任務(wù)中制品不包含代碼的任務(wù),得 到所述人力資源-任務(wù)數(shù)據(jù)集。進(jìn)一步的,建立所述人力資源-提交數(shù)據(jù)集的方法為采用MatSVN工具從從SVN 代碼庫(kù)中提取SVN Log數(shù)據(jù),然后利用XML解析方法對(duì)提取SVN Log數(shù)據(jù)進(jìn)行解析,得到 SVN中每個(gè)人力資源的提交數(shù)據(jù),建立所述人力資源-提交數(shù)據(jù)集。進(jìn)一步的,建立所述任務(wù)-人力資源-提交數(shù)據(jù)集的方法為1)將所述人力資源-任務(wù)數(shù)據(jù)集中人力資源的中文名稱轉(zhuǎn)化為對(duì)應(yīng)拼音并提取 首字母縮寫;2)在所述人力資源-提交數(shù)據(jù)集中查找與所述人力資源-任務(wù)數(shù)據(jù)集中擁有相同 首字母縮寫的的人力資源;3)根據(jù)查找結(jié)果建立起屬于同一人力資源的任務(wù)數(shù)據(jù)和提交數(shù)據(jù),得到所述任 務(wù)-人力資源-提交數(shù)據(jù)集。進(jìn)一步的,生成所述任務(wù)與提交之間狀態(tài)包括狀態(tài)0、狀態(tài)1、狀態(tài)2 ;其中,狀態(tài) 0為提交文件不屬于任何一個(gè)任務(wù),狀態(tài)1為提交文件屬于其中唯一的一個(gè)任務(wù),狀態(tài)2為提交文件屬于多個(gè)任務(wù);進(jìn)一步的,所述每次選取網(wǎng)狀結(jié)構(gòu)圖(V,E)中強(qiáng)度最大的邊及其相應(yīng)的兩個(gè)頂點(diǎn) 進(jìn)行狀態(tài)合并的方法為1)如果兩個(gè)頂點(diǎn)都處于狀態(tài)0,則合并這兩個(gè)頂點(diǎn),并且合并后的頂點(diǎn)狀態(tài)仍然 為狀態(tài)0 ;2)如果其中一個(gè)頂點(diǎn)處于狀態(tài)0,另一個(gè)處于狀態(tài)1,則合并這兩個(gè)頂點(diǎn),并且合 并后的頂點(diǎn)狀態(tài)為狀態(tài)1 ;3)如果兩個(gè)頂點(diǎn)都處于狀態(tài)1,并且它們都屬于同一個(gè)任務(wù),則合并這兩個(gè)頂點(diǎn), 并且合并后的頂點(diǎn)狀態(tài)仍然為狀態(tài)1 ;4)如果其中一個(gè)頂點(diǎn)處于狀態(tài)0,另一個(gè)處于狀態(tài)2,則移除它們之間的邊;5)如果其中一個(gè)頂點(diǎn)處于狀態(tài)1,另一個(gè)處于狀態(tài)2,并且它們之間無時(shí)間沖突, 則合并這兩個(gè)頂點(diǎn),并且合并后的頂點(diǎn)狀態(tài)為狀態(tài)1 ;6)如果兩個(gè)頂點(diǎn)都處于狀態(tài)2,并且它們之間無時(shí)間沖突,則合并這兩個(gè)頂點(diǎn),并 根據(jù)任務(wù)的實(shí)際執(zhí)行時(shí)間與提交文件的提交時(shí)間來確定合并后頂點(diǎn)的狀態(tài)。進(jìn)一步的,利用遍歷方法來建立每?jī)蓚€(gè)頂點(diǎn)之間的邊;采用鏈表結(jié)構(gòu)存儲(chǔ)所建立 的邊。進(jìn)一步的,根據(jù)提交文件共同出現(xiàn)的頻率和時(shí)間信息來共同確定所述提交文件間 聯(lián)系的強(qiáng)弱程度。進(jìn)一步的,如果所述任務(wù)-提交數(shù)據(jù)集中仍然有提交文件不屬于任何一個(gè)任務(wù) 時(shí),則將該提交文件分配給執(zhí)行時(shí)間離它提交時(shí)間最近的任務(wù)。進(jìn)一步的,對(duì)于所述任務(wù)-提交數(shù)據(jù)集中提交文件屬于多個(gè)任務(wù)的提交文件,則 采用平均的方法將該提交文件分布到各個(gè)相關(guān)的任務(wù)上。本發(fā)明的主要內(nèi)容包括1)數(shù)據(jù)提取模塊從軟件項(xiàng)目管理系統(tǒng)中提取軟件項(xiàng)目數(shù)據(jù),建立人力資源-任務(wù) 數(shù)據(jù)集。數(shù)據(jù)的格式定義為 HR-Tasks = {hr,Itask1, task2, . . .,taskj},其中 HR-Tasks 表示提取的數(shù)據(jù)集,hr表示人力資源,taski表示人力資源所屬的任務(wù)。每個(gè)任務(wù)的數(shù)據(jù)格 式定義為 Itaski = {ID" namei typei workload^ StartDatei, endDateJ,其中各項(xiàng)依次表 示任務(wù)標(biāo)識(shí)、名稱、類型、工作量、開始時(shí)間和結(jié)束時(shí)間;2)數(shù)據(jù)提取模塊從SVN代碼庫(kù)中提取軟件項(xiàng)目的代碼提交數(shù)據(jù),建立人力 資源-提交數(shù)據(jù)集。數(shù)據(jù)格式的定義為HR-Commits = {hr, Icommit1, commit2,..., commitj},其中HR-Commits表示提取的數(shù)據(jù)集,hr表示人力資源,commit」表示人力資 源所屬的提交。每個(gè)提交的數(shù)據(jù)格式定義為=Commitj = {date」,author」,IocChangej, revision」,Iafileljj, afile2jJ, ... , af ilq,」}},其中各項(xiàng)依次表示提交日期、提交者、影響 行數(shù)、版本和提交文件。每個(gè)提交文件的數(shù)據(jù)格式定義為afilek,j= {action,, J5Pathk,,., IocAddkij, locRemovey},其中各項(xiàng)依次表示提交動(dòng)作類型、文件路徑、增加代碼行數(shù)和刪 除代碼行數(shù);3)映射模塊進(jìn)行人力資源間的映射操作。根據(jù)提取的兩組數(shù)據(jù)集,針對(duì)它們進(jìn) 行人力資源的映射操作,操作完成后得到結(jié)果為“任務(wù)-人力資源-提交”格式的數(shù)據(jù)集, 數(shù)據(jù)集的格式定義為Tasks-HR-Commits = {hr, Itask1, task2,...,taskn},{commit”Commit2, ...,Commit1J },其中各項(xiàng)表示意義同前述步驟;4)映射模塊進(jìn)行任務(wù)-提交間的映射操作。根據(jù)上一步驟得到的數(shù)據(jù)集,針 對(duì)它們進(jìn)行任務(wù)-提交的映射操作,操作完成后得到結(jié)果為任務(wù)-提交格式的數(shù)據(jù)集, 數(shù)據(jù)集的格式定義為Tasks-HR-Commit s = {hr, Itask-Commit1, task_commit2,..., task-commitj },其中hr表示人力資源,task-commiti表示任務(wù)-提交映射關(guān)系。任務(wù)-提 交映射關(guān)系的數(shù)據(jù)格式定義為Aask-Commiti = {task」,af,其中各項(xiàng)表示意義同前 述步驟;5)生產(chǎn)率數(shù)據(jù)生成模塊根據(jù)得到的任務(wù)-提交格式的數(shù)據(jù)集,在每個(gè)任務(wù)上提交 的數(shù)據(jù)均已確定,即可運(yùn)用統(tǒng)計(jì)的方法統(tǒng)計(jì)出各個(gè)任務(wù)的生產(chǎn)率數(shù)據(jù)。所述方法為從軟件項(xiàng)目管理系統(tǒng)中提取軟件項(xiàng)目數(shù)據(jù),其數(shù)據(jù)的預(yù)處理過程需遵 循如下步驟a)從Qone中提取所有的人力資源,包括人員的id和姓名等;b)對(duì)于每個(gè)人力資源,提取其所有所屬的葉子任務(wù),包括任務(wù)名稱,任務(wù)描述,任 務(wù)成員,開始時(shí)間,結(jié)束時(shí)間,任務(wù)類型等;c)對(duì)于每個(gè)人力資源,移除其處于未分配和已取消狀態(tài)的任務(wù);d)對(duì)于每個(gè)人力資源,移除其制品不包含代碼的任務(wù)。所述提交文件是區(qū)別于普通文件的一個(gè)專有名詞,其定義為某次提交中攜帶提交 相關(guān)信息的文件。一個(gè)普通文件可能對(duì)應(yīng)多個(gè)提交文件,但一個(gè)提交文件只能屬于某一個(gè) 特定的普通文件。一個(gè)提交文件可以通過如下公式表示,其意義為一個(gè)普通文件Hlei在 提交commit」中被提交,其中i標(biāo)識(shí)一個(gè)普通的文件filei; j標(biāo)識(shí)一個(gè)提交Commitj afIleij j = affected(fIlei, Commitj)所述方法需要進(jìn)行人力資源間的映射操作。如果發(fā)現(xiàn)兩個(gè)映射中的人力資源是指 向同一個(gè)實(shí)際存在的人,則可以在這兩個(gè)人力資源之間建立起一一對(duì)應(yīng)的關(guān)系。這種關(guān)系 的假設(shè)是基于如下的發(fā)現(xiàn)a) Qone中的絕大部分帳戶都有對(duì)應(yīng)人力資源的中文名稱;b)SVN中的用戶名都是其中文名稱首字母的縮寫;基于上述發(fā)現(xiàn),即可建立起兩組人力資源之間的一一對(duì)應(yīng)關(guān)系。對(duì)于提取的兩組 人力資源數(shù)據(jù),一部分包含用戶中文名稱,一部分包含用戶中文名稱首字母縮寫,因而,建 立起一一對(duì)應(yīng)關(guān)系的步驟如下a)對(duì)Qone中的人力資源,提取其中文用戶名,將其轉(zhuǎn)化為對(duì)應(yīng)拼音并最終提取首 字母的縮寫;b)對(duì)SVN中的人力資源,提取其用戶名稱,并在Qone中尋找擁有相同首字母縮寫 的的人力資源;c)如果尋找的結(jié)果是唯一的,則建立起一一對(duì)應(yīng)關(guān)系;否則需要尋求項(xiàng)目經(jīng)理的 幫助來確定最終的映射關(guān)系。所述方法需要進(jìn)行任務(wù)-提交間的映射操作。建立起屬于同一人力資源的任務(wù)和 提交兩個(gè)數(shù)據(jù)集之間的映射關(guān)系。對(duì)于任務(wù)和提交之間的關(guān)系,可以定義出如下3中狀態(tài)a)狀態(tài)0,提交文件不屬于任何一個(gè)任務(wù);b)狀態(tài)1,提交文件屬于其中唯一的一個(gè)任務(wù);
c)狀態(tài)2,提交文件屬于多個(gè)任務(wù)。這些狀態(tài)是通過任務(wù)的實(shí)際執(zhí)行時(shí)間和提交的提交時(shí)間來共同確定的。如果一個(gè) 提交的提交時(shí)間不落入到任何一個(gè)任務(wù)的實(shí)際執(zhí)行時(shí)間段內(nèi),則它們之間的關(guān)系處于狀態(tài) 0;如果一個(gè)提交的提交時(shí)間只落入在一個(gè)任務(wù)的實(shí)際執(zhí)行時(shí)間段內(nèi),則它們之間的關(guān)系處 于狀態(tài)1 ;如果一個(gè)提交的提交時(shí)間落入到多個(gè)任務(wù)的實(shí)際執(zhí)行時(shí)間段內(nèi),則它們之間的 關(guān)系處于狀態(tài)2。其中“落入”的定義為提交的提交時(shí)間晚于任務(wù)的實(shí)際開始時(shí)間,但早于 任務(wù)的實(shí)際結(jié)束時(shí)間。進(jìn)行映射操作的關(guān)鍵在于將狀態(tài)0和狀態(tài)2向狀態(tài)1轉(zhuǎn)化。所述方法將狀態(tài)0和狀態(tài)2向狀態(tài)1轉(zhuǎn)化,是基于一個(gè)假設(shè)條件如果兩個(gè)文件頻 繁的在提交中同時(shí)出現(xiàn),則這兩個(gè)文件的提交文件可能屬于同一個(gè)提交?;谶@個(gè)假設(shè),可 以根據(jù)任務(wù)-人力資源-提交數(shù)據(jù)集中的任務(wù)數(shù)據(jù)和提交數(shù)據(jù)建立起網(wǎng)狀結(jié)構(gòu)圖(V,E), 并且由于在本方法中的圖中“邊”一般較為稀疏,適合用鏈表結(jié)構(gòu)進(jìn)行存儲(chǔ),并且可利用遍 歷的方法來建立每?jī)蓚€(gè)頂點(diǎn)之間的邊。其中圖(V,E)中的V是圖的頂點(diǎn)集合,即是提交文 件的集合;E是邊的集合,即是提交文件間聯(lián)系的強(qiáng)弱程度。這種聯(lián)系的強(qiáng)弱程度是通過提 交文件共同出現(xiàn)的頻率和時(shí)間信息來共同確定的,計(jì)算其強(qiáng)弱的公式如下weightiafiL·, h afilem, ) = ^ a* bttmeDlffl^k
exist (afilei,k,afilem,k)其中i和m分別標(biāo)識(shí)兩個(gè)普通文件,j,η, k分別標(biāo)識(shí)三個(gè)不同的提交commit」, Commitn 禾口 commitk, tImeDiffjj n> k 是提交 Commitj, Commitn 禾口 Commitk 提交時(shí)間的最大差 值,a是權(quán)重的相關(guān)系數(shù),b是時(shí)間的衰減因子,Bfileijj表示一個(gè)提交文件,exist (afile,, k,afiIemjk)表示提交文件afilei,k和afilem,k均實(shí)際存在。在建立好一張網(wǎng)狀結(jié)構(gòu)圖以后,可以遵循如下步驟來實(shí)現(xiàn)狀態(tài)的轉(zhuǎn)換。每次選取 權(quán)重最大的那條邊以及其相應(yīng)的兩個(gè)頂點(diǎn),對(duì)它們進(jìn)行如下操作,直到圖中的所有邊均處
理完畢。a)如果兩個(gè)頂點(diǎn)都處于狀態(tài)0,則合并這兩個(gè)頂點(diǎn),并且合并后的頂點(diǎn)狀態(tài)仍然 為狀態(tài)O ;b)如果其中一個(gè)頂點(diǎn)處于狀態(tài)0,另一個(gè)處于狀態(tài)1,則合并這兩個(gè)頂點(diǎn),并且合 并后的頂點(diǎn)狀態(tài)為狀態(tài)1 ;c)如果兩個(gè)頂點(diǎn)都處于狀態(tài)1,并且它們都屬于同一個(gè)任務(wù),則合并這兩個(gè)頂點(diǎn), 并且合并后的頂點(diǎn)狀態(tài)仍然為狀態(tài)1 ;d)如果其中一個(gè)頂點(diǎn)處于狀態(tài)0,另一個(gè)處于狀態(tài)2,則移除它們之間的邊;e)如果其中一個(gè)頂點(diǎn)處于狀態(tài)1,另一個(gè)處于狀態(tài)2,并且它們之間無時(shí)間沖突, 則合并這兩個(gè)頂點(diǎn),并且合并后的頂點(diǎn)狀態(tài)為狀態(tài)1 ;f)如果兩個(gè)頂點(diǎn)都處于狀態(tài)2,并且它們之間無時(shí)間沖突,則合并這兩個(gè)頂點(diǎn),并 根據(jù)前文給出的確定狀態(tài)的方法來確定合并后頂點(diǎn)的狀態(tài)。如果處理完畢后,仍然后頂點(diǎn)的狀態(tài)處于狀態(tài)0,則將它分配給實(shí)際結(jié)束時(shí)間離它 提交時(shí)間最近的一個(gè)任務(wù),并將其狀態(tài)置為狀態(tài)1,因而當(dāng)該過程完成后,所有提交文件的 狀態(tài)均為狀態(tài)1或者狀態(tài)2。所述方法進(jìn)行生產(chǎn)率數(shù)據(jù)的統(tǒng)計(jì),在于根據(jù)確定的任務(wù)和提交之間的映射關(guān)系, 統(tǒng)計(jì)出生產(chǎn)率數(shù)據(jù),此時(shí)所有的提交文件均處于狀態(tài)1或者狀態(tài)2,對(duì)于處于狀態(tài)2的提交
8文件,其數(shù)據(jù)可以采用平均的方法分布到各個(gè)相關(guān)的任務(wù)。與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果隨著軟件應(yīng)用愈來愈廣泛和復(fù)雜,對(duì)軟件可信性的要求也越來越高。由于軟件的 可信程度依賴于軟件的開發(fā)過程,因而可信過程是進(jìn)行可信軟件開發(fā)的必需條件。而生產(chǎn) 率是軟件可信過程的一個(gè)重要要素,通過自動(dòng)修復(fù)缺失的生產(chǎn)率數(shù)據(jù),能夠幫助對(duì)過程的 能力進(jìn)行評(píng)估,支撐未來實(shí)際軟件項(xiàng)目的開發(fā),因而能夠增強(qiáng)軟件的可信程度。而且歷史項(xiàng) 目數(shù)據(jù)和SVN代碼庫(kù)是在軟件組織實(shí)際項(xiàng)目開發(fā)過程中積累的真實(shí)數(shù)據(jù),本法通過數(shù)據(jù)分 析和挖掘的方法,從中修復(fù)缺失的生產(chǎn)率數(shù)據(jù),具有更高的準(zhǔn)確性和客觀性。
圖1. PDCA要素及其相互關(guān)系框圖;圖2.缺失生產(chǎn)率修復(fù)方法總體流程圖。
具體實(shí)施例方式下面結(jié)合附圖,對(duì)從Qone軟件項(xiàng)目數(shù)據(jù)和SVN Log數(shù)據(jù)修復(fù)缺失生產(chǎn)率的過程作 進(jìn)一步的說明,但不構(gòu)成對(duì)本發(fā)明的限制,從Qone軟件項(xiàng)目數(shù)據(jù)和SVN Log數(shù)據(jù)修復(fù)缺失 生產(chǎn)率的總體流程圖如圖2所示。(一 )數(shù)據(jù)預(yù)處理數(shù)據(jù)提取模塊分別從Qone和SVN中提取數(shù)據(jù)1、從Qone中提取數(shù)據(jù)。從Qone中提取數(shù)據(jù)需要用到Qone的數(shù)據(jù)庫(kù),當(dāng)建立好和 Qone數(shù)據(jù)庫(kù)的連接之后,執(zhí)行如下步驟從Qone數(shù)據(jù)庫(kù)中提取數(shù)據(jù),得到“人力資源-任務(wù)” 的數(shù)據(jù)集。a)從Qone中提取所有的人力資源,包括人員的id和姓名等;b)對(duì)于每個(gè)人力資源,提取其所有所屬的葉子任務(wù),包括任務(wù)名稱,任務(wù)描述,任 務(wù)成員,開始時(shí)間,結(jié)束時(shí)間,任務(wù)類型等;c)對(duì)于每個(gè)人力資源,移除其處于未分配和已取消狀態(tài)的任務(wù)(由于處于未分配 和已取消狀態(tài)的任務(wù)雖然沒有被該人力資源執(zhí)行,但它仍然保留了和人力資源之間的關(guān)聯(lián) 關(guān)系,因此進(jìn)行移除優(yōu)化處理);d)對(duì)于每個(gè)人力資源,移除其制品不包含代碼的任務(wù)。2、從SVN庫(kù)中提取SVN Log數(shù)據(jù)。提取SVN Log數(shù)據(jù)需要用到StatSVN工具,安 裝好MatSVN工具之后,運(yùn)行如下命令java statsvn. jar[log path][working copy path]-output-dir[output path]-xml即可從SVN庫(kù)中導(dǎo)出SVN Log數(shù)據(jù)。利用XML解析技術(shù)對(duì)SVNLog數(shù)據(jù)進(jìn)行解析 處理,即可得到SVN中每個(gè)人力資源的提交數(shù)據(jù),為“人力資源-提交”的數(shù)據(jù)集。( 二)映射模塊進(jìn)行人力資源的映射當(dāng)兩組數(shù)據(jù)分別提取完成之后,在兩組數(shù)據(jù)之間建立人力資源的映射關(guān)系。建立 映射關(guān)系的步驟如下a)對(duì)Qone中的人力資源,提取其中文用戶名,將其轉(zhuǎn)化為對(duì)應(yīng)拼音并最終提取首 字母的縮寫,例如用戶A的中文名稱為“張三”,則其首字母的縮寫為“ZHS”;
b)對(duì)SVN中的人力資源,提取其用戶名稱,并在Qone中尋找擁有相同首字母縮寫 的的人力資源,例如SVN中某人力資源的用戶名為“ZHS”,則可以尋找到Qone中相應(yīng)的用 戶“張三”;c)如果尋找的結(jié)果是唯一的,則建立起一一對(duì)應(yīng)關(guān)系;否則需要尋求項(xiàng)目經(jīng)理的 幫助來確定最終的映射關(guān)系,例如如果通過“S1S”只找到了“張三”唯一一個(gè)人力資源,則 可以簡(jiǎn)歷其一一對(duì)應(yīng)關(guān)系;否則如果還存在“張四”也對(duì)應(yīng)到“ZHS”,則需要借助于項(xiàng)目經(jīng) 理來進(jìn)一步判斷其對(duì)應(yīng)關(guān)系。根據(jù)映射的結(jié)果和在步驟(一)中提取的數(shù)據(jù)“人力資源-任務(wù)”的數(shù)據(jù)集和“人 力資源-提交”的數(shù)據(jù)集,即可得到“任務(wù)-人力資源-提交”數(shù)據(jù)集。(三)映射模塊進(jìn)行任務(wù)-提交的映射第一步、在步驟(二)中,“任務(wù)-人力資源-提交”數(shù)據(jù)集已經(jīng)被提取,因而每個(gè) 人力資源的任務(wù)數(shù)據(jù)和提交數(shù)據(jù)均已確定。在進(jìn)行映射操作之前,需要利用前文提到的方 法根據(jù)任務(wù)數(shù)據(jù)和提交數(shù)據(jù)的時(shí)間信息確定每個(gè)提交文件所處的狀態(tài)a)如果一個(gè)提交的提交時(shí)間不落入到任何一個(gè)任務(wù)的實(shí)際執(zhí)行時(shí)間段內(nèi),則它們 之間的關(guān)系處于狀態(tài)0;b)如果一個(gè)提交的提交時(shí)間只落入在一個(gè)任務(wù)的實(shí)際執(zhí)行時(shí)間段內(nèi),則它們之間 的關(guān)系處于狀態(tài)1 ;c)如果一個(gè)提交的提交時(shí)間落入到多個(gè)任務(wù)的實(shí)際執(zhí)行時(shí)間段內(nèi),則它們之間的 關(guān)系處于狀態(tài)2。第二步、建立提交文件之間的網(wǎng)狀關(guān)系結(jié)構(gòu)對(duì)于每一個(gè)人力資源,利用提取的任務(wù)數(shù)據(jù)和提交數(shù)據(jù)建立網(wǎng)狀關(guān)系結(jié)構(gòu)。其中 提交數(shù)據(jù)構(gòu)成頂點(diǎn),任務(wù)和提交之間的關(guān)系確定了頂點(diǎn)的狀態(tài)(如狀態(tài)0、1、2)。網(wǎng)狀結(jié)構(gòu) 圖用(V,E)表示,其中V是圖的頂點(diǎn)集合,即是提交文件的集合;E是邊的集合,即是提交文 件間聯(lián)系的強(qiáng)弱程度。每條邊的強(qiáng)度可以通過如下的公式進(jìn)行計(jì)算Weightiafilel, h afilem, ) = ^ α * btimeDlfJh",k
exist (afilei,k,afilem,k)其中i和m分別標(biāo)識(shí)兩個(gè)普通文件,j, η, k分別標(biāo)識(shí)三個(gè)不同的提交commit」, Commitn 禾口 commitk, tImeDiffjj n> k 是提交 Commitj, Commitn 禾口 Commitk 提交時(shí)間的最大差 值,a是權(quán)重的相關(guān)系數(shù),b是時(shí)間的衰減因子,Bfileijj表示一個(gè)提交文件,exist (afile,, k,afiIemjk)表示提交文件afilei,k和afilem,k均實(shí)際存在。第三步、進(jìn)行映射操作在前一步建立好的網(wǎng)狀結(jié)構(gòu)圖上,每次選取權(quán)重最大的那條邊e以及其相應(yīng)的兩 個(gè)頂點(diǎn)vl和v2,對(duì)它們進(jìn)行如下操作a)如果vl和v2都處于狀態(tài)0,則合并vl和v2,并且合并后的頂點(diǎn)狀態(tài)仍然為狀 態(tài)0 ;b)如果其中vl處于狀態(tài)0,v2處于狀態(tài)1,或者相反,則合并vl和v2,并且合并 后的頂點(diǎn)狀態(tài)為狀態(tài)1 ;c)如果vl和v2都處于狀態(tài)1,并且它們都屬于同一個(gè)任務(wù),則合并vl和v2,并且 合并后的頂點(diǎn)狀態(tài)仍然為狀態(tài)1 ;
d)如果其中vl處于狀態(tài)0,v2處于狀態(tài)2,或者相反,則移除它們之間的邊e ;e)如果其中vl處于狀態(tài)1,v2處于狀態(tài)2,或者相反,并且它們之間無時(shí)間沖突, 則合并vl和v2,并且合并后的頂點(diǎn)狀態(tài)為狀態(tài)1 ;f)如果vl和v2都處于狀態(tài)2,并且它們之間無時(shí)間沖突,則合并vl和v2,并根據(jù) 時(shí)間信息來確定合并后頂點(diǎn)的狀態(tài)。重復(fù)執(zhí)行上述步驟,直到結(jié)構(gòu)圖(V,E)中E為空為止,如果仍然有頂點(diǎn)的狀態(tài)為狀 態(tài)0,則將該頂點(diǎn)分配給執(zhí)行時(shí)間離它提交時(shí)間最近的任務(wù),并設(shè)置其狀態(tài)為狀態(tài)1。此時(shí), V中的每個(gè)頂點(diǎn)均包含了任務(wù)和提交的對(duì)應(yīng)關(guān)系,其中狀態(tài)1為提交文件對(duì)應(yīng)到一個(gè)任務(wù), 狀態(tài)2為提交文件對(duì)應(yīng)到多個(gè)任務(wù),即是“任務(wù)-提交”格式的數(shù)據(jù)集。(四)生產(chǎn)率數(shù)據(jù)生成模塊統(tǒng)計(jì)生產(chǎn)率數(shù)據(jù)基于確定的任務(wù)和提交之間的映射關(guān)系,生產(chǎn)率數(shù)據(jù)生成模塊可以統(tǒng)計(jì)出每個(gè)人 力資源的生產(chǎn)率數(shù)據(jù)。此時(shí)所有的提交文件均處于狀態(tài)1或者狀態(tài)2,對(duì)于處于狀態(tài)2的提 交文件,其數(shù)據(jù)可以采用平均的方法分布到各個(gè)相關(guān)的任務(wù)。處于狀態(tài)1的提交文件,其數(shù) 據(jù)處理是平均方法的一種特殊情況,因而可以使用統(tǒng)一的方法進(jìn)行計(jì)算。統(tǒng)計(jì)生產(chǎn)率數(shù)據(jù) 的公式如下
權(quán)利要求
1.一種Qone數(shù)據(jù)庫(kù)生產(chǎn)率數(shù)據(jù)自動(dòng)生成方法,其步驟為1)數(shù)據(jù)提取模塊從Qone數(shù)據(jù)庫(kù)中提取軟件項(xiàng)目數(shù)據(jù),建立人力資源-任務(wù)數(shù)據(jù)集;所 述軟件項(xiàng)目數(shù)據(jù)包括人力資源名稱、人力資源所屬任務(wù)的任務(wù)名稱、任務(wù)類型、工作量、開 始時(shí)間、結(jié)束時(shí)間;2)數(shù)據(jù)提取模塊從SVN代碼庫(kù)中提取軟件項(xiàng)目的代碼提交數(shù)據(jù),建立人力資源-提 交數(shù)據(jù)集;所述代碼提交數(shù)據(jù)包括人力資源名稱、人力資源所屬提交的提交日期、提交文 件、動(dòng)作類型、影響行數(shù);3)映射模塊根據(jù)人力資源名稱對(duì)人力資源-任務(wù)數(shù)據(jù)集和人力資源-提交數(shù)據(jù)集進(jìn)行 映射操作,建立任務(wù)-人力資源-提交數(shù)據(jù)集,得到每個(gè)人力資源的任務(wù)數(shù)據(jù)和提交數(shù)據(jù);4)映射模塊根據(jù)任務(wù)-人力資源-提交數(shù)據(jù)集中任務(wù)的實(shí)際執(zhí)行時(shí)間與提交文件的提 交時(shí)間確定任務(wù)與提交之間狀態(tài);5)映射模塊根據(jù)任務(wù)數(shù)據(jù)和提交數(shù)據(jù)建立網(wǎng)狀關(guān)系結(jié)構(gòu)圖(V,E);然后每次選取網(wǎng) 狀結(jié)構(gòu)圖(V,E)中強(qiáng)度最大的邊及其相應(yīng)的兩個(gè)頂點(diǎn)進(jìn)行狀態(tài)合并,直到網(wǎng)狀關(guān)系結(jié)構(gòu)圖 (V,E)中E為空為止,確定每個(gè)提交文件所對(duì)應(yīng)的任務(wù),生成任務(wù)-提交數(shù)據(jù)集;其中,V是 圖的頂點(diǎn)集合,即提交文件的集合,E是邊的集合,即提交文件間聯(lián)系的強(qiáng)弱程度;6)生產(chǎn)率數(shù)據(jù)生成模塊根據(jù)任務(wù)-提交數(shù)據(jù)集中每個(gè)任務(wù)上提交的數(shù)據(jù),生成每個(gè)任 務(wù)的生產(chǎn)率數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其特征在于其特征在于建立所述人力資源-任務(wù)數(shù)據(jù)集 的方法為1)從Qone數(shù)據(jù)庫(kù)中提取每一人力資源,包括人力資源的id和姓名;2)對(duì)于每個(gè)人力資源,提取其所有所屬的葉子任務(wù),包括任務(wù)名稱、任務(wù)類型、工作量、 開始時(shí)間、結(jié)束時(shí)間;3)移除每個(gè)人力資源所屬葉子任務(wù)中處于未分配和已取消狀態(tài)的任務(wù);4)利用任務(wù)類型,移除每個(gè)人力資源所屬葉子任務(wù)中制品不包含代碼的任務(wù),得到所 述人力資源-任務(wù)數(shù)據(jù)集。
3.如權(quán)利要求1或2所述的方法,其特征在于建立所述人力資源-提交數(shù)據(jù)集的方法 為采用MatSVN工具從從SVN代碼庫(kù)中提取SVN Log數(shù)據(jù),然后利用XML解析方法對(duì)提取 SVN Log數(shù)據(jù)進(jìn)行解析,得到SVN中每個(gè)人力資源的提交數(shù)據(jù),建立所述人力資源-提交數(shù) 據(jù)集。
4.如權(quán)利要求1或2所述的方法,其特征在于建立所述任務(wù)-人力資源-提交數(shù)據(jù)集 的方法為1)將所述人力資源-任務(wù)數(shù)據(jù)集中人力資源的中文名稱轉(zhuǎn)化為對(duì)應(yīng)拼音并提取首字 母縮與;2)在所述人力資源-提交數(shù)據(jù)集中查找與所述人力資源-任務(wù)數(shù)據(jù)集中擁有相同首字 母縮寫的的人力資源;3)根據(jù)查找結(jié)果建立起屬于同一人力資源的任務(wù)數(shù)據(jù)和提交數(shù)據(jù),得到所述任務(wù)-人 力資源-提交數(shù)據(jù)集。
5.如權(quán)利要求4所述的方法,其特征在于生成所述任務(wù)與提交之間狀態(tài)包括狀態(tài)O、 狀態(tài)1、狀態(tài)2 ;其中,狀態(tài)O為提交文件不屬于任何一個(gè)任務(wù),狀態(tài)1為提交文件屬于其中唯一的一個(gè)任務(wù),狀態(tài)2為提交文件屬于多個(gè)任務(wù);
6.如權(quán)利要求5所述的方法,其特征在于所述每次選取網(wǎng)狀結(jié)構(gòu)圖(V,E)中強(qiáng)度最大 的邊及其相應(yīng)的兩個(gè)頂點(diǎn)進(jìn)行狀態(tài)合并的方法為1)如果兩個(gè)頂點(diǎn)都處于狀態(tài)0,則合并這兩個(gè)頂點(diǎn),并且合并后的頂點(diǎn)狀態(tài)仍然為狀 態(tài)0 ;2)如果其中一個(gè)頂點(diǎn)處于狀態(tài)0,另一個(gè)處于狀態(tài)1,則合并這兩個(gè)頂點(diǎn),并且合并后 的頂點(diǎn)狀態(tài)為狀態(tài)1 ;3)如果兩個(gè)頂點(diǎn)都處于狀態(tài)1,并且它們都屬于同一個(gè)任務(wù),則合并這兩個(gè)頂點(diǎn),并且 合并后的頂點(diǎn)狀態(tài)仍然為狀態(tài)1 ;4)如果其中一個(gè)頂點(diǎn)處于狀態(tài)0,另一個(gè)處于狀態(tài)2,則移除它們之間的邊;5)如果其中一個(gè)頂點(diǎn)處于狀態(tài)1,另一個(gè)處于狀態(tài)2,并且它們之間無時(shí)間沖突,則合 并這兩個(gè)頂點(diǎn),并且合并后的頂點(diǎn)狀態(tài)為狀態(tài)1 ;6)如果兩個(gè)頂點(diǎn)都處于狀態(tài)2,并且它們之間無時(shí)間沖突,則合并這兩個(gè)頂點(diǎn),并根據(jù) 任務(wù)的實(shí)際執(zhí)行時(shí)間與提交文件的提交時(shí)間來確定合并后頂點(diǎn)的狀態(tài)。
7.如權(quán)利要求6所述的方法,其特征在于利用遍歷方法來建立每?jī)蓚€(gè)頂點(diǎn)之間的邊; 采用鏈表結(jié)構(gòu)存儲(chǔ)所建立的邊。
8.如權(quán)利要求7所述的方法,其特征在于根據(jù)提交文件共同出現(xiàn)的頻率和時(shí)間信息來 共同確定所述提交文件間聯(lián)系的強(qiáng)弱程度。
9.如權(quán)利要求6所述的方法,其特征在于如果所述任務(wù)-提交數(shù)據(jù)集中仍然有提交文 件不屬于任何一個(gè)任務(wù)時(shí),則將該提交文件分配給執(zhí)行時(shí)間離它提交時(shí)間最近的任務(wù)。
10.如權(quán)利要求9所述的方法,其特征在于對(duì)于所述任務(wù)-提交數(shù)據(jù)集中提交文件屬于 多個(gè)任務(wù)的提交文件,則采用平均的方法將該提交文件分布到各個(gè)相關(guān)的任務(wù)上。
全文摘要
本發(fā)明公開了一種Qone數(shù)據(jù)庫(kù)生產(chǎn)率數(shù)據(jù)自動(dòng)生成方法,屬于計(jì)算機(jī)軟件工程領(lǐng)域。本方法為1)數(shù)據(jù)提取模塊從Qone數(shù)據(jù)庫(kù)中提取軟件項(xiàng)目數(shù)據(jù),從SVN代碼庫(kù)中提取軟件項(xiàng)目的代碼提交數(shù)據(jù);2)映射模塊對(duì)所提取數(shù)據(jù)進(jìn)行映射操作,建立任務(wù)-人力資源-提交數(shù)據(jù)集;3)映射模塊根據(jù)任務(wù)的實(shí)際執(zhí)行時(shí)間與提交文件的提交時(shí)間確定任務(wù)與提交之間狀態(tài),并建立網(wǎng)狀關(guān)系結(jié)構(gòu)圖(V,E),確定每個(gè)提交文件所對(duì)應(yīng)的任務(wù),生成任務(wù)-提交數(shù)據(jù)集;4)生產(chǎn)率數(shù)據(jù)生成模塊根據(jù)任務(wù)-提交數(shù)據(jù)集中每個(gè)任務(wù)上提交的數(shù)據(jù),統(tǒng)計(jì)出每個(gè)任務(wù)的生產(chǎn)率數(shù)據(jù)。本發(fā)明增強(qiáng)了軟件可信程度,使軟件開發(fā)具有更高的準(zhǔn)確性和客觀性。
文檔編號(hào)G06F17/30GK102122304SQ201110067910
公開日2011年7月13日 申請(qǐng)日期2011年3月21日 優(yōu)先權(quán)日2011年3月21日
發(fā)明者李明樹, 王青, 肖俊超, 黃輝 申請(qǐng)人:中國(guó)科學(xué)院軟件研究所