連載:麵向對象葵花寶典:思想、技巧與實踐(17) - 需求分析518方法
對於大部分人來說,可能並沒有機會進行需求分析,因為在大部分的公司裏麵,需求分析都是有很多工作經驗的資深人員,或者是對係統很熟悉的老的開發人員。
所以,很多人都會對需求分析有一種景仰的心態,認為既然做需求的人要求這麼高,那麼需求分析一定很複雜、很難、很高級了。而且很多需求分析人員動不動就會教訓“你要站在客戶的角度”、“你要全麵的分析”等,然後再拋出幾個需求建模之類的玩意嚇嚇你。。。。。。
但其實做需求分析一點都不高深,隻要掌握正確的方法,大部分人都能夠做需求分析,而且可以做的很好!
而且這個正確的方法掌握起來很簡單,不需要你另外再去買一本書刻苦閱讀,也不需要你花費大量的時間去實踐,去探索。
下麵我們就來看,這個簡單的正確方法究竟是什麼。
我總結起來就是“需求分析518方法”,簡稱“我要發”,具體來說就是5W1H8C!!
5:5W,即When、Where、Who、What、Why
1:1H,即How
8:8C,即8個Constraint,包括性能Performance、成本Cost、時間Time、可靠性Reliability、安全性Security、合規性Compliance、技術性Technology、兼容性Compatibility
下麵我們來詳細分析這幾個點。
【5W】
5W:5W作為一組,首先是它們都以W開頭,但這不是最關鍵,最關鍵的在於這些是一個需求產生的環境,或者說上下文(英文Context)。
為什麼我們要關注需求產生的環境?很簡單:環境影響需求。
舉個很簡單的例子:同樣是垃圾桶,放在巴西貧民窟的要求和放在紐約帝國大廈肯定不一樣。貧民窟可能有很多頑皮的小孩,將垃圾桶作為玩具,或者作為足球的射門目標;而帝國大廈都是文質彬彬的白領金領,對美學可能有特別的要求;因此,兩個不同地方的垃圾桶,需求是完全不一樣的。
有人會說,客戶難道不是最明白他們需求的環境麼?為什麼他們不直接告訴我們?
前麵我們提到,客戶往往基於自己的經驗、理解、學識等,給出一個解決方案,然後他們跟你說這是他們的需求。理想的情況,當然是客戶非常在行,最好就是軟件分析師出身的;但現實卻往往不妙,很多客戶對軟件的理解可能僅僅停留在Windows甚至QQ上,甚至有客戶會認為你會變魔法,隻要他說一個簡單需求,你就能變出他想要的!
客戶當然不會是軟件分析師,我們也不是魔法師,因此,我們必須親自出馬,弄清需求產生的環境。
==When==
這是和時間相關的環境信息,常見的時間信息有:
1) 季節信息:春夏秋冬等
2) 日期信息:節日、假日等
3) 作息事件:白天、晚上、淩晨、早晨、上午、下午、晚上、深夜等
一個簡單的例子:我在以前公司做通訊設備的時候,如果是做數據倒換工具,都要求非常智能,最好是一鍵式操作?為什麼呢,因為數據倒換都是在晚上淩晨2~4點進行,此時操作人員最困,思維最遲鈍,如果你做的數據倒換工具需要操作七七四十九大步,九九八十一小步,而隻要一步出錯就全部重來,那麼誰敢去操作?
==Where==
這個事和地點相關的環境信息,常見的地點信息有:
1) 國家、地區:不同的國家和地區有不同的文化、風俗、製度等;
2) 室內、室外、街道;
3) 建築物
一個簡單的例子:一個垃圾桶,放在室內就可能要求美觀小巧(不占地方);而放在室外就可能要求防曬、防雨、防風、防瘋子,而且要求比較大。
==Who==
這是和參與者相關的,注意我這裏用的是“參與者”來描述的,而不是說“人”,為什麼呢?
因為很多外部參與者不一定是“人”,例如外係統、動物等都可以算作Who裏麵的。
常見的參與者信息有:
1) 投資者、管理者
2) 使用者、維護者
3) 監督者、評估者:例如政府機構、監管機構等
4) 其它係統
一個簡單例子,銀行的ATM機,參與者有如下幾類:
顧客:使用ATM機器取款、存款;
銀行維護人員:每天將錢放進ATM機器;
質檢機構:根據XX法律對ATM機進行檢查;
==What==
這個就是客戶最終想要的輸出。例如一個文檔、一份報告、一個圖片、一個係統等。
一般情況下,這也是我們看到的最原始的需求。
==Why==
這個就是客戶遇到的問題、困難、阻礙等,也是客戶提出需求的驅動力。
隻要是客戶覺得不爽的地方都是Why的範圍。
【一個長頸鹿的實例:5W】
有一個建築公司的需求分析人員收到了一個客戶需求“給我建一棟很大的房子”,於是建築公司就建了房子,房子是歐式風格,又大又寬敞,全套宜家家居,全木地板,進口電器。。。。。簡直是應有盡有,結果客戶來收房子的時候說了一句話,讓建築公司吐血,你知道是什麼話麼?
客戶說:“先生們,我是要一棟房子給我們的長頸鹿住!”
因此即使是簡單的一句話需求,我們也需要詳細分析。例如:
Who:這套房子的購買者是動物園、管理者是動物園的飼養員、使用者是長頸鹿、評估者可能是動物管理協會、衛生局等政府部門”
When:這個可能要求一年四季了,如果長頸鹿知識運來展覽一下,那麼就是展覽的這幾個月。”
Where:這個房子要建在動物園,而不是其它居民小區,那麼動物園肯定有一些相關的規定”
What:要求一套房子,但不是簡單意義上的房子,而是長頸鹿住的房子,這就需要考慮高度、圍欄等”
Why: 這個就可能動物園要臨時展覽,也可能要引進長頸鹿,也有可能是原來的長頸鹿房子破舊了”
雖然我們前麵講的時候,5W都是一視同仁的,但實際上有一個W是非常關鍵的,如果這個W錯了,那麼即使其它4W全部正確,也可能導致最後沒有滿足客戶需求,客戶不滿意。
這個最關鍵的W就是Why,因為隻有真正了解了客戶的需求驅動力,才能解決客戶的問題,而隻有解決了客戶的問題,那麼客戶才會真正的滿意。這也是我們前麵提到的需求分析的終極目的是“挖掘客戶的問題,實現客戶價值”!
如下圖形象的描繪了5W的關係:
【1H】
H代表How,但具體是指什麼How呢?
很多人常犯的一個錯誤是在需求分析階段分析了需求如何實現,這樣做是不正確的。需求分析階段的How不是指如何實現需求,而是指需求本身的流程,如何實現需求那是設計階段的事情!
你可能會有疑問:“需求本身還有什麼流程”?
需求又簡單和複雜之分,有的需求可能很簡單,客戶想要的東西也很明確;但有的需求比較複雜,涉及到多次交互,或者多個狀態變化等,這種情況就要把需求的流程描述清楚。
舉個例子吧,取款是一個需求,但取款本身包含多次交互,要插卡、輸入密碼、輸入金額、打印賬單、取錢這些步驟,How就是用來描述這整個流程是如何運行的。
說起來How很簡單,但實際上這是需求分析工作量最大的一部分,How分析的結果是需求分析的主要輸出,而且How分析的質量直接影響最後需求實現的質量。
在前麵進行5W分析的時候,我們沒有什麼具體的指導方法,分析時主要靠分析人員的經驗、水平,而How則不一樣,進行How分析時有一套成熟的方法,這就是“用例方法”!我們將在後續章節詳細介紹用例方法。
【8C】
8C指的是8個約束和限製(Constraintes),具體如下:
| 性能Performance
性能是指係統提供相應服務的效率。一般而言,性能主要包括響應時間、吞吐量。
性能是很多係統架構設計的關鍵約束條件之一。例如,同樣一個Web網站,雖然都是提供信息給用戶流浪,但一個日訪問量1萬的網站,和日訪問量10億的網站,兩者的設計是完全不一樣的。
l 成本Cost
成本指為了實現係統而需要付出的代價。
成本也是很多係統架構設計的關鍵約束之一。例如,客戶隻願意出100萬來買這個係統,最後我們卻設計了一個耗費1000萬的係統,要麼客戶不願買,要麼我們自己虧損。無論哪種情況,最後都是我們賠本了。
l 時間Time
指客戶要求什麼時候交付。
l 可靠性Reliability
指係統長時間正確運行的能力,銀行、證券、電信這些公司,對宕機時間要求很嚴格的
l 安全性Security
指對信息安全的保護能力,涉及到錢、身份證、社會保險號等需求對這個要求很高
l 合規性Compliance
指滿足各種行業標準、法律法規、規範等,例如3C、SOX、3GPP、ITUT等
l 技術性Technology
有的客戶可能要求我們采用某種技術,例如客戶現在都是Windows的機器,那麼就可能要求我們基於Windows平台開發
l 兼容性Compatibility
指我們的產品與係統與客戶其它已有的產品或者係統的兼容能力,要知道現在很少有產品是孤立運行的,特別是在大企業、大公司中,多個係統都是互相交互、互相配合的。新的係統必須能夠和已有的係統配合,否則將無法運行。
為什麼我們要將這8個C單獨列出來呢?
需求分為功能屬性和質量屬性,前麵的5W+1H是屬於功能屬性,而8C是屬於質量屬性,一個需求最終是否被正確的實現了,既要看功能屬性是否正確,也要看質量屬性是否正確,兩者缺一不可!
例如,你做了一個超牛逼的係統,功能超級強大,但一個操作需要10分鍾,你覺得這樣的係統客戶有耐心用麼?
================================================
轉載請注明出處:https://blog.csdn.net/yunhua_lee/article/details/21079473
================================================
最後更新:2017-04-03 12:55:36