淺談軟件項目的需求管理
軟件項目區(qū)別于其它項目的最顯著的特征是其不可見性,它不像硬件購銷、建筑工程,都是實實在在可見的東西。而軟件項目在系統(tǒng)交付之前很長一段時間,客戶是無法感知自己想要的系統(tǒng)究竟是什么樣子。因此,需求管理就顯得十分重要,據(jù)相關(guān)統(tǒng)計數(shù)據(jù)分析,軟件項目90%以上失敗的原因都在于沒有重視需求或者需求管理方面做的不到位導(dǎo)致的。
需求管理作為軟件項目管理的一個重要內(nèi)容,貫穿項目實施的全生命周期。俗話說:萬事開頭難。需求作為軟件開發(fā)的第一個環(huán)節(jié),其重要性不言而喻。市面上關(guān)于需求管理的相關(guān)理論和書籍很多,但多數(shù)停留在理論層面,實操性不強。本文主要是根據(jù)我們以往項目的經(jīng)驗,進行一些需求管理方面的探討。我們可以簡單的將軟件項目的需求管理分為需求獲取、需求分析與驗證、需求變更控制三個核心內(nèi)容。
(一)需求獲取
需求獲取是軟件項目需求管理的第一個過程,在這個過程中我們需要運用科學(xué)的方法以及相關(guān)的項目經(jīng)驗庫輔助我們進行需求獲取。需求獲取的核心內(nèi)容是通過調(diào)研掌握軟件項目的實際需求,以便于指導(dǎo)整個項目的實施。需求獲取的主要方法包括:用戶訪談、問卷調(diào)查、現(xiàn)場觀摩、頭腦風(fēng)暴等方法。在實際的項目操作過程中,相對比較明確的需求,我們可采用比較固定的需求獲取方式,比如:問卷調(diào)查等。而對于相對比較模糊的需求或者說用戶無法清晰表述自己需要的是什么的時候,我們可采用比較靈活的方式,例如:用戶訪談、現(xiàn)場觀摩等。
需求的類型主要包括:業(yè)務(wù)需求、用戶需求和功能需求。在需求獲取的過程中,無論采用哪種方法,我們都需要自頂向下或自下向上去了解用戶真實的想法。業(yè)務(wù)需求的獲取對象主要是客戶的高層領(lǐng)導(dǎo),我們都知道,項目的發(fā)起、實施、最終的成敗很大程度上都取決于高層領(lǐng)導(dǎo),我們需要對他們進行訪談,了解高層領(lǐng)導(dǎo)的公司戰(zhàn)略、發(fā)展方向,更為重要的是獲取他們對將要開發(fā)的軟件系統(tǒng)的期望,以及希望該系統(tǒng)在解決現(xiàn)有業(yè)務(wù)問題,對公司整體戰(zhàn)略的支撐方面的期望。幫助我們?nèi)ジ玫乩斫庀到y(tǒng)的宏觀構(gòu)想。在掌握了業(yè)務(wù)需求后,我們需要對中層管理人員進行調(diào)研,核心問題是搞清楚在宏觀戰(zhàn)略目標(biāo)落地的這層,或者說指標(biāo)細(xì)化并負(fù)責(zé)實施的中層他們對軟件系統(tǒng)的期望以及實際要求,他們或希望此系統(tǒng)能夠帶來工作便利,或希望此系統(tǒng)能夠做到精細(xì)化管理,如此等等。但他們都是具體的業(yè)務(wù)部門負(fù)責(zé)人,對自身的業(yè)務(wù)以及系統(tǒng)對業(yè)務(wù)的促進方面,有比較深刻的體會。最后,我們需要在掌握了業(yè)務(wù)需求、用戶需求的基礎(chǔ)之上,通過對IT管理部門、主要操作人員的需求調(diào)研或根據(jù)我們對需求的理解,細(xì)化出系統(tǒng)的功能需求,這個需求是最低層次的需求,也是一個層層落地的過程。
(二)需求分析與驗證
在獲取到軟件項目需求后,接下來的工作就是對需求進行分析與驗證,在項目的實際操作過程中,主要包括:需求分析建模、需求規(guī)格說明書編寫和需求評審三個大的階段。
需求分析建模主要是對已搜集到的信息進行提煉、分析和仔細(xì)審查,為最終用戶所看到的系統(tǒng)建立一個概念模型,確保所有干系人都明白其含義,并能找出其中的錯誤、遺漏或不足。需求分析是軟件項目需求管理的最重要一環(huán)。
在需求分析與建模過程中,對于用戶需求不確定或用戶無法清晰表述需求的,為了加快項目進度,我們往往采用原型法進行需求分析與建模,即根據(jù)我們的經(jīng)驗以及對用戶基本需求的理解,用Axure等原型設(shè)計工具搭建一套原型系統(tǒng)。另外,我們還需要采用UML工具進行用例分析、用例描述等,并最終編寫形成《軟件需求規(guī)格說明書》。
需求驗證或需求評審是衡量需求階段產(chǎn)出成果的重要手段,在完成需求分析與建模后,項目相關(guān)干系人應(yīng)組織召開需求評審會,邀請相關(guān)專家、外部相關(guān)單位等進行需求評審,就需求分析的結(jié)果《需求規(guī)格說明書》、原型系統(tǒng)等進行評審,并對評審結(jié)果進行簽字確認(rèn),確保需求沒有偏離用戶要求,又略高于用戶要求。
(三)需求變更控制
需求管理貫穿于軟件項目開發(fā)的全生命周期,在完成需求獲取、分析與驗證等任務(wù)后,項目組將根據(jù)形成的相關(guān)報告進行系統(tǒng)設(shè)計、編碼、測試、發(fā)布等工作,這些過程其實都會涉及到需求的變更,這就需要我們有一套較好的機制和方法來管理和控制需求變更,以便于項目能夠按期保質(zhì)又在成本范圍內(nèi)完成。
通常的做法是我們?yōu)榱吮苊庑枨笞兏臒o序、頻繁、過度,在項目啟動時會制定一套章程,會有一個CCB(變更控制委員會),通過召開項目啟動會的方式,給相關(guān)干系人確定項目的實施方法、里程碑、溝通計劃,并著重強調(diào)需求變更的流程。
在實際操作中,首先是通過VSS等版本控制工具對需求文檔進行管理,建立需求基線,并通過需求跟蹤矩陣對需求項進行詳細(xì)標(biāo)注。
其次,是在項目執(zhí)行過程中對需求進行變更控制,有一套規(guī)范的流程,過程雖然繁瑣,但能夠給項目的風(fēng)險控制帶來很好的效果。用戶提出需求變更申請,由項目實施團隊進行需求變更的評估,評估包括可能造成的對系統(tǒng)其它功能的影響、實施此次變更需要投入的工作量等,評估完成后由變更控制委員會確定是否同意變更。如果同意,則由項目組進行變更的實施,并對上線后的變更內(nèi)容以及整個系統(tǒng)進行驗證,確保不影響系統(tǒng)運行和操作。如果不同意,則變更不成立,直接駁回用戶方。通過這樣一種雖然看似繁瑣的方法能夠很好地進行需求變更的控制,可以有效避免無序、無理、過度的需求變更,確保項目在可控范圍內(nèi)實施。
以上是我們對軟件項目需求管理的一點認(rèn)識,軟件需求管理之所以重要,主要是因為絕大多數(shù)項目的失敗主要由需求的理解不到位、需求的變更沒有得到有效控制等原因造成的。因此,這就要求我們在軟件項目的需求管理方面,要下更大的力氣去做好需求的獲取、分析、變更控制,結(jié)合項目管理的相關(guān)理論,如PMBOOK、CMMI等,在項目實踐中,不斷總結(jié)經(jīng)驗教訓(xùn),做好需求管理。