萬事開頭難。每個項目的起點都是從項目規劃開始做起。因此怎樣去做好規劃對于項目意義重大。在VSTS中,項目規劃的含義與我們普通開發過程中所講的規劃的并不是很相同。在VSTS中規劃的內容主要分為三項:區域和迭代的劃分、工作項定義。
首先,我們必須知道什么是區域和迭代?一般說來,我們要想完整的把握項目,就會從好幾個角度去觀察和控制它。因為任何項目本身都是高度復雜的和關聯的事物組合而成。這就意味著我們很難從單個角度就能將項目觀察清楚。在普通過程中我們把這種角度稱做“視點”,而在VSTS中這個視點被叫做“區域”??吹竭@里,我們可能會有個沖動,自然的認為全面考察項目最好的辦法就是全角度去看問題。但如果那樣做,我們就會失去對項目至關重要那部分的聚焦。因此我們需要規劃出我們感興趣的視點,以便能將為數不多的精力投入到這些對項目來說非常重要的區域里去。
在這個項目中,我可以隨心所欲的規劃出許多種視點來。但為了提高效率以及增加成功性。“軟件工廠”模式提出了兩種最常用的區域:軟件工程視點的和項目管理視點。因為所有的軟件項目最終的目的都是以可運行的程序的形式存在,因此工程視點是保證項目成功的重要區域。而我們產品的質量卻與項目管理密切相關,而質量也是保證成功的一個重要因素。因此項目管理視點也是我們關注的重要區域。而這兩個大的視點只是決定了我們如何去關注我們的項目。是一種類似原則性的東西,若想落實,還須補充更多和更細的子視點,以這兩個區域做進一步的細化。下圖是我對這個項目的區域進行的規劃。
可以看出從工程角度來說,我關心的軟件的架構方面的劃分:UI、應用服務層、通用服務層、數據層,代表了為實現客戶和商業上不同的價值所付出的努力。比如,由于UI層密切與用戶利益相關,那么可能這個區域下的眾多工作要和客戶一起完成,或者需要請更加專業的用戶體驗專家來做。而通用服務層可能還需要服務公司其它項目。而基于這樣的商業價值,很可能這個區域下的工作將除過考慮本項目自身的設計要求外,還需要考慮一些其它項目上的額外設計要求。這些重要的東西,都需要在我們劃分的觀點中得到體現。項目管理區域下的幾個子區域,則代表了我們為了項目保證質量而在開發過程中所采取的努力。在定義好區域后,我們通過區域與迭代的組合,就能幫我們定位某個工作項所處的位置和性重要程度。
再來看軟件迭代。假設現在要發布一個新版本的軟件系統。我們計劃通過三次迭代過程,完成整個軟件的發布,因此我們定義的迭代就如下圖的形式:
每一個迭代過程都包括一個完整的發布流程。每一個迭代過程也都生成一個完整的軟件版本。在三次迭代過程完成之后,我們就得到一個可以發布的最終版本。