軟件需求在軟件項目中扮演著及其重要的角色。不管哪種類型的項目,無論是新產(chǎn)品開發(fā),還是外包項目,開發(fā)隊伍都面臨著普遍存在的需求問題,比如如何獲取有效的需求、如何處理需求的變更等等。這些問題有其共性的一面,也有和項目類型相關(guān)的一面。本文著重討論了在新產(chǎn)品開發(fā)項目中的一些需求問題,以及避免和解決這些問題的建議。
一. 概述
在開始進一步討論之前,我們先明確幾個概念。
首先,本文是從開發(fā)團隊,或者說項目組的角度來看需求問題。所謂開發(fā)團隊,通常包括了程序員、測試員和其他一些項目成員,如配置管理員和軟件架構(gòu)師,以及基層的管理人員,比如項目經(jīng)理。類比于傳統(tǒng)企業(yè),開發(fā)團隊相當(dāng)于企業(yè)的生產(chǎn)車間。但是,在大多數(shù)的軟件組織中,開發(fā)團隊除了擔(dān)當(dāng)“生產(chǎn)”任務(wù)以外,往往也是需求獲取的主體;在某些較為正規(guī)的組織中,也許會有市場部門給出一些需求,但這些市場數(shù)據(jù)和有限的調(diào)研結(jié)果通常是遠遠不夠形成需求規(guī)格書的。
其次,何謂“新產(chǎn)品開發(fā)項目”。簡單而言,在本文中,新產(chǎn)品開發(fā)指開發(fā)團隊需要從無到有將一個想法(idea)轉(zhuǎn)化為產(chǎn)品(product)。新產(chǎn)品開發(fā)不同于產(chǎn)品升級,開發(fā)團隊沒有一個已存在的基礎(chǔ);新產(chǎn)品開發(fā)不同于開發(fā)一個實驗型的作品或者演示、原型之類的東西,開發(fā)團隊最終的產(chǎn)出必須是產(chǎn)品,在功能、性能、可用性等方面都有比較高的要求和期望;新產(chǎn)品開發(fā)不同于承接一個軟件開發(fā)項目,也不同于為明確指定的用戶或者客戶定制產(chǎn)品,開發(fā)團隊最終面對的是廣泛的市場,是一個由眾多獨立的最終用戶(同時也是客戶)組成的群體。新產(chǎn)品開發(fā)項目更加不同于維護型的,或者其他類型的項目。
第三,本文所討論的需求基于需求的傳統(tǒng)定義,即軟件需求指用戶對軟件產(chǎn)品明確的和期望的要求。這些要求直接影響了用戶對此產(chǎn)品的滿意程度,或者更直接的說,影響了用戶的購買決定以及對產(chǎn)品和開發(fā)商喜好的判斷。對于開發(fā)團隊而言,在實際工作中,需求問題往往和設(shè)計問題,特別是高層(High level)的設(shè)計糾纏在一起,很難有明確的界限劃分。但在本文中,需求問題不涉及與具體實現(xiàn)相關(guān)的問題,比如技術(shù)選型,人機界面。
概括而言,在一個新產(chǎn)品開發(fā)項目中,開發(fā)團隊面臨的需求問題涉及到需求的獲取、分析和管理。本文的余下部分將重點討論新產(chǎn)品開發(fā)項目中典型的四大問題,分別是:有限的需求來源、模糊的需求界定、CPD陷阱和NV陷阱。
二. 有限的需求來源
新產(chǎn)品的想法可能來自老板的拍腦袋,也可能來自市場部的報告,或者也可能來自研究部門的某個創(chuàng)意;但不管怎樣,可以肯定的是,沒有人具備足夠的信息來準(zhǔn)確的描繪出未來的產(chǎn)品(而且通常這個未來也不會很遠)是什么樣子。如果項目組成員恰好屬于這個產(chǎn)品的用戶,比如這個產(chǎn)品是一個字處理軟件,或者僅僅是搭上一點關(guān)系,比如這個產(chǎn)品是一個個人理財軟件,那獲取需求的任務(wù)就更加理所當(dāng)然的落在了開發(fā)團隊身上。
表面上看,由開發(fā)團隊自己定義需求會使得需求相對穩(wěn)定,對開發(fā)團隊是有利的。但事實上,開發(fā)團隊會面臨不少棘手的問題,最直接最明顯的,就是需求的來源受限。開發(fā)團隊最需要的就是明確的(最好也是穩(wěn)定的)需求,而現(xiàn)在,要開發(fā)團隊自己去獲得,而且獲取需求的來源又很有限。
由于是新產(chǎn)品,在組織內(nèi)部,開發(fā)團隊通常找不到足夠的幫助。而要從外界獲得,又受到時間、經(jīng)費和職責(zé)等因素的限制。在這種情況下,學(xué)習(xí)競爭對手的產(chǎn)品是一個很有效的方法。開發(fā)團隊可以從研究和剖析類似產(chǎn)品著手,例如,如果要開發(fā)一個電子郵件客戶端軟件,那么,Outlook和Foxmail就是很好的學(xué)習(xí)對象。親身的去使用和體驗這些軟件,仔細閱讀它們的用戶手冊、在線幫助,甚至聯(lián)系它