有幾種原因使需求分析變得困難:(1)客戶說不清楚需求;(2)需求自身經(jīng)常變動;(3)分析人員或客戶理解有誤。
1客戶說不清楚需求
有些客戶對需求只有朦朧的感覺,當(dāng)然說不清楚具體的需求。例如全國各地的很多政府機構(gòu)在搞網(wǎng)絡(luò)建設(shè),這些單位的領(lǐng)導(dǎo)和辦公人員大多不清楚計算機網(wǎng)絡(luò)有什么用,反而要軟件系統(tǒng)分析人員替他們設(shè)想需求。這類工程的需求是如此的主觀,以致產(chǎn)生很多貪污腐敗現(xiàn)象
有些客戶心里非常清楚想要什么,但卻說不明白。讀者可能很不以為然。就舉日常生活的事例吧,比如說買鞋子。我們非常了解自已的腳,但沒法說清楚腳的大小和形狀。只能拿鞋子去試,試穿時感覺到舒服才會買鞋(居然也有神通廣大的售貨員,看一眼客戶的手,就知道應(yīng)該穿什么樣的鞋)。
如果客戶本身就懂軟件開發(fā),能把需求說得清清楚楚,這樣的需求分析將會非常輕松、愉快。如果客戶全不懂軟件,但信任軟件開發(fā)方,這事也好辦。分析人員可以引導(dǎo)客戶,先闡述常規(guī)的需求,再由客戶否定不需要的,最終確定客戶真正的需求。最怕的就是“不懂裝懂”或者“半懂充內(nèi)行”的客戶,他們會提出不切實際的需求。如果這些客戶甚至覺得自己是上帝的爸爸,那么溝通和協(xié)商都會很困難。
2需求自身經(jīng)常變動
唐僧曾說:“妖要是有了仁慈之心,就不再是妖,是人妖?!保ā洞笤捨饔沃笫ト⒂H》)
連妖都會變心,別說人了。所以喜新厭舊乃人之常情,世界也因此變得多姿多彩。
軟件的需求會變化嗎?
答:據(jù)歷史記載,沒有一個軟件的需求改動少于三次。唯一只改動需求兩次的客戶是個死人。這個可憐的家伙還是在運送第三次需求的路上被車子撞死的。
讓我們先接受“需求會變動”這個事實吧,免得在需求變動時驚慌失措。明白“需求會變動”這個道理后,在進行需求分析時就要留點神:
(1)盡可能地分析清楚哪些是穩(wěn)定的需求,哪些是易變的需求。以便在進行系統(tǒng)設(shè)計時,將軟件的核心建筑在穩(wěn)定的需求上,否則將會吃盡苦頭。
(2)在合同中一定要說清楚“做什么”和“不做什么”。如果合同含含糊糊,日后扯皮的事情就多。要防止象韓復(fù)渠那樣,在別人請他喝酒吃飯時他什么都點頭(人家就更加獻殷勤),吃完了他就宣布剛才答應(yīng)的事都不算數(shù),便揚長而去。
3分析人員或客戶理解有誤
有個外星人間諜潛伏到地球刺探情報,它給上司寫了一份報告:“主宰地球的是車。它們喝汽油,靠四個輪子滾動前進。嗓門極大,在夜里雙眼能射出強光。……有趣的是,車里住著一種叫作‘人’的寄生蟲,這些寄生蟲完全控制了車。”
軟件系統(tǒng)分析人員不可能都是全才。客戶表達的需求,不同的分析人員可能有不同的理解。如果分析人員理解錯了,可能會導(dǎo)致開發(fā)人員白干活,吃力不討好。我讀中學(xué)時候最怕寫作文逃題,如果逃題了,不管作文寫得多長,總是零分。所以分析人員寫好需求說明書后,要請客戶方的各個代表驗證。如果問題很復(fù)雜,雙方都不太明白,就有必要請開發(fā)人員快速構(gòu)造軟件的原型,雙方再次論證需求說明書是否正確。
由于客戶大多不懂軟件,他們可能覺得軟件是萬能的,會提出一些無法實現(xiàn)的需求。有時客戶還會把軟件系統(tǒng)分析人員的建議或答復(fù)給想歪了。
有一個軟件人員滔滔不絕地向客戶講解在“信息高速公路上做廣告”的種種好處,客戶聽得津津有味。最后,心動的客戶對軟件人員說:“好得很,就讓我們馬上行動起來吧。請您決定廣告牌的尺寸和放在哪條高速公路上,我立即派人去做。”
為什么軟件系統(tǒng)分析員的工資要比普通程序員高?就是因為需求分析困難嘛。