最近正在做新產(chǎn)品的需求分析,對需求分析階段的很多問題又有了重新的認(rèn)識,在此結(jié)合以前的經(jīng)驗,就軟件需求分析階段的各個任務(wù),做一下總結(jié),與大家分享。
眾所周知,軟件需求分析是軟件生命周期的第二階段,主要對前期軟件定義及計劃階段提到的任務(wù)及計劃進(jìn)行概要的補(bǔ)充,需求分析的主要任務(wù)不是確定將來的系統(tǒng)怎么完成某項工作,這是設(shè)計階段的事情,而是明確系統(tǒng)將要完成什么功能,對目標(biāo)系統(tǒng)將要完成的功能提出完整、準(zhǔn)確的描述等;在我們國內(nèi)很多軟件公司里,需求分析階段與設(shè)計階段沒有明確的界線,需求分析階段的很多工作,都會放到設(shè)計階段來做或干脆不做,一般很少嚴(yán)格按照軟件工程的方法來執(zhí)行(通過CMM認(rèn)證的軟件公司還好些),大多數(shù)人理解下的需求分析階段的任務(wù)主要還是分三部分:需求的收集、需求整理與編寫及最終的評審,在此就這幾個階段中經(jīng)常遇到的問題作一下大體描述。
一、需求的收集
無論是老產(chǎn)品的改造還是新產(chǎn)品的開發(fā),都需要收集大量的需求作為改造的重點對象,需求的收集也可籠統(tǒng)的分二大部分:內(nèi)部需求與外部需求;內(nèi)部需求一般包括軟件在維護(hù)過程中客戶反饋的未處理的需求、公司內(nèi)部其它各部門在實施軟件過程中反饋的需求及設(shè)計或研發(fā)人員在工作當(dāng)中總結(jié)的對軟件易用性、效率等方面的需求,還包括研究競爭對手的軟件而得出的需求等;外部需求一般包括軟件實施人員或代理商對產(chǎn)品提出的改造建議、設(shè)計人員直接到客戶現(xiàn)場調(diào)研、通過與客戶溝通而得到的需求等。在收集需求的過程中常會遇到以下幾方面的問題:
1、 誤解客戶需求,一般情況下需求分析人員與客戶在業(yè)務(wù)術(shù)語表達(dá)上有所不同,交流過程中可能會理解有誤,特別對于有二義性的需求,會導(dǎo)致分析人員誤解客戶的需求,也可以理解為需求表達(dá)比較模糊,不同的人有不同的理解。
2、 需求的不確定性,一是分析人員對需求把握不準(zhǔn),有些從各個渠道反饋回來的需求有些失真,不能完全表達(dá)客戶的意愿;二是客戶需求的變動較大,不確定,不到真正實用很難表達(dá)清楚要實現(xiàn)的功能。
3、 對時間的合理規(guī)劃,收集過程中經(jīng)常感覺時間太緊,無法完整的收集到客戶的需求,這一點主要還是跟事先沒有計劃好有關(guān),需求的收集是一個長期的過程,而不是在某一時間段內(nèi)就能收集完的,好的需求在于平時的積累,是在日常維護(hù)工作中逐漸收集形成的。
善于主動尋找需求,而不是坐等需求,收集需求的過程中,要通過各種途徑來收集,主動跟客戶或同事交流,這樣才能在溝通過程中得到很多需求,這點主要還是在于分析人員的溝通能力。
二、需求的整理與編寫
需求收集完成后,此階段的任務(wù)主要對需求進(jìn)行過慮、分類整理及編寫需求規(guī)格,需求的整理不權(quán)是分分類、寫寫需求規(guī)格,還要對每個需求進(jìn)行分析,確定這個需求將來做不做,及實現(xiàn)的優(yōu)先級是什么(是高、中還是低),這一階段對分析人員的要求比較高,要縱觀全局來考慮,充分考慮到每個需求點對整個系統(tǒng)的影響等,最終形成軟件需求規(guī)格說明書。這一階段常見的問題有以下幾方面:
1、 缺乏對需求的深入理解,需求分析這個崗位在很多軟件公司都是虛擬的,沒有專人負(fù)責(zé),一般由設(shè)計或開發(fā)人員來負(fù)責(zé),這樣往往會導(dǎo)致對業(yè)務(wù)的需求不能深入理解,在系統(tǒng)把握能力上略顯不足,導(dǎo)致編寫出的需求規(guī)格不全面。
2、 要正確表達(dá)所描述的需求,需求規(guī)格作為設(shè)計階段的依據(jù),首先要保證其正確性,對每一個需求都應(yīng)有一種合理正確的解釋,不能存在二義性,所以分析人員在表達(dá)需求時要認(rèn)真嚴(yán)謹(jǐn),不能模棱兩可,更不能含糊其詞。
3、 要完整表達(dá)所描述的需求,完整性是需求規(guī)格的重要特征之一,一個好的需求規(guī)格應(yīng)該說明什么需求做,什么需求不做,而不需要說明怎么去做,需求規(guī)格只是宏觀