【摘要】在軟件開發(fā)項(xiàng)目中,需求分析是關(guān)乎軟件項(xiàng)目開發(fā)成敗的重要因素?,F(xiàn)在的軟件項(xiàng)目中返工開銷占了總開銷很大比例,而導(dǎo)致返工的主要原因是需求分析不明確。針對這一情況,文章闡述了軟件開發(fā)中需求分析任務(wù)、需求分析過程、需求分析方法、需求分析變更問題,以及如何確保需求分析質(zhì)量的措施。
【關(guān)鍵詞】軟件開發(fā);需求分析;原型法;需求變更
隨著全球經(jīng)濟(jì)、科技的快速發(fā)展和社會信息化進(jìn)程的加快,計算機(jī)被廣泛應(yīng)用于各行業(yè)中,各種應(yīng)用軟件應(yīng)運(yùn)而生,各行業(yè)的管理或生產(chǎn)日趨專一化、數(shù)字化、快捷化。從而用戶對計算機(jī)軟件的要求更加復(fù)雜和嚴(yán)格。軟件需求分析正是解決用戶這種需求,軟件需求分析是關(guān)乎軟件項(xiàng)目開發(fā)成敗的重要因素。有資料表明,現(xiàn)在的軟件項(xiàng)目中返工開銷幾乎占了總開發(fā)的一半[1],而導(dǎo)致返工的主要原因是需求分析不明確,甚至有些人不知道需求分析是什么,從而引發(fā)項(xiàng)目開發(fā)中的一系列更改。這些更改可能導(dǎo)致浪費(fèi)大量資源、軟件項(xiàng)目無法按時完成等嚴(yán)重問題。所以,需求分析是軟件設(shè)計和實(shí)現(xiàn)的基礎(chǔ),是軟件項(xiàng)目邁向成功的第一步!
一、軟件需求分析的任務(wù)
一個軟件項(xiàng)目的開發(fā)主要分為五個階段:需求分析階段、設(shè)計階段、編碼階段、測試階段和維護(hù)階段。而需求分析階段所得到的結(jié)果,是軟件項(xiàng)目開發(fā)中其他四個階段的必備條件。從以往的經(jīng)驗(yàn)來看,需求分析中的一個小的偏差,就可能導(dǎo)致整個項(xiàng)目無法達(dá)到預(yù)期的效果,或者說最終開發(fā)出的產(chǎn)品不是用戶所需要的。何謂軟件需求分析。先舉個例子來說明,對于建造房子這個問題相信大多數(shù)人都知道,用戶要建一幢房子,建房者一定會與用戶詳細(xì)討論各種細(xì)節(jié),樓層高多少?構(gòu)架如何?圖紙樣式等等,每個環(huán)節(jié)都有詳細(xì)的過程文檔,雙方都明白假如完工后修改帶來的損失以及變更細(xì)節(jié)的危害性。同樣在軟件需求分析中也需要有詳細(xì)的文檔,軟件開發(fā)者要從用戶的業(yè)務(wù)中提取出軟件系統(tǒng)能夠幫助用戶解決的業(yè)務(wù)問題,通過對用戶業(yè)務(wù)問題的分析,規(guī)劃出開發(fā)者的軟件產(chǎn)品。這個步驟是對用戶業(yè)務(wù)需求的一個升華,是一個把用戶業(yè)務(wù)管理流程優(yōu)化,轉(zhuǎn)化為軟件產(chǎn)品,從而提升管理而實(shí)現(xiàn)質(zhì)的飛躍,這一步是否成功,直接關(guān)系到開發(fā)出來的軟件產(chǎn)品能否得到用戶認(rèn)可,順利交付給客戶,客戶能否真正運(yùn)用開發(fā)者的產(chǎn)品幫助他解決業(yè)務(wù)或管理問題[2]。
軟件需求分析的任務(wù)不是確定系統(tǒng)怎樣完成的工作,而是確定系統(tǒng)必須完成那些工作,也就是對目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。它所做的工作是深入描述軟件的功能和性能,確定軟件設(shè)計的限制和軟件同其他系統(tǒng)的接口細(xì)節(jié),定義軟件的其他有效性要求。
軟件需求分析的任務(wù)就是借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)的邏輯模型,解決目標(biāo)系統(tǒng)的“做什么”的問題。其實(shí)現(xiàn)步驟是:(1)獲得當(dāng)前系統(tǒng)的物理模型;(2)抽象出當(dāng)前系統(tǒng)的邏輯模型;(3)建立目標(biāo)系統(tǒng)的邏輯模型。
二、軟件需求分析的過程
軟件需求分析的過程具體可分為對問題的識別、分析與綜合、制定規(guī)格說明和評審。
問題識別是指系統(tǒng)分析人員研究可行性分析報告和軟件項(xiàng)目實(shí)施計劃,確定目標(biāo)系統(tǒng)的綜合要求,并提出這些需求實(shí)現(xiàn)條件,以及需求應(yīng)達(dá)到的標(biāo)準(zhǔn)。這些需求分為:功能性需求+非功能性需求,其具體包括:(1)功能需求:列舉出所開發(fā)軟件在職能上應(yīng)做什么。(2)性能需求:給出所開發(fā)軟件的技術(shù)性能指標(biāo),如存儲容量限制、運(yùn)行時間限制、安全保密性等。(3)環(huán)境需求:軟件系統(tǒng)運(yùn)行時所處環(huán)境的要求,如硬件方面:機(jī)型、外部設(shè)備、數(shù)據(jù)通信接口;軟件方面:系統(tǒng)軟件,包括操作系統(tǒng)、網(wǎng)絡(luò)軟件、數(shù)據(jù)庫管理系統(tǒng)方面;使用方面:使用部門在制度上,操