摘 要: 針對(duì)當(dāng)前流行排序算法中只基于某種算法對(duì)需求進(jìn)行排序而沒(méi)有考慮項(xiàng)目實(shí)際規(guī)模的情況,提出了定性和定量分析確定需求優(yōu)先級(jí)的兩種思路。定性分析中研究了基于KANO模型確定優(yōu)先級(jí)的方法,定量分析中以AHP算法為基礎(chǔ),將價(jià)值、費(fèi)用、風(fēng)險(xiǎn)等多種屬性的影響量化到需求優(yōu)先級(jí)排序中。結(jié)合某船廠信息管理系統(tǒng)利用AHP方法確定需求優(yōu)先級(jí)的案例討論,驗(yàn)證了該需求優(yōu)先級(jí)排序方法的可行性,解決了在資源有限的情況下如何確定需求優(yōu)先級(jí)并分步實(shí)施的問(wèn)題。
關(guān)鍵詞: 需求管理;優(yōu)先級(jí);KANO層次分析
0 引言
目前,軟件規(guī)模隨著軟件應(yīng)用領(lǐng)域的拓展也在不斷擴(kuò)大。而各種資源的限制不可能對(duì)所有功能都完整實(shí)現(xiàn),這就要求分清開(kāi)發(fā)的主次順序,使資源的利用率最優(yōu),防止項(xiàng)目失控。這就是需求優(yōu)先級(jí)的確定過(guò)程。準(zhǔn)確的需求已經(jīng)成為軟件開(kāi)發(fā)項(xiàng)目能否成功的關(guān)鍵因素[1]。
現(xiàn)有需求優(yōu)先級(jí)的劃分方法很多,而這些方法并不通用。參考文獻(xiàn)中關(guān)于需求優(yōu)先級(jí)的排序都是基于某種特定方法,并不考慮項(xiàng)目本身特定屬性和開(kāi)發(fā)中的實(shí)際情況,考慮并不全面,存在一定弊端。本文考慮了項(xiàng)目的實(shí)際情況,基于軟件規(guī)模大小的不同,討論了兩種確定需求優(yōu)先級(jí)的方法,指出了在軟件開(kāi)發(fā)中確定需求優(yōu)先級(jí)時(shí)存在的問(wèn)題,并提出了相應(yīng)算法及改進(jìn)算法,同時(shí)考慮其他因素影響程度,提高需求優(yōu)先級(jí)的準(zhǔn)確性。
1 需求優(yōu)先級(jí)
需求優(yōu)先級(jí)是指軟件在開(kāi)發(fā)過(guò)程中需求交付的先后順序。在實(shí)際軟件開(kāi)發(fā)過(guò)程中,項(xiàng)目管理可能會(huì)遇到以下問(wèn)題[2]:新系統(tǒng)在開(kāi)發(fā)過(guò)程中,用戶有新的需求產(chǎn)生,而同時(shí)項(xiàng)目的費(fèi)用和時(shí)間又固定不變;已經(jīng)正式運(yùn)行并處于維護(hù)中的系統(tǒng),用戶會(huì)針對(duì)系統(tǒng)中存在的問(wèn)題,提出新的想法和要求,這些需求甚至可能要修改系統(tǒng)的整體架構(gòu)[3]。這就要求項(xiàng)目經(jīng)理在短時(shí)間內(nèi)做正確的決定,首先判斷該系統(tǒng)是否可以滿足和實(shí)施這些需求[4]。其次,要權(quán)衡各種客觀的約束條件,比如,能否保證項(xiàng)目進(jìn)度,能否滿足費(fèi)用預(yù)算,能否合理安排人員。而在滿足新需求的過(guò)程中,可能又會(huì)有新的需求。如何滿足用戶接踵而至的要求,既保證項(xiàng)目進(jìn)度,又讓客戶滿意就成了一個(gè)讓需求管理者頭疼的問(wèn)題。這就需要項(xiàng)目經(jīng)理將需求的優(yōu)先級(jí)排序,根據(jù)排序結(jié)果依次滿足[5]。
對(duì)于一個(gè)新的項(xiàng)目,首先要估算軟件規(guī)模的大小,這是項(xiàng)目計(jì)劃和控制的核心要素,也是使用哪種方法確定需求優(yōu)先級(jí)的重要依據(jù)。軟件規(guī)模估算方法有功能點(diǎn)分析法、標(biāo)準(zhǔn)組件法、模糊邏輯法、類比法、專家估算法等[6]。當(dāng)前最流行的是功能點(diǎn)分析法,它從邏輯角度分析,依據(jù)用戶需求度量軟件規(guī)模,適合對(duì)需求明確的項(xiàng)目。對(duì)軟件規(guī)模的大小做出評(píng)估后,依據(jù)軟件規(guī)模大小,判斷使用哪種需求優(yōu)先級(jí)的排序方法,進(jìn)而做出有效的選擇。
2 基于KANO模型的需求優(yōu)先級(jí)排序
在小規(guī)模項(xiàng)目下,可以使用定性的分析方法,該方法由項(xiàng)目干系人通過(guò)比較和溝通,依據(jù)某些既有原則即可確定,該方法較簡(jiǎn)便,額外成本低,更加迅捷。
KANO(如圖1所示)是日本專家卡諾(Kano)博士提出的,是一個(gè)與產(chǎn)品質(zhì)量相關(guān)的用戶滿意度模型。該模型是一個(gè)典型的定性分析模型,給出了用戶需求重要性的三個(gè)層面,即基本型、期望型和興奮型。常用于對(duì)需求指標(biāo)進(jìn)行分類。
基本型需求在金字塔的底層,是必需有的要素,一旦缺失用戶就使用不了產(chǎn)品,金字塔就不能平穩(wěn)矗立,是最重要的。期望型需求是指用戶希望能有的需求,此類需求的滿足程度與顧客滿意度是線性相關(guān)的,滿足的越多顧客就越滿意。興奮型需求是超出用戶預(yù)期的需求,此類需求可以極大地提高顧客的滿意度,滿足此類需求可以給產(chǎn)品加分,不滿足也無(wú)大礙,其需求的重要程度遠(yuǎn)低于期望型需求。但是隨著市場(chǎng)和時(shí)間的變化,對(duì)于用戶來(lái)講,需求的層次也是一種動(dòng)態(tài)變化的過(guò)程,需要及時(shí)作出相應(yīng)的調(diào)整。
基于上述原則,實(shí)際開(kāi)發(fā)過(guò)程中要全力以赴地滿足顧客的基本需求。然后,盡量滿足顧客的期望型需求,提供客戶最喜歡的額外服務(wù)或功能,使其產(chǎn)品既優(yōu)于競(jìng)爭(zhēng)對(duì)手又有差異。盡最大能力滿足用戶的興奮型需求,為公司創(chuàng)建忠誠(chéng)度較高的用戶群。
這種方法的缺點(diǎn)是不夠精確,受限于項(xiàng)目干系人各自所負(fù)責(zé)的模塊的側(cè)重點(diǎn)不同等客觀因素。要求每個(gè)人在每種類別的含義理解上達(dá)成一致較為困難,無(wú)法按照上述原則對(duì)需求確定優(yōu)先級(jí)。此方法只適用于小規(guī)模的項(xiàng)目。對(duì)于大規(guī)模復(fù)雜的系統(tǒng),則需要一種結(jié)構(gòu)化的方法來(lái)定量確定優(yōu)先級(jí)。
3 基于AHP的需求優(yōu)先級(jí)排序
目前涉及需求排序的算法很少提及層次性,將層次性引入需求排序,AHP(Analytical Hierarchy Process)是美國(guó)著名運(yùn)籌學(xué)家SATTYA.L在上世紀(jì)70年代提出的[7]。把復(fù)雜系統(tǒng)進(jìn)行層次化,將定性和定量的因素有效地結(jié)合起來(lái),通過(guò)建立矩陣,排序計(jì)算后得出的結(jié)果具有較強(qiáng)說(shuō)服力,與前種方法對(duì)比,具有明顯的優(yōu)越性。AHP法可以將一些主觀因素以量化的形式表達(dá)出來(lái),可以避免人的主觀性因素與計(jì)算出的結(jié)果相矛盾,使得用戶的需求更加清晰和條理化,讓決策更加有效。AHP方法大致可以歸納為以下幾步[8]:(1)分析各個(gè)關(guān)鍵因素之間的聯(lián)系,創(chuàng)建清晰的遞階層次結(jié)構(gòu);(2)兩兩比較同一層次較上一層次中某個(gè)準(zhǔn)則的重要程度,建立矩陣;(3)通過(guò)矩陣計(jì)算各元素之間的相對(duì)權(quán)重;(4)計(jì)算每個(gè)元素相對(duì)于整體目標(biāo)的合成權(quán)重,得到先后次序。
3.1 層次結(jié)構(gòu)模型建立
AHP算法中很重要的步驟是將顧客的需求進(jìn)行分解,建立遞階層次結(jié)構(gòu)。根據(jù)屬性的差別,這些元素被分為幾個(gè)組,構(gòu)成不同層次,然后作為準(zhǔn)則,支配下一層的元素,而它也支配上層元素,這些被分解的要素從上到下形成一個(gè)遞階層次。最上面的被稱為目標(biāo)層,即理想結(jié)果或預(yù)定目標(biāo);中間層包含了為到達(dá)最上層目標(biāo)所要考慮的中間環(huán)節(jié),由幾個(gè)層次構(gòu)成,一般為準(zhǔn)則或子準(zhǔn)則;最下面一層是采取的方案等。如圖2所示。
3.2 確定相對(duì)重要性矩陣并計(jì)算各自權(quán)重
相對(duì)彼此的重要性建立起準(zhǔn)則的矩陣,兩兩比較各個(gè)準(zhǔn)則,得到每個(gè)評(píng)價(jià)準(zhǔn)則之間的相對(duì)重要性。如果比較矩陣記作E,E=(eij),矩陣E中的元素eij反映元素Ei相對(duì)于Ej的重要程度。矩陣E是一個(gè)互反矩陣,eij(其中i=1,2,…,n;j=1,2,…,n)有如下性質(zhì):eij>0,eij=1(當(dāng)i=j),eij×eji=1(當(dāng)i≠j)。一般采用9級(jí)標(biāo)度法確定矩陣元素eij的數(shù)值,即eij的取值范圍是1,2,…,9,其互反數(shù)的取值范圍是1,1/2,…,1/9。在9級(jí)標(biāo)度法中eij值與被比較元素的相對(duì)重要程度之間的對(duì)應(yīng)關(guān)系如下:
?。?)Ei與Ej同等重要,則有eij=1,eji=1;
(2)Ei比Ej略微重要,則有eij=3,eji=1/3;
(3)Ei比Ej明顯重要,則有eij=5,eji=1/5;
(4)Ei比Ej十分重要,則有eij=7,eji=1/7;
?。?)Ei比Ej極其重要,則有eij=9,eji=1/9。
如果兩個(gè)對(duì)比元素之間的相對(duì)重要性在上述判斷之間,eij可以取2、4、6或8。對(duì)于權(quán)重的計(jì)算可以用特征根法,對(duì)于每個(gè)矩陣E,能夠?qū)?yīng)一個(gè)特征方程EW=λmaxW,求解特征方程的最大特征根λmax和對(duì)應(yīng)的特征向量W,然后將特征向量W歸一化后就可作為權(quán)重向量。WE即為權(quán)向量。
為了避免出現(xiàn)A比B重要、B比C重要、而C又比A重要這種循環(huán)情況,需要進(jìn)行一致性指標(biāo)計(jì)算YC.I[9](Consistency Index):
YC.I=(λmax-n)/(n-1)
根據(jù)表1,查找相應(yīng)的平均隨機(jī)一致性指標(biāo)YR.I。
計(jì)算一致性比例:YC.R=YC.I/YR.I,只有當(dāng)YC.R<0.1時(shí)通過(guò)一致性檢驗(yàn)。
將通過(guò)檢驗(yàn)的權(quán)重比較后根據(jù)WE順序排列,需求優(yōu)先級(jí)即量化地展示在開(kāi)發(fā)者面前。
3.3 應(yīng)用舉例
本文結(jié)合青島某船廠信息管理系統(tǒng)來(lái)驗(yàn)證該AHP方法確定需求優(yōu)先級(jí)算法的可行性。因項(xiàng)目時(shí)間和人員等客觀因素,無(wú)法短時(shí)間內(nèi)全部滿足,利用AHP方法計(jì)算出各個(gè)模塊的優(yōu)先級(jí),分步完成該系統(tǒng)。該信息化系統(tǒng)主要包含以下幾個(gè)需求:(A)財(cái)務(wù)管理,包括付款管理、財(cái)務(wù)審核、賬務(wù)管理等;(B)人力資源管理,包括員工管理、薪資管理、社保管理、培訓(xùn)管理等;(C)采購(gòu)管理,包括物料管理、備件管理等;(D)基礎(chǔ)信息管理,包括船舶基礎(chǔ)信息管理、物料基礎(chǔ)信息管理、供應(yīng)商基礎(chǔ)信息管理等;(E)報(bào)表管理,包括各類詳細(xì)數(shù)據(jù)的查詢、計(jì)算、導(dǎo)出和預(yù)估;(F)后臺(tái)管理,包括用戶角色管理、權(quán)限管理、系統(tǒng)設(shè)置等。
根據(jù)以上需求[10]首先建立層次結(jié)構(gòu)模型。目標(biāo)層,就是完成一個(gè)功能完善的管理系統(tǒng);準(zhǔn)則層,將價(jià)值V,費(fèi)用C,風(fēng)險(xiǎn)R這三項(xiàng)作為評(píng)價(jià)指標(biāo);方案層,就是需求分析出來(lái)的各個(gè)功能單元。通過(guò)兩兩比較的方法導(dǎo)出低階層次結(jié)構(gòu)模型中各層次元素的權(quán)重,得到各種需求的優(yōu)先級(jí)。從用戶那里得到針對(duì)某層中的兩個(gè)元素,對(duì)于上層元素哪個(gè)更重要,按1~9的比例賦值。兩兩比較判斷矩陣。準(zhǔn)則層判斷矩陣:
根據(jù)上述方法進(jìn)行一致性檢驗(yàn)。計(jì)算得出:YC.R=YC.I/YR.I=0.003 7/(2×0.58)=0.003<0.1,通過(guò)一致性檢驗(yàn)。
構(gòu)造方案層中相對(duì)于三個(gè)準(zhǔn)則的判斷矩陣并計(jì)算出相應(yīng)權(quán)向量,如表2~表4所示。
YC.R=0.036<0.1,通過(guò)一致性檢驗(yàn)。
YC.R=0.091<0.1,通過(guò)一致性檢驗(yàn)。
YC.R=0.046<0.1,通過(guò)一致性檢驗(yàn)。
由上面三個(gè)矩陣的特征向量WV,Wc,Wr以及WE可以得到6種需求的權(quán)重:
W=(WV,Wc,Wr)WE
=(0.132 5,0.202 4,0.103 0 ,0.148 8,0.073 5,
0.339 8)T
6種需求的順序通過(guò)公式計(jì)算出來(lái),即:采購(gòu)管理>報(bào)表管理>財(cái)務(wù)管理>人力資源管理>基礎(chǔ)信息管理>后臺(tái)管理。該項(xiàng)目的前期需求確定及后期的開(kāi)發(fā)中,由于正確規(guī)劃了項(xiàng)目的需求優(yōu)先級(jí)順序,在人力和時(shí)間都很緊張的情況下,還是按照客戶要求交付了項(xiàng)目,這都取決于前期需求的準(zhǔn)確獲取及與客戶的充分溝通,以及運(yùn)用科學(xué)的方法,否則項(xiàng)目很容易失敗。
3.4 AHP改進(jìn)算法
使用AHP也有它的局限性。假如把全部需求不經(jīng)任何甄別都放在同一層上進(jìn)行權(quán)重比較,顯然是不合適的。如果這種需求過(guò)多,使用該方法會(huì)非常糟糕。如果有21個(gè)需求需要在同一層次比較,用戶要進(jìn)行210次的兩兩比較,這樣很容易出現(xiàn)錯(cuò)誤和不一致。所以在排序需求優(yōu)先級(jí)時(shí),考慮將需求分層是十分重要的。這時(shí)可以引入解釋結(jié)構(gòu)模型技術(shù)(ISM)。ISM用于明確問(wèn)題的層次和結(jié)構(gòu),將系統(tǒng)的要素分在不同的層次上,避免過(guò)多的要素出現(xiàn)在同一層次上。其原理就是抽取問(wèn)題的組成要素,利用有向圖、矩陣等工具,對(duì)要素及相互關(guān)系進(jìn)行處理,明確問(wèn)題的層次和整理結(jié)構(gòu)。將大量需求進(jìn)行分層后就可以繼續(xù)使用AHP進(jìn)行需求優(yōu)先級(jí)排序。
3.5 其他影響因子
通常需求優(yōu)先級(jí)排序方法都是基于功能和價(jià)值來(lái)進(jìn)行考慮的,不可否認(rèn)需求的價(jià)值是優(yōu)先級(jí)排序的重要依據(jù),但是,需求優(yōu)先級(jí)排序不應(yīng)只考慮它的效益型屬性,還應(yīng)考慮它的成本型屬性,包括開(kāi)發(fā)時(shí)間、成本和風(fēng)險(xiǎn)等。下面簡(jiǎn)要介紹如何量化這些因素。
(1)時(shí)間,主要是根據(jù)程序開(kāi)發(fā)、測(cè)試等人員對(duì)提交的工作完成時(shí)間的承諾,考慮開(kāi)發(fā)的復(fù)雜性,結(jié)合歷史相似規(guī)模項(xiàng)目經(jīng)驗(yàn)綜合考慮各需求所需時(shí)間。
?。?)開(kāi)發(fā)成本,運(yùn)用E=A×sizeB×M來(lái)計(jì)算。E為工作量,A是一個(gè)常數(shù),反應(yīng)實(shí)際開(kāi)發(fā)軟件類型,Size為估算的代碼行數(shù),B反映與工作量不成比例的因素,一般取1~1.5,M反映了不同過(guò)程及開(kāi)發(fā)特征的混合因素,如產(chǎn)品復(fù)雜性、可靠性等。
?。?)風(fēng)險(xiǎn),引用一個(gè)風(fēng)險(xiǎn)影響水平定義[11]:RE=P×C,其中P是風(fēng)險(xiǎn)發(fā)生的可能性,C是風(fēng)險(xiǎn)會(huì)帶來(lái)的損失。從需求的變動(dòng)、溝通的障礙、是否準(zhǔn)確估算系統(tǒng)規(guī)模、軟件的有效使用周期等幾種風(fēng)險(xiǎn)分別估算P值和C值,按照RE=P×C來(lái)計(jì)算RE。
綜合考慮了需求的成本型屬性和效益型屬性后,可以定義各個(gè)屬性因素所占的權(quán)重,最后可以得出更加全面的需求優(yōu)先級(jí)排序。
4 結(jié)束語(yǔ)
需求優(yōu)先級(jí)的確定是軟件開(kāi)發(fā)中的一個(gè)較為重要的基本問(wèn)題,本文依據(jù)軟件規(guī)模的大小,確定需求優(yōu)先級(jí)排序的最優(yōu)方法,并綜合項(xiàng)目的多重屬性進(jìn)而求得最準(zhǔn)確的排序結(jié)果,解決了在需求優(yōu)先級(jí)排序過(guò)程中千篇一律地套用某一種方法,從而使效率低下,而且結(jié)果有偏差的問(wèn)題。需求優(yōu)先級(jí)確定過(guò)程中要充分依靠需求調(diào)查的原始資料,這樣確定的需求才能更加符合顧客要求,做出的軟件產(chǎn)品更加讓顧客滿意。
參考文獻(xiàn)
[1] WIEGERS K E. Software requirements[M]. [S.l.] Microsoft Press, 2003.
[2] 吳海靜.IT企業(yè)敏捷開(kāi)發(fā)中基于優(yōu)先級(jí)的需求管理[D].上海:復(fù)旦大學(xué),2012.
[3] 王越,劉春,張偉,等.知識(shí)引導(dǎo)的軟件可信性需求的提取[J].計(jì)算機(jī)學(xué)報(bào),2011,34(11):2166-2174.
[4] 孫莉.軟件項(xiàng)目管理中的需求管理[J].信息系統(tǒng)工程,2011(4):58-59.
[5] 李華瑩,胡兢玉.回歸測(cè)試用例優(yōu)先級(jí)排序技術(shù)研究[J].計(jì)算機(jī)仿真,2013,30(10):298-301.
[6] KARLSSON J, WOHLIN C, REGNELL B. An evaluation of meth-ods for prioritizing software requirements[J]. Informationand Software Technology,1998,39(14-15):938-947.
[7] 王蓮芬,許樹(shù)柏.層次分析引論[M].北京:中國(guó)人民大學(xué)出版社,1989.
[8] 湛浩旻,印桂生,王紅濱.基于解釋結(jié)構(gòu)模型的需求最高優(yōu)先級(jí)設(shè)定方法[J].計(jì)算機(jī)應(yīng)用研究,2012,29(11):4191-4192.
[9] 王玉英,陳平,蘇旸.生成有向圖中全部簡(jiǎn)單回路的一種有效算法[J].計(jì)算機(jī)應(yīng)用與軟件,2009,26(12):27-29.
[10] 楊廣華,包陽(yáng),李東紅,等.基于需求的測(cè)試用例優(yōu)先級(jí)排序[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(8):2724-2727.
[11] 李厚明.軟件項(xiàng)目需求變更風(fēng)險(xiǎn)管理[D].濟(jì)南:山東大學(xué),2012.