王 麗,杜曉明
(江蘇科技大學(xué) 經(jīng)濟(jì)管理學(xué)院,江蘇 鎮(zhèn)江 212003)
需求分析是軟件定義時(shí)期的最后一個(gè)階段,它所要做的工作是深入描述軟件的功能和性能,確定軟件設(shè)計(jì)的限制,以及軟件同其他系統(tǒng)元素的接口細(xì)節(jié),定義軟件的其他有效性需求,因此,對(duì)需求階段進(jìn)行深入研究具有重要的意義。參考文獻(xiàn)[1]對(duì)軟件需求分析的含義、任務(wù)和過(guò)程進(jìn)行討論,突出了有效溝通、需求管理、團(tuán)隊(duì)協(xié)作在需求分析過(guò)程中的重要作用,同時(shí)探討了若干需求分析方法;參考文獻(xiàn)[2]重點(diǎn)描述按照RUP的要求進(jìn)行軟件需求分析的方法,給出了建立業(yè)務(wù)模型、需求模型的具體目的、內(nèi)容和步驟;參考文獻(xiàn)[3]闡述了UML的特點(diǎn)、UML架構(gòu)、軟件需求分析原則及UML對(duì)軟件建模的意義,并給出了UML技術(shù)在軟件需求分析和設(shè)計(jì)階段的成功應(yīng)用;參考文獻(xiàn)[4]利用形式化規(guī)格說(shuō)明語(yǔ)言——B語(yǔ)言對(duì)軟件需求進(jìn)行了嚴(yán)格定義,在嚴(yán)格的數(shù)學(xué)基礎(chǔ)上進(jìn)行軟件開(kāi)發(fā),以獲得更好的軟件性能;參考文獻(xiàn)[5]討論和分析了軟件需求分析的概念、任務(wù)、過(guò)程、種類(lèi)、原則、用戶和系統(tǒng)分析員的關(guān)系以及需求文檔的書(shū)寫(xiě)。這些研究都具有較高的學(xué)術(shù)價(jià)值,并且各具特點(diǎn),但極少有從知識(shí)管理的角度進(jìn)行需求分析,缺少對(duì)軟件企業(yè)所擁有案例的深入挖掘和充分利用。
本文從知識(shí)管理的角度運(yùn)用基于案例推理的方法提出了軟件需求分析的框架模型,并對(duì)該模型的關(guān)鍵技術(shù)進(jìn)行了詳細(xì)說(shuō)明。本文的研究成果為軟件企業(yè)實(shí)現(xiàn)有效的案例管理提供了理論和技術(shù)上的保障,拓展了CBR的應(yīng)用領(lǐng)域。
需求分析本質(zhì)上是一個(gè)知識(shí)管理的過(guò)程,這一過(guò)程出現(xiàn)的主要問(wèn)題可歸結(jié)為隱形知識(shí)顯性化的管理過(guò)程。多數(shù)從事軟件研究和軟件開(kāi)發(fā)的專(zhuān)家認(rèn)為,需求獲取只有通過(guò)客戶和開(kāi)發(fā)者有效的合作、減少合作中的障礙才能成功,客戶的參與直接影響到需求獲取的結(jié)果,沒(méi)有參與就沒(méi)有結(jié)果,而被動(dòng)參與會(huì)產(chǎn)生不良結(jié)果。事實(shí)上,需求分析是分析專(zhuān)家通過(guò)挖掘客戶潛在需求相關(guān)知識(shí),再將各類(lèi)軟件開(kāi)發(fā)人員的經(jīng)驗(yàn)、專(zhuān)業(yè)知識(shí)相融合,從而產(chǎn)生出客戶真正期望的需求的過(guò)程;需求分析的過(guò)程就是知識(shí)傳遞、創(chuàng)新、顯化的過(guò)程[6]。
圖1表明了知識(shí)流在需求過(guò)程中的流動(dòng),主要包括3個(gè)階段:與需求相關(guān)的知識(shí)傳遞;相關(guān)需求知識(shí)創(chuàng)新;需求顯化。需求知識(shí)的最初來(lái)源有客戶、領(lǐng)域知識(shí)與軟件團(tuán)隊(duì)內(nèi)部已有的軟件開(kāi)發(fā)經(jīng)驗(yàn)、開(kāi)發(fā)技術(shù)、開(kāi)發(fā)模式等相關(guān)知識(shí);在相關(guān)需求知識(shí)的創(chuàng)新階段,主要完成知識(shí)形態(tài)的轉(zhuǎn)化,將供需雙方的知識(shí)加以積聚融合;最后將用戶隱含的需求知識(shí)顯性化以形成客戶真正的需求,這是需求分析過(guò)程中最關(guān)鍵的環(huán)節(jié)。經(jīng)過(guò)反饋,最終流向用戶手中,在用戶需求得到確認(rèn)的同時(shí),軟件開(kāi)發(fā)團(tuán)隊(duì)的需求獲取過(guò)程完成,但并不意味著需求過(guò)程的結(jié)束,需求過(guò)程將隨著軟件項(xiàng)目的每一個(gè)不同的開(kāi)發(fā)階段不斷地信息反饋而逐漸得到更新。

圖1 知識(shí)在需求獲取過(guò)程中的流動(dòng)
基于案例推理的思想最早是由R Shanker在1982在《Dynamic Memory》書(shū)中提出的,以后由他的學(xué)生經(jīng)過(guò)多年的工作逐漸發(fā)展起來(lái)。它的核心思想為:在問(wèn)題求解時(shí),人們可以使用以前對(duì)該類(lèi)問(wèn)題的求解經(jīng)驗(yàn),即案例,來(lái)進(jìn)行推理。在這種求解問(wèn)題的方法中,人們將過(guò)去對(duì)問(wèn)題的求解案例按一定的組織方式存儲(chǔ)在案例庫(kù)中,當(dāng)用戶輸入待求解的新問(wèn)題時(shí),系統(tǒng)首先從案例庫(kù)中尋找這種案例或與其近似案例。如果找到的案例與待求解案例的描述完全一致,則將找到的案例中的結(jié)論輸出。否則,根據(jù)對(duì)待求解問(wèn)題的描述,對(duì)檢索出來(lái)的案例進(jìn)行修改,以產(chǎn)生一個(gè)符合問(wèn)題求解要求的解并將其輸出;同時(shí)將這個(gè)問(wèn)題案例作為一個(gè)新的案例再存儲(chǔ)到案例庫(kù)中。因此,在以后求解時(shí),便可利用案例庫(kù)中已知的案例,而不必每次都從頭開(kāi)始。一個(gè)經(jīng)驗(yàn)豐富的醫(yī)生可以從他過(guò)去的治病生涯中總結(jié)大量經(jīng)驗(yàn),對(duì)于新遇到的病癥,有經(jīng)驗(yàn)的醫(yī)生可以從過(guò)去醫(yī)治過(guò)的相同病癥或類(lèi)似病癥中很快找到新的治療方法。而每次成功的治療又都為將來(lái)積累新的經(jīng)驗(yàn)。
依據(jù)上述對(duì)軟件需求分析過(guò)程中的知識(shí)流動(dòng)分析,這里將基于案例推理(CBR)技術(shù)引入到了需求分析過(guò)程中來(lái),提出了一個(gè)如圖2所示的基于案例推理進(jìn)行軟件需求知識(shí)模型(CBRDA)。
定義1針對(duì)圖2模型,本文將基于案例推理進(jìn)行軟件需求分析CBRDA,定義如下:


圖2 基于案例推理進(jìn)行軟件需求知識(shí)模型(CBRDA)
其中,Sset={Ea,Eb},表示需求分析專(zhuān)家及其擁有的知識(shí)和經(jīng)驗(yàn),Ea表示進(jìn)行需求分析的專(zhuān)家,Eb表示其擁有的知識(shí);Cset={Ci,qi|i=1,2,3,…n}表示客戶 Ci及其知識(shí)需求qi,包括功能需求非功能需求以及領(lǐng)域需求;CASEset表示聯(lián)系Sset和Cset的基于案例推理的系統(tǒng),它是由案例庫(kù)、基于案例推理活動(dòng)及其對(duì)應(yīng)的規(guī)則組成。CASEset={I,F(xiàn),W,C,T,S},其中,I={I1,I2,…Im}是 1 個(gè)有限集合,表示案例的說(shuō)明信息;F={F1,F(xiàn)2,…Fn}是 1 個(gè)有限非空集合,表示案例所具有的各種特征,即特征集;W={W1,W2,…Wn}是1個(gè)有限非空集合,表示案例所具有的各種特征的權(quán)值,即權(quán)值集;C={C1,C2,…CX}是 1 個(gè)有限非空集合,表示由特征集引起的結(jié)論集;T={T1,T2,…Ty}是1個(gè)有限非空集合,表示驗(yàn)證結(jié)論成立與否的檢測(cè),即測(cè)試集;S={S1,S2,…Sz}是 1 個(gè)有限集合,表示結(jié)論集的解決方案。上述多元式提供了求解案例的表達(dá)模型,其中特征集和結(jié)論集可作為求解案例的索引[7]。
在圖2所示的架構(gòu)中,CASEset作為需求分析最關(guān)鍵的部分以及聯(lián)系分析專(zhuān)家和客戶之間關(guān)系紐帶,其工作過(guò)程遵循如下步驟:
(1)根據(jù)客戶知識(shí)需求,以規(guī)范的形式描述出新問(wèn)題案例;
(2)檢索與新問(wèn)題案例類(lèi)似的案例,通過(guò)案例推理和相似度分析,確定最類(lèi)似的案例;
(3)修訂解決方案以使其更加適應(yīng)新問(wèn)題案例;
(4)客戶對(duì)得到的新方案進(jìn)行評(píng)估,判斷是否滿足客戶的需求;
(5)再次審查和評(píng)估修訂后的解決方案,判斷是否有必要保留新問(wèn)題案例;
(6)修改案例庫(kù)中的案例索引和特征權(quán)重。
在CBRDA中,存在大量支持已有的解決方案的知識(shí)與經(jīng)驗(yàn),這些解決方案對(duì)應(yīng)著諸多源案例,其中就包括求解案例;而在需求分析過(guò)程中,客戶的知識(shí)需求又會(huì)產(chǎn)生諸多問(wèn)題案例。案例表示是CBRDA的基礎(chǔ),其表示方法直接關(guān)系到推理的效率和準(zhǔn)確度。案例表示涉及求解案例和問(wèn)題案例2個(gè)方面,而準(zhǔn)確和完整地表達(dá)求解案例是CASEset的重要步驟。求解案例和問(wèn)題案例定義如下。
定義2 CBRDA中的問(wèn)題案例是一組反映了客戶知識(shí)需求的約束的集合,表示為 P={Ak,Pk},k=1,2,…,m,其中,Ak={aki|i=1,2,…n}表示第 l個(gè)問(wèn)題案例所包含的特征集,n表示 Al所包含特征的個(gè)數(shù);Pk={wki,fki}表示與對(duì)應(yīng)特征的結(jié)論。wxi表示特征權(quán)值,其值越大,該特征越重要。
定義3 CBRDA中的求解案例是在滿足問(wèn)題案例需求條件的下通過(guò)知識(shí)檢索所得到的結(jié)果案例,表示為T(mén)={Ak,Pk},k=1, 2,…,m,其中 ,m 為當(dāng)前案例庫(kù)中的源案例數(shù);Ak={aki|i=1,2,…n}表示第k個(gè)案例所包含的特征集,n 表示 Ak所包含特征的個(gè)數(shù);Pk={fki,ski|i=1,2,…n}表示與對(duì)應(yīng)特征的結(jié)論以及解決方案。
求解案例是已經(jīng)存在案例,擁有特定知識(shí)結(jié)構(gòu)和內(nèi)容描述,每一個(gè)求解案例對(duì)應(yīng)一個(gè)解決方案,而客戶的知識(shí)需求是一些零散的知識(shí),為了在案例檢索中獲得類(lèi)似案例(求解案例),則需要在由知識(shí)需求產(chǎn)生的問(wèn)題案例時(shí),使問(wèn)題案例以一種與求解案例相近的結(jié)構(gòu)進(jìn)行組織。
案例檢索的本質(zhì)是問(wèn)題案例與求解案例之間的相似匹配,目前,適用于 CBRs的檢索方法主要有:最近相鄰法、歸納索引法和知識(shí)導(dǎo)引法等。考慮到軟件需求分析的特點(diǎn),這里將采用最近相鄰法(Nearest neighbor approach),它是指從案例庫(kù)中找出與當(dāng)前情況距離最近的案例的方法。把問(wèn)題案例與案例庫(kù)中的求解案例進(jìn)行逐索引域的比較,求出案例之間的每個(gè)域的相似度,再根據(jù)以前定義的加權(quán)向量,最終確定求解案例與問(wèn)題案例的相似度,將相似度超過(guò)閾值的案例輸出。該策略既是案例的檢索策略,也是案例的組織策略。案例的相似度是抽取案例各方面的特征值,并確定各特征的權(quán),通過(guò)計(jì)算問(wèn)題案例和求解案例的加權(quán)距離,來(lái)確定案例相似程度的大小。
設(shè)案例集合(案例庫(kù))C={C1,C2,…,Cn},第 i個(gè)案例的屬性集,,…,,則案例間的相似度為:



其中kj表示第j個(gè)特征的取值范圍。
案例的改寫(xiě)表現(xiàn)為案例庫(kù)的學(xué)習(xí)功能,它的主要目的是:通過(guò)適當(dāng)調(diào)整在檢索操作中獲得的求解案例中的解決方案,使之適合于待求解的當(dāng)前問(wèn)題。案例的改寫(xiě)往往與特定的領(lǐng)域密切相關(guān)。改寫(xiě)過(guò)程中所用到的知識(shí)可以包括領(lǐng)域知識(shí)和啟發(fā)式改寫(xiě)規(guī)則。由于系統(tǒng)完全自動(dòng)修訂技術(shù)非常困難,所以在CBRDA中,案例的修訂也采用專(zhuān)家干預(yù)的形式,由系統(tǒng)分析專(zhuān)家根據(jù)用戶知識(shí)需求的具體情況,參照案例的建議,修訂整個(gè)解決方案,改寫(xiě)后的案例是原案例庫(kù)中不存在的案例,當(dāng)將其加入到案例庫(kù)中后,就在原領(lǐng)域中形成了對(duì)問(wèn)題求解能力的擴(kuò)充[8]。
軟件需求分析是軟件生命周期中重要的一步,也是關(guān)鍵的一步。只有通過(guò)軟件需求分析,才能從總體上把軟件功能和性能描述為具體的軟件需求規(guī)格說(shuō)明。基于案例推理的軟件需求分析方法有助于軟件企業(yè)更加深入的挖掘已有的知識(shí)案例,快速、準(zhǔn)確地獲取客戶的需求,從而提高本身的競(jìng)爭(zhēng)力。
[1]邱樹(shù)偉.關(guān)于軟件需求分析的探究[J].福建電腦,2008(7):48-50.
[2]苗炬.基于RUP的軟件需求分析 [J].計(jì)算機(jī)與網(wǎng)絡(luò),2003(5):53-54.
[3]田茵.基于UML的軟件需求分析和設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理,2004(21):74-79.
[4]周紹景,唐艷,邱發(fā)林.淺談軟件需求分析方法[J].計(jì)算機(jī)與信息技術(shù),2007(1):37.
[5]塔維娜,何積豐.基于形式化方法的需求分析[J].實(shí)驗(yàn)技術(shù)與管理,2003(29):107-108.
[6]李曉明,孫林巖,汪應(yīng)洛.基于知識(shí)管理的軟件需求管理研究[J].研究與發(fā)展管理,2005(17):28-32.
[7]王雪瑞,劉文煌.知識(shí)管理系統(tǒng)中的CBR技術(shù)研究[J].計(jì)算機(jī)工程與應(yīng)用,2002(2):181-183.
[8]王君,潘星,李靜.基于案例推理的知識(shí)管理咨詢(xún)系統(tǒng)[J].清華大學(xué)學(xué)報(bào)(自然科學(xué)版),2006,46(z1).