【摘 要】軟件項(xiàng)目的需求不清晰或者需求變更頻繁是導(dǎo)致軟件項(xiàng)目進(jìn)展不順利甚至最終夭折的的重要原因之一。本文著重討論了軟件項(xiàng)目需求分析階段常見的四大誤區(qū),并逐一提出修正意見。在討論中,筆者介紹了業(yè)務(wù)需求的定義,業(yè)務(wù)需求分析的過程,需求分析師在軟件項(xiàng)目中的角色定位和需要掌握的知識(shí)結(jié)構(gòu)。希望通過此次討論可以修正人們對(duì)于軟件項(xiàng)目需求分析的錯(cuò)誤認(rèn)識(shí),減少在軟件項(xiàng)目中因?yàn)樾枨蠖鴮?dǎo)致的項(xiàng)目問題。
【關(guān)鍵詞】軟件項(xiàng)目 需求分析 需求分析師 業(yè)務(wù)分析師
軟件項(xiàng)目的復(fù)雜性、多變性和易變性是整個(gè)軟件項(xiàng)目過程中最難以應(yīng)對(duì)和解決的問題。其導(dǎo)致的直接后果為項(xiàng)目開發(fā)出來的系統(tǒng)無法滿足客戶的需求,軟件產(chǎn)品的質(zhì)量存在嚴(yán)重的漏洞,項(xiàng)目時(shí)間和項(xiàng)目成本嚴(yán)重超出預(yù)期等等。大量實(shí)例證明,項(xiàng)目的需求不清晰或者需求變更頻繁往往是導(dǎo)致軟件項(xiàng)目進(jìn)展不順利甚至最終夭折的的重要原因之一。因此,軟件需求分析作為軟件項(xiàng)目第一階段的重要性已經(jīng)越來越被人們所重視。人們?cè)絹碓角逍训卣J(rèn)識(shí)到一個(gè)項(xiàng)目的需求分析做得是不是細(xì)致、全面、清晰是決定該項(xiàng)目質(zhì)量高低,進(jìn)度能否受控制,以及成本是否能滿足預(yù)算的基礎(chǔ),同時(shí)更是直接影響該項(xiàng)目成敗與否的關(guān)鍵。
雖然需求分析的重要性在眾多軟件項(xiàng)目的曲折進(jìn)程中已經(jīng)逐漸顯現(xiàn)出來,但是它的發(fā)展卻并不如人意。人們常常拿需求分析和項(xiàng)目管理作比較,說需求分析師(或業(yè)務(wù)分析師)就是項(xiàng)目需求分析階段的項(xiàng)目經(jīng)理。1969年創(chuàng)立的美國項(xiàng)目管理協(xié)會(huì)(PMI)把項(xiàng)目管理知識(shí)的推進(jìn)和普及推到了一個(gè)全球頂尖的高度。與之相比,2003年在加拿大成立的國際業(yè)務(wù)分析協(xié)會(huì)(IIBA)則像個(gè)還在學(xué)習(xí)走路的嬰兒。業(yè)務(wù)需求分析的知識(shí)還在不斷地完善和豐富中,而業(yè)務(wù)需求分析知識(shí)的普及更是需要一個(gè)漫長的過程。在不斷探索的實(shí)踐進(jìn)程中,人們對(duì)于業(yè)務(wù)需求分析相關(guān)知識(shí)的理解還不夠深刻和全面,對(duì)于需求分析師(或業(yè)務(wù)分析師)在軟件項(xiàng)目中的角色定位也還不夠清晰。接下來,筆者將具體討論在軟件項(xiàng)目需求分析領(lǐng)域常見的四大誤區(qū)。
一、客戶提出的要求就是需求
這是對(duì)業(yè)務(wù)需求分析最常見最基本的一個(gè)誤解。在軟件項(xiàng)目需求分析階段,項(xiàng)目團(tuán)隊(duì)可能會(huì)遇到兩種極端的情況:一種是客戶完全不清楚自己需要什么,說不清項(xiàng)目的需求是什么。這種情況下,需要項(xiàng)目團(tuán)隊(duì)成員運(yùn)用各種需求發(fā)掘技術(shù)和工具去幫助客戶了解自身待解決的問題和想達(dá)成的目的,在這里筆者不做詳述。另一種情況是,客戶“太清楚”自己想要什么,以至于當(dāng)項(xiàng)目團(tuán)隊(duì)在向客戶收集需求的時(shí)候,客戶會(huì)非常明確地說“我們希望能有一個(gè)xx這樣的軟件,里面有xx這幾個(gè)功能,按了xx這個(gè)功能按鈕之后就跳轉(zhuǎn)至另一個(gè)頁面,頁面的上面如此這般,下面如此這般” 等等。有些項(xiàng)目團(tuán)隊(duì)在收到這樣的“需求”之后,會(huì)覺得客戶要求非常清晰,于是就馬上著手按照客戶所描述的去做。但等到產(chǎn)品完成,交由客戶做測試的時(shí)候,客戶往往會(huì)提出產(chǎn)品這里不太好用,那里不符合要求等各種意見。項(xiàng)目團(tuán)隊(duì)此時(shí)可能會(huì)感到不解,甚至與客戶發(fā)生爭論,因?yàn)樗麄兺耆前凑湛蛻舻囊髞硗瓿傻?。為什么?huì)出現(xiàn)這種明明項(xiàng)目團(tuán)隊(duì)完全依照客戶要求,而客戶仍然不滿意的狀況呢?其中有一個(gè)很重要的原因就是,客戶和項(xiàng)目團(tuán)隊(duì)都沒有弄清楚到底什么是需求,什么是解決方案。
要走出這個(gè)誤區(qū),首先,項(xiàng)目團(tuán)隊(duì)要理解需求(requirement)和解決方案(solution)的定義。根據(jù)IIBA的定義,需求共包括三層含義:
(一)是幫助項(xiàng)目相關(guān)干系人解決問題或達(dá)成目的的某種條件或者能力。
(二)是在項(xiàng)目解決方案或者解決方案的組成模塊中必須完成或達(dá)到的,用來滿足某個(gè)合約、標(biāo)準(zhǔn)、規(guī)格或其他正式文件的某種條件或者能力。
(三)是一份描述上述第1)點(diǎn)和第2)點(diǎn)中所解釋的條件或能力的文檔。
由此可以看出,軟件項(xiàng)目的需求主要指的是項(xiàng)目產(chǎn)品最終能提供的用來解決問題、達(dá)成目標(biāo)、滿足要求的某種條件或者能力。
在BABOKR Guide中,IIBA同樣描述了解決方案的定義:解決方案是對(duì)組織現(xiàn)狀所做的一系列的改變,其目的是為了讓該組織滿足某個(gè)業(yè)務(wù)需要,解決某個(gè)問題,或者善用某個(gè)機(jī)會(huì)。
其次,在理解定義的基礎(chǔ)上,項(xiàng)目團(tuán)隊(duì)要掌握需求和解決方案的區(qū)別?!靶枨蟆彼枋龅氖沁_(dá)成項(xiàng)目目標(biāo)所需要的人物(Who)、事件(What)、地點(diǎn)(Where)、時(shí)間(When)、頻率(How often)和數(shù)量(How much)。而解決方案則是描述如何(How)解決的問題。
回到前面提到的那位“太清楚”自己需要什么的客戶的案例,不難發(fā)現(xiàn),該客戶所提出的需要“這樣的軟件”,“這幾個(gè)功能”,“這個(gè)按鈕”,“這樣的頁面”等均屬于解決方案的范疇,而并非是需求。項(xiàng)目團(tuán)隊(duì)在沒有弄清楚客戶的真正需求的情況下,只是簡單地跟隨客戶提出的解決方案來進(jìn)行,其結(jié)果自然就會(huì)出現(xiàn)前文所提到的產(chǎn)品不能滿足客戶需求的矛盾。此時(shí),項(xiàng)目團(tuán)隊(duì)正確的做法應(yīng)該是:首先,挖掘出客戶所提出的解決方案背后真正想解決的問題或想達(dá)到的目的;然后,將這個(gè)問題或者目的作為項(xiàng)目需求進(jìn)行記錄、分析和確認(rèn);再根據(jù)項(xiàng)目需求和技術(shù)條件與項(xiàng)目團(tuán)隊(duì)一起提出相應(yīng)的解決方案,這個(gè)解決方案可能與客戶提出的一樣,也可能不同;最后,與客戶確認(rèn)該解決方案是否可以滿足客戶的真實(shí)需求。在完成了這一系列分析和溝通之后,項(xiàng)目團(tuán)隊(duì)才可以按照達(dá)成共識(shí)的解決方案開始進(jìn)行系統(tǒng)的設(shè)計(jì)和開發(fā)。
二、客戶需求應(yīng)全部滿足
這是對(duì)業(yè)務(wù)需求分析的又一錯(cuò)誤解讀。在軟件項(xiàng)目中,處于乙方的項(xiàng)目團(tuán)隊(duì)有時(shí)會(huì)對(duì)甲方的客戶“言聽計(jì)從”,只要客戶提出的需求便理所當(dāng)然地認(rèn)為全部都應(yīng)該完成。其結(jié)果最終可能因?yàn)椴杉{了一些不合理或不清晰的需求而導(dǎo)致項(xiàng)目失敗。
一談到軟件項(xiàng)目,工程師們談?wù)摰慕裹c(diǎn)仍然是采用什么解決方案,和存在哪些技術(shù)難點(diǎn),而忽略了分析項(xiàng)目的需求是否是有效的,準(zhǔn)確的,清晰的,和可行的。在有些軟件項(xiàng)目中,需求分析的過程變成了簡單的記錄過程。需求分析人員把客戶提出的需求逐一記錄下來就形成了需求文檔,而沒有進(jìn)行任何的分析。事實(shí)表明,當(dāng)客戶提出需求時(shí),有時(shí)只是站在自己的角度上,而忽略了可能受影響的其他干系人。這一點(diǎn)在當(dāng)項(xiàng)目產(chǎn)品的影響范圍不局限于客戶組織的某一個(gè)部門,而是跨部門甚至跨組織時(shí)尤為明顯。這時(shí)的需求可能是在局部范圍內(nèi)有效,但從整體上來看是無效的或者不完善的。其次,由于表達(dá)的問題,或者客戶本身對(duì)于所提需求的認(rèn)知度不全面,有時(shí)客戶提出的需求可能不準(zhǔn)確或者不清晰。對(duì)于這部分需求,項(xiàng)目團(tuán)隊(duì)很容易僅憑自己的主觀猜想去進(jìn)行設(shè)計(jì)開發(fā),而在很遲的時(shí)間才發(fā)現(xiàn)理解錯(cuò)誤。另外,客戶提出的“天馬行空”的想象也是項(xiàng)目團(tuán)隊(duì)要面對(duì)的困難之一。以上三點(diǎn)都是由于在需求分析階段需求分析人員只是做了簡單的記錄工作,而忽略了需求分析而引起的。
要杜絕上述三種情況的發(fā)生,需求分析人員在收集需求階段應(yīng)該采用“傾聽——分析——溝通——確認(rèn)”的方法。首先,認(rèn)真傾聽客戶的需要,了解客戶的現(xiàn)狀和愿景,收集并記錄客戶提出的需求。其次,對(duì)收集到的所有需求進(jìn)行分析,包括辨別需求的有效性,進(jìn)一步完善需求細(xì)節(jié),對(duì)需求進(jìn)行分類和排序等。第三,需求分析人員要與各方就需求細(xì)節(jié)進(jìn)行溝通,例如與項(xiàng)目開發(fā)團(tuán)隊(duì)核實(shí)需求的可實(shí)現(xiàn)性和可能存在的技術(shù)風(fēng)險(xiǎn),與客戶溝通所掌握的需求細(xì)節(jié)以達(dá)成共識(shí)等等。最后,與各方進(jìn)行需求確認(rèn),形成最終的需求文檔,以作為項(xiàng)目下一步的重要依據(jù)。在整個(gè)過程中,客戶的原始需求可能被修改,被推遲實(shí)施時(shí)間,甚至被取消或被拒絕。
由以上兩個(gè)常見誤區(qū)可以看出,需求分析其實(shí)是一個(gè)專業(yè)性很強(qiáng)的領(lǐng)域。需求分析師除了記錄客戶提出的需求外,還需要對(duì)所提的需求進(jìn)行去偽存真、細(xì)化、驗(yàn)證等一系列工作?,F(xiàn)在,越來越多的軟件開發(fā)企業(yè)設(shè)置了需求分析師(或業(yè)務(wù)分析師)的職位,專門從事軟件項(xiàng)目需求分析的工作,但仍有更多的企業(yè)啟用項(xiàng)目團(tuán)隊(duì)成員擔(dān)當(dāng)業(yè)務(wù)需求分析的工作。到底在軟件項(xiàng)目中需不需要設(shè)置一個(gè)專門的崗位從事業(yè)務(wù)需求分析呢?到底需求分析師和項(xiàng)目團(tuán)隊(duì)中其他崗位的職責(zé)有什么不同呢?需求分析師有哪些職業(yè)技能需要呢?下面,筆者將就這幾個(gè)問題具體分析目前對(duì)需求分析師這個(gè)職業(yè)的兩個(gè)常見理解誤區(qū)。
三、需求分析師與項(xiàng)目經(jīng)理、系統(tǒng)分析師和測試經(jīng)理的區(qū)別不大
軟件項(xiàng)目一定要有需求分析階段,但是不一定要有專門的需求分析師的職位。業(yè)務(wù)需求分析的工作可以由項(xiàng)目團(tuán)隊(duì)中的其他成員從事。就像前面所提到的,需求分析師就是需求分析階段的項(xiàng)目經(jīng)理,所以有很大一部分項(xiàng)目的需求分析工作是由項(xiàng)目經(jīng)理兼任的。人們有時(shí)會(huì)混淆項(xiàng)目經(jīng)理和需求分析師這兩個(gè)角色。簡單來說,需求分析師是保證項(xiàng)目“做正確的事(Do right things)”,而項(xiàng)目經(jīng)理是保證項(xiàng)目“正確地進(jìn)行(Do things right)”。這兩者的差別可以具體從以下幾個(gè)方面進(jìn)行比較:
(一)需求分析師關(guān)心的僅是項(xiàng)目解決方案的成功,即解決方案是否可以滿足客戶的需求;而項(xiàng)目經(jīng)理關(guān)心的是則是整個(gè)項(xiàng)目的成功,即項(xiàng)目是否可以保質(zhì)保量地按時(shí)完成。
(二)需求分析師的職責(zé)是管理需求,保證他們是合理的,有效的,可跟蹤的;而項(xiàng)目經(jīng)理的職責(zé)是根據(jù)項(xiàng)目的三維約束條件(即時(shí)間、成本和范圍)管理整個(gè)項(xiàng)目。
(三)需求分析師定義項(xiàng)目解決方案的范圍,項(xiàng)目經(jīng)理根據(jù)解決方案的范圍定義整個(gè)項(xiàng)目的范圍;需求分析師管理需求變更的過程,項(xiàng)目經(jīng)理管理項(xiàng)目中一切變更的過程;需求分析師分析由于項(xiàng)目需求或者解決方案帶來的項(xiàng)目風(fēng)險(xiǎn),并制定風(fēng)險(xiǎn)應(yīng)對(duì),項(xiàng)目經(jīng)理分析項(xiàng)目中一切可能的風(fēng)險(xiǎn)及相應(yīng)的風(fēng)險(xiǎn)應(yīng)對(duì)。
由以上三點(diǎn)可以得出結(jié)論,需求分析師和項(xiàng)目經(jīng)理從事的工作有很多類似的地方,但是二者的權(quán)責(zé)范圍和關(guān)心的重點(diǎn)不同。需求分析師更著重于項(xiàng)目需求和解決方案,而項(xiàng)目經(jīng)理則更關(guān)注整個(gè)項(xiàng)目。
另外,人們也容易混淆需求分析師、系統(tǒng)分析師和測試經(jīng)理三者的概念。其實(shí),他們也是有所區(qū)別的。具體如下:
1.需求分析師主要負(fù)責(zé)收集、記錄、分析項(xiàng)目需求,最終形成業(yè)務(wù)需求說明書;系統(tǒng)分析師主要負(fù)責(zé)將項(xiàng)目業(yè)務(wù)需求翻譯成系統(tǒng)規(guī)格,最終形成系統(tǒng)規(guī)格說明書;而測試經(jīng)理則是負(fù)責(zé)編寫系統(tǒng)測試計(jì)劃,保證系統(tǒng)功能符合業(yè)務(wù)需求。
2.需求分析師將收集的業(yè)務(wù)需求與系統(tǒng)分析師進(jìn)行交流;系統(tǒng)分析師根據(jù)需求設(shè)計(jì)系統(tǒng)規(guī)格說明,然后再與需求分析師進(jìn)行確認(rèn),最后形成解決方案。
3.測試經(jīng)理根據(jù)需求分析師提供的需求說明和系統(tǒng)分析師提供的解決方案設(shè)計(jì)測試計(jì)劃。此外,需求分析師和系統(tǒng)分析師都將在測試用例和測試腳本的編寫過程中提供必要的咨詢和幫助。
四、需求分析師的技能要求不高,入門容易
現(xiàn)在很多的需求分析師都是從軟件開發(fā)人員轉(zhuǎn)變過來的。人們?nèi)菀子幸粋€(gè)誤區(qū),認(rèn)為需求分析師就是跟人聊天,然后將聊天的內(nèi)容記錄下來,因此對(duì)技能的要求不高,入行很容易。因此,當(dāng)有些程序員不愿意繼續(xù)做“碼農(nóng)”的時(shí)候,就轉(zhuǎn)行做了需求分析師。其實(shí),需求分析師是一個(gè)跨行業(yè)的職位,對(duì)人在不同領(lǐng)域的知識(shí)掌握和不同行業(yè)的熟悉程度都有很高的要求。一方面,需求分析師需要與專業(yè)領(lǐng)域的客戶進(jìn)行溝通,以分析組織現(xiàn)狀、定義項(xiàng)目目標(biāo)、收集和分析業(yè)務(wù)需求;另一方面,需求分析師需要與項(xiàng)目開發(fā)團(tuán)隊(duì)進(jìn)行溝通,解釋客戶需求并驗(yàn)證解決方案是否滿足需求。所以,需求分析師需要對(duì)客戶的業(yè)務(wù)領(lǐng)域和IT領(lǐng)域都非常了解,才能順利地完成以上工作。
BABOKR Guide定義了業(yè)務(wù)需求分析需要掌握的七大知識(shí)領(lǐng)域:業(yè)務(wù)分析規(guī)劃和監(jiān)控(Business Analysis Planning and Monitoring),捕獲(Elicitation),需求管理和溝通(Requirements Management and Communication),企業(yè)分析(Enterprise Analysis),需求分析(Requirements Analysis),解決方案評(píng)估和確認(rèn)(Solution Assessment and Validation),和潛在能力(Underlying Competancies)。想要成為一名合格的業(yè)務(wù)需求分析師,需要對(duì)這七大知識(shí)領(lǐng)域有一定的了解和掌握。
業(yè)務(wù)需求是軟件項(xiàng)目的基礎(chǔ),它直接決定了項(xiàng)目的范圍、進(jìn)度、成本和質(zhì)量,甚至決定了整個(gè)項(xiàng)目的成敗。本文討論了在軟件項(xiàng)目需求分析過程中常見的四大誤區(qū)。希望通過這次討論,使人們更清晰的理解需求的定義,了解需求分析的過程,認(rèn)識(shí)需求分析師的角色定位和需要掌握的知識(shí)結(jié)構(gòu),從而減少在軟件項(xiàng)目中因?yàn)樾枨蠖鴮?dǎo)致的項(xiàng)目問題。
參考文獻(xiàn):
[1] International Institute of Business Analysis. A Guide to the Business Analysis Body of KnowledgeR (BABOKR Guide). Version 2.0. Canada:2009.
[2] 陸麗.需求分析在軟件開發(fā)過程中的重要性.電腦知識(shí)與技術(shù),2012,第8卷第21期:5113
作者簡介:
胡蕓(1980-),女,湖北武漢人,漢族,碩士研究生,助教,研究方向:需求分析、項(xiàng)目管理和人機(jī)交互。