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

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

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

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

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

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

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

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

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

MMN实用架构过程概览相关推荐

  1. 全球大型电商测试基础架构设计概览

    作者 | 茹炳晟 编辑 | Eva 本文为 eBay中国研发中心测试基础架构技术主管 茹炳晟关于"eBay高效能测试基础架构的前世今生"主题分享的部分节选,想了解全部内容,请在公众 ...

  2. [转]MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码

    本文转自:http://www.cnblogs.com/guomingfeng/p/mvc-ef-t4.html 〇.目录 一.前言 二.工具准备 三.T4代码生成预热 (一) 单文件生成:Hello ...

  3. MVC实用架构设计(三)——EF-Code First(1):Repository,UnitOfWork,DbContext

    前言 终于到EF了,实在不好意思,最近有点忙,本篇离上一篇发布已经一个多星期了,工作中的小迭代告一段落,终于有点时间来继续我们的架构设计了,在这里先对大家表示歉意. 其实这段时间我并不是把这个系列给忘 ...

  4. Rocksdb Compaction源码详解(二):Compaction 完整实现过程 概览

    文章目录 1. 摘要 2. Compaction 概述 3. 实现 3.1 Prepare keys 过程 3.1.1 compaction触发的条件 3.1.2 compaction 的文件筛选过程 ...

  5. 短链接服务架构设计概览

    目录 一.为什么需要短链接 二.使用短链接的一些典型场景 2.1 字数限制场景 2.1.1 微博内容 2.1.2 用户短信 2.2 短链接二维码 2.3 无法识别长链接场景 三.短链接生成方案 四.短 ...

  6. 《离线和实时大数据开发实战》(二)大数据平台架构 技术概览

    前言 接着上一章 构建大数据开发知识体系图谱,本次继续分享邦中老师的<离线和实时大数据开发实战>读书笔记 .到底什么样的平台才能算是大数据平台呢?带着这个问题,我们开始今天的内容 ( •̀ ...

  7. android view架构,ViewModel 概览

    ViewModel 概览 ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据.ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存. 注意:如需将 ViewModel导 ...

  8. tomcat架构分析(概览)【转】

    原文地址: https://www.iteye.com/blog/gearever-1532822 Tomcat是目前应用比较多的servlet容器.关于tomcat本身的特点及介绍,网上已经有很多描 ...

  9. LAMP详细架构过程

    简介: LAMP: L:linux A:apache (httpd) M:mysql, mariadb M:memcached(缓存数据库数据) P:php, perl, python WEB资源类型 ...

最新文章

  1. 爬虫中之Requests 模块的进阶
  2. linux 内核线程与普通进程的区别
  3. Vue.js TypeScript 支持
  4. BIOS功能调用之滚屏与清屏
  5. asp.net 2中的图片上传
  6. DCL并非单例模式专用
  7. 一淘网挑战百度意在造势 人才储备成最大障碍
  8. python怎么调用接口失败_python 调用接口
  9. 前端白屏问题_记一次白屏统计与修理
  10. 三大框架ssh整合(一)
  11. [转载] log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析
  12. 分布式系统基本原理介绍
  13. Blur Multiple Images(图片模糊化处理软件)官方正式版V1.8 | 怎样将图片模糊化处理?
  14. Ubuntu系统下载(清华大学开源软件镜像站)(ubuntu-20.04.1-desktop-amd64.iso)
  15. Centos 7 根目录存储容量调整大小
  16. 贪婪洞窟2 素材解密
  17. 一文了解“什么是ACL”、“什么是EACL”、“什么是NAACL”、“什么是AACL”国际会议
  18. Android Studio 3.5 怎样获取MD5签名
  19. 准备就绪的定义被认为是有害的
  20. strcmp( )函数

热门文章

  1. vm15 安装 mac虚拟机的过程 转载的
  2. mysql 组合索引 or_Mysql_组合索引和单列索引
  3. SQL Server【一】简介和基本概念和命令
  4. CodeForces - 641ELittle Artem and Time Machine——map+树状数组
  5. 函数dup和dup2
  6. wxpython实现界面跳转
  7. html/css杂题
  8. static、volatile、synchronize
  9. 【bzoj1263】[SCOI2006]整数划分 高精度
  10. 408. Valid Word Abbreviation