萬事開頭難。每個(gè)項(xiàng)目的起點(diǎn)都是從項(xiàng)目規(guī)劃開始做起。因此怎樣去做好規(guī)劃對于項(xiàng)目意義重大。在VSTS中,項(xiàng)目規(guī)劃的含義與我們普通開發(fā)過程中所講的規(guī)劃的并不是很相同。在VSTS中規(guī)劃的內(nèi)容主要分為三項(xiàng):區(qū)域和迭代的劃分、工作項(xiàng)定義。
首先,我們必須知道什么是區(qū)域和迭代?一般說來,我們要想完整的把握項(xiàng)目,就會(huì)從好幾個(gè)角度去觀察和控制它。因?yàn)槿魏雾?xiàng)目本身都是高度復(fù)雜的和關(guān)聯(lián)的事物組合而成。這就意味著我們很難從單個(gè)角度就能將項(xiàng)目觀察清楚。在普通過程中我們把這種角度稱做“視點(diǎn)”,而在VSTS中這個(gè)視點(diǎn)被叫做“區(qū)域”。看到這里,我們可能會(huì)有個(gè)沖動(dòng),自然的認(rèn)為全面考察項(xiàng)目最好的辦法就是全角度去看問題。但如果那樣做,我們就會(huì)失去對項(xiàng)目至關(guān)重要那部分的聚焦。因此我們需要規(guī)劃出我們感興趣的視點(diǎn),以便能將為數(shù)不多的精力投入到這些對項(xiàng)目來說非常重要的區(qū)域里去。
在這個(gè)項(xiàng)目中,我可以隨心所欲的規(guī)劃出許多種視點(diǎn)來。但為了提高效率以及增加成功性。“軟件工廠”模式提出了兩種最常用的區(qū)域:軟件工程視點(diǎn)的和項(xiàng)目管理視點(diǎn)。因?yàn)樗械能浖?xiàng)目最終的目的都是以可運(yùn)行的程序的形式存在,因此工程視點(diǎn)是保證項(xiàng)目成功的重要區(qū)域。而我們產(chǎn)品的質(zhì)量卻與項(xiàng)目管理密切相關(guān),而質(zhì)量也是保證成功的一個(gè)重要因素。因此項(xiàng)目管理視點(diǎn)也是我們關(guān)注的重要區(qū)域。而這兩個(gè)大的視點(diǎn)只是決定了我們?nèi)绾稳リP(guān)注我們的項(xiàng)目。是一種類似原則性的東西,若想落實(shí),還須補(bǔ)充更多和更細(xì)的子視點(diǎn),以這兩個(gè)區(qū)域做進(jìn)一步的細(xì)化。下圖是我對這個(gè)項(xiàng)目的區(qū)域進(jìn)行的規(guī)劃。

可以看出從工程角度來說,我關(guān)心的軟件的架構(gòu)方面的劃分:UI、應(yīng)用服務(wù)層、通用服務(wù)層、數(shù)據(jù)層,代表了為實(shí)現(xiàn)客戶和商業(yè)上不同的價(jià)值所付出的努力。比如,由于UI層密切與用戶利益相關(guān),那么可能這個(gè)區(qū)域下的眾多工作要和客戶一起完成,或者需要請更加專業(yè)的用戶體驗(yàn)專家來做。而通用服務(wù)層可能還需要服務(wù)公司其它項(xiàng)目。而基于這樣的商業(yè)價(jià)值,很可能這個(gè)區(qū)域下的工作將除過考慮本項(xiàng)目自身的設(shè)計(jì)要求外,還需要考慮一些其它項(xiàng)目上的額外設(shè)計(jì)要求。這些重要的東西,都需要在我們劃分的觀點(diǎn)中得到體現(xiàn)。項(xiàng)目管理區(qū)域下的幾個(gè)子區(qū)域,則代表了我們?yōu)榱隧?xiàng)目保證質(zhì)量而在開發(fā)過程中所采取的努力。在定義好區(qū)域后,我們通過區(qū)域與迭代的組合,就能幫我們定位某個(gè)工作項(xiàng)所處的位置和性重要程度。
再來看軟件迭代。假設(shè)現(xiàn)在要發(fā)布一個(gè)新版本的軟件系統(tǒng)。我們計(jì)劃通過三次迭代過程,完成整個(gè)軟件的發(fā)布,因此我們定義的迭代就如下圖的形式:
每一個(gè)迭代過程都包括一個(gè)完整的發(fā)布流程。每一個(gè)迭代過程也都生成一個(gè)完整的軟件版本。在三次迭代過程完成之后,我們就得到一個(gè)可以發(fā)布的最終版本。