什么是需求分析?
通俗的講,對用戶的意圖不斷揭示和驗叛的過程,要對經過系統可行性分析所確定的系統目標做更為詳細的描述。
假如你是個建筑工程師,有個客戶找你建一個雞窩,這個時候要需要與客戶溝通,來確定客戶到底想要一個什么樣子的雞窩。我們應該注意三點:
1 . 準確的理解和描述客戶需要的功能。
客戶說,我的雞窩要三層的,帶電梯,飲水池,廁所,飲水池要自動判斷水位供水,電梯要可以同時乘坐10只雞....客戶滔滔不絕的講了一大堆,你也都非常忠實的按照自己的理解再一一的向客戶描述一遍,以便于確認客戶的需求是否正確。
2 . 幫助客戶挖掘需求。
等客戶把自己的需求說完了,你發現客戶沒有說雞的臥室,于是,你向客戶提議說:“你看,這雞的臥室要什么樣子的?”,客戶連連的拍著腦門說,我差點給忘記了,雞們啊喜歡晚上在一起聊天,所以呢,需要一個長而大的臥室,但一定要舒適。
3 . 分析客戶需求的可行性
客戶臨走時又說,最近了,黃鼠狼很多,我這個雞窩啊,一樓就不用蓋了,直接蓋二樓和三樓吧!以免晚上遭遇黃鼠狼的攻擊。你這么一分析,客戶這要求,按照目前的技術可沒法建啊,于是,你向客戶提議,一樓采用堅固架子來支撐二三樓的建筑。
--------------------------------------------------------------------------------------------
需求分析困難在哪兒?
有幾種原因使需求分析變得困難:(1)客戶說不清楚需求;(2)需求自身經常變動;(3)分析人員或客戶理解有誤。
1 . 客戶說不清楚需求
有些客戶對需求只有朦朧的感覺,當然說不清楚具體的需求。例如全國各地的很多政府機構在搞網絡建設,這些單位的領導和辦公人員大多不清楚計算機網絡有什么用,反而要軟件系統分析人員替他們設想需求。這類工程的需求是如此的主觀,以致產生很多貪污腐敗現象。
有些客戶心里非常清楚想要什么,但卻說不明白。你可能很不以為然。就舉日常生活的事例吧,比如說買鞋子。我們非常了解自已的腳,但沒法說清楚腳的大小和形狀。只能拿鞋子去試,試穿時感覺到舒服才會買鞋(居然也有神通廣大的售貨員,看一眼客戶的手,就知道應該穿什么樣的鞋)。
如果客戶本身就懂軟件開發,能把需求說得清清楚楚,這樣的需求分析將會非常輕松、愉快。如果客戶全不懂軟件,但信任軟件開發方,這事也好辦。分析人員可以引導客戶,先闡述常規的需求,再由客戶否定不需要的,最終確定客戶真正的需求。最怕的就是“不懂裝懂”或者“半懂充內行”的客戶,他們會提出不切實際的需求。如果這些客戶甚至覺得自己是上帝的爸爸,那么溝通和協商都會很困難。
2 . 需求自身經常變動
唐僧曾說:“妖要是有了仁慈之心,就不再是妖,是人妖。”(《大話西游之大圣娶親》)
連妖都會變心,別說人了。所以喜新厭舊乃人之常情,世界也因此變得多姿多彩。
軟件的需求會變化嗎?
答:據歷史記載,沒有一個軟件的需求改動少于三次。唯一只改動需求兩次的客戶是個死人。這個可憐的家伙還是在運送第三次需求的路上被車子撞死的。[Cline 1995]
讓我們先接受“需求會變動”這個事實吧,免得在需求變動時驚慌失措。明白“需求會變動”這個道理后,在進行需求分析時就要留點神:
(1)盡可能地分析清楚哪些是穩定的需求,哪些是易變的需求。以便在進行系統設計時,將軟件的核心建筑在穩定的需求上,否則將會吃盡苦頭。
(2)在合同中一定要說清楚“做什么”和“不做什么”。如果合同含含糊糊,日后扯皮的事情就多。要防止象韓復渠那樣,在別人請他喝酒吃飯時他什么都點頭(人家就更加獻殷勤),吃完了他就宣布剛才答應的事都不算數,便揚長而去。
3 . 分析人員和顧客理解有誤
有個外星人間諜潛伏到地球刺探情報,它給上司寫了一份報告:“主宰地球的是車。它們喝汽油,靠四個輪子滾動前進。嗓門極大,在夜里雙眼能射出強光。……有趣的是,車里住著一種叫作‘人’的寄生蟲,這些寄生蟲完全控制了車。”
軟件系統分析人員不可能都是全才??蛻舯磉_的需求,不同的分析人員可能有不同的理解。如果分析人員理解錯了,可能會導致開發人員白干活,吃力不討好。我讀中學時候最怕寫作文逃題,如果逃題了,不管作文寫得多長,總是零分。所以分析人員寫好需求說明書后,要請客戶方的各個代表驗證。如果問題很復雜,雙方都不太明白,就有必要請開發人員快速構造軟件的原型,雙方再次論證需求說明書是否正確。
由于客戶大多不懂軟件,他們可能覺得軟件是萬能的,會提出一些無法實現的需求。有時客戶還會把軟件系統分析人員的建議或答復給想歪了。
有一個軟件人員滔滔不絕地向客戶講解在“信息高速公路上做廣告”的種種好處,客戶聽得津津有味。最后,心動的客戶對軟件人員說:“好得很,就讓我們馬上行動起來吧。請您決定廣告牌的尺寸和放在哪條高速公路上,我立即派人去做。”
----------------------------------------------------------------------------------------------
需求分析的分類
需求分析一般可分為功能需求、非功能需求和領域需求
1 . 功能需求:
功能需求主要說明了系統實際應做到什么。這是用戶最直觀也是最主要的需求,如系統的輸入輸出、系統能完成的功能以及其它相關處理等;
2 . 非功能需求:
非功能需求又稱“約束”,它主要從各個角度對系統起約束和限制作用。如響應時間、存儲效率、報表的規格和界面的樣式等
3 . 領域需求:
領域需求的來源不是用戶,而是系統應用的領域,其主要反映了該領域的基本問題。例如勤工儉學管理系統,其領域需求就涉及到諸如應聘合同書、酬金發放及勞工考核等相關內容,如果這些需求得不到滿足,系統就無法正常運行。值得一提的是,領域需求可能是功能需求,也可能是非功能需求。
原文轉自:http://www.anti-gravitydesign.com