如果將需求分析階段的工作歸結(jié)為編寫需求規(guī)格說明書,這種簡(jiǎn)化的做法往往是導(dǎo)致項(xiàng)目后期層出不窮問題的罪魁禍?zhǔn)?。建議采用以下步驟形成軟件需求:獲取用戶需求→分析用戶需求→編寫需求文檔→評(píng)審需求文檔→管理需求。下面我們先來討論前兩個(gè)步驟(獲取用戶需求、分析用戶需求)的做法。
獲取用戶需求
這是該階段的一個(gè)最重要的任務(wù)。以下為獲取用戶需求需要執(zhí)行的活動(dòng)(如圖1所示)。
● 了解客戶方的所有用戶類型以及潛在的類型。然后,根據(jù)他們的要求來確定系統(tǒng)的整體目標(biāo)和系統(tǒng)的工作范圍。
● 對(duì)用戶進(jìn)行訪談和調(diào)研。交流的方式可以是會(huì)議、電話、電子郵件、小組討論、模擬演示等不同形式。需要注意的是,每一次交流一定要有記錄,對(duì)于交流的結(jié)果還可以進(jìn)行分類,便于后續(xù)的分析活動(dòng)。例如,可以將需求細(xì)分為功能需求、非功能需求(如響應(yīng)時(shí)間、平均無故障工作時(shí)間、自動(dòng)恢復(fù)時(shí)間等)、環(huán)境限制、設(shè)計(jì)約束等類型。
● 需求分析人員對(duì)收集到的用戶需求做進(jìn)一步的分析和整理。下面是幾條常見的準(zhǔn)則:
?、艑?duì)于用戶提出的每個(gè)需求都要知道“為什么”,并判斷用戶提出的需求是否有充足的理由;
圖1 獲取用戶需求的活動(dòng)
⑵將那種以“如何實(shí)現(xiàn)”的表述方式轉(zhuǎn)換為“實(shí)現(xiàn)什么”的方式,因?yàn)樾枨蠓治鲭A段關(guān)注的目標(biāo)是“做什么”,而不是“怎么做”;
⑶分析由用戶需求衍生出的隱含需求,并識(shí)別用戶沒有明確提出來的隱含需求(有可能是實(shí)現(xiàn)用戶需求的前提條件),這一點(diǎn)往往容易忽略掉,經(jīng)常因?yàn)閷?duì)隱含需求考慮得不夠充分而引起需求變更。
● 需求分析人員將調(diào)研的用戶需求以適當(dāng)?shù)姆绞匠式唤o用戶方和開發(fā)方的相關(guān)人員。大家共同確認(rèn)需求分析人員所提交的結(jié)果是否真實(shí)地反映了用戶的意圖。需求分析人員在這個(gè)任務(wù)中需要執(zhí)行下述活動(dòng):
?、琶鞔_標(biāo)識(shí)出那些未確定的需求項(xiàng)(在需求分析初期往往有很多這樣的待定項(xiàng));
⑵使需求符合系統(tǒng)的整體目標(biāo);
?、潜WC需求項(xiàng)之間的一致性,解決需求項(xiàng)之間可能存在的沖突。
分析用戶需求
在很多情形下,分析用戶需求是與獲取用戶需求并行的,主要通過建立模型的方式來描述用戶的需求,為客戶、用戶、開發(fā)方等不同參與方提供一個(gè)交流的渠道。這些模型是對(duì)需求的抽象,以可視化的方式提供一個(gè)易于溝通的橋梁。用戶需求的分析與獲取用戶需求有著相似的步驟,區(qū)別在于分析用戶需求時(shí)使用模型來描述,以獲取用戶更明確的需求。分析用戶需求需要執(zhí)行下列活動(dòng):
● 以圖形表示的方式描述系統(tǒng)的整體結(jié)構(gòu),包括系統(tǒng)的邊界與接口;
● 通過原型、頁(yè)面流或其它方式向用戶提供可視化的界面,用戶可以對(duì)需求做出自己的評(píng)價(jià);
● 系統(tǒng)可行性分析,需求實(shí)現(xiàn)的技術(shù)可行性、環(huán)境分析、費(fèi)用分析、時(shí)間分析等;
● 以模型描述系統(tǒng)的功能項(xiàng)、數(shù)據(jù)實(shí)體、外部實(shí)體、實(shí)體之間的關(guān)系、實(shí)體之間的狀態(tài)轉(zhuǎn)換等方面的內(nèi)容。
圖2 DFD示意圖
用于需求建模的方法有很多種,最常用的包括數(shù)據(jù)流圖(DFD)、實(shí)體關(guān)系圖(ERD)和用例圖(Use Case)三種方式。DFD作為結(jié)構(gòu)化系統(tǒng)分析與設(shè)計(jì)的主要方法,已經(jīng)得到了廣泛的應(yīng)用,DFD尤其適用于MIS系統(tǒng)的表述。DFD使用四種基本元素來描述系統(tǒng)的行為,過程、實(shí)體、數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)。DFD方法直觀易懂,使用者可以方便地得到系統(tǒng)的邏輯模型和物理模型,但是從DFD圖中無法判斷活動(dòng)的時(shí)序關(guān)系。圖2描述的是某個(gè)項(xiàng)目的DFD示意圖。
ERD方法用于描述系統(tǒng)實(shí)體間的對(duì)應(yīng)關(guān)系,需求分析階段使用ERD描述系統(tǒng)中實(shí)體的邏輯關(guān)系,在設(shè)計(jì)