架構設計的目標與衡量

編程即設計,代碼即架構。程序員

###概述###編程

架構,這個詞比較神祕,以至於不少程序員望而卻步,覺得要什麼了不起的本事。架構

架構的目標是什麼呢?代碼,實現所需服務;架構,致力於以更小成本、更高質量地實現所需服務。架構,是兼顧質量與成本的魔法。 但架構並不研究如何實現具體服務,—— 它研究的是如何妥善安置那些實現服務的構件,管理依賴、邊界和變化。測試

  • 如何將不變從變化中分離出來,沉澱爲穩定的組件 ?如何管理組件之間的依賴 ?插件

  • 如何識別組件所在的邊界和上下文? 如何管理各類邊界和上下文 ?架構設計

  • 如何讓變化更容易顯露和識別 ? 如何管理多維度的變化 ?設計

  • 如何讓業務邏輯變成可配置的易變動的插件 ?開發

<br/>class

###目標###擴展

小問題小設計,大問題大架構。架構聽上去高大上,實際上也是爲了解決問題的。不過,架構與程序不一樣,是在不一樣層次上求解問題。

架構設計是宏觀性考量,在總體上理解問題的複雜性,給出方案,並論證方案的可行性,提供一系列準則指導執行。缺少架構設計而直接着手處理問題,會出現三個嚴重問題:

  • 在遇到實質性難題時,會束手無策或反覆折騰,一次次返工,耗費大量的人力和成本;

  • 缺少質量的考量,上線後發現沒法知足用戶的須要;

  • 缺少總體的考慮,在業務發展的時候,原有實現不具擴展性,沒法敏捷地支持中期和長遠目標。

<br/>

所以,架構的目標主要有三個:

  • 提早識別問題的複雜性和關注點,提供可行的通過論證的解決方案;

  • 創建服務質量指標,肯定設計方案能夠知足指定的質量指標;

  • 規劃總體設計,提供長遠的可擴展性。

<br/>

要實現架構目標,先要問:要解決的問題是什麼?問題的複雜性在哪裏?弄清楚目標和靶點,才能一擊命中。

<br/>

###衡量###

一個好的架構設計,它起什麼做用呢?

  • 是否是有針對性地解決了問題固有的複雜性? 經過提供漸進穩定的領域模型,讓問題理解、描述和求解都更清晰天然了;

  • 是否是令需求更快地實現,大幅下降了開發成本? 好比原來要花時間修改代碼、測試、發佈系統,後續只要新增配置,測試並刷新配置就搞定了;原來須要5人日,如今只須要 2人時;

  • 是否是讓系統的依賴更清晰了?好比原來你調我我調你,亂成一團,如今可以清晰地看到數據流在各個模塊的流通和流向、脈絡;

  • 是否是更穩定了?好比原來磕磕碰碰,作百次操做就有一次失敗,如今作十萬次操做纔有一次失敗;

  • 是否是更容易操做了?好比原來須要ABCDE五步操做,如今一鍵無憂完成;

  • 是否是足夠有彈性和靈活性,能夠支撐數年的業務發展? 好比原來遇到新業務就要作許多兼容,如今只要配置一些規則、流程就能適應新業務的發展。對新增開放,對修改關閉。

<br/>

綜上所述,架構設計至少有幾個方面能夠衡量:

  • 識別出問題的關鍵複雜性,創建穩定有效的領域模型。

  • 大幅下降開發與維護成本。 能夠落定到人力與時間。

  • 系統脈絡更清晰。能夠繪製出系統模塊的依賴圖,經過依賴圖的節點與節點連接數量來判斷。

  • 更穩定。操做失敗、出現各類問題的比率。

  • 更容易操做。 操做的步驟數 乘以 操做失敗的比率。

  • 彈性和靈活性。 支持新業務的難度,以新增代碼量和修改代碼量來衡量。

<br/>

相關文章
相關標籤/搜索