在敏捷開發過程中,我們還需要對系統架構進行設計嗎?
事實上,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
充分理解需求,對模組的細節進行設計與實現。這是敏捷架構設計的核心操作原理,它與敏捷開發原則是一脈相承的。
在敏捷開發中採用演進式架構設計
在敏捷開發中採用演進式架構設計 在敏捷開發過程中,我們還需要對系統架構進行設計嗎?事實上,martin fowler在 is design dead?一文中已經給出了答案,那就是我們同樣不能忽略對系統架構的設計。與計畫性的設計 planned design 不同,我們需要演進式的設計 evoluti...
在敏捷開發中採用演進式架構設計
在敏捷開發過程中,我們還需要對系統架構進行設計嗎?事實上,martin fowler在 is design dead?一文中已經給出了答案,那就是我們同樣不能忽略對系統架構的設計。與計畫性的設計 planned design 不同,我們需要演進式的設計 evolutionary design 在敏捷...
架構設計之ElasticSearch的使用
快取 es具有極佳的查詢能力 資料分析 統計能力,並且支援給每個欄位加索引。那麼,對於水平切分的資料庫 sharddb 對於跨片查詢,可以將常用字段同步到es中,然後用es查出目標資料,通過目標資料再去db撈具體的資料。比如,乙個學校管理系統,有1億名學生,按照學生id 32,放在32片db中,你要...