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工具,具有廉价的本地分支、…

React开发(249):react项目理解 ant design form加个扩展样式

<Form.Item label"详细地址&#xff1a;" wrapperCol{{ xs: { span: 14 },sm: { span: 14 } }}>{getFieldDecorator(address, {initialValue: type update? activeUpdateData.address : ,rules: [{ message: 请输入详细地址}],})(<Input.TextArea autoSiz…

重庆邮电计算机科学分数线,2020重庆邮电大学录取分数线已公布

重庆邮电大学录取分数线已经陆续出现&#xff0c;下面由出国留学网小编为你精心准备了“2020重庆邮电大学录取分数线已公布”&#xff0c;持续关注本站将可以持续获取高考资讯&#xff01;2020重庆邮电大学录取分数线已公布很多家长和考生们都想知道2020年重庆邮电大学的高考分…

系统集成资质 -考点分析- “三点估算法”出题的形式演化分析

以上内容分析“时间管理”中常考的计算题以及计算题演化的形式。 知识点1&#xff1a;三点估算法 常规考法1&#xff1a;完成活动A悲观估计36天&#xff0c;最可能估计21天&#xff0c;乐观估计6天&#xff0c;求该活动的期望完成时间。 点评&#xff1a;最早考核的形式&#x…

SQL 字符 数字 转换字母

1、将字符中数字转换为中文大写的数字&#xff0c; 注意 100>一零零 而非>一百 123>一二三 而非>一百二十三 CREATE FUNCTION Fn_NumberConvertChinase(number NVARCHAR(50)) RETURNS NVARCHAR(20) AS BEGIN DECLARE res NVARCHAR(20) DECLARE char CHAR(1) SE…

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

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

git使用.ignore忽略工程中的文件变动

一、描述 总会有些文件无需纳入 Git 的管理&#xff0c;也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件&#xff0c;比如日志文件&#xff0c;或者编译过程中创建的临时文件等。 在这种情况下&#xff0c;我们可以创建一个名为 .gitignore 的文件&#xff0c…

React开发(250):react项目理解 ant design loding控制页面转圈加载

lecturer,lecturerOrganization,admin,menu,modalOkButtonLoading: loading. effects[lecturer/save] || loading.effects[lecturer/update],spanLoading: loading.effects[lecturer/sa ve] || loading.effects[lecturer/update],

华农计算机学院院长,华农大生命科学技术学院副院长到武生院任职

荆楚网消息(通讯员张雄豆)10月14日&#xff0c;华中农业大学生命科学技术学院副院长赵斌正式上任武汉生物工程学院副院长一职&#xff0c;至此&#xff0c;“名校”与“民校”的合作迈出了坚实的一步。根据武汉城市圈7所部属高校与18所省属高校对口支持合作计划&#xff0c;华中…

vc删除文件夹

//功能&#xff1a; 删除非空目录文件夹//输入&#xff1a; DirName 文件夹名//输出&#xff1a; 删除是否成功//功能&#xff1a; 迭代文件夹内文件&#xff0c;一个一个删除BOOL DeleteDirectory(char *DirName){CFileFind tempFind;char tempFileFind[200];sprintf(tempFile…

hadoop基本操作命令小结

启动和关闭Hadoop 启动Hadoop 1.进入HADOOP_HOME目录。 2.执行bin/start-all.sh 关闭Hadoop 1.进入HADOOP_HOME目录。 2.执行bin/stop-all.sh HDFS文件文件系统操作 Hadoop使用的是HDFS&#xff0c;能够实现的功能和我们使用的磁盘系统 类似。并且支持通配符&#xff0c;如*。 …

SourceInsight 常用快捷键

Source Insight是一个面向项目开发的程序编辑器和代码浏览器&#xff0c;它拥有内置的对C/C, C#和Java等程序的分析。能分析源代码并在工作的同时动态维护它自己的符号数据库&#xff0c;并自动显示有用的上下文信息。Source Insight自动创建并维护它自己高性能的符号数据库&am…

Linux无线网络设置(wpa_supplicant的使用)

From: http://blog.csdn.net/yming0221/article/details/7325198 主机环境&#xff1a;Gentoo Linux 3.1.10 WPA Supplicant工具包可以让您连接到那些使用WPA的AP。因为还只是beta版&#xff0c;所以它的配置方法仍会常常变化——尽管如此&#xff0c;在大部分情况下它已经…

四川省中职计算机考试题,(四川省计算机等级考试题库.doc

(四川省计算机等级考试题库第七章PowerPoint一、判断正误题1.在powerpointZ000的幻灯片上可以插入多种对象&#xff0c;除了可以插入图形、图表外&#xff0c;还可以插入公式、声音和视频。 2.在powerpoint2000的大纲视图中&#xff0c;可以增加、删除、移动幻灯片。 3.用Power…

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

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

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

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

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

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