[摘 要] 越來越多的人意識到需求過程和需求(知識)的重要性。目前的需求技術(shù)通常只有單一解,不能滿足多參與者的不同需要。而知識管理方法多為定性方法,現(xiàn)有的定量方法由于復(fù)雜的公式和苛刻的條件,難以實際運用。而且沒有綜合的需求知識模型,也沒有把它們進(jìn)行融合的模型。本文針對以上問題,引入知識管理方法,通過需求知識化過程方法,對需求知識實施可控管理。通過實例分析驗證了方法的實用性、操作性和通用性。
[關(guān)鍵詞] 需求知識;知識化過程;知識管理;AHP
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2010 . 06 . 039
[中圖分類號]F270.7 [文獻(xiàn)標(biāo)識碼]A [文章編號]1673 - 0194(2010)06 - 0094 - 04
1引 言
需求過程作為軟件項目的起點和軟件生命周期的重要環(huán)節(jié),一直是研究的焦點問題之一。文獻(xiàn)研究顯示,有許多方法用來理解商業(yè)過程和需求抽取,比如Contextual inquiry[1],訪談技術(shù)[2]和場景方法[3]等。需求優(yōu)先級排序主要采用層次分析法(AHP)[4]、質(zhì)量功能部署(QFD)[5]以及相應(yīng)優(yōu)化方法。另外一些研究還分析了參與者間的需求沖突及需求間的依賴關(guān)系,并給出相應(yīng)的優(yōu)化方案。但以上方法的問題在于缺乏協(xié)商機(jī)制,通常只有單一解決方案,不能滿足多參與者的不同需要。另外目前的方法大多為定性方法,少量的定量方法由于復(fù)雜難懂的公式以及苛刻的研究條件,在實際運用中變得舉步維艱。而且,沒有綜合的需求以及相關(guān)任務(wù)的模型,也沒有把它們同時進(jìn)行融合的模型。
本文針對原需求過程中的典型問題,引入知識管理方法,通過綜合的需求知識化過程方法,對需求知識實施可控管理。通過實例分析驗證了方法的實用性、操作性和通用性。需求的知識化過程方法包括關(guān)鍵需求知識的抽取、建立需求知識間的依賴(約束)關(guān)系、建立需求知識收集計劃、評價與協(xié)商(具體見圖1)。

文章第二部分描述了實例的背景,第三部分闡述了建立知識間約束的過程。第四部分闡述了基于AHP方法建立需求知識收集計劃的過程。第五部分對過程方法進(jìn)行評價和總結(jié)。
2 實例背景描述
某軟件公司高層發(fā)現(xiàn)了需求過程以及需求知識的重要性,著手把公司的需求資料變成需求知識,并將其有機(jī)地組織到企業(yè)知識庫中,這便是實施需求知識化過程的目的。為完成這個過程,我們聯(lián)系了4位行業(yè)專家及其他4位行業(yè)人士參與研究。4位行業(yè)專家中3位是某大型國有證券公司的需求專家,分別從事需求工作28年、23年和11年;另1位是某軟件實施公司主管,之前從事需求工作6年。
知識沒有風(fēng)險和成本屬性,而收集這些知識的任務(wù)具有這些屬性。為了進(jìn)行知識化過程,需求考慮知識收集任務(wù)。為了便于說明,從需求知識清單中抽取了13個知識收集任務(wù),見表1。

3建立需求知識間的依賴(約束)關(guān)系
作為需求管理策略和需求知識化過程的一部分,應(yīng)定義維護(hù)哪些可跟蹤性的信息。可跟蹤性信息是可以發(fā)現(xiàn)需求間、需求和系統(tǒng)設(shè)計、組件和文檔間依賴性的信息。以往的一些相關(guān)研究往往忽略各元素之間的相互關(guān)系。在實際需求過程中,忽視這些依賴關(guān)系往往會導(dǎo)致最終結(jié)果出現(xiàn)巨大偏差。根據(jù)知識化過程方法,本文提出一個簡單實用的算法,根據(jù)依賴關(guān)系建立需求知識收集計劃。其中涉及的運算符見表2。基于依賴關(guān)系的任務(wù)排序算法如下:

(1)根據(jù)約束關(guān)系建立可跟蹤性列表。本案例中結(jié)合專家意見,對13個任務(wù)建立可跟蹤性列表(包括依賴/被依賴關(guān)系),如表3所示。

(2)定義元素及關(guān)系。設(shè)需求項為i,依賴于關(guān)系表示為Ai(j),被依賴于關(guān)系表示為Bi(k),結(jié)果集為R(n)。
(3)抽出“原子集”(即集合中的元素不可分割,不可插入新的項)。檢查可跟蹤列表中的循環(huán)依賴,把循環(huán)依賴的項歸為一個“原子集”。比如實例中的6依賴于9,且9依賴于6,則把6和9歸為一個原子集(6,9)。從該實例中找到兩個原子集:(6,9)和(5,8,10)。
(4)抽出“獨立項”(即Ai(j)=并且 Bi(k)=) ,單獨建立一條“順序規(guī)則”。在該例中,獨立項只有一個,為“1”。則建立一條順序規(guī)則: 順序規(guī)則1: 1。
(5)由可跟蹤性列表給Ai(j )或Bi(k)賦值。把原子集看作一個項。如果含有原子集中一個元素,用相應(yīng)原子集代替該項,并放置在原項位置。比如原來B9(k)={5,6,8,12},由于含有5、6、8這些原子集,則改為B9(k)={(5,8,10),(6,9),12}。實際操作中只要處理Ai(j)或Bi(k)中的一個即可。處理Ai(j)的結(jié)果如下:
A1(j)=A2( j)=A3(j)=A4(j)=;
A5( j)={2,3,(6,9),(5,8,10)};A6( j)={2,3,(6,9)};A7( j)=(4);A8( j)={(5,8,10),(6,9)};A9( j)={2,3,(6,9)};A10( j)=(8);A11( j)={(5,8,10),(6,9)};A12( j)={(5,8,10),(6,9),13};A13 ( j)={2, 3,(5,8,10),(6,9)};
(6)根據(jù)Ai(j)或Bi(k)得到順序。有兩種方式,可根據(jù)Ai(j)得到順序,也可以通過Bi(k)得到順序,結(jié)果一樣,一般只要采用一種方式。從第一個非空集合開始操作。本例采用計算Ai( j),原子集當(dāng)作一個元素看待,其過程如下:
根據(jù)A5( j),可得:R(n)={(2,3,(6,9))→(5,8,10)}
根據(jù)A6( j),可得:R(n)={(2,3)→(6,9)→(5,8,10)}
根據(jù)A7( j),可得:
R(n)={((2,3)→(6,9)→(5,8,10),(4→7)}(*)
因A8( j)、A9( j)、A10( j)符合(*),R(n)無需改動。
根據(jù)A11( j),可得:
R(n)={((2,3)→(6,9)→(5,8,10)→11),(4→7)}
根據(jù)A12( j)和A13( j),可得:R(n)={((2,3)→(6,9)→(5,8,10)→(11,13→12)),(4→7)}
(7)根據(jù)步驟4~6得出結(jié)論。兩元素構(gòu)成的集合單獨列為一條順序。本例得到3條順序。結(jié)論:2、3要在6、9前,6、9要在5、8、10前,而5、8、10要在11、13、12前,13要在12前,4要在7前。而2,3間,6,9間,5,8,10間,11和13,12之間都沒有優(yōu)先約束。規(guī)則1,2,3間也沒有優(yōu)先約束。為進(jìn)一步得到詳細(xì)準(zhǔn)確的需求知識收集計劃,就需要對13個任務(wù)進(jìn)行“費效”分析,并用AHP方法得出結(jié)論。
順序規(guī)則1:1順序規(guī)則2: 4→7
順序規(guī)則3: //2,3//→//6,9//→//5,8,10//→//11,13→12//
4基于AHP方法建立需求知識收集計劃
4.1 建立評價準(zhǔn)則,構(gòu)造遞階層次結(jié)構(gòu)
目標(biāo)層:進(jìn)行需求知識收集任務(wù)的優(yōu)先級排序。
準(zhǔn)則層:最常見的解決方案是“費效+風(fēng)險”分析。實際當(dāng)中也普遍接受使用。本文中準(zhǔn)則層包括任務(wù)價值、成本和風(fēng)險。任務(wù)價值包括使用或復(fù)用需求知識帶來的直接或間接收益。任務(wù)成本包括收集、整理和維護(hù)需求知識的成本。任務(wù)風(fēng)險包括需求知識的可獲得性、變動性和任務(wù)失敗可能性。
方案層:即表1中的13個任務(wù)。
4.2 構(gòu)造兩兩比較的判斷矩陣
由于方案層有13個項,而邀請的需求專家時間寶貴,沒有時間進(jìn)行兩兩比較。因此,對調(diào)查問卷進(jìn)行了調(diào)整,直接進(jìn)行打分。通過數(shù)據(jù)公式處理,得到判斷矩陣。我們采用了德爾菲法,前后進(jìn)行了兩次,讓4位需求專家給13個任務(wù)打分。采用9分制,1代表最低,9代表最高,2~8逐漸遞增。準(zhǔn)則層的判斷矩陣由需求專家A1給出,如表4所示。

第一次AHP的分析結(jié)果顯示:不同專家的打分具有一定的不一致性。當(dāng)然,有很多因素造成了這些不一致性,比如年齡、工作年限、技術(shù)背景、對需求知識項的理解程度等。第一次的AHP過程略,只描述第二次AHP的計算過程。在德爾菲的第二次問卷調(diào)查過程中,我們把第一次的AHP綜合結(jié)果和第三部分的3條順序規(guī)則分別發(fā)給4位需求專家。最后回收上來的數(shù)據(jù)是比較令人滿意的。
另外,為得到判斷矩陣,需對專家的數(shù)據(jù)進(jìn)行預(yù)處理。對價值型準(zhǔn)則,直接進(jìn)行數(shù)據(jù)兩兩比較,得到判斷矩陣。對成本型準(zhǔn)則,先用公式“修正后成本(或風(fēng)險)=10-成本(風(fēng)險)”進(jìn)行轉(zhuǎn)化,然后進(jìn)行數(shù)據(jù)兩兩比較,得到判斷矩陣。由于數(shù)據(jù)量大,省略中間過程。
4.3相對權(quán)重的計算以及判斷矩陣一致性檢驗
根據(jù)專家A1的判斷矩陣,我們得到了單一準(zhǔn)則下相對權(quán)重以及最大特征根(λmax均為13.000 0)。在一致性檢驗中,查表得到相應(yīng)的平均隨機(jī)一致性指標(biāo)RI= 1.56。由于3個準(zhǔn)則的CR均小于0.1,因此,3個準(zhǔn)則均符合一致性檢驗。同樣,準(zhǔn)則層的權(quán)重wi=(0.557 143,0.320 238, 0.122 619);準(zhǔn)則層的最大特征根λmax為3.018 325。RI= 0.52,CI= 0.009 162,CR=0.015 797<0.1,因此,準(zhǔn)則層也符合一致性檢驗。
4.4 計算各層元素對目標(biāo)層總排序權(quán)重及一致性檢驗
根據(jù)專家A1的判斷矩陣計算得到的總排序權(quán)重為(0.064 9,0.096 4,0.097 9,0.077 0, 0.077 8, 0.087 8,0.072 5,
0.073 0,0.082 3,0.068 2,0.058 9,0.057 4,0.065 7)。
對總排序權(quán)重進(jìn)行排序,得到基于專家A1數(shù)據(jù)得到的任務(wù)排序:(3,2,6,9,5,4,8,7,10,13,1,11,12)。
最后計算總體的一致性。CI=0,RI=1.56,CR=0<0.1。所以總體也滿足一致性。
4.5 數(shù)據(jù)結(jié)果綜合與分析
按照4.2節(jié)至4.4節(jié)的相同過程,我們得到了其他3位專家的任務(wù)排序,見表5。經(jīng)過一致性檢驗,其他3位專家給出的數(shù)據(jù)也都符合一致性檢驗。其中A1、A2、A3分別代表證券公司的3位需求分析專家。B代表軟件實施公司的主管。
經(jīng)過分析,4位專家的任務(wù)排序均符合第三部分獲得的3條“順序規(guī)則”。當(dāng)然,在實際操作中還需要考慮更多因素。每個需求收集任務(wù)對于用戶核心業(yè)務(wù)的價值、開發(fā)團(tuán)隊可用資源(時間、人員)、開發(fā)者和用戶對系統(tǒng)目標(biāo)和限制的理解程度、環(huán)境的演化等諸多因素都會影響到最終結(jié)果。因此這4位專家的任務(wù)排序雖有小的差異,但完全可以保留到需求協(xié)商階段(讓決策者最后決定使用哪種操作方案)甚至到軟件生命周期的后期(待各資源、環(huán)境等因素更加明朗之后)再做決定。

但是作為需求知識化的一個環(huán)節(jié)(協(xié)商階段),筆者把最后的結(jié)果又傳給了4個需求專家,并協(xié)商決定采取“對4個專家的總排序權(quán)重進(jìn)行加權(quán)”的方法得到最后的結(jié)果。根據(jù)專家的領(lǐng)域工作經(jīng)驗,協(xié)商得到的4個專家的權(quán)重為(0.38,0.31,0.19,0.13)。協(xié)商后的新加權(quán)權(quán)重及任務(wù)排序,即需求知識收集計劃為(3,2,6,9,4,5,8,1,7,10,13,11, 12)。經(jīng)檢驗,新結(jié)果仍然符合第三部分獲得的3條“順序規(guī)則”。當(dāng)然,在項目進(jìn)展的過程中,這個收集計劃還會根據(jù)實際情況進(jìn)行微調(diào)。
5結(jié)束語
研究完成之后,筆者把部分結(jié)果發(fā)給了4位需求專家,4位需求專家從實用性、操作性、通用性對本文的需求知識化方法給出了較高的評價。評價分為:好,較好,一般,較差,差5個等級,評價結(jié)果見表6。

本文針對原需求過程中的典型問題,把需求視為一種知識,引入知識管理的方法,通過綜合的需求知識化過程方法,對需求知識實施可控制的管理。實例分析驗證了方法的實用性、操作性和通用性。該方法還存在一些問題,比如考慮的約束條件不夠全面,對不同視角的支持不夠等等。在以后的研究中將會著重解決這些問題,提升方法的實踐性。
主要參考文獻(xiàn)
[1] H Beyer,K Holtzblatt. Contextual Design: Defining Customer-Centered Systems[M]. San Francisco,CA:Morgan Kaufmann Publishers, 1997.
[2] Donald C. Gause, Gerald M Weinberg. Exploring Requirements: Quality Before Design[M]. New York:Dorset House Publishing Company, 1989.
[3] J M Carroll Scenario-Based Design: Envisioning Work and Technology in System Development[M]. John Wiley Sons Inc, 1995.
[4] G Ruhe D Greer D. Quantitative Studies in Software Release Planning under Risk and Resource Constraints[C].Proceedings of the 2003 International Symposium on Empirical Software Engineering (ISESE 2003),Los Alamitos: IEEE Computer Society Press, 2003: 262-271.
[5] T Tran, JS Sherif. Quality Function Deployment (QFD): An Effective Technique for Requirements Acquisition and Reuse[C]. Proceedings of the 2nd IEEE Software Engineering Standards Symposium,Los Alamitos: IEEE Computer Society Press, 1995:191-200.