出處:計(jì)算機(jī)世界網(wǎng)
作者:金芝
需求工程無疑是當(dāng)前軟件工程中的關(guān)鍵問題,從美國于1995年開始的一項(xiàng)調(diào)查結(jié)果就足以看出這一點(diǎn)。在這項(xiàng)調(diào)查中,他們對全國范圍內(nèi)的8000個(gè)軟件項(xiàng)目進(jìn)行跟蹤調(diào)查,結(jié)果表明,有1/3的項(xiàng)目沒能完成,而在完成的2/3的項(xiàng)目中,又有1/2的項(xiàng)目沒有成功實(shí)施。他們仔細(xì)分析失敗的原因后發(fā)現(xiàn),與需求過程相關(guān)的原因占了45%,而其中缺乏最終用戶的參與以及不完整的需求又是兩大首要原因,各占13%和12%。
需求工程又是軟件工程中最復(fù)雜的過程之一,其復(fù)雜性來自于客觀和主觀兩個(gè)方面。從客觀意義上說,需求工程面對的問題幾乎是沒有范圍的。由于應(yīng)用領(lǐng)域的廣泛性,它的實(shí)施無疑與各個(gè)應(yīng)用行業(yè)的特征密切相關(guān)。其客觀上的難度還體現(xiàn)在非功能性需求及其與功能性需求的錯(cuò)綜復(fù)雜的聯(lián)系上,當(dāng)前對非功能性需求分析建模技術(shù)的缺乏大大增加了需求工程的復(fù)雜性。從主觀意義上說,需求工程需要方方面面人員的參與(如領(lǐng)域?qū)<?、領(lǐng)域用戶、系統(tǒng)投資人、系統(tǒng)分析員、需求分析員等等),各方面人員有不同的著眼點(diǎn)和不同的知識背景,溝通上的困難給需求工程的實(shí)施增加了人為的難度。
最初,需求工程僅僅是軟件工程的一個(gè)組成部分,是軟件生命周期的第一個(gè)階段。雖然大家也都知道需求工程對軟件整個(gè)生命周期的重要性,但對它的研究遠(yuǎn)遠(yuǎn)沒有對軟件工程的其他部分的研究那么深入。
在傳統(tǒng)軟件工程生命周期中,涉及需求的階段稱作需求分析。一般來說,需求分析的作用是:
● 系統(tǒng)工程師說明軟件的功能和性能,指明軟件和其他系統(tǒng)成分的接口,并定義軟件必須滿足的約束;
● 軟件工程師求精軟件的配置,建立數(shù)據(jù)模型、功能模型和行為模型;
● 為軟件設(shè)計(jì)者提供可用于轉(zhuǎn)換為數(shù)據(jù)設(shè)計(jì)、體系結(jié)構(gòu)設(shè)計(jì)、界面設(shè)計(jì)和過程設(shè)計(jì)的模型;
● 提供開發(fā)人員和客戶需求規(guī)格說明,用于作為評估軟件質(zhì)量的依據(jù)。
但從當(dāng)前的研究現(xiàn)狀來看,需求工程的內(nèi)容遠(yuǎn)不止這些。需求工程是系統(tǒng)工程和軟件工程的一個(gè)交叉分支,涉及到軟件系統(tǒng)的目標(biāo)、軟件系統(tǒng)提供的服務(wù)、軟件系統(tǒng)的約束和軟件系統(tǒng)運(yùn)行的環(huán)境。它還涉及這些因素和系統(tǒng)的精確規(guī)格說明以及系統(tǒng)進(jìn)化之間的關(guān)系。它也提供現(xiàn)實(shí)需要和軟件能力之間的橋梁。
需求工程的基本活動包括:
● 抽取需求;
● 模擬和分析需求;
● 傳遞需求;
● 認(rèn)可需求;
● 進(jìn)化需求。
每個(gè)活動都有它基本的動機(jī)、任務(wù)和結(jié)果,也有各自的困難所在。
首先,開始一個(gè)項(xiàng)目是因?yàn)橐獙ΜF(xiàn)行系統(tǒng)進(jìn)行改造。要改造一個(gè)系統(tǒng)是因?yàn)楝F(xiàn)行系統(tǒng)存在需要解決的問題。如:現(xiàn)行系統(tǒng)與當(dāng)前情況不符合、出現(xiàn)新的商機(jī)或者可能節(jié)省時(shí)間、資金和資源等,這就是抽取需求的動機(jī)。在這個(gè)階段,需求工程師的任務(wù)是認(rèn)識問題之所在,獲取足夠多的知識,最后成為問題領(lǐng)域的專家。需求工程師常采用W6H方法去認(rèn)識問題領(lǐng)域,即6個(gè)以W打頭的問題,一個(gè)以H打頭的問題,如表1所示。
需求抽取是非常困難的,其主要原因有:
● 缺乏領(lǐng)域知識,應(yīng)用領(lǐng)域的問題常常是模糊的、不精確的;
● 存在默認(rèn)的知識,即難以描述的日常知識(常識問題);
● 存在多個(gè)知識源,而且多知識源之間可能有沖突;
● 面對的客戶可能有偏見,如不能提供你需要了解什么或不想告知你需要了解的事情。
需求抽取的方法一般有問卷法、面談法、數(shù)據(jù)采集法、用況法、情景實(shí)例法以及基于目標(biāo)的方法等,還有知識工程方法,如:場記分析法、卡片分類法、分類表格技術(shù)和基于模型的知識獲取等。
需求工程的第二個(gè)階段是模擬和分析需求,目前有許多工作都以此為目標(biāo)進(jìn)行。需求分析和模擬的出發(fā)點(diǎn)在于:
● 指導(dǎo)抽?。?
● 幫助需求工程師了解進(jìn)展;
● 幫助發(fā)現(xiàn)問題;
● 幫助檢查對問題的理解。
需求分析和模擬又包含三個(gè)層次的工作。首先是需求建模。需求模型的表現(xiàn)形式有自然語言、半形式化(如圖、表、結(jié)構(gòu)化英語等)和形式化表示等三種。自然語言形式具有表達(dá)能力強(qiáng)的特點(diǎn),但它不利于捕獲模型的語義,一般只用于需求抽取或標(biāo)記模型。半形式化表示可以捕獲結(jié)構(gòu)和一定的語義,也可以實(shí)施一定的推理和一致性檢查。形式化表示具有精確的語義和推理能力,但要構(gòu)造一個(gè)完整的形式化模型,需要較長時(shí)間和對問題領(lǐng)域的深層次理解。對需求概念模型的要求包括:
● 實(shí)現(xiàn)的獨(dú)立性:不模擬數(shù)據(jù)的表示和內(nèi)部組織等;
● 足夠抽象:只抽取關(guān)于問題的本質(zhì)方面;
● 足夠形式化:語法無二義性,并具有豐富的語義;
● 可構(gòu)造性:簡單的模型塊,能應(yīng)付不同復(fù)雜程度和規(guī)模的描述;
● 利于分析:能支持二義性、不完整性和不一致性分析;
● 可追蹤性:支持橫向交叉索引并能與設(shè)計(jì)或?qū)崿F(xiàn)等建立關(guān)聯(lián);
● 可執(zhí)行性:可以動態(tài)模擬,利于與現(xiàn)實(shí)相比較;
● 最小性:沒有冗余的概念。
需求模擬技術(shù)又分為企業(yè)模擬、功能需求模擬和非功能需求模擬等。
企業(yè)模擬是一種軟系統(tǒng)方法,涉及整個(gè)組織,從各個(gè)不同的視點(diǎn)分析問題,包括目標(biāo)、組織結(jié)構(gòu)、活動、過程等。有的企業(yè)模擬還建立可執(zhí)行的領(lǐng)域模型。采用企業(yè)模擬方法產(chǎn)生的不僅僅是規(guī)格說明,還可以得到許多關(guān)于企業(yè)運(yùn)作的狀況分析。目前代表性的工作包括:信息模擬、組織模擬和目標(biāo)模擬等。
功能需求模擬從不同視點(diǎn)為模擬軟件提供服務(wù),包括結(jié)構(gòu)視點(diǎn)和行為視點(diǎn)等,主要方法有:結(jié)構(gòu)化分析、面向?qū)ο蠓治龊托问交椒?。結(jié)構(gòu)化分析是一種面向數(shù)據(jù)的方法,以數(shù)據(jù)流為中心。其核心概念包括:進(jìn)程、數(shù)據(jù)流、數(shù)據(jù)存儲、外部實(shí)體、數(shù)據(jù)組和數(shù)據(jù)元素。有代表性的模擬工具有:數(shù)據(jù)流圖、數(shù)據(jù)字典、原始進(jìn)程規(guī)格說明。面向?qū)ο蠓治鲆詫ο蠹捌浞?wù)作為建模標(biāo)準(zhǔn),比較自然,對象也具有相對的穩(wěn)定性。主要模擬的元素有:對象、類、屬性、關(guān)系、方法、消息傳遞、Use Cases等。其主要原理包括分類繼承層次、信息隱藏、匯集關(guān)系等。形式化方法從廣義上說,是應(yīng)用離散數(shù)學(xué)的手段來設(shè)計(jì)、模擬和分析,得到像數(shù)學(xué)公式那樣精確的表示。從狹義上說,就是使用一種形式語言進(jìn)行語言公式的形式推理,用于檢查語法的良構(gòu)性并證明某些屬性。形式化方法一般用于一致性檢查、類型檢查、有效性驗(yàn)證、行為預(yù)測以及設(shè)計(jì)求精驗(yàn)證。引入形式化機(jī)制的目的是:
● 減少二義性,提高精確性;
● 為驗(yàn)證打下基礎(chǔ);
● 允許對需求進(jìn)行推理;
● 允許執(zhí)行需求。
但是人們常常不用形式化手段,因?yàn)椋?
● 形式化涉及太多細(xì)節(jié),分析的級別較低;
● 形式化的核心問題是一致性和完整性,而不是獲取需求;
● 沒有合適的工具;
● 要求更多的代價(jià)。
傳遞需求的主要任務(wù)是書寫軟件需求規(guī)格說明,其目的是:
● 傳達(dá)對需求的理解;
● 作為軟件開發(fā)項(xiàng)目的一份契約;
● 作為評價(jià)后續(xù)工作的基線;
● 作為控制需求進(jìn)化的基線。
對需求規(guī)格說明感興趣的群體包括:用戶、客戶;系統(tǒng)分析員、需求分析員;軟件開發(fā)者、程序員;測試員;項(xiàng)目管理者。
認(rèn)可需求就是讓上述人員對需求規(guī)格說明達(dá)成一致,其主要任務(wù)是沖突求解,包括定義沖突和沖突求解兩方面。常用的沖突求解方法有:協(xié)商、競爭、仲裁、強(qiáng)制、教育等,其中有些只能用人的因素去控制。
進(jìn)化需求的必要性是明顯的,因?yàn)榭蛻舻男枰偸遣粩啵ㄟB續(xù))增長的,但是一般的軟件開發(fā)又總是落后于客戶需求的增長,如何管理需求的進(jìn)化(變化)就成為軟件進(jìn)化的首要問題。對傳統(tǒng)的變化管理過程來說,其基本成分包括軟件配置、軟件基線和變化審查小組。當(dāng)前的發(fā)展是軟件家族法,即產(chǎn)品線方法。多視點(diǎn)方法也是管理需求變化的一種新方法,它可以用于管理不一致性并進(jìn)行關(guān)于變化的推理。
posted on 2006-08-09 23:49
★yesjoy★ 閱讀(211)
評論(0) 編輯 收藏 所屬分類:
需求管理