需求分析需求分析是指理解用戶需求,就軟件功能與客戶達(dá)成一致,,估計(jì)軟件風(fēng)險(xiǎn)和評估項(xiàng)目代價(jià),,最終形成開發(fā)計(jì)劃的一個(gè)復(fù)雜過程,。(這個(gè)和我在微軟體驗(yàn)到的又不太一樣,,微軟的需求分析大多是市場人員和用戶協(xié)助小組的人去評估用戶的接受程度,,這一點(diǎn)也可以理解,,因?yàn)楣镜男再|(zhì)有根本差別)在這個(gè)過程中,,用戶的確是處在主導(dǎo)地位,需求分析工程師和項(xiàng)目經(jīng)理要負(fù)責(zé)整理用戶需求,,為之后的軟件設(shè)計(jì)打下基礎(chǔ),。需求分析階段結(jié)束后,要求得到:1.SRS文檔(SySTem Requirement SpECification); 2.DRM 文檔,;3.Acceptance Plan. 從廣義上理解:需求分析包括需求的獲取,、分析、規(guī)格說明,、變更,、驗(yàn)證、管理的一系列需求工程。
狹義上理解:需求分析指需求的分析,、定義過程,。 一、為什么要需求分析 需求分析就是分析軟件用戶的需求是什么.如果投入大量的人力,,物力,財(cái)力,時(shí)間,開發(fā)出的軟件卻沒人要,那所有的投入都是徒勞.如果費(fèi)了很大的精力,開發(fā)一個(gè)軟件,最后卻不滿足用戶的要求,從而要重新開發(fā)過,這種返工是讓人痛心疾首的.(相信大家都有體會)比如,用戶需要一個(gè)for linux的軟件,而你在軟件開發(fā)前期忽略了軟件的運(yùn)行環(huán)境,忘了向用戶詢問這個(gè)問題,而想當(dāng)然的認(rèn)為是開發(fā)for windows的軟件,當(dāng)你千辛萬苦地開發(fā)完成向用戶提交時(shí)才發(fā)現(xiàn)出了問題,那時(shí)候你是欲哭無淚了,痕不得找塊豆腐一頭撞死. 需求分析之所以重要,就因?yàn)樗哂袥Q策性,方向性,策略性的作用,他在軟件開發(fā)的過程中具有舉足輕重的地位.大家一定要對需求分析具有足夠的重視.在一個(gè)大型軟件系統(tǒng)的開發(fā)中,他的作用要遠(yuǎn)遠(yuǎn)大于程序設(shè)計(jì). 二,、需求分析的任務(wù) 簡言之,需求分析的任務(wù)就是解決"做什么"的問題,就是要全面地理解用戶的各項(xiàng)要求,并準(zhǔn)確地表達(dá)所接受的用戶需求. 三、需求分析的過程 需求分析階段的工作,可以分為四個(gè)方面:問題識別,分析與綜合,制訂規(guī)格說明,評審. 問題識別 分析與綜合 制訂規(guī)格說明書 評審 四,、需求分析的方法 需求分析的方法有很多.這里只強(qiáng)調(diào)原型化方法,其它的方法如:結(jié)構(gòu)化方法,動(dòng)態(tài)分析法等(個(gè)人認(rèn)為,對初學(xué)者不必深究這些方法,實(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)可能在可靠性,界面的友好性或其他方面上存在缺陷.建造這樣一個(gè)系統(tǒng)的目的是為了考察某一方面的可行性,如算法的可行性,技術(shù)的可行性,或考察是否滿足用戶的需求等.如,為了考察是否滿足用戶的要求,可以用某些軟件工具快速的建造一個(gè)原型系統(tǒng),這個(gè)系統(tǒng)只是一個(gè)界面,然后聽取用戶的意見,改進(jìn)這個(gè)原型.以后的目標(biāo)系統(tǒng)就在原型系統(tǒng)的基礎(chǔ)上開發(fā). 原型主要有三種類型(軟考考過):探索型,實(shí)驗(yàn)型,進(jìn)化型.探索型:目的是要弄清楚對目標(biāo)系統(tǒng)的要求,確定所希望的特性,并探討多種方案的可行性.實(shí)驗(yàn)型:用于大規(guī)模開發(fā)和實(shí)現(xiàn)前,考核方案是否合適,規(guī)格說明是否可靠.進(jìn)化型:目的不在于改進(jìn)規(guī)格說明,而是將系統(tǒng)建造得易于變化,在改進(jìn)原型的過程中,逐步將原型進(jìn)化成最終系統(tǒng),。 在使用原型化方法是有兩種不同的策略:廢棄策略,追加策略.廢棄策略:先建造一個(gè)功能簡單而且質(zhì)量要求不高的模型系統(tǒng),,針對這個(gè)系統(tǒng)反復(fù)進(jìn)行修改,形成比較好的思想,據(jù)此設(shè)計(jì)出較完整,準(zhǔn)確,一致,可靠的最終系統(tǒng).系統(tǒng)構(gòu)造完成后,原來的模型系統(tǒng)就被廢棄不用.探索型和實(shí)驗(yàn)型屬于這種策略。 追加策略:先構(gòu)造一個(gè)功能簡單而且質(zhì)量要求不高的模型系統(tǒng),,作為最終系統(tǒng)的核心,然后通過不斷地?cái)U(kuò)充修改,逐步追加新要求,,發(fā)展成為最終系統(tǒng)。進(jìn)化型屬于這種策略. 五,、需求分析的20條法則(本節(jié)摘自軟件工程專家網(wǎng)) 客戶與開發(fā)人員交流需要好的方法,。下面建議20條法則,客戶和開發(fā)人員可以通過評審以下內(nèi)容并達(dá)成共識,。如果遇到分歧,,將通過協(xié)商達(dá)成對各自義務(wù)的相互理解,以便減少以后的磨擦(如一方要求而另一方不愿意或不能夠滿足要求),。 1,、 分析人員要使用符合客戶語言習(xí)慣的表達(dá) 2,、分析人員要了解客戶的業(yè)務(wù)及目標(biāo) 3,、 分析人員必須編寫軟件需求報(bào)告 4、 要求得到需求工作結(jié)果的解釋說明 5、 開發(fā)人員要尊重客戶的意見 6,、 開發(fā)人員要對需求及產(chǎn)品實(shí)施提出建議和解決方案 7、 描述產(chǎn)品使用特性 8,、 允許重用已有的軟件組件 9、 要求對變更的代價(jià)提供真實(shí)可靠的評估 10、 獲得滿足客戶功能和質(zhì)量要求的系統(tǒng) 11,、 給分析人員講解您的業(yè)務(wù) 12,、 抽出時(shí)間清楚地說明并完善需求 13,、 準(zhǔn)確而詳細(xì)地說明需求 在需求分析中暫時(shí)加上“待定”標(biāo)志是個(gè)方法,。用該標(biāo)志可指明哪些是需要進(jìn)一步討論、分析或增加信息的地方,,有時(shí)也可能因?yàn)槟硞€(gè)特殊需求難以解決或沒有人愿意處理它而標(biāo)注上“待定”,。客戶要盡量將每項(xiàng)需求的內(nèi)容都闡述清楚,,以便分析人員能準(zhǔn)確地將它們寫進(jìn)“軟件需求報(bào)告”中去,。如果客戶一時(shí)不能準(zhǔn)確表達(dá),通常就要求用原型技術(shù),,通過原型開發(fā),,客戶可以同開發(fā)人員一起反復(fù)修改,,不斷完善需求定義。 14,、 及時(shí)作出決定 15、 尊重開發(fā)人員的需求可行性及成本評估 16、 劃分需求的優(yōu)先級 17、 評審需求文檔和原型 18,、 需求變更要立即聯(lián)系 19、 遵照開發(fā)小組處理需求變更的過程 20,、 尊重開發(fā)人員采用的需求分析過程 “需求確認(rèn)”意味著什么 在“需求分析報(bào)告”上簽字確認(rèn),,通常被認(rèn)為是客戶同意需求分析的標(biāo)志行為,,然而實(shí)際操作中,客戶往往把“簽字”看作是毫無意義的事情,。“他們要我在需求文檔的最后一行下面簽名,,于是我就簽了,,否則這些開發(fā)人員不開始編碼。” 這種態(tài)度將帶來麻煩,,譬如客戶想更改需求或?qū)Ξa(chǎn)品不滿時(shí)就會說:“不錯(cuò),,我是在需求分析報(bào)告上簽了字,但我并沒有時(shí)間去讀完所有的內(nèi)容,,我是相信你們的,,是你們非讓我簽字的。” 同樣問題也會發(fā)生在僅把“簽字確認(rèn)”看作是完成任務(wù)的分析人員身上,,一旦有需求變更出現(xiàn),,他便指著“需求分析報(bào)告”說:“您已經(jīng)在需求上簽字了,所以這些就是我們所開發(fā)的,,如果您想要?jiǎng)e的什么,,您應(yīng)早些告訴我們。” 這兩種態(tài)度都是不對的,。因?yàn)椴豢赡茉陧?xiàng)目的早期就了解所有的需求,,而且毫無疑問地需求將會出現(xiàn)變更,在“需求分析報(bào)告”上簽字確認(rèn)是終止需求分析過程的正確方法,,所以我們必須明白簽字意味著什么,。 六、點(diǎn)評需求分析誤區(qū) 要想說什么是好的需求分析,,不如說什么是不好的需求分析,,知道什么是不好的,自然也就知道了什么是好的,。以下就是一些不好的情況: (1)創(chuàng)意和求實(shí) 永遠(yuǎn)別忘了:需求不是空中樓閣,是實(shí)實(shí)在在的一磚一瓦,。 (2)解剖的快感 永遠(yuǎn)別忘了:分解是必需的,,但最終的目的是為了更好的組合,,而不是為了分解。 (3)角度和思維 永遠(yuǎn)別忘了:沒有任何需求是不對的,,不對的只是你的需求分析。試著站在用戶的思維角度想想,,你的需求分析就會更加的貼近用戶,,更加的合理。軟件應(yīng)該是以人為本的,。 (4)程序員邏輯 永遠(yuǎn)別忘了:需求分析和程序設(shè)計(jì)不盡相同,,合理,、可行是才是重要的。跳出程序設(shè)計(jì)的圈子,,站在%B |
|