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