【定義】在系統工程及軟體工程中,需求分析指的是在建立一個新的或改變一個現存的系統或産品時,确定新系統的目的、範圍、定義和功能時所要做的所有工作。需求分析是軟體工程中的一個關鍵過程。在這個過程中,系統分析員和軟體工程師确定顧客的需要。隻有在确定了這些需要後他們才能夠分析和尋求新系統的解決方法。
【問題】在軟體工程的曆史中,很長時間裡人們一直認為需求分析是整個軟體工程中最簡單的一個步驟,但在過去十年中越來越多的人認識到它是整個過程中最關鍵的一個過程。假如在需求分析時,分析者們未能正确地認識到顧客的需要的話,那麼最後的軟體實際上不可能達到顧客的需要,或者軟體無法在規定的時間裡完工。
【案例】
PM:你做一個 PHP 的擴充子產品,将功能 A 封裝到這個子產品中。客戶有個系統要用。
RD:好的。PHP 版本有要求嗎?
PM:沒事,你先做一個。然後發過去讓客戶試試。
RD Coding ……
3天後
PM:你做的擴充是基于 PHP5.6做的吧?客戶系統是基于PHP5.1。相容性存在風險。你基于5.1重新做一下吧。
RD:Redoing ……
【分析】這是一場可以避免的時間的浪費。站在 RD 角度可以改進的點是,基于自己專業視角去判斷分析實質是什麼。
1、專業知識:雖然各個産品都有一定程度的相容性,但不同版本總有差異,導緻存在風險。
2、顧聽到不要求版本時,應該非常警惕。要告訴需求提供者,版本不統一存在的風險。即使對方不在意,也要堅持自己的專業分析判斷,去挖掘确認細節。
3、即使發生無有效依據時,也要将目前的決定和依據記錄下來。
【啟示】拿到需求第一步,不是動手,而是進行需求分析。這與公司流程是否要求無關,因為這是要做對事的基本保證。