一種整合主觀和客觀評估的需求優(yōu)先級排序方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及軟件需求工程技術(shù)領(lǐng)域,尤其涉及一種基于整合主觀重要性評估和客 觀影響力評估的需求優(yōu)先級排序方法及系統(tǒng)。
【背景技術(shù)】
[0002] 需求工程是當(dāng)今軟件工程中面臨的一個關(guān)鍵問題,根據(jù)美國軟件行業(yè)的一項(xiàng)調(diào)查 顯示,在8000多個項(xiàng)目中,有三分之一的項(xiàng)目沒能完成,即使那些完成的項(xiàng)目,也有一半的 項(xiàng)目沒有成功實(shí)施。在導(dǎo)致這些項(xiàng)目失敗的原因中,與需求相關(guān)的原因占到了 45%。需求 變更和估算不準(zhǔn)確是導(dǎo)致軟件開發(fā)失敗的兩個最主要的原因。因此,在信息系統(tǒng)的開發(fā)過 程中,如何完整準(zhǔn)確地獲取客戶需求,如何在現(xiàn)實(shí)的各種條件約束下,對待實(shí)現(xiàn)需求進(jìn)行優(yōu) 先級排序,選擇出最有價(jià)值的需求優(yōu)先滿足,是軟件開發(fā)人員面臨的一個非常困難而且關(guān) 鍵的問題。
[0003] 在需求工程中,參與的涉眾包括領(lǐng)域?qū)<?、客戶、軟件開發(fā)人員以及扮演其他角色 的相關(guān)人員。這些涉眾具有不同的知識背景、不同的關(guān)注點(diǎn),對系統(tǒng)的利益訴求也不盡相 同,對需求的重要程度認(rèn)識也很難達(dá)成一致,導(dǎo)致需求的優(yōu)先級評價(jià)受主觀因素影響較大; 其次,需求優(yōu)先級評價(jià)往往先于系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn),缺少評價(jià)的客觀指標(biāo)體系,要求涉眾對需 求的實(shí)現(xiàn)成本進(jìn)行準(zhǔn)確預(yù)測存在較大困難;第三,需求之間往往存在千絲萬縷的聯(lián)系,割裂 聯(lián)系,僅比較各需求單元本身的重要程度,會帶來較大誤差。因此需求優(yōu)先級排序一直是困 擾需求工程師的關(guān)鍵問題之一。
[0004] 需求優(yōu)先級排序是為了在軟件開發(fā)人員和客戶之間針對需求的效益成本最大化 問題以及在沒有更多可用資源情況下如何選擇優(yōu)先實(shí)現(xiàn)的需求而提出的一種解決方案。通 過去除那些不必要的需求并且簡化那些不必要的復(fù)雜部分達(dá)到快速開發(fā)軟件的目的。
[0005] 目前,研究者提出了許多技術(shù)用于輔助需求優(yōu)先級的確定。
[0006] 第一類是成本效益需求優(yōu)先級評估法。這類方法通過建立每個需求的相對價(jià)值和 相對費(fèi)用,優(yōu)先選擇那些以最小的費(fèi)用產(chǎn)生出最大產(chǎn)品價(jià)值的需求。但由于需求價(jià)值和費(fèi) 用估計(jì)困難,成本價(jià)值比估計(jì)容易產(chǎn)生誤差;同時需求之間存在復(fù)雜的依賴關(guān)系,簡單淘汰 性價(jià)比較低的需求可能導(dǎo)致系統(tǒng)功能不完整或無法實(shí)現(xiàn)。
[0007] 第二類是需求優(yōu)先級成對比較法ΑΗΡ。這類方法通過將需求集合中所有的需求進(jìn) 行成對比較,而最終確定需求優(yōu)先級。但當(dāng)需求多于24個時,通過兩兩比較來計(jì)算就變得 不合實(shí)際了。由此衍生出層次式需求優(yōu)先級成對比較法等各種方法,能夠較好地解決同層 需求過多的問題,但隨之而來的另一個問題是,面對大型系統(tǒng)需求繁多,過多的層次會導(dǎo)致 深層次的需求優(yōu)先級將大大低于淺層次的需求優(yōu)先級而容易遭淘汰,但它們又往往是實(shí)現(xiàn) 上層需求不可或缺的,從而導(dǎo)致方法失靈。
[0008] 第三類方法是功能質(zhì)量展開法QFD,通過關(guān)系矩陣將需求映射到設(shè)計(jì)、生產(chǎn)屬性 上,從而確定需求重要度的方法。QFD方法關(guān)鍵在于構(gòu)建質(zhì)量屋,通過從需求的重要性、與競 爭對手產(chǎn)品的需求比較、確定產(chǎn)品設(shè)計(jì)屬性的改進(jìn)方向、估計(jì)實(shí)現(xiàn)難度等方面計(jì)算需求重 要度。該方法避免了使用比較矩陣進(jìn)行逐對比較的繁瑣過程,重點(diǎn)分析了設(shè)計(jì)屬性之間的 相互作用關(guān)系,卻忽略了需求間的相互關(guān)系,只適合同層需求的重要性評估。
[0009] 第四類方法是基于依賴關(guān)聯(lián)的需求優(yōu)先級排序。這類方法首先需要定義需求之間 存在的關(guān)系類型,然后根據(jù)定義通過成對比較確定需求間的關(guān)聯(lián),最后根據(jù)關(guān)聯(lián)性強(qiáng)弱和 關(guān)聯(lián)邊的多少確定優(yōu)先級。該類方法由于也需要進(jìn)行成對比較,當(dāng)需求較多時,工作量仍然 非常大;同時僅僅根據(jù)關(guān)聯(lián)性強(qiáng)弱和關(guān)聯(lián)邊的多少確定優(yōu)先級也缺乏對需求本身屬性的考 慮,容易使結(jié)果產(chǎn)生較大偏差。
【發(fā)明內(nèi)容】
[0010] 針對上述存在的技術(shù)問題,本發(fā)明的目的是提供一種整合主觀影響力評估和客觀 重要性評估的需求優(yōu)先級排序方法及系統(tǒng),一方面,通過構(gòu)造軟件屬性分解樹,可以增強(qiáng)需 求之間的可比性,從而提高優(yōu)先級評價(jià)的可操作性和準(zhǔn)確性;另一方面,利用機(jī)器學(xué)習(xí)算法 生成需求主觀影響力評估所需的需求初始優(yōu)先級計(jì)算公式,提高軟件屬性權(quán)重分配的科學(xué) 性,從而降低需求主觀影響力評估的難度;再者,能夠利用對需求間依賴關(guān)系的鏈路分析, 并根據(jù)依賴的方向和強(qiáng)度自動計(jì)算需求影響力程度,彌補(bǔ)需求優(yōu)先級主觀評價(jià)可能受到涉 眾知識、經(jīng)驗(yàn)局限而出現(xiàn)較大偏差的缺陷。
[0011] 為達(dá)到上述目的,本發(fā)明采用如下的技術(shù)方案:
[0012] -種整合主觀和客觀評估的需求優(yōu)先級排序方法,包括以下步驟:
[0013] 步驟1,確定需求對與相對優(yōu)先級的排序,得到已排序需求對;
[0014] 設(shè)有需求對(a,b),包括需求a和b,相應(yīng)的相對優(yōu)先級河ω,6)定義如下,
[0015]
[0016] 步驟2,確定針對軟件屬性的需求重要性排序,包括根據(jù)軟件屬性分解樹,從其中 選擇關(guān)注的屬性作為排序規(guī)則;按照已選擇的排序規(guī)則,在每個排序規(guī)則下分別確定相應(yīng) 需求排序結(jié)果;
[0017] 步驟3,進(jìn)行需求主觀重要性評估,包括基于已排序需求對和已選排序規(guī)則下需求 排序結(jié)果,利用機(jī)器學(xué)習(xí)技術(shù)訓(xùn)練出每個排序規(guī)則的權(quán)重,生成需求初始優(yōu)先級計(jì)算公式; 將所有已選排序規(guī)則下需求排序結(jié)果導(dǎo)入計(jì)算公式,計(jì)算出需求初始優(yōu)先級;
[0018] 步驟4,進(jìn)行需求客觀影響力評估,包括根據(jù)業(yè)務(wù)流程圖,構(gòu)造需求依賴關(guān)系網(wǎng)絡(luò) 拓?fù)鋱D,并在依賴關(guān)系網(wǎng)絡(luò)拓?fù)鋱D基礎(chǔ)上,利用鏈路分析算法計(jì)算需求影響力;
[0019] 步驟5,需求優(yōu)先級合成,包括根據(jù)用戶相應(yīng)的調(diào)節(jié)因子,整合需求初始優(yōu)先級和 需求影響力,生成需求最終優(yōu)先級,實(shí)現(xiàn)如下,
[0020] 設(shè)有需求Γι,將需求^的初始優(yōu)先級值IRP(rJ除以所有需求中最大的初始優(yōu)先 級值,得到歸一化的需求^的初始優(yōu)先級值;將需求ri的影響力值PPR(rJ除以所有需求 中最大的影響力值,即得到歸一化的需求A的影響力值,然后計(jì)算如下,
[0021] 需求&最終優(yōu)先級值=c·歸一化的需求r顏始優(yōu)先級值+(l-c) ·歸一化的需 求A影響力值
[0022] 其中,c為調(diào)節(jié)因子。
[0023] 而且,步驟3中,利用機(jī)器學(xué)習(xí)技術(shù)訓(xùn)練出每個排序規(guī)則的權(quán)重,實(shí)現(xiàn)方式如下,
[0024] 步驟a,給每個需求對賦予相同的權(quán)重,并將機(jī)器學(xué)習(xí)過程最大迭代次數(shù)設(shè)定為 T,T值等于已選軟件屬性的數(shù)目,初始化t= 1 ;
[0025] 步驟b,執(zhí)行第t次迭代,包括計(jì)算出所有已選屬性的效度值,挑選其中效度值最 大的軟件屬性,并且只將該屬性的權(quán)重設(shè)定為Ι/t其他的屬性權(quán)重不變;所述效度值計(jì)算 實(shí)現(xiàn)如下,
[0026] 對已選的某個軟件屬性,將該屬性下需求排序結(jié)果,與某個需求對進(jìn)行比較,并計(jì) 算該需求對與該需求排序結(jié)果的匹配度如下,
[0027]
[0028] 其中,fx (a)表示在軟件屬性X下需求a的排名,fx (b)表示在軟件屬性X下需求b 的排名,設(shè)需求對集合為S;
[0029] 基于該屬性對所有的需求對都經(jīng)過匹配度計(jì)算之后,根據(jù)所有需求對的匹配度 Px (a,b)計(jì)算該軟件屬性的效度值Vx如下,
[0030]
[0031] 其中,每個需求對的權(quán)重w(a,b)初始化取值為1 ;
[0032] 步驟c,如果t〈T,則調(diào)整需求對權(quán)重,將與針對該屬性的需求排序結(jié)果匹配度最 大的需求對的權(quán)重w(a,b)當(dāng)前取值減半,并令t=t+Ι,返回步驟b,直到T次迭代完畢,得 到每個屬性相應(yīng)的權(quán)重。
[0033] 而且,步驟4中,利用鏈路分析算法計(jì)算需求影響力,實(shí)現(xiàn)方式如下,
[0034] 設(shè)ffin(r廠>。)表示依賴關(guān)系網(wǎng)絡(luò)拓?fù)鋱D中依賴關(guān)系邊r廠的入鏈權(quán)重,計(jì)算如 下,
[0035]
[0036] 其中,表示需求。被其它需求所依賴的依賴程度值之和,S(ri)表示需求巧所 依賴的所有需求的集合,集合S(Γι)中任一需求記為rp;
[0037] 設(shè)W°ut (Γι->Γ,)表示依賴關(guān)系網(wǎng)絡(luò)拓?fù)鋱D中依賴關(guān)系邊Γι->Γ,的出鏈權(quán)重,計(jì)算如 下,
[0038]
[0039] 其中,0"表示需求r來賴于其他需求的依賴程度值之和;
[0040] 定義需求&對r啲總影響力程度值為
、并使用B(r])表 示依賴于L的需求的集合,迭代更新需求;r的總影響力值PPR(r公如下,
[0041 ]
[0042] 其中,d為阻尼系數(shù)。
[0043] 本發(fā)明相應(yīng)提供一種整合主觀和客觀評估的需求優(yōu)先級排序系統(tǒng),包括以下模 塊:
[0044] 需求對排序模塊,用于確定需求對與相對優(yōu)先級的排序,得到已排序需求對;
[0045] 設(shè)有需求對(a,b),包括需求a和b,相應(yīng)的相對優(yōu)先級辦_<3,約定義如下,
[0046]
[0047] 基于軟件屬性的需求重要性排序模塊,用于確定針對軟件屬性的需求重要性排 序,包括根據(jù)軟件屬性分解樹,從其中選擇關(guān)注的屬性作為排序規(guī)則;按照已選擇的排序規(guī) 貝1J,在每個排序規(guī)則下分別確定相應(yīng)需求排序結(jié)果;
[0048] 需求主觀重要性評估模塊,用于進(jìn)行需求主觀重要性評估,包括基于已排序需求