需求分析是建立與客戶(hù)之間的橋梁關(guān)系的重要工作環(huán)節(jié),只有做好需求分析,技術(shù)人員才明白客戶(hù)到底需要什么樣的產(chǎn)品。避免開(kāi)發(fā)過(guò)程中因?yàn)椴涣私庑枨蠖邚澛?,浪費(fèi)大量的時(shí)間和金錢(qián)。
要做好需求分析,就必須要做好與客戶(hù)討論的需求。中培課堂《需求分析與管理最佳實(shí)踐》培訓(xùn)專(zhuān)家郭老師在這里給大家介紹一下應(yīng)該如何做好討論業(yè)務(wù)需求。
郭老師指出,以往我們常常認(rèn)為,需求分析是一件最簡(jiǎn)單的事情。客戶(hù)說(shuō)他們需要做一個(gè)什么軟件,有些什么功能,我們照著做就可以了,所謂的需求分析員就是需求的記錄員。我要說(shuō),這是一個(gè)極大的錯(cuò)誤,許多失敗的軟件項(xiàng)目,或者說(shuō)軟件項(xiàng)目中的需求問(wèn)題,大多都源于此。經(jīng)過(guò)人們多年的研究發(fā)現(xiàn),在需求分析過(guò)程中,客戶(hù)存在的最大問(wèn)題就是提不出正確的需求,這表現(xiàn)為幾種形式:
1. 由于對(duì)軟件不了解,客戶(hù)提不出需求,不知道軟件最終會(huì)做成什么樣子。這類(lèi)客戶(hù)在需求討論過(guò)程中,往往只能描述目前自己手工管理的方式是怎樣的,不知道計(jì)算機(jī)會(huì)怎樣管理。
2. 能提出一些業(yè)務(wù)需求,但當(dāng)軟件做出來(lái)擺在自己面前時(shí),需求就變了。這類(lèi)客戶(hù),他們能熟練使用電腦,對(duì)信息化管理是清楚的。他們提出的業(yè)務(wù)需求從整體上應(yīng)當(dāng)是八九不離十的。但是,由于沒(méi)有實(shí)物,在軟件中的一些具體操作并沒(méi)有完全想清楚。因此,當(dāng)軟件真正做出來(lái)擺在自己面前時(shí),甚至經(jīng)過(guò)一系列流程操作以后,會(huì)對(duì)一些操作提出變更需求。他們正如那句經(jīng)典的話說(shuō)的:“I have changed when it saw it.”
3. 能非常詳細(xì)地提出業(yè)務(wù)需求,甚至有時(shí)候該怎么做的提出來(lái)了。這類(lèi)客戶(hù),參與過(guò)很多軟件信息化建設(shè),甚至有些還是軟件開(kāi)發(fā)的半專(zhuān)業(yè)人士。但是他們提出的業(yè)務(wù)需求過(guò)于具體,甚至怎樣實(shí)現(xiàn)都說(shuō)出來(lái)了,但這些有時(shí)候不是最佳設(shè)計(jì)方案、可能在技術(shù)上難于實(shí)現(xiàn),甚至有些就是過(guò)于理想化而不可實(shí)現(xiàn)。
因此,我在進(jìn)行需求研討的時(shí)候,首先跟客戶(hù)探討的不是軟件功能,而是客戶(hù)現(xiàn)有的業(yè)務(wù)知識(shí),用專(zhuān)業(yè)的話叫“業(yè)務(wù)領(lǐng)域分析”??蛻?hù)現(xiàn)有的業(yè)務(wù)流程是什么樣的,都有些什么操作?客戶(hù)在業(yè)務(wù)中都有些什么事物,什么專(zhuān)用名詞,都是怎樣定義的,相互之間的關(guān)系是什么?客戶(hù)在每一項(xiàng)操作中的目的是什么,為什么要這樣做,他們制作的手工報(bào)表都說(shuō)明了什么問(wèn)題?后面我會(huì)更加詳細(xì)地描述怎么進(jìn)行業(yè)務(wù)領(lǐng)域分析。
在認(rèn)識(shí)了客戶(hù)的業(yè)務(wù)領(lǐng)域之后,我們才能去分析他們提出的所有原始需求。他們?yōu)槭裁匆岢鲞@項(xiàng)需求,提這項(xiàng)需求的目的是什么?只有經(jīng)過(guò)這樣的分析,我們才能深刻地理解需求,進(jìn)而運(yùn)用我們的專(zhuān)業(yè)知識(shí),提出更加合理的技術(shù)方案。但非常遺憾,我們?cè)谛枨蠓治鲋谐32皇沁@樣做的,甚至當(dāng)軟件都開(kāi)發(fā)出來(lái)了,需求分析人員都說(shuō)不出客戶(hù)為什么要提出這個(gè)需求,更談不上了解業(yè)務(wù)操作流程。一句經(jīng)典的話是:“客戶(hù)讓我們這樣做的。”
總之,我們做需求分析,眼界不能僅僅停留在軟件本身,應(yīng)當(dāng)更開(kāi)闊一些,應(yīng)當(dāng)擴(kuò)展到跟這個(gè)業(yè)務(wù)有關(guān)的那些領(lǐng)域知識(shí)中。
當(dāng)然,另一個(gè)極端就是為了開(kāi)發(fā)軟件,無(wú)限地?cái)U(kuò)大學(xué)習(xí)領(lǐng)域知識(shí)的范圍。為了開(kāi)發(fā)財(cái)務(wù)軟件去考會(huì)計(jì)師,為了開(kāi)發(fā)稅務(wù)軟件去學(xué)習(xí)稅法等等。開(kāi)發(fā)軟件不是讓我們成為這個(gè)領(lǐng)域的專(zhuān)家。我們學(xué)習(xí)領(lǐng)域知識(shí)是為了更好地理解和開(kāi)發(fā)軟件,是學(xué)習(xí)與這個(gè)軟件有關(guān)的領(lǐng)域知識(shí),而不是成為一個(gè)專(zhuān)家。
在客戶(hù)提出的所有原始需求中那些與業(yè)務(wù)實(shí)現(xiàn)有關(guān)的需求都是無(wú)效的需求,它們僅僅只能作為我們的一個(gè)參考。什么是與業(yè)務(wù)實(shí)現(xiàn)有關(guān)的需求呢?比如要求做成什么界面,數(shù)據(jù)要求怎樣處理,等等。為什么是無(wú)效的呢?因?yàn)榭蛻?hù)畢竟是非專(zhuān)業(yè),我們應(yīng)當(dāng)有這種自信,在理解客戶(hù)真實(shí)意圖以后,能夠提出比客戶(hù)更優(yōu)的解決方案。
還有一些是技術(shù)難于實(shí)現(xiàn)或者根本就無(wú)法實(shí)現(xiàn)的需求,我們應(yīng)當(dāng)耐心地說(shuō)服和引導(dǎo)客戶(hù),并給他提出一個(gè)更加合理的方案。注意最后一句話:“給他提出一個(gè)更加合理的方案”。蒼白的拒絕客戶(hù)往往會(huì)讓客戶(hù)產(chǎn)生抵觸情緒,但當(dāng)我們提出一個(gè)更加合理的方案時(shí),客戶(hù)往往會(huì)欣然接受,當(dāng)然這是在我們對(duì)客戶(hù)提出的業(yè)務(wù)需求的真實(shí)意圖進(jìn)行深入分析之后。
認(rèn)識(shí)到這一點(diǎn)非常重要,為了更加清楚地說(shuō)明這一點(diǎn),郭老師舉了一個(gè)例子。有一次他一個(gè)學(xué)員給客戶(hù)做一個(gè)價(jià)格管理系統(tǒng)時(shí),客戶(hù)提出要做一個(gè)動(dòng)態(tài)報(bào)表的需求。這個(gè)動(dòng)態(tài)報(bào)表要求能讓客戶(hù)從無(wú)到有,完全自由的定制自己的報(bào)表。毫無(wú)疑問(wèn),這是一個(gè)典型的不切實(shí)際的業(yè)務(wù)需求。接到這個(gè)需求以后,這個(gè)學(xué)員將它作為一個(gè)疑問(wèn),在整個(gè)需求調(diào)研過(guò)程中著力進(jìn)行了考察,明白了客戶(hù)為什么提出這樣的需求。
當(dāng)客戶(hù)在向他們的客戶(hù)報(bào)價(jià)時(shí),他們的客戶(hù)在各個(gè)方面都要求他們報(bào)出價(jià)格細(xì)目,而且不同的客戶(hù)要求他們報(bào)的價(jià)格細(xì)目格式還不一樣。但經(jīng)過(guò)仔細(xì)分析,發(fā)現(xiàn)他們面對(duì)的客戶(hù)就是固定的幾家,而這幾家的要求的報(bào)表雖然格式不盡相同,但其數(shù)據(jù)項(xiàng)大體是相同的。
最后,我們給客戶(hù)提出兩個(gè)方案,一個(gè)是按照客戶(hù)所說(shuō)的動(dòng)態(tài)報(bào)表,但要求客戶(hù)在制作報(bào)表時(shí)必須能夠詳細(xì)設(shè)計(jì)報(bào)表中數(shù)據(jù)項(xiàng)的來(lái)源、項(xiàng)目的類(lèi)型,以及繪制報(bào)表格式,讓他們意識(shí)到,即使做出來(lái),作為非專(zhuān)業(yè)的他們也是很難自己完成的。同時(shí),我們提出另一個(gè)方案:我們?yōu)榭蛻?hù)準(zhǔn)備好他們需要填寫(xiě)的各種客戶(hù)報(bào)表所需的所有數(shù)據(jù)項(xiàng),讓他們自由刪減。同時(shí),為他們的不同客戶(hù)提供各自相應(yīng)的報(bào)表模板,這些模板可以在少量的范圍內(nèi)進(jìn)行修改,以此滿(mǎn)足他們的客戶(hù)的不同需要。當(dāng)客戶(hù)拿到這樣的方案,既能滿(mǎn)足他們自己的需要,還操作簡(jiǎn)便、易懂、不費(fèi)事,當(dāng)然就欣然接收啦。
因此,需求分析不是一種簡(jiǎn)單的你說(shuō)我記的收集活動(dòng),而是在大量業(yè)務(wù)分析與技術(shù)可行性分析基礎(chǔ)上的分析活動(dòng)。只有建立在這種分析基礎(chǔ)上的軟件研發(fā),才能保證需求的正確與變更的可控。