1 軟件項(xiàng)目需求分析的重要性
當(dāng)前,軟件開發(fā)往往存在著三大主要問題:預(yù)算超支、進(jìn)度延誤、質(zhì)量糟糕而且很難控制在預(yù)算之內(nèi)———尤其是要高質(zhì)量地實(shí)現(xiàn)用戶的期望。相關(guān)的業(yè)界報(bào)告與分析對(duì)信息系統(tǒng)行業(yè)中不能滿足客戶需求、與用戶預(yù)期不符合以及資源嚴(yán)重浪費(fèi)等現(xiàn)象和問題進(jìn)行了詳細(xì)描述。
隨著信息時(shí)代的發(fā)展,計(jì)算機(jī)軟件的需求愈來愈復(fù)雜,規(guī)模愈來愈大,而且隨著企業(yè)的發(fā)展,工作過程重組,需求變更已愈來愈成為必然。軟件危機(jī)持續(xù)了30年之久,至今仍無法得以很好地解決。究其原因,軟件本身具有的特點(diǎn)固然有關(guān),但長(zhǎng)期以來,缺乏軟件開發(fā)和維護(hù)的正確方法以及忽視軟件開發(fā)過程的質(zhì)量控制乃是最為關(guān)鍵的原因。
其中軟件開發(fā)和維護(hù)方法的不正確性主要體現(xiàn)在:忽視軟件開發(fā)前期的需求分析;開發(fā)過程缺乏統(tǒng)一的、規(guī)范化的方法論的指導(dǎo);文檔資料不齊全或不準(zhǔn)確;忽視與用戶之間、開發(fā)組員之間的交流。
這樣,就經(jīng)常出現(xiàn)用戶對(duì)“已完成”系統(tǒng)不滿意,軟件產(chǎn)品的質(zhì)量經(jīng)常出現(xiàn)漏洞,補(bǔ)丁一大堆。自從20世紀(jì)60年代出現(xiàn)軟件危機(jī)以來,越來越多的人已開始更多地關(guān)注于軟件,思考更好地保證軟件開發(fā)的質(zhì)量,與軟件危機(jī)一起誕生的軟件工程方法和建模理論已經(jīng)發(fā)展了幾十年。
然而事實(shí)卻是,軟件項(xiàng)目存在的質(zhì)量問題仍然很嚴(yán)重。1969年,北約提交了一份報(bào)告,列舉了軟件所面臨問題的原因,其中的原因在今天仍然存在:在Rajesh Naik等人近年來合著的《軟件需求與估算》中提到,我們經(jīng)常會(huì)看到有頭無尾的工程,用戶不滿意的工程,難以投入實(shí)際使用的工程,或者嚴(yán)重超支和拖延進(jìn)度的工程。而導(dǎo)致這些現(xiàn)象的重要原因之一,往往是由需求問題引起的,如客戶和開發(fā)者對(duì)系統(tǒng)的需求缺乏了解;搜集和分析需求的非結(jié)構(gòu)化方法;沒有支持的工具或支持工具價(jià)格昂貴。
1994年《科學(xué)美國(guó)人》曾經(jīng)報(bào)道,盡管經(jīng)過50年的“進(jìn)步”,仍然存在著一種慢性危機(jī)。這就是缺少能夠滿足信息時(shí)代要求的成熟工程科學(xué)的狀況已經(jīng)持續(xù)幾十年了。以上這些令人驚訝的數(shù)字和分析同樣包括了對(duì)于軟件(信息系統(tǒng))產(chǎn)品開發(fā)狀況的統(tǒng)計(jì)與描述。
在軟件產(chǎn)業(yè)最為發(fā)達(dá)的歐美國(guó)家尚且存在如此嚴(yán)重的需求問題,更不用說是近20年來剛剛掀起IT熱潮的中國(guó)了。由此可見,軟件危機(jī)自20世紀(jì)60年代起已經(jīng)持續(xù)了近40年之久,至今在全世界范圍內(nèi)仍無法得以很好地解決。
如何著手解決這個(gè)危機(jī),首先要從原因入手,在明確根源之后,再研究制定相應(yīng)的對(duì)策。根據(jù)IDC的統(tǒng)計(jì),80%的失敗IT項(xiàng)目是由于需求分析做的不好,沒有真正反映出用戶的需求而導(dǎo)致的。同樣對(duì)于出現(xiàn)這種情況的原因,根據(jù)Standish集團(tuán)公司的分析,項(xiàng)目失敗最重要的8個(gè)原因中的5個(gè)都與需求有關(guān):
?、俨煌暾男枨?
②沒有用戶的介入;
?、鄄粚?shí)際的客戶期望;
?、苄枨蠛鸵?guī)范的變更;
⑤提供不再需要了的能力。
此外,CHAOS大學(xué)工作人員Sanjiv指出:“如果沒有搞定需求,則項(xiàng)目一定會(huì)失敗;如果搞定需求,則項(xiàng)目一定會(huì)交付?!痹谶@樣的環(huán)境下,業(yè)界人士從長(zhǎng)期的實(shí)踐中逐步意識(shí)到以工程化的原則和方法組織信息系統(tǒng)開發(fā)工作是解決危機(jī)的一條主要出路,其中相對(duì)而言編碼不是“問題”,問題在于需求階段,需求分析無疑是軟件工程中的關(guān)鍵問題。正因如此,軟件需求的重要性正在不斷提高,因?yàn)樗怯脩糍囈灶A(yù)先知道將獲得什么樣的系統(tǒng)以及投入多少經(jīng)費(fèi)的途徑。
因此人們意識(shí)到以工程化的原則和方法組織軟件開發(fā)工作是解決軟件危機(jī)的一個(gè)主要出路。軟件工程中包含需求、設(shè)計(jì)、編碼和測(cè)試四個(gè)階段。
需求分