Stay focused on executable software
第三個(gè)不可缺少的RUP理論包括幾個(gè)方面。首先,你應(yīng)該盡最大可能的通過(guò)衡量你的可執(zhí)行軟件來(lái)衡量你的進(jìn)展。當(dāng)然一半以上的用例已經(jīng)被細(xì)化是一件好事,但是這并不意味這相當(dāng)程度的需求已經(jīng)完成了。如果你之后發(fā)現(xiàn)因?yàn)槟悴](méi)有恰當(dāng)?shù)牧私庥脩粜枨螅M(jìn)而導(dǎo)致了大多數(shù)的主要需求需要重新實(shí)現(xiàn),那么你會(huì)怎么做呢?那可能意味著你僅僅完成了實(shí)際工作總量的很少一部分。所以如果你想表明你完成了一半的用例,也就相當(dāng)于你想表明你僅僅實(shí)現(xiàn)了一半不到的需求。
最好的衡量進(jìn)展的方式就是衡量那些可以運(yùn)行的軟件。它允許你測(cè)試,并且基于測(cè)試和次品率,估算出真正的進(jìn)展。當(dāng)一個(gè)典型的開(kāi)發(fā)者陳述說(shuō):“我已經(jīng)完成了90%”,那么你可以問(wèn)問(wèn)他,“很好,請(qǐng)演示一下你可以運(yùn)行的東西。”然后通過(guò)演示,獲取一個(gè)能夠說(shuō)明“到底完成了多少”的客觀的結(jié)果。你應(yīng)該總是采用演示-->察看測(cè)試覆蓋率和測(cè)試結(jié)果這樣的過(guò)程來(lái)估算進(jìn)展,千萬(wàn)不要被那些往往和現(xiàn)實(shí)不符的文檔所蒙蔽。當(dāng)然這并不是否定文檔的作用,而只是說(shuō)明它們對(duì)于衡量項(xiàng)目進(jìn)展情況的時(shí)候,只能起到微乎其微的作用。
其次,明確地把精力集中于“可執(zhí)行”的軟件上,這一點(diǎn)同樣提升了你的團(tuán)隊(duì)的一些正確意識(shí);你不會(huì)冒著犯“過(guò)渡設(shè)計(jì)”或者“重理論,輕實(shí)踐”這類錯(cuò)誤的風(fēng)險(xiǎn),取而代之的是,用實(shí)實(shí)在在的工作去證明方案“A”和方案“B”的優(yōu)劣。強(qiáng)迫以可執(zhí)行軟件作為結(jié)束通常是最快的減少風(fēng)險(xiǎn)的途徑。
再次,重視可執(zhí)行的軟件的第三個(gè)特點(diǎn)就是軟件的“副產(chǎn)品”(計(jì)劃、配置等管理手段)會(huì)去適應(yīng)軟件的開(kāi)發(fā),而不是讓軟件的開(kāi)發(fā)去適應(yīng)這些“副產(chǎn)品”。這些“副產(chǎn)品”是為了讓你開(kāi)發(fā)出更好的軟件。以“可執(zhí)行的軟件”為出發(fā)點(diǎn),你可以決定是否生產(chǎn)這些“副產(chǎn)品”。通常這些“副產(chǎn)品”是為了讓你的軟件產(chǎn)生更好的效果或者更加容易維護(hù)。是的,在一些情況下答案是肯定的,但是這并不是“放之四海而皆準(zhǔn)”的。你需要衡量這些副產(chǎn)品所帶來(lái)的優(yōu)劣。通常這些副產(chǎn)品的優(yōu)勢(shì)會(huì)隨著你的項(xiàng)目的規(guī)模,以及你的產(chǎn)品對(duì)于商業(yè)的重要程度而增長(zhǎng)。在這種情況下,所有的事實(shí)都表明:應(yīng)該產(chǎn)生出盡可能多的“副產(chǎn)品”。但是對(duì)于任意一個(gè)項(xiàng)目而言,你應(yīng)該努力的減少這些副產(chǎn)品,進(jìn)而削減費(fèi)用。
一個(gè)好的方針就是:如果你對(duì)于是否生產(chǎn)這些副產(chǎn)品而猶豫不決,干脆就別生產(chǎn)它們。但是不要對(duì)那些重要的活動(dòng)使用此方針,比如記錄需求、進(jìn)行設(shè)計(jì)和制定測(cè)試計(jì)劃的時(shí)候就不要這樣做。這些活動(dòng)所產(chǎn)生的副產(chǎn)品有特定的價(jià)值。如果生產(chǎn)副產(chǎn)品的花費(fèi)超出了回報(bào),忽略它們。
RUP用戶經(jīng)常犯的一個(gè)錯(cuò)誤就是僅僅因?yàn)镽UP描述了如何生產(chǎn)那些“副產(chǎn)品”就去生產(chǎn)它們。記住RUP只是大餐前的開(kāi)胃小菜。
Accommodate change early in the project.
變動(dòng)是一件好事。實(shí)際上變動(dòng)是一件偉大的事。為什么呢?因?yàn)楫?dāng)代大多數(shù)的系統(tǒng)正在變得太過(guò)復(fù)雜以至于你都沒(méi)法獲取需求并在第一時(shí)間進(jìn)行設(shè)計(jì)。變動(dòng)允許改善你的方案。如果沒(méi)有變動(dòng),你可能會(huì)提交一個(gè)有缺陷的方案--這有可能會(huì)導(dǎo)致你的應(yīng)用沒(méi)有任何的商業(yè)價(jià)值。這就是為什么歡迎并且鼓勵(lì)變動(dòng)。并且迭代方法已經(jīng)被進(jìn)行了足夠的優(yōu)化,使它更加適應(yīng)于變動(dòng)的情況。
但是變動(dòng)也有些不良的后果。持久的變動(dòng)會(huì)導(dǎo)致你的項(xiàng)目無(wú)窮無(wú)止。處在項(xiàng)目后期的一些變動(dòng)會(huì)導(dǎo)致一些工作成為“無(wú)用功”,會(huì)增加費(fèi)用,降低質(zhì)量,甚至?xí)?dǎo)致拖延--那些都是你想盡辦法要避免的。為了優(yōu)化你的變動(dòng)管理策略,你需要了解不同類型變動(dòng)的代價(jià):
1、商業(yè)方案變動(dòng)的代價(jià)。這種變動(dòng)主要包含需求的重寫或者要面對(duì)完全不同的用戶或需求。應(yīng)該在先啟階段就處理這些變動(dòng)或適應(yīng)這些變動(dòng),隨著進(jìn)入“精化”階段,這種變動(dòng)所帶來(lái)的代價(jià)會(huì)越來(lái)越大。
2、框架變動(dòng)的代價(jià)。遵照RUP,在價(jià)值較高的精化過(guò)程到來(lái)之前,你可以進(jìn)行一些重大的框架變動(dòng)。在那之后,框架變動(dòng)的代價(jià)會(huì)顯著增加。
3、設(shè)計(jì)和實(shí)現(xiàn)的變動(dòng)代價(jià)。因?yàn)槟愕墓δ芨?#8220;模塊化”或者“組件化”,這些變化看上去更加“本地化”一些,因此在構(gòu)建階段它們的代價(jià)相當(dāng)?shù)?。但是?dāng)初在正式版本提交階段,代價(jià)會(huì)顯著增加。
4、邊界變動(dòng)的代價(jià)。裁減邊界,把一些特性放到下一個(gè)發(fā)布版本中去,對(duì)于一個(gè)產(chǎn)品來(lái)說(shuō)代價(jià)相對(duì)較低。項(xiàng)目管理者可以使用這把“利劍”來(lái)確保項(xiàng)目的按時(shí)提交。
上面有關(guān)代價(jià)的考慮說(shuō)明你應(yīng)該去管理這些變動(dòng)。你需要:
1、在切當(dāng)?shù)臅r(shí)期決定是否引入一個(gè)變動(dòng)。
2、評(píng)估變動(dòng)所帶來(lái)的壓力。
3、盡可能縮減變動(dòng)的代價(jià)。

出自The Spirit of the RUP
RUP的那些階段已經(jīng)優(yōu)化并最小化了這些變動(dòng)的花費(fèi),同時(shí)增長(zhǎng)了迎合變動(dòng)的能力。這就是為什么RUP要求在先啟階段的最后,在所有的視點(diǎn)上達(dá)成共識(shí);在精化階段的最后能夠有一個(gè)可以作為基線的框架結(jié)構(gòu);在beta版發(fā)布階段不再向產(chǎn)品添加新的特性。使用正確的工具可以為你的變動(dòng)管理帶來(lái)很大的方便,并降低你的代價(jià)。
posted on 2007-07-03 22:21
littlegai 閱讀(171)
評(píng)論(0) 編輯 收藏 引用