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