MMN实用架构过程概览

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

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

mmn-level01

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

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

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

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

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

mmn-level02

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

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

mmn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实践分享:开始用Cordova+Ionic+AngularJS开发App

http://www.cocoachina.com/webapp/20150707/12395.html 本文是一篇关于我本人在使用CordovaIonic以及AngularJS开发移动App的过程中的经验的总结,它不是一篇基础入门教程,而是和大家探讨一下关于如何更好的使用这些技术开发一个更好的App。 声明&#x…

git仓库的基本用法

一、简介 git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目。git很容易学习,而且它的占用资源很小,性能也非常好。它超越了subversion、cvs、perforce和clearcase等scm工具,具有廉价的本地分支、…

关于检测手机信号强度,wifi信号强度以及检测周围wifi热点的一个小例子

From: http://blog.csdn.net/wanglj0925/article/details/7743182 一.检测手机信号强度 检测手机信号强度需要用到TelephonyManager类 这个类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机SIM的状态和信息、电信网络的状态及手机用户的信息。在…

转载:关于爱情、伴侣、承诺、人生、

关于爱情: 不要认为后面还有更好的,因为现在拥有的就是最好的。 不要认为还年轻可以晚些结婚,爱情是不等年龄的。 不要因为距离太远而放弃,爱情可以和你一起坐火车的。 不要因为对方不富裕而放弃,只要不是无能的人&am…

Net4.0的网站在IE10、IE11出现“__doPostBack未定义”的解决办法。

方法一、浏览器设置成兼容模式。 方法二、安装服务器版的.Net40的补丁。http://download.csdn.net/detail/5653325/6642051 方法三、点击VS的工具菜单--》库程序包管理器--》程序包管理器控制台(如果没有“库程序包管理器”的菜单,就先点那个“扩展管理器…

数理统计中的卡方分布,t分布和F分布

有很多统计推断是基于正态分布的假设,以标准正态分布变量为基石而构造的三个著名统计量在实际中有广泛的应用,这是因为这三个统计量不仅有明确背景,而且其抽样分布的密度函数有显式表达式,它们被称为统计中的“三大抽样分布”。这…

Bringing up interface eth0: Device eth0 does not seem to be present, delaying initialization

克隆虚拟机后,网卡无法启动,并报如下错误: 解决办法1.修改虚拟机克隆机的HWADDR为ifconfig -a的MAC地址 形如:HWADDR"xx:xx:xx:xx:xx:xx" 2.然后再做以下操作 # rm -rf /etc/udev/rules.d/70-persistent-net.rules # re…

在计算机发展的早期 计算机主要用于,全国网络统考《计算机应用基础》选择题复习...

全国网络统考《计算机应用基础》选择题复习 全国网络统考《计算机应用基础》选择题复习第一章计算机基础知识【例题与解析】、一般认为,世界上第一台电子计算机诞生于()。年年年年【解析一般认为,世界上第一台数字计算机于年在美国宾夕法尼亚大学研制成功…

数理统计中95%置信区间的含义

95%置信区间,意味着如果你用同样的步骤,去选样本,计算置信区间,那么100次这样的独立过程,有95%的概率你计算出来的区间会包含真实参数值,即大概会有95个置信区间会包含真值。而对于某一次计算得到的某一个置…

Linux 程序后台运行与删除

一、查看进程:ps 或 ps -a 二、命令后台运行: sudo ./runmyled.o& 命令后边跟个&, 返回进程id号 三、查看当前的进程: 四、删除进程:sudo kill id1 id2 id3

jquery html 片段,十条jQuery代码片段助力Web开发效率提升

JQuery是继prototype之后又一个优秀的Javascript库。它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0, FF 1.5, Safari 2.0, Opera 9.0),jQuery2.0及后续版本将不再支持IE6/7/8浏览器。jQuery使用户能更方便地处理HTML(标准通用标记语…

React开发(255):react项目理解 ant design 注意报错提示

if (res.data.records.length 0 && pageUserIndex > 1) {

华为IoT平台NB编解码插件开发详细教程【上篇】

目录 0、前言 一、环境搭建 1.1 安装JDK 1.2 安装eclipse 1.3 安装Maven 二、Profile说明 三、插件编写 3.1 源文件说明 3.2 修改文件路径(包含) 3.3 修改pom.xml 3.4 导入工程 3.5 代码实现 3.6 生成jar包 0、前言 本教程分为上、下篇&am…

用MySQL实现微博关注关系的方案分析

关注关系产生的四种关系状态 关注粉丝双向关注(互粉)无关系用词follower表示粉丝 -- 追随者 用词following表示关注 -- 追随 设计的结构必须能满足以下功能: 查询关注列表查询粉丝列表查询双向关注列表判断两个用户的关系查询带关系状态的任一列表第一种方案 用一行…

带你封装一个上传图片组件(ant design+react)

目录 需求实现 实现效果 代码封装 UploadImage组件 备注 BaseUploadImage组件 index.less 样式文件 父组件引用 需求实现 1可以支持上传最多九张图片 2图片支持预览 替换 删除 3支持自定义上传文件大小 格式 未上传提示 实现效果 代码封装 UploadImage组件 * Descri…

计算机面试的时候写过的代码,程序员悲催瞬间:来之不易的美团面试,我尽然挂了(还原真实场景)...

一面1、自我介绍答:自我介绍是面试中唯一的自己主动介绍自己的环节,一定要好好把握好,你数据结构学的号可以手撕一个红黑树你就说我数据结构掌握地很好,反正就是要把自己的优势凸显出来,比如自己对于java的知识较熟悉&…