【本篇為《如何有效實現(xiàn)軟件的需求管理》第三篇,(第一篇,第二篇)】
第二階段:需求分析與設(shè)計(怎么去做)
既然需求已經(jīng)獲取了,也就是說客戶已經(jīng)跟我們說了要做什么或者我們自己想出來的一些需要做的功能,好了,那現(xiàn)在就真正開始進入需求管理階段了。
首先就是需求分析階段了,所謂的需求分析,簡單點來說就是把獲取的需求分析一下,看看是否真的是客戶所想的,看看是否是我們產(chǎn)品能做的。 有時候一個需求就是客戶一句話,但是真正理解起來并不是一句話就能解決的,所以你可能需要再跟客戶確認(rèn),了解他們的真實意圖。(下面就是一張經(jīng)典的需求分析出錯的圖,呵呵,我大學(xué)時老師講到過,這次碰巧又被我看到了,就借來一用)

對于一個需求而言,它不是簡簡單單一個功能上的操作,它有可能是一個性能需求,也有可能是安全保密需求,甚至還有可能是用戶接口需求、成本消耗需求、可靠性需求等,所以在需求分析的階段,不是說跟客戶交流幾句話就能把這個需求完全搞清楚的,而且即使搞清楚了這個需求,能不能做(可行性)也不可能一下子想清楚。
所以為了解決這種問題,各種需求分析的方法也相應(yīng)而生。如果你在大學(xué)的時候?qū)W過軟件工程的話,可能你會記得像結(jié)構(gòu)化分析方法之類的方法,什么數(shù)據(jù)流程圖啊、數(shù)據(jù)字典啊、判定表啊,等等,也許當(dāng)初你為了應(yīng)付考試,就匆匆背了一下,到現(xiàn)在想必也應(yīng)該忘了,即使你當(dāng)初很用心地去看了,去理解了,我相信沒有真正在工作中用到的話,你其實沒有真正理解它們。
不過,如果你想從事需求分析相關(guān)的工作,我可以告訴你,這些知識還是很有用的,需求分析還是需要用到它們的,當(dāng)然很多時候你應(yīng)該不會直接用到這些理論,但是總是間接的用了體現(xiàn)它們思想的工具。(比如UML建模)
今天談的是需求的管理,所以對于怎么做需求分析這種技術(shù)性的活,我不多說了,因為前面也說了,這個靠一篇文章是不能教會的,要真的教會我可能得出一本書了,呵呵。所以我還是側(cè)重于如何去管理。
我們自己公司經(jīng)常用到的需求分析建模工具是FreeMind,基于思維導(dǎo)圖原理,還行挺好用,之前用它的原因是我們用的需求管理工具TechExcel的DevSpec自帶了這個小工具,用用挺好用,而且可以與需求點以及相關(guān)文檔做關(guān)聯(lián),實時同步需求的變更,所以就用上了,其實以前也用過Visio,也挺好的,不過白貓黑貓,能抓老鼠就是好貓,只要適合就行了。(下面是FreeMind的截圖,功能還是很強大的,下面也會具體談到)

談到建模,也許有人問,為什么要建模,建模有啥好處,呵呵,這個問題本來不想回答,但是總是有人在問。
一方面,咱們在開發(fā)軟件或者硬件,但是你拿到需求后不可能馬上就能給客戶看到這個產(chǎn)品是怎樣的,所以你有必要做個模型出來,讓客戶能看看漲什么樣子,是不是符合他們的要求,這種就是簡單的建模,對于硬件而言,你可以把縮小版的樣子給客戶看,對于軟件而言,你可以把這個軟件的架構(gòu)啊,可以實現(xiàn)的功能啊、數(shù)據(jù)流啊、程序流啊之類的列出來讓客戶去看;
另一方面,我們在實際開發(fā)中,可能有很多地方不能實際去驗證,需要通過建模方式模擬驗證,比如原子彈爆炸,我們不可能天天去爆炸一顆原子彈去驗證是否符合設(shè)計,而是通過仿真模擬來驗證,輸入的數(shù)據(jù)跟真實原子彈的實物數(shù)據(jù)一樣,然后配合實際的物理與化學(xué)邏輯,用工具模擬出爆炸情況。
(未完待續(xù)