上一期,我們介紹了需求分析五個步驟中的前兩個步驟(獲取用戶需求、分析用戶需求),本期將繼續(xù)介紹后三個步驟(編寫需求文檔、評審需求文檔、管理需求),并與大家討論相關實踐問題。
1、編寫需求文檔
需求文檔可以使用自然語言或形式化語言來描述,還可以添加圖形的表述方式和模型表征的方式。需求文檔應該包括用戶的所有需求(功能性需求和非功能性需求)。
2、評審需求文檔
需求文檔完成后,需要經過正式評審,以便作為下一階段工作的基礎。一般的評審分為用戶評審和同行評審兩類。用戶和開發(fā)方對于軟件項目內容的描述,是以需求規(guī)格說明書作為基礎的;用戶驗收的標準則是依據需求規(guī)格說明書中的內容來制訂,所以評審需求文檔時用戶的意見是第一位的。而同行評審的目的,是在軟件項目初期發(fā)現那些潛在的缺陷或錯誤,避免這些錯誤和缺陷遺漏到項目的后續(xù)階段。
3、管理需求
圖1 需求變更流程
需求的變更是不可避免的,如何以可控的方式管理軟件的需求,對于項目的順利進行有著重要的意義。如果匆匆忙忙地完成用戶調研與分析,則往往意味著不穩(wěn)定的需求。所以需求管理要保證需求分析各個活動都得到了充分的執(zhí)行。對于需求變更的管理,則主要使用需求變更流程和需求跟蹤矩陣的管理方式。需求變更流程和需求跟蹤矩陣分別如圖1和圖2所示。
圖2 需求跟蹤矩陣
常見問題及建議
Q、客戶與最終用戶的區(qū)別是什么?
A、可以借助圖3來說明它們之間的區(qū)別。
圖3 需求獲取渠道示意圖
軟件需求來自系統(tǒng)工程與客戶兩個方面,其中客戶是主要的需求提供者(系統(tǒng)工程需求也來自于客戶)。客戶需要搜集其最終用戶的需求并考慮自身的需求,然后再提供給開發(fā)方。假如客戶并未去認真搜集最終用戶的需求,開發(fā)方便需要做到這一點,因為系統(tǒng)最終要滿足最終用戶的需求。
Q、如何進行用戶訪談?
A、首先,一定要事先確定訪談的目的和提綱。其次,因為用戶往往并不知道應該提供哪些方面的需求,所以需要開發(fā)人員引導。
Q、用戶訪談內容是什么?
A、首先,請用戶描述他們如何完成自己當前的工作,并與用戶一起抽象出一個工作流程或工作模型。然后,在得到用戶的認可后,向用戶解釋自己是怎樣來實現這些功能的,并說明哪些環(huán)節(jié)可以用自動化方式實現等。
Q、采用哪一種方式做需求分析最好?
A、不同的需求分析有不同的特點。還沒有哪一種方法可以完全替代別的方法,否則,現在就不會存在不同的需求建模方式了。一般來說,可以使用DFD+ERD來描述那些功能層次比較清晰的需求;而USE CASE則適于描述功能結構復雜的需求。做需求分析的目的是為了建立需求的模型,不同的子系統(tǒng)有可能使用不同的建模方法。
Q、怎樣做原型,原型的目的是什么?
A、通常使用原型分析方法來幫助開發(fā)方進一步獲取用戶需求或讓用戶確認需求。開發(fā)方往往先向用戶提供一個可視界面作為原型,并在界面上布置必要的元素以演示用戶所需要的功能??梢允褂玫谒拇Z言(例如Visual Basic、Delphi等)來快速生成用戶界面,也可以使用FrontPage等網頁制作工具來生成用戶可視的頁面流。
原型的目的往往是獲取需求。但有時也使用原型的方式來驗證關鍵技術或技術難點。對于技術原型,界面則往往被忽略掉。