需求分析是建立與客戶之間的橋梁關(guān)系的重要工作環(huán)節(jié),只有做好需求分析,技術(shù)人員才明白客戶到底需要什么樣的產(chǎn)品。避免開發(fā)過程中因為不了解需求而走彎路,浪費大量的時間和金錢。
要做好需求分析,就必須要做好與客戶討論的需求。中培偉業(yè)《需求分析與管理最佳實踐》培訓專家郭老師在這里給大家介紹一下應該如何做好討論業(yè)務(wù)需求。
郭老師指出,以往我們常常認為,需求分析是一件最簡單的事情。客戶說他們需要做一個什么軟件,有些什么功能,我們照著做就可以了,所謂的需求分析員就是需求的記錄員。我要說,這是一個極大的錯誤,許多失敗的軟件項目,或者說軟件項目中的需求問題,大多都源于此。經(jīng)過人們多年的研究發(fā)現(xiàn),在需求分析過程中,客戶存在的最大問題就是提不出正確的需求,這表現(xiàn)為幾種形式:
1. 由于對軟件不了解,客戶提不出需求,不知道軟件最終會做成什么樣子。這類客戶在需求討論過程中,往往只能描述目前自己手工管理的方式是怎樣的,不知道計算機會怎樣管理。
2. 能提出一些業(yè)務(wù)需求,但當軟件做出來擺在自己面前時,需求就變了。這類客戶,他們能熟練使用電腦,對信息化管理是清楚的。他們提出的業(yè)務(wù)需求從整體上應當是八九不離十的。但是,由于沒有實物,在軟件中的一些具體操作并沒有完全想清楚。因此,當軟件真正做出來擺在自己面前時,甚至經(jīng)過一系列流程操作以后,會對一些操作提出變更需求。
3. 能非常詳細地提出業(yè)務(wù)需求,甚至有時候該怎么做的提出來了。這類客戶,參與過很多軟件信息化建設(shè),甚至有些還是軟件開發(fā)的半專業(yè)人士。但是他們提出的業(yè)務(wù)需求過于具體,甚至怎樣實現(xiàn)都說出來了,但這些有時候不是最佳設(shè)計方案、可能在技術(shù)上難于實現(xiàn),甚至有些就是過于理想化而不可實現(xiàn)。
因此,我在進行需求研討的時候,首先跟客戶探討的不是軟件功能,而是客戶現(xiàn)有的業(yè)務(wù)知識,用專業(yè)的話叫“業(yè)務(wù)領(lǐng)域分析”。客戶現(xiàn)有的業(yè)務(wù)流程是什么樣的,都有些什么操作?客戶在業(yè)務(wù)中都有些什么事物,什么專用名詞,都是怎樣定義的,相互之間的關(guān)系是什么?客戶在每一項操作中的目的是什么,為什么要這樣做,他們制作的手工報表都說明了什么問題?后面我會更加詳細地描述怎么進行業(yè)務(wù)領(lǐng)域分析。
在認識了客戶的業(yè)務(wù)領(lǐng)域之后,我們才能去分析他們提出的所有原始需求。他們?yōu)槭裁匆岢鲞@項需求,提這項需求的目的是什么?只有經(jīng)過這樣的分析,我們才能深刻地理解需求,進而運用我們的專業(yè)知識,提出更加合理的技術(shù)方案。但非常遺憾,我們在需求分析中常常不是這樣做的,甚至當軟件都開發(fā)出來了,需求分析人員都說不出客戶為什么要提出這個需求,更談不上了解業(yè)務(wù)操作流程。一句經(jīng)典的話是:“客戶讓我們這樣做的。”
總之,我們做需求分析,眼界不能僅僅停留在軟件本身,應當更開闊一些,應當擴展到跟這個業(yè)務(wù)有關(guān)的那些領(lǐng)域知識中。
當然,另一個極端就是為了開發(fā)軟件,無限地擴大學習領(lǐng)域知識的范圍。為了開發(fā)財務(wù)軟件去考會計師,為了開發(fā)稅務(wù)軟件去學習稅法等等。開發(fā)軟件不是讓我們成為這個領(lǐng)域的專家。我們學習領(lǐng)域知識是為了更好地理解和開發(fā)軟件,是學習與這個軟件有關(guān)的領(lǐng)域知識,而不是成為一個專家。
在客戶提出的所有原始需求中那些與業(yè)務(wù)實現(xiàn)有關(guān)的需求都是無效的需求,它們僅僅只能作為我們的一個參考。什么是與業(yè)務(wù)實現(xiàn)有關(guān)的需求呢?比如要求做成什么界面,數(shù)據(jù)要求怎樣處理,等等。為什么是無效的呢?因為客戶畢竟是非專業(yè),我們應當有這種自信,在理解客戶真實意圖以后,能夠提出比客戶更優(yōu)的解決方案。
還有一些是技術(shù)難于實現(xiàn)或者根本就無法實現(xiàn)的需求,我們應當耐心地說服和引導客戶,并給他提出一個更加合理的方案。注意最后一句話:“給他提出一個更加合理的方案”。蒼白的拒絕客戶往往會讓客戶產(chǎn)生抵觸情緒,但當我們提出一個更加合理的方案時,客戶往往會欣然接受,當然這是在我們對客戶提出的業(yè)務(wù)需求的真實意圖進行深入分析之后。
因此,需求分析不是一種簡單的你說我記的收集活動,而是在大量業(yè)務(wù)分析與技術(shù)可行性分析基礎(chǔ)上的分析活動。只有建立在這種分析基礎(chǔ)上的軟件研發(fā),才能保證需求的正確與變更的可控。