一個有實際應用價值的敏捷過程并不是簡單地照章辦事就可以實現(xiàn)。敏捷方法的采用,既要使敏捷方法適應一個環(huán)境,也要調整環(huán)境使其有更好的敏捷性和響應性。
一個有實際應用價值的敏捷過程并不是簡單地照章辦事就可以實現(xiàn)的。它需要根據(jù)環(huán)境有意識地對最佳實踐進行調整,使之適應這個環(huán)境并充分發(fā)展。其中,還要考慮對這個過程有引導作用的三個關鍵問題:
怎么保證工作完成時有充分的完整性?
怎么保證所做工作有合適的透明度?
企業(yè)層面上有什么約束條件能避免中途發(fā)生變化?
注意解決這些問題不但可以使IT企業(yè)掌握新的工作方式,還能使業(yè)務方面受到的損失減小到最低程度。
設計最佳實踐:保證完成時的完整性
敏捷開發(fā)的一個特點是它不會增加將來的負擔,也就是說它不會把一些諸如構建、集成和測試的活動推遲到下一階段。在敏捷過程中,這些活動幾乎都是 和代碼編寫同步完成的:在編寫可執(zhí)行的代碼之前做出項目成功的標準,即時將所編寫的代碼提交到構建和自動測試中,并讓開發(fā)人員結對工作以更好地保證所做工 作產(chǎn)生滿意的結果。這樣,如果有什么需要通過敏捷項目來完成,那么它便只需要走一個客觀的過程,從而減少主觀因素的影響。
雖然已有一系列敏捷實踐可以用來開始這一過程,但這個過程不能簡單依靠任何實踐直接完成。每個項目的情況和特點決定了各個實踐的應用程度。過分的應用可能只實現(xiàn)很小的價值;而應用得太過保守,又無法產(chǎn)生可驗證的效益。
比如一個持續(xù)集成的過程,C++和COBOL等技術可能對此并不支持,但并不因為它們不支持持續(xù)集成,就意味著敏捷構建實踐毫無用處。減少代碼 提交與構建之間的時間差顯然是有好處的。所以,在此情況下,即使是一天即可完成的工作,也能最大程度地提高構建效率,從而增加效益。 CruiseControl這類構建工具可以支持各種非典型的敏捷技術和構建循環(huán)。
構建的實現(xiàn)能對代碼質量的監(jiān)督起到多大作用還取決于團隊的特點。對于一個掌握各種技術、在地理位置上分散的大型團隊來說,如果能在每次代碼提交 時都進行測試和代碼質量分析,其價值將是無法估量的。相比之下,對于地理位置分布較集中的小型團隊來說,這可能就只是一種時間上的浪費,因為這種團隊通常 只需要一個構建信息入口。
一味追求更高的單元測試覆蓋率并不是好事。比如,在一個需求經(jīng)常發(fā)生急劇變化的、高度動態(tài)的業(yè)務領域中,必須在有限時間內完成一個項目。這種情 況下,相比時間與功能,質量可能會處于一個較低的優(yōu)先級。這時,過高的單元測試覆蓋率將是一種精力上的浪費,因為有大量代碼會被直接處理掉。而根據(jù)需求編 寫最貼切的單元測試會更為有效;然后在對業(yè)務領域有了更好的了解之后,再考慮增加單元測試覆蓋率的問題。另外,技術上也會有所限制,比如當前開發(fā)語言可能 并不支持單元測試,而使之支持單元測試的第三方機制又稍顯尷尬(比如在CICS系統(tǒng)中使用.NET包裝器對MQ進行包裝以調用COBOL程序)。因此,所 能達到的覆蓋率也是有限的。盡管如此,創(chuàng)建一個可測試的架構、并取得一定程度的單元測試覆蓋率總比什么都不做要好。
很顯然,無法給任何實現(xiàn)敏捷過程的活動做出廣泛通用的定義。因為每一種活動都是在不同程度上實踐的,而其實踐程度又決定了項目完成時的置信度。
管理最佳實踐:透明度
牽涉到完成時的完整性,盡可能詳細地了解正在做的事情就變得很更要。在應用敏捷管理實踐過程中,如果沒有項目管理實踐,那么獲得的將是提交質量上的提升而不是IT響應性的提升。要獲得更好的響應性,就需要使所進行的工作透明化。
敏捷方法可以通過以下途徑實現(xiàn)透明化:需求的表達方式、團隊的組織方式、協(xié)作方式和過程追蹤方式。當