當(dāng)客戶強(qiáng)烈要求改正這些缺陷時(shí),企業(yè)軟件開(kāi)發(fā)組織根本不能從中受益。即便客戶愿意支付改正缺陷的費(fèi)用,我們也可能會(huì)由于事先沒(méi)有任何應(yīng)對(duì)措施的原因,以大大超出成本的投入來(lái)滿足客戶的要求。所以,真正站在客戶的立場(chǎng)上來(lái)考慮軟件開(kāi)發(fā)成本,是解決需求問(wèn)題的最佳方法。這就是上面所說(shuō)的第一個(gè)關(guān)鍵。第二個(gè)關(guān)鍵更加具有挑戰(zhàn)性。企業(yè)軟件開(kāi)發(fā)項(xiàng)目的成本絕大部分被用于軟件實(shí)現(xiàn)。而只有好的實(shí)現(xiàn)(靈活性和擴(kuò)展性),才能降低項(xiàng)目成本。敏捷方法經(jīng)常抨擊過(guò)度設(shè)計(jì),自己卻走向另一個(gè)極端。在敏捷方法看來(lái),最理想的情況是正好完成客戶的要求,不要過(guò)剩的軟件設(shè)計(jì)能力。
這種想法聽(tīng)上去很有道理事實(shí)上是行不通的。行不通的理由是,假設(shè)你具備過(guò)度設(shè)計(jì)的能力,所謂“不要過(guò)剩的軟件設(shè)計(jì)能力”,也許有一定的合理性(前提是你的設(shè)計(jì)能力已經(jīng)達(dá)到了較高的水準(zhǔn)),可是,如果你根本不具備過(guò)度設(shè)計(jì)的能力,所謂“不要過(guò)剩的軟件設(shè)計(jì)能力”,就成了糟糕設(shè)計(jì)的托詞了。而大多數(shù)的軟件開(kāi)發(fā)組織,都不具備過(guò)度設(shè)計(jì)能力。以一個(gè)軟件開(kāi)發(fā)老手的眼光來(lái)看,要求對(duì)需求的變化做出預(yù)判,這會(huì)使某些人關(guān)注程序的結(jié)構(gòu),提升他們的設(shè)計(jì)能力,最終使企業(yè)受益;相反,不考慮需求變化,不管你是否承認(rèn),某些人會(huì)變成“設(shè)計(jì)白癡”。他們寄希望于重構(gòu),可是往往無(wú)力重構(gòu),最終只能把責(zé)任推到歷史的身上。
總而言之,在追求準(zhǔn)確表達(dá)需求的過(guò)程中,企業(yè)軟件開(kāi)發(fā)組織要克服對(duì)需求不斷修正的排斥心理。我們要學(xué)會(huì)站在客戶的立場(chǎng),幫助客戶完成設(shè)想中的完整故事。我們要在完整故事的基礎(chǔ),去優(yōu)化和精簡(jiǎn)軟件系統(tǒng)的功能。成本永遠(yuǎn)不是拒絕解決需求問(wèn)題的理由。場(chǎng)景故事點(diǎn)評(píng):宗方是保險(xiǎn)領(lǐng)域的專家,在一些細(xì)節(jié)問(wèn)題上,他的理解是非常敏銳的,例如,由于渠道定義過(guò)于靈活,支持傭金調(diào)整的工作量會(huì)很大。但是,他的需求分析工作存在著兩個(gè)方面的問(wèn)題:第一個(gè)問(wèn)題是,他沒(méi)有考慮客戶真正的需要;第二個(gè)問(wèn)題是,他沒(méi)有嘗試去尋找表達(dá)需求的方法,這使需求討論會(huì)議變得非常低效??兹缰∏∠喾?,他沒(méi)有保險(xiǎn)領(lǐng)域的知識(shí),但是他在思考表達(dá)需求的方法。我們會(huì)在后面的案例分析中進(jìn)一步點(diǎn)評(píng)。