需求分析是指理解用戶需求,就軟件功能與客戶達成一致,估計軟件風險和評估項目代價,最終形成開發(fā)計劃的一個復(fù)雜過程。(這個和我在微軟體驗到的又不太一樣,微軟的需求分析大多是市場人員和用戶協(xié)助小組的人去評估用戶的接受程度,這一點也可以理解,因為公司的性質(zhì)有根本差別)在這個過程中,用戶的確是處在主導(dǎo)地位,需求分析工程師和項目經(jīng)理要負責整理用戶需求,為之后的軟件設(shè)計打下基礎(chǔ)。需求分析階段結(jié)束后,要求得到:1.SRS文檔(System Requirement Specification); 2.DRM 文檔;3.Acceptance Plan.
從廣義上理解:需求分析包括需求的獲取、分析、規(guī)格說明、變更、驗證、管理的一系列需求工程。
狹義上理解:需求分析指需求的分析、定義過程。
一、為什么要需求分析
需求分析就是分析軟件用戶的需求是什么.如果投入大量的人力,物力,財力,時間,開發(fā)出的軟件卻沒人要,那所有的投入都是徒勞.如果費了很大的精力,開發(fā)一個軟件,最后卻不滿足用戶的要求,從而要重新開發(fā)過,這種返工是讓人痛心疾首的.(相信大家都有體會)比如,用戶需要一個for linux的軟件,而你在軟件開發(fā)前期忽略了軟件的運行環(huán)境,忘了向用戶詢問這個問題,而想當然的認為是開發(fā)for windows的軟件,當你千辛萬苦地開發(fā)完成向用戶提交時才發(fā)現(xiàn)出了問題,那時候你是欲哭無淚了,痕不得找塊豆腐一頭撞死.
需求分析之所以重要,就因為他具有決策性,方向性,策略性的作用,他在軟件開發(fā)的過程中具有舉足輕重的地位.大家一定要對需求分析具有足夠的重視.在一個大型軟件系統(tǒng)的開發(fā)中,他的作用要遠遠大于程序設(shè)計.
二、需求分析的任務(wù)
簡言之,需求分析的任務(wù)就是解決"做什么"的問題,就是要全面地理解用戶的各項要求,并準確地表達所接受的用戶需求.[page]
三、需求分析的過程
需求分析階段的工作,可以分為四個方面:問題識別,分析與綜合,制訂規(guī)格說明,評審.
問題識別
就是從系統(tǒng)角度來理解軟件,確定對所開發(fā)系統(tǒng)的綜合要求,并提出這些需求的實現(xiàn)條件,以及需求應(yīng)該達到的標準.這些需求包括:功能需求(做什么),性能需求(要達到什么指標),環(huán)境需求(如機型,操作系統(tǒng)等),可靠性需求(不發(fā)生故障的概率),安全保密需求,用戶界面需求,資源使用需求(軟件運行是所需的內(nèi)存,CPU等),軟件成本消耗與開發(fā)進度需求,預(yù)先估計以后系統(tǒng)可能達到的目標.
分析與綜合
逐步細化所有的軟件功能,找出系統(tǒng)各元素間的聯(lián)系,接口特性和設(shè)計上的限制,分析他們是否滿足需求,剔除不合理部分,增加需要部分.最后,綜合成系統(tǒng)的解決方案,給出要開發(fā)的系統(tǒng)的詳細邏輯模型(做什么的模型).
制訂規(guī)格說明書
即編制文檔,描述需求的文檔稱為軟件需求規(guī)格說明書.請注意,需求分析階段的成果是需求規(guī)格說明書(好象軟考曾經(jīng)考過這個問題),向下一階段提交.
評審
對功能的正確性,完整性和清晰性,以及其它需求給予評價.評審?fù)ㄟ^才可進行下一階段的工作,否則重新進行需求分析。
四、需求分析的方法
需求分析的方法有很多.這里只強調(diào)原型化方法,其它的方法如:結(jié)構(gòu)化方法,動態(tài)分析法等(個人認為,對初學者不必深究這些方法,實際上我也從來沒用過這些方法)在此不討論.
原型化方法是十分重要的(是軟考等常考的知識點).原型就是軟件的一個早期可運行的版本,它實現(xiàn)了目標系統(tǒng)的某些或全部功能.
原型化方法就是盡可能快地建造一個粗糙的系統(tǒng),這系統(tǒng)實現(xiàn)了目標系統(tǒng)的某些或全部功能,但是這個系統(tǒng)可能在可靠性,界面的友好性或其他方面上存在缺陷.建造這樣