一個項目會有很多需求,但這些需求通常并不是有相同優先級的。這就說明,這些需求的價值,有差異。為什么會有這樣的差異呢?
我們的需求分析是基于原始需求的。原始需求通常很粗糙,只是客戶和市場人員的直接描述,甚至連具體目標都不清楚。基于這樣的資料,我們會進行分析,然后猜想用戶的真正需求,圍繞這些需求將我們能做到的提供給客戶。通常,最終需求中會有很多需求點,并不是客戶提出的,甚至并不是他們想要的。下面具體分析看看這些需求點吧。
1、客戶的真實需求。
每一個軟件產品或項目,都是為了解決一個問題或幾個問題。這些問題就是這個軟件的核心需求。即這個軟件就是為了解決這個問題而誕生。這些既是需求,也是軟件的目標,所以如果開發前沒有目標,那么還是先不要動手的好。
2、客戶需求的延伸。
直接需求通常還會衍生出一些間接需求,這些間接需求是為了更好的滿足核心需求。甚至沒有這些延伸,核心需求就無法完成。比如客戶說,我們的系統需要登錄。那么我們不但要做登錄,還一定需要帳戶管理功能。
3、技術性需求。
在具體的應用場合,軟件的肯定會有一些技術性限制,比如網絡帶寬,顯示分辨率,操作系統等等。這些都是我們必須要滿足的,因為不滿足,就無法讓軟件正常運作。
4、我們能夠提供給客戶的。
有些需求,我們能夠做到,但用戶未必需要,為了讓軟件顯得功能豐富,一堆雜七雜八的東西就被提了出來。
5、我們希望提供給客戶的。
我們經常希望客戶除了按照他們的意愿提出功能外,還能夠使用一些我們想提供給他們的功能。
上面的這些需求,都經常在項目中出現。后面要討論的是,這些需求對于軟件產品價值的影響。
從用戶的角度來看需求,我們只是想要我們迫切需要的,能夠直接為我們解決現實問題的。因為每一個功能都不白送,可是要花銀子結帳的。所以豐富的功能,帶來的就是豐富的賬單,產品經理的熱情未必能夠讓用戶買賬。
這里,我們可以按照需求對用戶的重要度,對需求點進行分類。
1、 核心需求:用戶遇到的直接問題,比如財務流程管理繁瑣,效率低下。比如人工統計進銷存效率低下,出錯率高……總之,這些問題直接催生了軟件的產生。
2、必要需求:即為了更好的滿足核心需求,不得不做的一些事。
3、擴展需求:有了更好,沒有也能用。但這些需求會對用戶產生幫助。
如果項目中,有些需求沒有包括在上述三個范圍中,那這些需求基本就是浪費工作量。還是別加在項目里了。
為了更直觀的看到需求點的價值,我設計了一種圖——靶圖。
我們假設有如下需求:
一個工廠為了提高辦公效率,定制一套OA,需要有請假管理、日報系統和辦公流程自動化、以及會議管理系統。
那么可以有如下分析
核心需求:加快辦公流程——杜絕人情因素影響辦公流程;將員工的請假和工作量透明化。減少不必要的會議。
必要需求:帳戶管理、權限管理;mail會議通知;數據報表;工作流;
擴展需求:操作簡單方便;界面美觀;支持移動設備;

一目了然的靶圖就出來了。我們可以清楚的看到,哪些需求是最具客戶價值的,那些是可有可無的。
同時,軟件產品的價值也取決于我們為客戶解決了多少問題,而不是我們提供了多少功能。所以以客戶的角度去分析,才能更客觀的評價一個軟件產品的價值。如果是自主研發的話,最好也虛擬一個客戶的角色。換位思考哪些需求才是重要的。像超市一樣買二送一的方式賣軟件是不可取的,能夠為客戶解決多大的問題,軟件就值多少錢。所以,專業,簡單,關注焦點,才是軟件開發中應該做的