zoukankan      html  css  js  c++  java
  • MMN实用架构过程概览

    MMN(Macro-Micro-Nano,即宏观-微观-纳米)实用架构过程初步体现了我的架构观:即以实用主义态度把握架构原则与本质思想,从系统的各个层次剖析架构,提供一个具有指导意义和实施价值的架构过程,采取简略、敏捷而又全面的方式,对软件系统进行架构与设计。架构的步骤必须是清晰可见,每一步都有明确的目标与实际的指导意义。MMN实用架构过程既有大局观的思考与基本原则指导,又要着眼于细处,突出强调宏观、微观与纳米粒度在架构视图中的合力,既关注宏观的体系架构,又重视层、模块、组件之间的协作方式与公开的接口,同时还极度重视编码质量,并将这种细节的编码风格与重构模式纳入到架构体系中来。

    对于MMN架构而言,因其关注的粒度和视角的区别,存在自上而下的层次模型,如下图所示:

    mmn-level01

    每个层次的关注点是不相同的。

    宏观架构更多地是关注系统的质量属性,例如可伸缩性、安全、性能、可扩展性。而从功能需求的角度而言,则需要对业务进行建模,分解子系统、层次以及包与模块。宏观架构涉及到架构风格、应用类型、技术选型、总体设计原则等诸多架构因素。宏观架构还必须明确架构目标与关键的用例场景,识别系统的热点与架构风险,确定影响架构质量的因素,并制定对应的架构策略。

    微观架构更多地需要关注宏观架构的实现,但不仅限于此。它需要考虑功能的重用性与可扩展性,考虑服务接口的定义。微观架构会根据架构风格、应用类型以及部署方式来确定对资源的处理方式、对数据的处理方式以及对消息的传递方式。从逻辑架构来看,微观架构将深入进行领域分析,完成领域的建模,以获得业务模块的分解。同时还需要针对应用架构进行模块和组件的分解,并定义公开接口,考虑模块(组件)之间的依赖关系和接口的调用方式。微观架构还需要考虑物理模型,定义物理部署模型,确定资源的分配,以及通信机制与运行时的执行视图。整体而言,微观架构是模块级与组件级的视图,至于适当引入的分析与设计,则针对主要的用例场景以及核心类。

    纳米架构可以说是代码级的架构,体现在代码的清晰度、健壮性以及可读性。纳米架构极为重视方法与类的粒度,以及类与类之间的协作。纳米架构与编码风格有关,重视代码结构的改善与重构。纳米架构需要考虑对象职责的分配与协作,寻找功能的变化点,准确地运用设计模式和面向对象设计思想。在纳米架构中,还需要考虑配置管理与持续集成的方式。

    MMN架构不仅仅是自上而下的过程,不同的视图之间还存在交集。这些交集主要体现在原则、模式和方法学之间的交叉,如下图所示:

    mmn-level02

    无论架构处于哪个层面下,均存在统一的原则需要遵循,例如SRP、DRY以及关注点分离原则。这些原则既体现了一种整体的核心思想,同时又适合各种粒度(层级、模块级、组件级、对象级)的设计。模式同样如此。例如架构模式中,分层模式、管道-过滤器模式、微核模式等都是在宏观层面上提出了成熟的解决方案,但架构模式中的MVC模式、代理模式、PAC模式等,又都可以运用在层或者模块内,指导对象之间的协作、职责的分离与抽象。对于方法学而言,我们既可以运用EA的方法学,例如Zachman框架,也可以运用DDD(领域驱动设计)或者TDD(测试驱动开发),以及ICONIX。甚至于采用CRC卡来帮助我们明确组件或对象之间的职责协作。

    实用架构过程以宏观、微观与纳米架构作为关注的视点,指导架构师完成软件系统架构的构建,形成统一而又层次分明的过程体系。实用架构过程包括定义架构概图、架构全局分析、构建概念模型、创建物理视图与逻辑视图,以及代码视图与设计模型。 以下是整个架构过程的概要流程图:

    mmn

  • 相关阅读:
    HDU 1525
    kmp模板
    hdu 4616 Game(树形DP)
    hdu 4619 Warm up 2(并查集活用)
    hdu 4614 Vases and Flowers(线段树加二分查找)
    Codeforces 400D Dima and Bacteria(并查集最短路)
    poj 2823 Sliding Window (单调队列)
    hdu 2196 Computer(树形dp)
    hdu 4604 Deque
    最短路径
  • 原文地址:https://www.cnblogs.com/wayfarer/p/1992085.html
Copyright © 2011-2022 走看看