談什么呢,先談需求分析,做了幾年開發(fā)下來,發(fā)現(xiàn)需求分析是個很重要的問題,很多程序改了又改,甚至有同事說:“程序就是改出來的”,這其中很大一部分問題就是需求分析沒做好或是做的有缺失,所以先把這個問題拿出來說說,既是對自己的一個總結(jié),也希望對別人有所幫助!
做需求分析,我的感覺是盡可能的減少信息傳遞的個體,先說下我對需求分析的理解,就是把客戶的功能描述轉(zhuǎn)化為軟件員所能理解的功能描述,并在客戶描述的基礎上去除不合理的地方,補充系統(tǒng)缺失的地方,最后為系統(tǒng)的概要設計,詳細設計提供準確,有效的數(shù)據(jù)基礎。那么這邊就有個信息傳輸?shù)膯栴},例如一個企業(yè)要做個系統(tǒng),他的老板把他的系統(tǒng)理解傳遞給手下經(jīng)理,再由經(jīng)理傳遞給科員,然后找軟件公司,在來個來回,從前臺人員傳遞給項目經(jīng)理,再由項目經(jīng)理傳遞給程序員,在這樣一個信息傳遞中,每個人都有各自對系統(tǒng)的理解,那么就會產(chǎn)生偏差,誤解,而如果把每一個人的偏差與誤解累加起來,我們就會發(fā)現(xiàn)一個很恐怖的事情,那就是我們的系統(tǒng)可能與客戶原始的初衷相差很遠,甚至可能就是兩種系統(tǒng)的理解,所以我個人感覺在條件允許的情況下盡可能地減少中間的信息傳遞,讓信息損失與誤差降低到最低?。?/P>
還有一種情況是他的軟件需求是由很多個人的集體意見構(gòu)成的,那么這里就有主次,輕重之分了。比如一個辦公自動化系統(tǒng),信息發(fā)布的需求是由某個科長提出的,公文流轉(zhuǎn)是由打印室提出的,文檔管理是由檔案室提出的,而且在提需求的過程中,有科員也有領導,那么在這里,我們就要區(qū)別對待了,首先要做的便是把所有人意見整理一下,把大家的共同意見先整理出來,因為這是我們必須要做的,而且是首要考慮的,然后,我們便是抓大頭,如果某個科員和他的領導在需求方面有分歧,甚至南轅北轍,那么我們就是要把領導的需求放在首要位置,當然這建立在合理的基礎上,優(yōu)先考慮領導需求,把兩份文檔整理出來,那么系統(tǒng)的雛形也就差不多出來了。還有不要忘記,那就是確認,把整理好的需求與各個科室的領導再對下,最好是形成文檔,那么這個需求相對完善了!
還有一種情況也是我碰到過的,那就是客戶對某個要求比較強硬,而這個需求在軟件實現(xiàn)上有其不合理的地方,那么我們就要據(jù)理力爭,雖說“客戶是上帝”,但是我覺得維持一個公司的技術(shù)獨立型,運營獨立性很重要,我們不能被客戶牽著鼻子走,而是我們引導客戶實現(xiàn)他的系統(tǒng)功能,完善他的各項管理!
而我遇到最多的便是小軟件公司不負責任,說難聽點就是忽悠人,但也不是說他亂做,而是僅實現(xiàn)功能地做,甚至我原來公司做個辦公自動化系統(tǒng)就是照著別人的做,就差沒把別人的代碼拿過來換成自己公司的名稱了,完全脫離需求實際,不需要的功能多做了,要的功能少做了或是徹底沒做,結(jié)果呢就是改啊,拖啊,老板竟然還在那自鳴得意,認為照別人做是個不錯的主意,而項目完不成便就是我們的責任,哎!而且很多公司認為只要實現(xiàn)功能就行了,對他們來說最重要的就是收到錢,完全不負責任。所以個人認為在做需求分析時,站在客戶的角度設身處地的去思考系統(tǒng)這是很重要的,我們的客戶不只是要一個實現(xiàn)功能的系統(tǒng)的,而是要一個給他帶來效益的,科學的,合理的,人性化的系統(tǒng),那么很多時候客戶在系統(tǒng)中沒有想到的,我們就要考慮到,這不是給自己找麻煩,而是保持一個系統(tǒng)完整性所必須的,我們提供的不只是個軟件,而是一個精致的產(chǎn)品,一種優(yōu)質(zhì)的服務,甚至是一整套科學合理的完成某些工作的先進理念!而且在很多時候,用戶體驗是很重要的,而在我接觸的公司基本就不考慮這個,在他們來說實現(xiàn)功能,收到錢比什么都重要,所以便一直就是小公司!
關(guān)于需求分析的總結(jié)大體就到這了,當然還有很多其他的東西也是很重要的
,例如在系統(tǒng)開發(fā)前我們必須做好功課,充分了解系統(tǒng)所在行業(yè)的行業(yè)背景,相關(guān)流程,甚至去下一些別人寫的與系統(tǒng)有關(guān)的程序,“存在的都是合理的”,很多時候別人的系統(tǒng)是很值得借鑒的,注意,是借鑒而不是抄襲,我們要學的是思想。當然關(guān)于需求分析還有很多東西,說白了,這也是門學問,而我只是個學習者,還有很多不足,望各位不吝賜教!