演進式架構設計在敏捷開發中的使用
在敏捷開發過程中,我們還需要對系統架構進行設計嗎?事實上,Martin Fowler在《Is Design Dead?》一文中已經給出了答案,那就是我們同樣不能忽略對系統架構的設計。與計劃性的設計(Planned Design)不同,我們需要演進式的設計(Evolutionary Design)。
IBM's Methods Group的敏捷專家Scott W. Ambler提出了“架構預測(Architectural Envisioning)”的方法,以應對敏捷開發中逐步演進的架構設計過程。
Scott指出,敏捷模型驅動開發(Agile Model Driven Development,AMDD)明確地包括了初始需求分析與架構建模,這個過程發生在敏捷項目開發的第0次迭代中。
通過對架構的預測,可以在項目早期進行一些高層次的架構建模,以助于團隊與關鍵利益相關人商討系統采取的技術策略。這一行為的關鍵目標是識別出架構策略,而不是撰寫如山一般堆積的文檔,從而使得你能夠快速完成架構建模。
架構建模是貫穿于整個項目周期的,因此這些圖表(技術圖表,用戶交互流程圖,領域圖,變更情形)就是在項目結束時形成的整體文檔的基礎。由于你事先明確架構是演進的,因此就不必承擔架構設計在項目早期必須“正確無誤”的壓力,而只需要在當前形勢下保證足夠好就可以了。
Scott指出,所謂的“架構預測”能夠提供如下價值:
◆提高生產力
◆降低技術風險
◆減少開發時間
◆增強溝通
◆可伸縮的敏捷軟件開發。
需要明確的是,這樣的一種架構預測方式,正好符合敏捷開發迭代的需要。在項目開發早期,對系統整體進行一次高層次的概覽,并對關鍵業務需求進行甄別與分析,劃分合理的系統模塊,有助于在迭代開發中為團隊成員建立一個統一的標準與目標。而在每次迭代過程中,團隊就可以對本次迭代期間的功能進行深入的架構建模,然后通過TDD充分理解需求,對模塊的細節進行設計與實現。這是敏捷架構設計的核心操作原理,它與敏捷開發原則是一脈相承的。
原文鏈接:http://www.cnblogs.com/bluedoctor/archive/2012/06/26/2563434.html