MMN實用架構過程概覽
MMN(Macro-Micro-Nano,即巨集觀-微觀-奈米)實用架構過程初步體現了我的架構觀:即以實用主義態度把握架構原則與本質思想,從系統的各個層次剖析架構,提供一個具有指導意義和實施價值的架構過程,採取簡略、敏捷而又全面的方式,對軟體系統進行架構與設計。架構的步驟必須是清晰可見,每一步都有明確的目標與實際的指導意義。MMN實用架構過程既有大局觀的思考與基本原則指導,又要著眼於細處,突出強調巨集觀、微觀與奈米粒度在架構檢視中的合力,既關注巨集觀的體系架構,又重視層、模組、元件之間的協作方式與公開的介面,同時還極度重視編碼質量,並將這種細節的編碼風格與重構模式納入到架構體系中來。
對於MMN架構而言,因其關注的粒度和視角的區別,存在自上而下的層次模型,如下圖所示:
每個層次的關注點是不相同的。
巨集觀架構更多地是關注系統的質量屬性,例如可伸縮性、安全、效能、可擴充套件性。而從功能需求的角度而言,則需要對業務進行建模,分解子系統、層次以及包與模組。巨集觀架構涉及到架構風格、應用型別、技術選型、總體設計原則等諸多架構因素。巨集觀架構還必須明確架構目標與關鍵的用例場景,識別系統的熱點與架構風險,確定影響架構質量的因素,並制定對應的架構策略。
微觀架構更多地需要關注巨集觀架構的實現,但不僅限於此。它需要考慮功能的重用性與可擴充套件性,考慮服務介面的定義。微觀架構會根據架構風格、應用型別以及部署方式來確定對資源的處理方式、對資料的處理方式以及對訊息的傳遞方式。從邏輯架構來看,微觀架構將深入進行領域分析,完成領域的建模,以獲得業務模組的分解。同時還需要針對應用架構進行模組和元件的分解,並定義公開介面,考慮模組(元件)之間的依賴關係和介面的呼叫方式。微觀架構還需要考慮物理模型,定義物理部署模型,確定資源的分配,以及通訊機制與執行時的執行檢視。整體而言,微觀架構是模組級與元件級的檢視,至於適當引入的分析與設計,則針對主要的用例場景以及核心類。
奈米架構可以說是程式碼級的架構,體現在程式碼的清晰度、健壯性以及可讀性。奈米架構極為重視方法與類的粒度,以及類與類之間的協作。奈米架構與編碼風格有關,重視程式碼結構的改善與重構。奈米架構需要考慮物件職責的分配與協作,尋找功能的變化點,準確地運用設計模式和麵向物件設計思想。在奈米架構中,還需要考慮配置管理與持續整合的方式。
MMN架構不僅僅是自上而下的過程,不同的檢視之間還存在交集。這些交集主要體現在原則、模式和方法學之間的交叉,如下圖所示:
無論架構處於哪個層面下,均存在統一的原則需要遵循,例如SRP、DRY以及關注點分離原則。這些原則既體現了一種整體的核心思想,同時又適合各種粒度(層級、模組級、元件級、物件級)的設計。模式同樣如此。例如架構模式中,分層模式、管道-過濾器模式、微核模式等都是在巨集觀層面上提出了成熟的解決方案,但架構模式中的MVC模式、代理模式、PAC模式等,又都可以運用在層或者模組內,指導物件之間的協作、職責的分離與抽象。對於方法學而言,我們既可以運用EA的方法學,例如Zachman框架,也可以運用DDD(領域驅動設計)或者TDD(測試驅動開發),以及ICONIX。甚至於採用CRC卡來幫助我們明確元件或物件之間的職責協作。
實用架構過程以巨集觀、微觀與奈米架構作為關注的視點,指導架構師完成軟體系統架構的構建,形成統一而又層次分明的過程體系。實用架構過程包括定義架構概圖、架構全域性分析、構建概念模型、建立物理檢視與邏輯檢視,以及程式碼檢視與設計模型。 以下是整個架構過程的概要流程圖:
本文轉自wayfarer51CTO部落格,原文連結:http://blog.51cto.com/wayfarer/523616,如需轉載請自行聯絡原作者
相關文章
- CUDA與架構矩陣概覽架構矩陣
- Flink原理與實現:架構和拓撲概覽架構
- 架構實戰--軟體架構設計的過程架構
- vivo商城促銷系統架構設計與實踐-概覽篇架構
- PLSQL Language Reference-PL/SQL概覽-PL/SQL架構SQL架構
- Spring Cloud Netflix 概覽和架構設計SpringCloud架構
- MySQL體系結構概覽MySql
- oracle體系結構概覽Oracle
- ogg概敘、架構、程式架構
- Express 實戰(一):概覽Express
- Flutter UI架構啟動過程-11FlutterUI架構
- 淺談Web架構之演化過程Web架構
- 瀏覽器架構-實踐篇瀏覽器架構
- Yii2 應用概覽
- 概覽
- go 原始碼分析 goroutine 概覽與排程Go原始碼
- 淘寶10年的架構演進過程架構
- Java分散式架構的演進過程Java分散式架構
- 軟體架構風格——閉環架構風格(過程風格)架構
- 《離線和實時大資料開發實戰》(二)大資料平臺架構 & 技術概覽大資料架構
- Android應用原始碼 概覽Android原始碼
- 大型網站架構演變過程、大併發伺服器架構網站架構伺服器
- 圖解分散式架構的演進過程!圖解分散式架構
- 淺談Web網站架構演變過程Web網站架構
- 機器學習概覽機器學習
- Redis資料結構概覽(原始碼分析)Redis資料結構原始碼
- springcloud架構-HongHucommon-service專案構建過程SpringGCCloud架構
- 微服務概覽、誤解和誤用微服務
- 使用 OpenTelemetry 構建 .NET 應用可觀測性(3):.NET SDK 概覽
- 隨機過程學習筆記——概論隨機筆記
- 大型網站的技術架構演進過程網站架構
- t_c_b_s之儲存過程架構儲存過程架構
- 荔枝架構實踐與演進歷程架構
- Android架構系列-MVP架構的實際應用Android架構MVP
- 如何實現單機版DataBase:概覽Database
- Babel 社群概覽Babel
- Hooks概覽(譯)Hook
- 推理框架概覽框架