0 引言
對于一個軟件系統(tǒng)的開發(fā)來說,最困難的部分就是準(zhǔn)確說明開發(fā)什么,最困難的概念性工作就是編寫出詳細(xì)的需求,包括所有面向用戶、面向機(jī)器和其它軟件系統(tǒng)的接口。此工作一旦出現(xiàn)紕漏,將會給系統(tǒng)帶來極大的損害,并且以后對它修改也極為困難。所以,需求是整個軟件產(chǎn)品鏈的源頭,需求工作的優(yōu)劣將直接影響到產(chǎn)品的設(shè)計、生產(chǎn)、銷售和維護(hù)的全過程。而對于項目中哪些該做,哪些不該做,做到什么程度,則都是由范圍管理來決定的。軟件項目開發(fā)過程中,花費大量時間用于需求調(diào)研和分析,也都是為了準(zhǔn)確控制好項目范圍,以便于對整個項目的進(jìn)行實施有效的管理。所以說,明確的需求、準(zhǔn)確的項目范圍控制和管理,是項目成功的基礎(chǔ)所在。
1 需求分析
需求分析是一個項目的開端,也是項目建設(shè)的基石。由于需求不明確而造成項目產(chǎn)生風(fēng)險甚至失敗的比例是相當(dāng)高的。因此一個項目成功的關(guān)鍵因素之一,就是對需求的把握程度,即所謂的需求開發(fā)與管理。
1.1 需求開發(fā)與管理的概念
需求分析的過程包括了需求開發(fā)和需求管理兩個部分。需求開發(fā)指的是從情況收集、分析和評價到編寫文檔、評審等一系列產(chǎn)生需求的活動,這幾個階段的活動可以是相互獨立和反復(fù)的,不一定非要遵循線性的順序。需求管理則是與需求直接相關(guān)的活動,即軟件項目開發(fā)過程中控制和維持需求約定的活動,主要包括:變更控制、版本控制、需求跟蹤、需求狀態(tài)跟蹤等工作。
和傳統(tǒng)的產(chǎn)業(yè)相比,由于軟件項目的需求具有模糊性、不確定性、變化性和主觀性的特點,它不像生產(chǎn)汽車、電腦硬件的需求,是有形的、客觀的、可描述的、可檢測的,同時由于需求分析的參與人員、業(yè)務(wù)模式、投資、時間等客觀因素的影響,造成了軟件需求分析是軟件項目開發(fā)中最難把握的問題。需求分析工作的復(fù)雜性及面臨的潛在風(fēng)險主要體現(xiàn)在以下方面: (1)需求描述的準(zhǔn)確性問題; (2)需求的完備程度問題; (3)需求開發(fā)的時間問題; (4)需求的細(xì)化程度問題; (5)需求的變更問題。
1.2 需求變更
在軟件開發(fā)過程中需求的變化是永恒的,需求不可能是完備的,軟件開發(fā)的過程實際上是同變化做斗爭的過程,而造成需求變化的原因也有很多。比如:隨著項目的進(jìn)展,開發(fā)方和客戶方對需求的了解越來越深入,原先的需求文檔可能存在這樣或那樣的錯誤和不足,因此要變更需求;由于市場和業(yè)務(wù)發(fā)生了變化,原先的需求文檔可能跟不上當(dāng)前市場的要求,因此要變更需求等等。需求的變化問題是每個開發(fā)人員、項目經(jīng)理都會遇到的問題,需求的變更不一定是壞事,常常提出需求變更的動機(jī)是好的,目的是希望產(chǎn)品更加符合用戶的需求。但是一旦需求發(fā)生了變化,隨之而來的將是不得不修改設(shè)計、重寫代碼、修改測試用例、調(diào)整項目計劃等問題,對項目開發(fā)小組而言,變更需求意味著要調(diào)整資源、重新分配任務(wù)、修改前期工作成果等,這將為項目的正常進(jìn)展帶來諸多的麻煩,開發(fā)小組也要為此付出較重的代價。如果每次需求變更請求都被采納的話,這個項目也許永遠(yuǎn)不能按時完成。而在需求變更過程中最難辦的事情是莫過于拒絕客戶提出的需求變更請求,通常情況下開發(fā)方是不敢得罪客戶的,但是無原則地退讓將使開發(fā)小組陷入困境。解決這個問題最好的辦法是事先將需求分析工作盡量做完備,即在需求分析上遵循一定的方法步驟,在需求管理上遵循一定的策略。
1.3 需求分析的步驟
在需求分析工作上應(yīng)定位三個階段。第一階段:訪談式。這一階段是和具體用戶方的領(lǐng)導(dǎo)層、業(yè)務(wù)層人員的訪談式溝通,主要目的是從宏觀上把握用戶的具體需求方向和趨勢,了解現(xiàn)有的組織架構(gòu)、業(yè)務(wù)流程、硬件環(huán)境、軟件環(huán)境、現(xiàn)有的運行系統(tǒng)等具體情況、客