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