就是對(duì)項(xiàng)目中描述的用戶需求的普遍理解,一旦理解了需求,分析者、開發(fā)者和用戶就能探索出描述這些需求的多種解決方案。
這一階段的工作一旦做錯(cuò),將最終會(huì)給系統(tǒng)帶來極大損害的部分,由于需求獲取事物造成的對(duì)需求定義的任何改動(dòng),都將導(dǎo)致設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試上的大量返工,而這時(shí)花費(fèi)的資源和時(shí)間將大大超過仔細(xì)精確獲取需求的時(shí)間和資源。
首先,軟件需求不能如實(shí)反映用戶的真正需要。比較常見的一種誤解是需求的簡(jiǎn)單和復(fù)雜程度決定了用戶是否能夠真正理解相應(yīng)的內(nèi)容:誤認(rèn)為客戶只能看懂簡(jiǎn)單的需求,但是對(duì)開發(fā)沒有直接幫助;只有復(fù)雜的需求才有用,但是大多用戶又不可能看得懂。事實(shí)上,造成這類問題的主要原因是捕獲的需求不能反映用戶的視角,因而,用戶站在自己的立場(chǎng)上很難判斷需求是否完備和正確,特別是在開發(fā)活動(dòng)的早期。
其次,軟件需求不能被開發(fā)團(tuán)隊(duì)的不同工種直接共用。理論上,開發(fā)團(tuán)隊(duì)所有成員的工作內(nèi)容都受軟件需求制約;現(xiàn)實(shí)中,如果不采用理想的需求捕獲方式,只有分析人員的工作看起來和軟件需求的內(nèi)容直接關(guān)聯(lián),其它人的工作內(nèi)容和軟件需求的關(guān)聯(lián)并不直觀,形式上的差異或轉(zhuǎn)述往往不易察覺地造成了諸多歧義、冗余或者缺失。
本文并不會(huì)就此開始探討需求開發(fā)的問題,只是強(qiáng)調(diào)需求開發(fā)過程的重要,以及需求開發(fā)過程對(duì)需求變更的影響。就拿筆者親身參與的一個(gè)項(xiàng)目來說:我們遵循一般的軟件開發(fā)過程,通過前期一段時(shí)間的調(diào)研,做需求分析,客戶基本確認(rèn)之后,開發(fā)人員就投入到緊張的開發(fā)工作中,由于項(xiàng)目時(shí)間要求緊迫,在經(jīng)過測(cè)試人員的簡(jiǎn)單確認(rèn)之后,進(jìn)入到試運(yùn)行階段。
結(jié)果是,在客戶的試運(yùn)行報(bào)告中,提出了很多問題,其中就有一條,關(guān)于一個(gè)數(shù)據(jù)查詢條件的設(shè)置,客戶要求的是模糊匹配查詢,而實(shí)現(xiàn)的卻是精確匹配查詢。在相關(guān)的需求文檔中,卻找不到任何相關(guān)的需求說明。
需求開發(fā)完成之后,進(jìn)入系統(tǒng)構(gòu)建階段,下面我們來談構(gòu)建過程中如何做好需求跟蹤,以便于后期需求變更的管理。