MMN實用架構過程概覽

技術小美發表於2017-11-08

MMN(Macro-Micro-Nano,即巨集觀-微觀-奈米)實用架構過程初步體現了我的架構觀:即以實用主義態度把握架構原則與本質思想,從系統的各個層次剖析架構,提供一個具有指導意義和實施價值的架構過程,採取簡略、敏捷而又全面的方式,對軟體系統進行架構與設計。架構的步驟必須是清晰可見,每一步都有明確的目標與實際的指導意義。MMN實用架構過程既有大局觀的思考與基本原則指導,又要著眼於細處,突出強調巨集觀、微觀與奈米粒度在架構檢視中的合力,既關注巨集觀的體系架構,又重視層、模組、元件之間的協作方式與公開的介面,同時還極度重視編碼質量,並將這種細節的編碼風格與重構模式納入到架構體系中來。

對於MMN架構而言,因其關注的粒度和視角的區別,存在自上而下的層次模型,如下圖所示:

mmn-level01

每個層次的關注點是不相同的。

巨集觀架構更多地是關注系統的質量屬性,例如可伸縮性、安全、效能、可擴充套件性。而從功能需求的角度而言,則需要對業務進行建模,分解子系統、層次以及包與模組。巨集觀架構涉及到架構風格、應用型別、技術選型、總體設計原則等諸多架構因素。巨集觀架構還必須明確架構目標與關鍵的用例場景,識別系統的熱點與架構風險,確定影響架構質量的因素,並制定對應的架構策略。

微觀架構更多地需要關注巨集觀架構的實現,但不僅限於此。它需要考慮功能的重用性與可擴充套件性,考慮服務介面的定義。微觀架構會根據架構風格、應用型別以及部署方式來確定對資源的處理方式、對資料的處理方式以及對訊息的傳遞方式。從邏輯架構來看,微觀架構將深入進行領域分析,完成領域的建模,以獲得業務模組的分解。同時還需要針對應用架構進行模組和元件的分解,並定義公開介面,考慮模組(元件)之間的依賴關係和介面的呼叫方式。微觀架構還需要考慮物理模型,定義物理部署模型,確定資源的分配,以及通訊機制與執行時的執行檢視。整體而言,微觀架構是模組級與元件級的檢視,至於適當引入的分析與設計,則針對主要的用例場景以及核心類。

奈米架構可以說是程式碼級的架構,體現在程式碼的清晰度、健壯性以及可讀性。奈米架構極為重視方法與類的粒度,以及類與類之間的協作。奈米架構與編碼風格有關,重視程式碼結構的改善與重構。奈米架構需要考慮物件職責的分配與協作,尋找功能的變化點,準確地運用設計模式和麵向物件設計思想。在奈米架構中,還需要考慮配置管理與持續整合的方式。

MMN架構不僅僅是自上而下的過程,不同的檢視之間還存在交集。這些交集主要體現在原則、模式和方法學之間的交叉,如下圖所示:

mmn-level02

無論架構處於哪個層面下,均存在統一的原則需要遵循,例如SRP、DRY以及關注點分離原則。這些原則既體現了一種整體的核心思想,同時又適合各種粒度(層級、模組級、元件級、物件級)的設計。模式同樣如此。例如架構模式中,分層模式、管道-過濾器模式、微核模式等都是在巨集觀層面上提出了成熟的解決方案,但架構模式中的MVC模式、代理模式、PAC模式等,又都可以運用在層或者模組內,指導物件之間的協作、職責的分離與抽象。對於方法學而言,我們既可以運用EA的方法學,例如Zachman框架,也可以運用DDD(領域驅動設計)或者TDD(測試驅動開發),以及ICONIX。甚至於採用CRC卡來幫助我們明確元件或物件之間的職責協作。

實用架構過程以巨集觀、微觀與奈米架構作為關注的視點,指導架構師完成軟體系統架構的構建,形成統一而又層次分明的過程體系。實用架構過程包括定義架構概圖、架構全域性分析、構建概念模型、建立物理檢視與邏輯檢視,以及程式碼檢視與設計模型。 以下是整個架構過程的概要流程圖:

mmn

本文轉自wayfarer51CTO部落格,原文連結:http://blog.51cto.com/wayfarer/523616,如需轉載請自行聯絡原作者


相關文章