何謂需求?簡(jiǎn)單的理解,就是用戶期望軟件達(dá)到的效果。既然是期望,一個(gè)看不見(jiàn)摸不到的東西,憑著客戶去想,再讓研發(fā)人員去分析,理想與現(xiàn)實(shí)的差距也就慢慢顯現(xiàn)出來(lái)。用戶的需求分析不準(zhǔn),需求的界限又難以清除的劃定,失敗的由頭便開(kāi)始埋下,畢竟需求才是軟件的始源。因此,對(duì)軟件開(kāi)發(fā)我一直持悲觀的態(tài)度,在處理用戶需求方面也是謹(jǐn)慎的避免歧義的產(chǎn)生,而非單方面激進(jìn)的提出過(guò)多的功能設(shè)想。
大多數(shù)情況下,在軟件未開(kāi)發(fā)之前,用戶對(duì)軟件功能的要求是非常多的,用一句業(yè)內(nèi)話來(lái)說(shuō),就是他希望點(diǎn)一下按鈕就解決所有的問(wèn)題。這是用戶的理想,當(dāng)然也是軟件供應(yīng)商的理想,但終歸是理想?,F(xiàn)實(shí)來(lái)說(shuō),這個(gè)要求很難滿足,我們惟有對(duì)用戶的要求一一分析,分清主次,量力而行。
現(xiàn)在很多管理類(lèi)文檔將需求分為合理需求和不合理需求兩種類(lèi)型,這種分類(lèi)方式本身并沒(méi)有錯(cuò)誤,但在實(shí)際判斷起來(lái)卻很難,主要是無(wú)法清晰的界定合理和不合理的屬性,用戶和研發(fā)人員的出發(fā)點(diǎn)是不一樣的,每個(gè)研發(fā)人員也都有各自的認(rèn)識(shí),很難確定合理與不合理的標(biāo)準(zhǔn)。因此我更主張將需求按重要程度進(jìn)行分級(jí),需要解決用戶核心問(wèn)題、必須問(wèn)題的需求就是重要的,其他的就可以認(rèn)為是次要的,這就很容易區(qū)分了。而且不同的項(xiàng)目可以根據(jù)客戶與研發(fā)人員的共同認(rèn)識(shí),靈活的定義重要程度的級(jí)次,可以都是重要的需求,可以分為重要的和次要的,也可以分為重要的、次要的和更次要的,每個(gè)項(xiàng)目都可以有自己的靈活性。需求分類(lèi)好了,自然就可以在以重要需求為出發(fā)點(diǎn),兼顧次要需求的基礎(chǔ)上來(lái)進(jìn)行設(shè)計(jì)。
問(wèn)題的關(guān)鍵開(kāi)始轉(zhuǎn)移到如何具體的對(duì)用戶需求按重要程度進(jìn)行分類(lèi)。這個(gè)就是每個(gè)項(xiàng)目自己的靈活性了,如果你做的是財(cái)務(wù)系統(tǒng),財(cái)務(wù)數(shù)據(jù)處理和票據(jù)打印就是重要需求;如果你做的是公文系統(tǒng),文件撰寫(xiě)和流程處理就是重要需求,等等。做為用戶和軟件研發(fā)人員,這方面的共識(shí)還是很容易達(dá)成的。如果要想做的更好,則可以將一個(gè)系統(tǒng)分成若干個(gè)子系統(tǒng),每個(gè)子系統(tǒng)又分成若干個(gè)模塊,模塊再劃分成功能點(diǎn),這樣每一個(gè)單元都給其標(biāo)注重要程度,一個(gè)清晰完整的需求框架就出來(lái)了。需求有了主次之分,則就容易做出取舍了。
對(duì)需求按重要程度進(jìn)行分類(lèi)可以認(rèn)為是需求分析在宏觀層面的東西,微觀方面則是對(duì)每一個(gè)需求點(diǎn)如何理解和處理。前者是項(xiàng)目經(jīng)理或需求負(fù)責(zé)人的責(zé)任,后者則是實(shí)際參與需求分析的團(tuán)隊(duì)成員的責(zé)任。既然是微觀方面,則越詳細(xì)越好,越具體越好,模糊性的詞語(yǔ)一定要杜絕,如“大概”、“應(yīng)該”、“可能”等等。另外,大家還容易犯的毛病,就是文檔描述過(guò)于簡(jiǎn)略,憑自己的感覺(jué)理解去敘述,把文檔的讀者只定義成自己,而不是完全基于需求事實(shí),將文檔的讀者定義成所有參與項(xiàng)目的人。初入行者和懶于寫(xiě)文檔的人都容易出現(xiàn)這種問(wèn)題,但結(jié)果是,概括性的語(yǔ)言無(wú)限放大了大家對(duì)需求的理解,造成歧義。所以,需求越具體、詳細(xì)就越好,磨刀不誤砍柴功。
一言一蔽之,需求要先分主次,再具體分析。
需求分析是分多階段的,理想的流程是需求交流——〉分析整理——〉需求確認(rèn)——〉變更控制,實(shí)際情況下該流程會(huì)多次循環(huán)往復(fù),這個(gè)過(guò)程當(dāng)中,變更控制顯得異常重要,它既是原需求的終止,又是新需求的開(kāi)始,做好變更控制,往往事半功倍。
嚴(yán)格意義來(lái)講,在需求說(shuō)明書(shū)經(jīng)過(guò)論證之后,用戶追加或補(bǔ)充的需求內(nèi)容才能稱(chēng)為需求變更,因此需求變更貫穿了需求說(shuō)明書(shū)經(jīng)過(guò)論證之后的所有軟件管理過(guò)程。
(一) 需求分析階段的需求變更
該部分的需求變更產(chǎn)生于需求分析階段的后期,也就是需求說(shuō)明書(shū)論證之后。此時(shí)產(chǎn)生變更多少會(huì)影響軟件預(yù)期的進(jìn)度,但由于尚未進(jìn)行設(shè)計(jì),因此對(duì)后續(xù)的過(guò)程影響不大。
(二) 系統(tǒng)設(shè)計(jì)階段的需求變更
并非所有的需求變更都會(huì)對(duì)系統(tǒng)架構(gòu)設(shè)計(jì)