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