閱讀905 返回首頁    go 阿裏雲 go 技術社區[雲棲]


連載:麵向對象葵花寶典:思想、技巧與實踐(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

  上一篇:go 2013藍橋杯【模擬賽】硬幣方案
  下一篇:go Android將Activity打成jar包供第三方調用(解決資源文件不能打包的問題)