項目需求分析,看了聽棠的“客戶需求何時休”,深有感觸,何曾自己不是被這個問題整天困擾:客戶需求,為什么總在變阿?做項目真辛苦阿!這樣的感嘆整天都掛在口上。客戶需求變動確實是一個軟件開發(fā)永遠不變的話題。為什么小的軟件企業(yè)面對經(jīng)常變動的需求是如此的狼狽?到底要怎么做才能滿足客戶的需求?
聽棠的“客戶需求何時休”深刻的披露了這個問題存在的根源。
需求分析,不僅僅是拿到客戶的需求,更重要的是還需進行分析,了解細節(jié),并就細節(jié)跟客戶咨詢,獲取最詳細的資料。客戶所能提供給你的只是他們想到的功能需求,很多問題并不在他們考慮的范圍之內(nèi),如果作為項目承擔方?jīng)]有去做分析,簡單的按照功能要求去設計、規(guī)劃,最終出來的系統(tǒng)是很難完全符合客戶的業(yè)務流程的,這時,自然需要更改,被看成了需求的更改。其實,都是缺乏分析所一手造成的。問題等到系統(tǒng)出來了才被發(fā)現(xiàn),這樣的系統(tǒng)本身就是先天不足的了。
聽棠所說到的幾點,感受特別深:
“其實問題出在開頭,客戶需求只是軟件需求分析的一部分,雖然是比較重要的一部分,但也不要只是去記客戶的需求,而是要把客戶的需求進行分析”
“客戶本身是不怎么懂技術的,客戶只知道自己的業(yè)務需求,而在軟件設計時,是在把業(yè)務需求抽象到系統(tǒng)中實現(xiàn)的,把業(yè)務轉(zhuǎn)變?yōu)檫壿嫊r,一切都應該符合邏輯的,但客戶的業(yè)務思想有時候在軟件系統(tǒng)實現(xiàn)時會有問題的,這就需要分析時分析出來的。少了分析,問題也會在后面的開發(fā)中暴露出來,到時可就更麻煩了。”
還有客戶的需求本身會有矛盾(這矛盾是指在邏輯角度來講),客戶本身是意識不到的,只有在分析設計時,才會分析出這里的矛盾,而這些問題,如果在期初時,軟件負責人不分析,而是純粹的“聽從”客戶要求去做,當暴露這些問題時,你怪客戶也沒用啊。
項目需求分析報告,在了解客戶需求時,不要不動腦子,不要一味的點頭說“I C”,其實在表面的業(yè)務里面可能包含著N多的細節(jié),這些細節(jié)是需要你反問客戶的,只有當你提的問題越多,最終獲取的需求最具體,才能讓項目越順利。而且有很多問題,都是在你的反問中,客戶也才開始思考本來沒思考過的問題,客戶也會找到一種合理的需求給你,有人會覺得這樣了解客戶需求未免太麻煩了。至于一些在技術上會遇到問題的地方,也要告訴客戶,別以為到時候再說,客戶是不關心你的技術細節(jié)的,但你如果給他解釋的話,他也會試著理解的。
客戶的需求本身是無休止,因為他們本身也在變,但當你期初的分析合理,后面的變動也將在邏輯上變動,相信代價已經(jīng)不會那么大了。這其實也體現(xiàn)了系統(tǒng)的擴展性。
需求分析,是一個項目提出方和承擔方相互溝通的過程,一方是系統(tǒng)的使用者,一方是系統(tǒng)的制造者,在系統(tǒng)制造過程中,只有雙方相互配合,共同對系統(tǒng)進行設計才能最后達到使用的要求。客戶是業(yè)務上的熟悉者,對業(yè)務流程有非常清晰的了解,但是,對于軟件需求方面的描述是不了解的,他們所能提供的只是他們最終要達到的功能,但是,這其中包含的業(yè)務流程是非常復雜的。我們拿到客戶需求后,應該根據(jù)功能、流程進行初步的設計,構(gòu)造出業(yè)務流程圖,再讓客戶進行評審,提出業(yè)務流程上不對的地方進行修改。這樣來回的交流,最終才能取得較全面的需求,并減少后期的修改。
謹記一點,需求是經(jīng)常變動的,只有先做好需求的分析,了解業(yè)務以后的發(fā)展趨勢,做好具有拓展性的系統(tǒng)設計,才會給系統(tǒng)更大的擴展空間,從而在需求發(fā)生變化的時候可以更從容的修改。