期遭遇需求變更時(shí),只能束手無策,但RUP與敏捷方法卻能夠坦然面對(duì)需求的變更,Kent Beck甚至在敏捷開發(fā)中提出了擁抱變化,真是足夠勇敢與足夠信心的宣言?。≡谲浖_發(fā)中,若要應(yīng)對(duì)軟件開發(fā),一般的做法是合理設(shè)計(jì),以求系統(tǒng)與架構(gòu)具有足夠的可擴(kuò)展性;其次則是采用迭代的開發(fā)方式,通過定期甚至是短周期地交付可工作的產(chǎn)品,以印證需求與實(shí)現(xiàn)是否一致。同時(shí),在項(xiàng)目中通過引入客戶的積極參與,使得項(xiàng)目組與客戶的交流能夠暢通無阻,從而避免因?yàn)楦糸u而導(dǎo)致需求分析產(chǎn)生的誤差,以及需求變更無法及時(shí)提出。此外,利用原型快速開發(fā)方式,可以盡快地交付一個(gè)無具體實(shí)現(xiàn)的產(chǎn)品框架或原型,以驗(yàn)證業(yè)務(wù)規(guī)則、業(yè)務(wù)流程以及客戶對(duì)GUI的要求。然而,需求變更絕對(duì)不能無休止地進(jìn)行,這會(huì)導(dǎo)致迭代的永無眠日。
即使是敏捷開發(fā),我們?nèi)匀灰O(shè)定客戶委托事項(xiàng)的基本線,一旦超出這一基本線,變更委員會(huì)(CCB)或其他擔(dān)負(fù)這一職責(zé)的角色就必須提出異議,與客戶協(xié)商或探討這種變更是否是必須的??刂菩枨笞兏囊粋€(gè)實(shí)踐是,獲得客戶對(duì)分析出來的功能點(diǎn)的書面確認(rèn)。雖然在發(fā)生變更時(shí),客戶的意見甚至可以無視這種書面文章,但至少可以在與客戶的談判中搶得先機(jī)。根據(jù)Mark Lines所說,通過變更控制的增強(qiáng)還可以降低項(xiàng)目風(fēng)險(xiǎn)。確實(shí)如此,在與客戶談判中,我們要學(xué)會(huì)說出“拒絕”兩個(gè)字。當(dāng)然,在對(duì)需求變更做出決定性意見之前,必須分析判斷這樣的變更是否合理,是否必要,或者優(yōu)先級(jí)高。一種折中的辦法則是,欣然承諾此次變更,但需要延遲最后期限,或者放在下一次版本迭代之后。
7、預(yù)先評(píng)估風(fēng)險(xiǎn)。風(fēng)險(xiǎn)無處不在。Cockburn將軟件開發(fā)形容為攀巖或者穿越沼澤,已經(jīng)充分說明了軟件開發(fā)過程中的風(fēng)險(xiǎn)。孫子兵法云:夫未戰(zhàn)而廟算勝者,得算多也;未戰(zhàn)而廟算不勝者,得算少也。先預(yù)先著失敗的可能,方能夠謹(jǐn)慎地做好各種準(zhǔn)備,考慮各種風(fēng)險(xiǎn)以及驅(qū)避措施,方能夠最大可能地取得勝利。軟件開發(fā)的風(fēng)險(xiǎn)有很多,其中至關(guān)重要的是進(jìn)度風(fēng)險(xiǎn)、技術(shù)風(fēng)險(xiǎn)、需求變更風(fēng)險(xiǎn)、成員變動(dòng)風(fēng)險(xiǎn)。
軟件是可以度量的嗎?看起來是,因?yàn)橐呀?jīng)有了很多方法來完成軟件的度量。從控制學(xué)的理論來看,你無法控制那些你無法度量的。因而軟件度量對(duì)于控制軟件開發(fā)而言,就成為了關(guān)鍵。軟件度量甚至因此成為了一門學(xué)問。然而,我可以肯定地說,軟件的度量不可能準(zhǔn)確,尤其是對(duì)進(jìn)度的把握而言。即使一個(gè)項(xiàng)目的開發(fā)周期看起來是如此的充裕,以至于感受不到最后期限的壓力,我們?nèi)匀灰獙?duì)軟件進(jìn)度的控制采取如坐針氈的謹(jǐn)慎態(tài)度,即使這樣在某些人的眼中,我成為了持懷疑論者,或者悲觀主義者,我仍然愿意背著這樣的名身惡意地懷疑項(xiàng)目時(shí)間不夠。原因有二。其一是我們的工作量估算無法做到精確,即使是經(jīng)驗(yàn)豐富的天才程序員,在估算項(xiàng)目的整體工作量時(shí),都會(huì)出現(xiàn)偏差。是的,我們采用了分而治之的方式,對(duì)功能進(jìn)行分解,從最小單元來評(píng)估工作量。但我們無法估算各個(gè)功能單元之間存在的各種顯式和隱式關(guān)系,以及各種非功能性需求帶給項(xiàng)目的影響。其二,我們無法事先完全預(yù)知開發(fā)過程中的各種風(fēng)險(xiǎn)。我們得為這種風(fēng)險(xiǎn)買上一份保險(xiǎn),這樣才不至于在風(fēng)險(xiǎn)真正產(chǎn)生時(shí)要我們自己來買單,或者追悔莫及。
關(guān)于技術(shù)風(fēng)險(xiǎn),最佳方式莫過于事先進(jìn)行技術(shù)預(yù)演。不要揣測(cè),或者從理論上去推導(dǎo)。在這個(gè)過程中,我們可以應(yīng)用經(jīng)驗(yàn),但最保險(xiǎn)的方式還是對(duì)系統(tǒng)中的核心問題以及關(guān)鍵問題進(jìn)行研究,創(chuàng)建技術(shù)原型。它才是規(guī)避技術(shù)風(fēng)險(xiǎn)的定心丸。
成員變動(dòng)風(fēng)險(xiǎn)是最難以預(yù)知的,因?yàn)槿耸亲铍y以通過數(shù)據(jù)分析得出正確結(jié)論的動(dòng)物。人的心理太復(fù)雜了,因此在軟件業(yè)中還專門誕生了“人件(Peopleware)”這門學(xué)問。在我們進(jìn)行項(xiàng)目開發(fā)過程中,誰知道有多
項(xiàng)目經(jīng)理勝任力免費(fèi)測(cè)評(píng)PMQ上線啦!快來測(cè)測(cè)你排多少名吧~
http://opto-elec.com.cn/pmqhd/index.html