李 煒,吳群群,張以文
(安徽大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,合肥 230601)
隨著傳統(tǒng)開發(fā)與互聯(lián)網(wǎng)協(xié)作開發(fā)相結(jié)合的理念[1]被提出,軟件開發(fā)不再受限于小型群體,而是延伸到各個(gè)開發(fā)團(tuán)隊(duì)之間的共同協(xié)作[2-3],來(lái)自不同地域、不同組織的開發(fā)者依托互聯(lián)網(wǎng)為媒介,進(jìn)行開源軟件的在線協(xié)作開發(fā)[4-7],誕生了以眾包[8]、開發(fā)者社區(qū)為代表的群智協(xié)同開發(fā)平臺(tái)。開發(fā)者社區(qū)將地理位置上分散的開發(fā)者和以企業(yè)為代表的雇主結(jié)合起來(lái),以較少的成本調(diào)動(dòng)豐富的開發(fā)者資源。雇主將任務(wù)發(fā)布到開發(fā)者社區(qū),并將任務(wù)分解成一系列相關(guān)聯(lián)的子任務(wù)集合,在開發(fā)者社區(qū)進(jìn)行搜索匹配,最終尋找到合適的開發(fā)者完成軟件開發(fā)任務(wù)。以開發(fā)者社區(qū)GitHub 為例,它擁有超過(guò)1 000 萬(wàn)的開發(fā)者,共同協(xié)作完成了接近4 000 萬(wàn)的軟件開發(fā)項(xiàng)目[9]。在帶來(lái)巨大利益的同時(shí),開發(fā)者社區(qū)龐大的用戶、項(xiàng)目等資源數(shù)目,不可避免地造成了信息過(guò)載問(wèn)題,使得尋求合適的開發(fā)者變得困難。
在此背景下,對(duì)開發(fā)者能力評(píng)估以及開發(fā)者推薦技術(shù)的研究成為熱點(diǎn)。然而,開發(fā)者推薦具有新的特征:1)開發(fā)者能力具有明顯的動(dòng)態(tài)和不確定性;2)軟件開發(fā)的顯著特征是協(xié)作性,多個(gè)開發(fā)者共同協(xié)作完成軟件開發(fā)任務(wù)。因此,本文引入模糊評(píng)價(jià)思想[10],在優(yōu)化開發(fā)者能力評(píng)估結(jié)果的基礎(chǔ)上,將軟件開發(fā)過(guò)程描述為基于角色的協(xié)作(Role-Based Collaboration,RBC)[11]問(wèn)題并對(duì)其建模,從而優(yōu)化開發(fā)者推薦結(jié)果。
本文的主要工作如下:
1)針對(duì)開發(fā)者綜合能力值的動(dòng)態(tài)性和不確定性,首先,使用模糊層次分析(Fuzzy Analytic Hierarchy Process,F(xiàn)AHP)法構(gòu)建模糊判斷矩陣,得到開發(fā)者能力指標(biāo)權(quán)重,進(jìn)而求得開發(fā)者歷史綜合能力集合;然后,結(jié)合云模型理論,利用歐氏距離度量綜合能力云模型相似度,求得開發(fā)者完成各項(xiàng)任務(wù)的綜合能力值,最終得到開發(fā)者綜合能力評(píng)估矩陣。
2)將開發(fā)者協(xié)同開發(fā)過(guò)程描述為基于角色的協(xié)作問(wèn)題,并使用E-CARGO(Environment-Class,Agent,Role,Group,and Object)模型對(duì)其建模,提出了基于E-CARGO 模型的開發(fā)者推薦方法。在復(fù)雜的約束條件下,通過(guò)cplex 優(yōu)化包對(duì)開發(fā)者推薦問(wèn)題求解,最終得到開發(fā)者推薦矩陣。
隨著互聯(lián)網(wǎng)協(xié)作開發(fā)浪潮的興起,開發(fā)者社區(qū)資源和人員數(shù)量呈指數(shù)型增長(zhǎng),造成信息過(guò)載,按任務(wù)需求匹配合適的開發(fā)者變得困難,于是,將推薦技術(shù)引入開發(fā)者社區(qū)應(yīng)運(yùn)而生。Sun 等[12]提出了一種名為EDR SI(Enhancing Developer Recommendation with Supplementary Information)的方法,通過(guò)考慮開發(fā)人員的專業(yè)知識(shí)和開發(fā)習(xí)慣來(lái)增強(qiáng)開發(fā)人員推薦。Zhang 等[13]提出了 DevRec(Developer Recommendation system for open source repositories)混合推薦系統(tǒng),將基于開發(fā)活動(dòng)的方法和基于知識(shí)共享活動(dòng)的方法相結(jié)合,為開源項(xiàng)目推薦合適的開發(fā)人員;此外,基于協(xié)同過(guò)濾(Collaborative Filtering,CF)[14-16]的開發(fā)者推薦取得了巨大成功,首先計(jì)算待完成任務(wù)和已完成任務(wù)之間的相似性,然后為待完成任務(wù)分配與之相似的已完成任務(wù)的開發(fā)者。Xie等[17]提出了一種多關(guān)系融合的開發(fā)者推薦方法,該方法考慮了多元隱式關(guān)系,然后基于聯(lián)合矩陣分解來(lái)整合這些關(guān)系,并基于深度神經(jīng)網(wǎng)絡(luò)來(lái)生成推薦結(jié)果。Zhang 等[18]提出了一種基于元學(xué)習(xí)的策略模型,它首先過(guò)濾掉那些不太可能參與給定挑戰(zhàn)的開發(fā)者,然后推薦可能贏得挑戰(zhàn)的前k名開發(fā)者?,F(xiàn)有方法更注重學(xué)習(xí)開發(fā)者的專業(yè)能力以及與任務(wù)間的交互信息,忽略了開發(fā)者之間的協(xié)作性,造成任務(wù)的整體完成質(zhì)量不高。為解決開發(fā)者間協(xié)作性低的問(wèn)題,彌補(bǔ)任務(wù)完成質(zhì)量不高的缺陷,本文考慮開發(fā)者之間的協(xié)作性并將開發(fā)者協(xié)作開發(fā)描述為RBC 問(wèn)題,以優(yōu)化整體任務(wù)完成質(zhì)量為導(dǎo)向,進(jìn)行開發(fā)者推薦。
RBC 是一種計(jì)算方法,從角色的角度出發(fā),考慮角色間合作及約束條件,使用一系列方法對(duì)真實(shí)世界的復(fù)雜關(guān)系進(jìn)行模擬、分解。2006 年,朱海濱等[11,19]在RBC 的基礎(chǔ)上,提出E-CARGO 模型并迅速成為研究RBC 問(wèn)題中使用最為廣泛的框架。E-CARGO 模型將RBC 系統(tǒng)定義為∑::=〈C,O,A,M,R,E,G,s0,H〉,各元素含義為:C是類(Class);O是對(duì)象(Object);A是代理(Agent);M是消息(Message);R是角色(Role);E是系統(tǒng)環(huán)境(Environment);G是群組(Group);s0是協(xié)作系統(tǒng)的初始狀態(tài);H是用戶。
使用E-CARGO 模型建模RBC 系統(tǒng)的關(guān)鍵在于解決組角色分配問(wèn)題,即在復(fù)雜約束條件下,為角色分配滿足需求的多個(gè)代理,進(jìn)而形成一個(gè)群組,群組中各代理之間相互協(xié)作,共同完成協(xié)作任務(wù)[11,19-20]。近年來(lái),使用E-CARGO 模型解決組角色分配問(wèn)題的研究包括:組角色分配(Group Role Assignment,GRA)[20];代理間包含沖突的組角色分配(GRA with Conflicting Agents on Roles,GRACAR)[21];組多角色分配(Group Multi-Role Assignment,GMRA)[22],包含沖突和合作因素的組角色分配[23];樹形結(jié)構(gòu)的任務(wù)分配[24];考慮代理偏好的組角色分配[25]等。最近,朱海濱等[26]對(duì)具有角色和代理雙重沖突的組多角色分配(group multi-role assignment with conflicting roles and agents)問(wèn)題進(jìn)行了研究。開發(fā)者推薦問(wèn)題的本質(zhì),是研究如何將任務(wù)分配給合適的開發(fā)者,可以轉(zhuǎn)化為組角色分配問(wèn)題。因此,本文首次將E-CARGO 模型應(yīng)用到開發(fā)者推薦場(chǎng)景中,結(jié)合cplex 優(yōu)化包求解開發(fā)者推薦問(wèn)題。
假設(shè)雇主將任務(wù)Ω發(fā)布到開發(fā)者社區(qū)。首先,將任務(wù)Ω分解成相關(guān)聯(lián)的子任務(wù)集合,即Ω={Ω1,Ω2,…,Ωn},Ωn表示第n個(gè)子任務(wù),每個(gè)子任務(wù)由一個(gè)或多個(gè)開發(fā)者來(lái)協(xié)作完成;然后,從開發(fā)者社區(qū)獲取開發(fā)者歷史信息,令Λ={Λ1,Λ2,…,Λm},Λm代表第m個(gè)開發(fā)者,每個(gè)開發(fā)者一次只能完成一項(xiàng)子任務(wù)。令表示開發(fā)者Λm完成子任務(wù)Ωn的第k個(gè)能力指標(biāo)值。由于每個(gè)雇主的要求不同,開發(fā)者完成同一項(xiàng)任務(wù)獲得的評(píng)分存在差異,并且不同開發(fā)者的能力不盡相同,完成同一項(xiàng)任務(wù)的質(zhì)量也存在差異。因此,針對(duì)開發(fā)者完成各項(xiàng)任務(wù)的能力度量是首要重點(diǎn)。最后,使用E-CARGO 模型建模開發(fā)者和任務(wù)間的映射關(guān)系,求解開發(fā)者推薦問(wèn)題。
將E-CARGO 模型應(yīng)用于開發(fā)者推薦場(chǎng)景中,重點(diǎn)關(guān)注E、C、O、R、A、G六個(gè)元素,賦予的實(shí)際含義分別為:E表示求解開發(fā)者推薦所涉及的各種問(wèn)題環(huán)境;C是一組將概念進(jìn)行抽象的類,和E關(guān)聯(lián);O是實(shí)例化C的具體對(duì)象;R表示開發(fā)子任務(wù)集合;A是候選開發(fā)者集合;G是一個(gè)開發(fā)組,即完成開發(fā)者推薦流程后,所有開發(fā)者共同協(xié)作完成任務(wù),形成一個(gè)開發(fā)團(tuán)隊(duì)?;谝陨隙x,使用E-CARGO 進(jìn)行建模,流程如圖1 所示:首先,將任務(wù)分解成相關(guān)聯(lián)的子任務(wù)集合并發(fā)布到開發(fā)者社區(qū);然后,搜索候選開發(fā)者集合,為每項(xiàng)任務(wù)推薦合適的開發(fā)者。其中,將任務(wù)映射為角色,任務(wù)集合Ω={Ω1,Ω2,…,Ωn}對(duì)應(yīng)角色集合R={R1,R2,…,Rn};將開發(fā)者映射為代理,開發(fā)者集合Λ={Λ1,Λ2,…,Λm}對(duì)應(yīng)代理集合A={A1,A2,…,Am};將開發(fā)者完成任務(wù)映射為代理扮演角色,開發(fā)者能力指標(biāo)集合SS=對(duì)應(yīng)代理資格值集合VV=。到此,E-CARGO 建模完成。于是,可使用求解組角色分配的方法求解開發(fā)者推薦問(wèn)題,最終通過(guò)cplex 得到開發(fā)者推薦結(jié)果。求解開發(fā)者推薦問(wèn)題還需以下定義:
圖1 基于E-CARGO的開發(fā)者推薦模型Fig.1 Developer recommendation model based on E-CARGO
定義1任務(wù)范圍向量L。L是n維整數(shù)向量,L[j](0≤j
定義2開發(fā)者綜合能力評(píng)估矩陣Q。Q是m×n維的矩陣,Q[i,j](0≤i 定義3任務(wù)整體完成質(zhì)量值ρ。ρ代表開發(fā)者之間協(xié)作完成各項(xiàng)子任務(wù)后的任務(wù)總體質(zhì)量。ρ越大,代表任務(wù)完成質(zhì)量越高。 定義4開發(fā)者推薦矩陣T。T是m×n維的矩陣,表示開發(fā)者推薦結(jié)果,T[i,j](0≤i 定義5沖突矩陣C。C是m×m維的矩陣,C[i,j](0≤i 基于以上定義,開發(fā)者推薦問(wèn)題即求得一個(gè)開發(fā)者推薦矩陣T。目標(biāo)函數(shù)如下: 其中:式(2)表示開發(fā)者只有被推薦和不被推薦兩種可能;式(3)表示開發(fā)者人數(shù)應(yīng)當(dāng)滿足任務(wù)范圍向量L的約束;式(4)表示每個(gè)開發(fā)者一次只能完成一個(gè)任務(wù);式(5)表示完成同一個(gè)任務(wù)的兩個(gè)開發(fā)者應(yīng)當(dāng)滿足沖突矩陣C的約束。 開發(fā)者能力評(píng)估矩陣Q的計(jì)算過(guò)程主要包含兩個(gè)部分:首先基于各個(gè)專家的模糊判斷矩陣X,運(yùn)用FAHP 來(lái)計(jì)算指標(biāo)的權(quán)重向量W;然后基于云模型理論和權(quán)重向量W即可獲得開發(fā)者能力評(píng)估矩陣Q。 2.3.1 基于FAHP的指標(biāo)權(quán)重計(jì)算 開發(fā)者在項(xiàng)目上的能力體現(xiàn)為不同的度量指標(biāo),而每個(gè)指標(biāo)的重要程度明顯又是不同的,因此,在對(duì)開發(fā)者綜合能力評(píng)估之前,需要先計(jì)算各個(gè)指標(biāo)的重要性。本文采用經(jīng)典的FAHP 方法[10]來(lái)計(jì)算各項(xiàng)能力指標(biāo)的權(quán)重。FAHP 是層次分析(Analytic Hierarchy Process,AHP)法[27]的一個(gè)衍生,是定性和定量相結(jié)合的多評(píng)價(jià)指標(biāo)優(yōu)選排序方法。FAHP 方法確定各項(xiàng)指標(biāo)權(quán)重的步驟如下: 步驟1 首先,依托FAHP 方法,根據(jù)能力評(píng)估的具體任務(wù)構(gòu)建合適的層次模型,即專家對(duì)開發(fā)者能力量化的依據(jù)。如圖2 所示,層次模型自上而下分別為目標(biāo)層、中間層和最低層。其中目標(biāo)層是開發(fā)者能力指標(biāo),中間層包括基本指標(biāo),任務(wù)完成質(zhì)量指標(biāo)以及任務(wù)完成效率指標(biāo),最低層是對(duì)中間層的細(xì)粒度刻畫。然后,專家對(duì)n個(gè)指標(biāo)進(jìn)行評(píng)估,即可獲得模糊判斷矩陣X,其中,X中的元素xij(1≤i≤n,1≤j≤n)是集合{0.1,0.2,…,0.9}中的一個(gè)元素。具體地,若xij∈[0.1,0.5),則表示指標(biāo)i沒(méi)有指標(biāo)j重要;若xij∈(0.5,0.9],則表示指標(biāo)i比指標(biāo)j重要;若xij=0.5,表示指標(biāo)i和指標(biāo)j同等重要。特別地,如果xii=0.5,xij+xji=1,則稱X為模糊互補(bǔ)判斷矩陣。如果沒(méi)有特別說(shuō)明,本文采用的均為模糊互補(bǔ)判斷矩陣。 圖2 開發(fā)者能力指標(biāo)層次結(jié)構(gòu)Fig.2 Developer ability index hierarchical structure 接下來(lái),根據(jù)得到的模糊互補(bǔ)判斷矩陣X,即可計(jì)算出指標(biāo)權(quán)重,計(jì)算公式如下所示: 步驟2 根據(jù)等式(6)求得的指標(biāo)權(quán)重W是否合理,還應(yīng)將模糊互補(bǔ)判斷矩陣X與其對(duì)應(yīng)的特征矩陣進(jìn)行相容性驗(yàn)證。 定義6給定兩個(gè)矩陣A=(aij)n×n和B=(bij)n×n,規(guī)定: 為A與B的相容性指標(biāo)。 定義7設(shè)模糊互補(bǔ)判斷矩陣X的權(quán)重向量為W=(w1,w2,…,wn),滿足wi≥0,=1(1≤i≤n)。則X的特征矩陣W*=定義如下: 在實(shí)際問(wèn)題中,一般由m(m≥2)個(gè)專家對(duì)某一特定任務(wù)進(jìn)行指標(biāo)權(quán)重評(píng)估,建立m個(gè)模糊互補(bǔ)判斷矩陣Xk=,從而求得對(duì)應(yīng)的指標(biāo)權(quán)重向量Wk=和特征矩陣Wk*。為驗(yàn)證指標(biāo)權(quán)重的合理性,還需完成如下兩個(gè)步驟: 1)m個(gè)模糊互補(bǔ)判斷矩陣與其相對(duì)應(yīng)的特征矩陣的相容性驗(yàn)證: I(Xk,Wk*)≤α;1≤k≤m 2)m個(gè)模糊互補(bǔ)判斷矩陣之間的相容性驗(yàn)證: I(Xk,Xp)≤α;k≠p,1≤k,p≤m 其中:α一般取值為0.1。當(dāng)滿足以上兩個(gè)條件時(shí),m個(gè)指標(biāo)權(quán)重集的均值則可以作為某一特定任務(wù)的指標(biāo)權(quán)重值。最終,確定指標(biāo)權(quán)重向量為: 其中:wi=。 舉例說(shuō)明,每完成一項(xiàng)任務(wù),雇主會(huì)對(duì)開發(fā)者的溝通協(xié)作能力、專業(yè)技能水平、任務(wù)完成質(zhì)量、任務(wù)完成效率四個(gè)指標(biāo)進(jìn)行打分。獲取開發(fā)者完成某任務(wù)的歷史能力指標(biāo)評(píng)價(jià)集合SS={(0.5,0.5,0.6,0.6),(0.6,0.8,0.8,0.9)},假設(shè)通過(guò)FAHP 方法計(jì)算出指標(biāo)權(quán)重向量W=(0.2,0.2,0.3,0.3),最終,加權(quán)求和得到開發(fā)者的綜合能力集合QS={0.56,0.79}。 2.3.2 基于云模型理論的綜合能力評(píng)估 在2.3.1 節(jié)中,通過(guò)FAHP 方法得到了開發(fā)者針對(duì)某一特定任務(wù)的客觀合理的綜合能力評(píng)價(jià)集合QS,然而,Q矩陣的建立需要的是單一的綜合能力評(píng)價(jià)值,因此,為了準(zhǔn)確衡量開發(fā)者Λm對(duì)某一子任務(wù)Ωn的勝任能力,引入了云模型理論[28-29]。云模型由三個(gè)數(shù)值特征組成,即期望Ex(expectation)、熵En(entropy)和超熵He(hyper entropy),定義為cm={Ex,En,He}。Ex是綜合能力最具代表性的值,En表示綜合能力的粒度范圍,He描述了綜合能力粒度的不確定性。眾多云滴組成綜合能力云模型,開發(fā)者綜合能力值可被視為云滴,發(fā)送到反向云生成器中,綜合能力云模型的三個(gè)數(shù)值特征可由如下公式計(jì)算: 其中:Ex是集合QS的平均值;σ是Ex的標(biāo)準(zhǔn)差;S2是Ex的樣本方差;total是集合QS 中的元素個(gè)數(shù)。為了推薦合適的開發(fā)者完成任務(wù),通過(guò)計(jì)算綜合能力云模型間的相似性來(lái)識(shí)別綜合能力差異是至關(guān)重要的。本文使用歐氏距離計(jì)算相似性,公式如下: 將所有候選開發(fā)者的綜合能力值轉(zhuǎn)化為綜合能力云模型,若歷史記錄中開發(fā)者只完成過(guò)一次子任務(wù),則設(shè)p為唯一的綜合能力值,得到一個(gè)具體的綜合能力云模型{p,0,0}。因此,對(duì)m個(gè)開發(fā)者進(jìn)行綜合能力評(píng)價(jià)的云模型矩陣可以描述為: 其中:cmi,j=是開發(fā)者Λi對(duì)于子任務(wù)Ωj的綜合能力云模型。由于開發(fā)者狀態(tài)存在波動(dòng)性以及任務(wù)類型的不同,同一開發(fā)者執(zhí)行多次任務(wù)會(huì)得到不同的綜合能力值。而一個(gè)好的開發(fā)者應(yīng)當(dāng)提供穩(wěn)定的綜合能力值。En和He的值越小,綜合能力值越穩(wěn)定,根據(jù)這一性質(zhì),定義cm+代表最好和cm-代表最壞情況下的理想解: 因此,開發(fā)者Λi對(duì)于子任務(wù)Ωj的勝任能力可用如下公式計(jì)算: Q[i,j]的值越大,說(shuō)明開發(fā)者Λi完成子任務(wù)Ωj的質(zhì)量越高,Q[i,j]即作為Q矩陣中開發(fā)者Λi完成子任務(wù)Ωj的綜合能力值。最終,完成Q矩陣的取值。 基于上述分析,解決開發(fā)者推薦問(wèn)題的關(guān)鍵步驟描述如下: 步驟1 確定開發(fā)任務(wù)的范圍向量L,開發(fā)者之間的沖突矩陣C。 步驟2 利用FAHP 方法分析指標(biāo)間的相對(duì)重要程度,并根據(jù)式(9)計(jì)算出開發(fā)者能力指標(biāo)權(quán)重,最終加權(quán)求和得到開發(fā)者歷史綜合能力評(píng)價(jià)集合。 步驟3 進(jìn)一步將開發(fā)者綜合能力值轉(zhuǎn)化為綜合能力云模型,通過(guò)式(14)計(jì)算出開發(fā)者對(duì)每個(gè)任務(wù)的勝任能力,得到開發(fā)者綜合能力評(píng)估矩陣Q。 步驟4 在滿足式(2)~(5)的約束條件下求解式(1),最終得到開發(fā)者推薦矩陣T。 依據(jù)上述步驟,本文使用Java 中的cplex 優(yōu)化包來(lái)實(shí)際獲得一個(gè)開發(fā)者推薦問(wèn)題的解決方案。首先,確定cplex 所需的約束系數(shù)、目標(biāo)函數(shù)系數(shù)、右側(cè)約束值以及上界和下界。通過(guò)Q、L、C、T來(lái)定義cplex 中的線性規(guī)劃問(wèn)題。其中:T是一個(gè)變量,它的上界為1,下界為0。Q是目標(biāo)函數(shù)系數(shù)。然后,添加約束和目標(biāo)表達(dá)式,開發(fā)者推薦問(wèn)題的目標(biāo)應(yīng)使用矩陣C、Q、T的一維數(shù)組形式以及L的線性表達(dá)式來(lái)描述。偽代碼如算法1 所示。 不同于傳統(tǒng)的推薦方法,基于E-CARGO 模型的開發(fā)者推薦的重點(diǎn)是考慮推薦完成后開發(fā)者之間的協(xié)作性,即開發(fā)者協(xié)同合作以求高質(zhì)量地完成特定的項(xiàng)目。因此,為了解決這一問(wèn)題,本文考慮了開發(fā)者之間的協(xié)作性并使用E-CARGO 建模,以優(yōu)化整體任務(wù)完成質(zhì)量為導(dǎo)向,進(jìn)行了開發(fā)者推薦。通過(guò)上述cplex 求解算法可以得到任務(wù)完成質(zhì)量達(dá)最大值ρ的推薦矩陣T。 假設(shè)某公司向開發(fā)者社區(qū)發(fā)布一項(xiàng)Web 開發(fā)任務(wù)Ω={Ω1,Ω2,Ω3},共有5 位開發(fā)者愿意接受任務(wù),構(gòu)成候選開發(fā)者集合Λ={Λ1,Λ2,Λ3,Λ4,Λ5}。由于Ω1、Ω2任務(wù)較重,各需2 人一起完成,任務(wù)范圍向量L=(2,2,1)。指標(biāo)集合k={k1,k2,k3,k4},分別表示溝通協(xié)作能力、專業(yè)技能水平、任務(wù)完成質(zhì)量、任務(wù)完成效率。通過(guò)開發(fā)者社區(qū)獲取各開發(fā)者完成同類任務(wù)的歷史能力指標(biāo)評(píng)價(jià)信息如表1 所示。 表1 能力指標(biāo)評(píng)價(jià)信息Tab.1 Ability index evaluation information 為了評(píng)估指標(biāo)權(quán)重,公司邀請(qǐng)兩位領(lǐng)域?qū)<覍?duì)各指標(biāo)進(jìn)行一一比較,得到模糊互補(bǔ)判斷矩陣。由第一位專家給出的模糊互補(bǔ)判斷矩陣為: 根據(jù)式(6)計(jì)算出指標(biāo)權(quán)重向量W1=(0.275,0.225,0.250,0.250),根據(jù)式(8)得到X1的特征矩陣為: 由式(7)得到I(X1,W1*)=0.056 <0.1,滿足相容性,所以指標(biāo)權(quán)重向量W1的計(jì)算是正確合理的。同理,第二位專家給出的模糊互補(bǔ)判斷矩陣為: 計(jì)算出權(quán)重向量W2=(0.275,0.242,0.250,0.233),X2的特征矩陣為: I(X2,W2*)=0.038 <0.1,滿足相容性,故W2的計(jì)算正確合理。驗(yàn)證X1、X2的相容性I(X1,X2)=0.038 <0.1,滿足相容性。最后,綜合兩位專家的評(píng)估結(jié)果,根據(jù)式(9)確定最終指標(biāo)權(quán)重向量W=(0.275,0.234,0.250,0.241)。對(duì)表1 進(jìn)行加權(quán)求和,得到開發(fā)者歷史綜合能力集合如表2所示。 表2 開發(fā)者歷史綜合能力集合Tab.2 Historical comprehensive ability set of developers 根據(jù)式(10),計(jì)算出各開發(fā)者對(duì)各子任務(wù)的綜合能力云模型如表3 所示。 表3 各開發(fā)者對(duì)各子任務(wù)的綜合能力云模型Tab.3 Comprehensive ability cloud model of developers for different subtasks 根據(jù)式(13),得到綜合能力云模型的理想解為:cm+={0.809,0,0},cm-={0.626,0.081,0.03}。再根據(jù)式(14)得到開發(fā)者綜合能力評(píng)估矩陣Q如下所示: 另外,考慮開發(fā)者之間可能存在的沖突因素,添加沖突矩陣為: 最終,通過(guò)cplex 計(jì)算出任務(wù)完成質(zhì)量最大值ρ=3.236,得到開發(fā)者推薦矩陣T如表4 所示。 表4 開發(fā)者推薦矩陣TTab.4 Developer recommendation matrix T 因此,推薦開發(fā)者Λ3、Λ5完成子任務(wù)Ω1;開發(fā)者Λ1、Λ4完成子任務(wù)Ω2,開發(fā)者Λ2完成子任務(wù)Ω3。共同協(xié)作,得到最大的任務(wù)完成質(zhì)量ρ=3.236。 為了驗(yàn)證所提方法的有效性和性能,通過(guò)使用仿真數(shù)據(jù),將本文方法與窮舉法及貪心法[21,29]相比較,進(jìn)行實(shí)驗(yàn)分析。本實(shí)驗(yàn)在采用Intel Core i5-6200U 處理器@2.3 GHz 和8 GB 內(nèi)存的聯(lián)想筆記本上執(zhí)行,并使用Windows 10 操作系統(tǒng)、Eclipse 開發(fā)環(huán)境和Java 開發(fā)語(yǔ)言。在每一輪測(cè)試中,重復(fù)實(shí)驗(yàn)100 次,每一次的Q、L、C隨機(jī)生成,并記錄下問(wèn)題求解所花費(fèi)的最大時(shí)間、最小時(shí)間、平均時(shí)間。實(shí)驗(yàn)設(shè)定了不同的沖突率、不同的任務(wù)數(shù)和開發(fā)者人數(shù)比率,對(duì)比本文方法與窮舉法、貪心法的求解時(shí)間,N/A 表示超過(guò)30 min 沒(méi)有得到結(jié)果,同時(shí)對(duì)比本文方法求解值大于及等于貪心法的次數(shù),實(shí)驗(yàn)數(shù)據(jù)如表5 所示。 從表5 可以看出:隨著開發(fā)者人數(shù)的增加,求解所耗費(fèi)的時(shí)間也在增長(zhǎng)。本文方法性能優(yōu)于窮舉法,例如,當(dāng)m=10,n=5,沖突率為0.1 時(shí),本文方法平均求解時(shí)間為11.52 ms,窮舉法平均求解時(shí)間為86.96 ms。因?yàn)楦F舉法考慮每一步中的所有情況,所以耗費(fèi)大量時(shí)間,并且只有當(dāng)m=10 時(shí),窮舉法才可以在30 min 內(nèi)獲得想要的結(jié)果,因此,窮舉法不適用于實(shí)際的開發(fā)者社區(qū)中。從表5 還可以看出,隨著沖突率的上升,本文方法所耗費(fèi)的時(shí)間也在增加,而窮舉法所耗費(fèi)的時(shí)間與沖突率之間沒(méi)有關(guān)聯(lián)。和貪心法進(jìn)行對(duì)比,由于貪心算法只考慮小范圍內(nèi)的局部最優(yōu)解,所以求解時(shí)間更短,但在ms 的量級(jí)上可以忽略不計(jì);而且貪心法獲得最優(yōu)解的次數(shù)遠(yuǎn)遠(yuǎn)小于本文方法,當(dāng)問(wèn)題增大到一定規(guī)模時(shí),貪心法并不能獲得全局最優(yōu)解,這說(shuō)明,本文方法是優(yōu)于貪心法的。 從表5 還可以發(fā)現(xiàn),隨著n∶m的比值增大,問(wèn)題求解的時(shí)間耗費(fèi)更多,例如,當(dāng)m=40,n=13,沖突率為0.1(n∶m=1∶3)變?yōu)閙=40,n=20,沖突率為0.1(n∶m=1∶2)時(shí),本文方法的平均求解時(shí)間由45.99 ms 增長(zhǎng)為74.03 ms??梢妌和m的比值對(duì)本實(shí)驗(yàn)的性能有很大影響。為了詳細(xì)研究其影響,設(shè)立了兩組實(shí)驗(yàn)進(jìn)行對(duì)比,每一組的m由10 變?yōu)?00,步長(zhǎng)為10,n和m的比值分別為1∶5 及1∶3,沖突率為0.1,每一組重復(fù)實(shí)驗(yàn)300 次,實(shí)驗(yàn)結(jié)果如圖3 所示。 表5 本文方法與窮舉法及貪心法求解性能對(duì)比Tab.5 Solving performance comparison among the proposed method,exhaustive method and greedy method 由圖3 可以觀察到,隨著開發(fā)者人數(shù)和任務(wù)數(shù)的增長(zhǎng),求解時(shí)間也在增加,說(shuō)明在實(shí)際求解過(guò)程中,隨著問(wèn)題規(guī)模的增大,所耗費(fèi)的時(shí)間也會(huì)增加。同時(shí),當(dāng)任務(wù)數(shù)和開發(fā)者人數(shù)的比率(n∶m)出現(xiàn)增長(zhǎng),所耗費(fèi)的求解時(shí)間也會(huì)增加,例如,當(dāng)m=100,比率由1∶5 增長(zhǎng)為1∶3 時(shí),最大、最小、平均求解時(shí)間由0.79 s、0.10 s、0.17 s 增加到1.28 s、0.20 s、0.30 s。盡管隨著問(wèn)題規(guī)模增大,耗費(fèi)時(shí)間會(huì)增加,但從實(shí)驗(yàn)結(jié)果來(lái)看,問(wèn)題規(guī)模即使提升到最大時(shí),所耗費(fèi)的最大時(shí)間也僅為1.28 s,完全在可接受范圍內(nèi)。因此,本文方法能夠以較快的速度求得最優(yōu)的開發(fā)者推薦結(jié)果,在實(shí)際的應(yīng)用中是有效的且性能良好的。 圖3 n∶m不同比值的性能對(duì)比Fig.3 Performance comparison of different ratios of n∶m 本文考慮軟件開發(fā)具有協(xié)作性這一顯著特點(diǎn),將其描述為基于角色的協(xié)作系統(tǒng),并使用E-CARGO 模型對(duì)其建模,通過(guò)E-CARGO 模型中求解組角色分配的方法解決開發(fā)者推薦問(wèn)題,提出了一種基于E-CARGO 模型的開發(fā)者推薦方法。首先使用E-CARGO 模型建模開發(fā)者與任務(wù)間的映射關(guān)系,然后結(jié)合FAHP 方法和云模型理論計(jì)算開發(fā)者的綜合能力值,最終通過(guò)cplex 得到最優(yōu)開發(fā)者推薦結(jié)果。在未來(lái)的研究工作中,將考慮開發(fā)者與任務(wù)間以及任務(wù)與任務(wù)間存在的沖突因素,解決在更為復(fù)雜約束條件下的開發(fā)者推薦問(wèn)題。2.3 開發(fā)者綜合能力評(píng)估矩陣Q
2.4 開發(fā)者推薦問(wèn)題求解
3 實(shí)驗(yàn)與結(jié)果分析
3.1 實(shí)例
3.2 實(shí)驗(yàn)分析
4 結(jié)語(yǔ)