關(guān)鍵字:軟件 需求分析
1.概念
需求的定義包括從用戶角度(系統(tǒng)的外部行為),以及從開發(fā)者角度(一些內(nèi)部特性)來闡述需求。
關(guān)鍵的問題是一定要編寫需求文檔。我曾經(jīng)目睹過一個(gè)項(xiàng)目中途更換了所有的開發(fā)者,客戶被迫與新的需求分析者坐到一起。系統(tǒng)的分析人員說:“我們想與你談?wù)勀愕男枨??!笨蛻舻牡谝环磻?yīng)便是:“我已經(jīng)將我的要求都告訴你們前任了,現(xiàn)在我要的就是給我編一個(gè)系統(tǒng)”。而實(shí)際上,需求并未編寫成文檔,因此新的分析人員不得不從頭做起。所以如果只有一堆郵件、會談?dòng)涗浕蛞恍┝闼榈奈凑淼膶υ挘憔痛_信你已明白用戶的需求,那完全是自欺欺人。
需求的另外一種定義認(rèn)為需求是“用戶所需要的并能觸發(fā)一個(gè)程序或系統(tǒng)開發(fā)工作的說明”。有些需求分析專家拓展了這個(gè)概念:“從系統(tǒng)外部能發(fā)現(xiàn)系統(tǒng)所具有的滿足于用戶的特點(diǎn)、功能及屬性等”。這些定義強(qiáng)調(diào)的是產(chǎn)品是什么樣的,而并非產(chǎn)品是怎樣設(shè)計(jì)、構(gòu)造的。而下面的定義則從用戶需要進(jìn)一步轉(zhuǎn)移到了系統(tǒng)特性:
需求是指明必須實(shí)現(xiàn)什么的規(guī)格說明。它描述了系統(tǒng)的行為、特性或?qū)傩裕窃陂_發(fā)過程中對系統(tǒng)的約束。
從上面這些不同形式的定義不難發(fā)現(xiàn):并沒有一個(gè)清晰、毫無二義性的“需求”術(shù)語存在,真正的“需求”實(shí)際上在人們的腦海中,這個(gè)人們主要是指客戶,但一般情況下,用戶并不能描述自己的需要,只就需要系統(tǒng)分析人員根據(jù)用戶的自己語言的描述整理出相關(guān)的需要再進(jìn)一步和客戶核對。系統(tǒng)分析員和客戶需要確保所有項(xiàng)目風(fēng)險(xiǎn)承擔(dān)者在描述需求的那些名詞的理解上務(wù)必達(dá)成共識。
任何文檔形式的需求(例如如下將要描述的需求規(guī)格說明書)僅是一個(gè)模型,一種描述。
2.需求分析的任務(wù)
開發(fā)軟件系統(tǒng)最為困難的部分就是準(zhǔn)確說明開發(fā)什么。最為困難的概念性工作便是編寫出詳細(xì)技術(shù)需求,這包括所有面向用戶、面向機(jī)器和其它軟件系統(tǒng)的接口。同時(shí)這也是一旦做錯(cuò),將最終會給系統(tǒng)帶來極大損害的部分,并且以后再對它進(jìn)行修改也極為困難。
目前,國內(nèi)產(chǎn)品的龐雜,一家企業(yè)可能有幾個(gè)系統(tǒng)并立運(yùn)行,它們之間接口是系統(tǒng)開發(fā)人員最頭痛的問題。
對于商業(yè)最終用戶應(yīng)用程序,企業(yè)信息系統(tǒng)和軟件作為一個(gè)大系統(tǒng)的一部分的產(chǎn)品是顯而易見的。但是對于我們開發(fā)人員來說,并沒有編寫出客戶認(rèn)可的需求文檔,我們?nèi)绾沃理?xiàng)目于何時(shí)結(jié)束?而如果我們不知道什么對客戶來說是重要的,那我們又如何能使客戶感到滿意呢?
然而,即便并非出于商業(yè)目的的軟件需求也是必須的。例如庫、組件和工具這些供開發(fā)小組內(nèi)部使用的軟件。當(dāng)然你可能偶爾勿需文檔說明就能與其他人意見較為一致,但更常見的是出現(xiàn)重復(fù)返工這種不可避免的后果,而重新編制代碼的代價(jià)遠(yuǎn)遠(yuǎn)超過重寫一份需求文檔的代價(jià),這些血的教訓(xùn)正在國內(nèi)的軟件開發(fā)者身上發(fā)生。
4.需求的類型
下面這些定義是需求工程領(lǐng)域中常見術(shù)語的定義。
軟件需求包括三個(gè)不同的層次:業(yè)務(wù)需求、用戶需求和功能需求(也包括非功能需求)。
1.業(yè)務(wù)需求(business requirement)反映了組織機(jī)構(gòu)或客戶對系統(tǒng)、產(chǎn)品高層次的目標(biāo)要求,它們在項(xiàng)目視圖與范圍文檔中予以說明。
2.用戶需求(user requirement) 文檔描述了用戶使用產(chǎn)品必須要完成的任務(wù),這在使用實(shí)例(use case)文檔或方案腳本說明中予以說明。
3.功能需求(functional requirement)定義了開發(fā)人員必須實(shí)現(xiàn)的軟件功能,使得用戶能完成他們的任務(wù),從而滿足了業(yè)務(wù)需求。
在軟件需求規(guī)格說明書 (SRS)中說明的功能需求充分描述了軟件系統(tǒng)所應(yīng)具有的外部行為。軟件需求規(guī)格說明在開發(fā)、測試、質(zhì)量保證、項(xiàng)目管理以及相關(guān)項(xiàng)目功能