软件架构设计 ADMEMS方法体系
ADMEMS是Architecture Design Method has been Extended to Method System的简称,是由CSAI顾问团架构设计专家组于2009年11月在第六届中国软件大会上公开发布的一个软件架构设计方法。作为方法体系,ADMEMS通过3个阶段和1个贯穿环节,来覆盖“需求进,架构出”的架构设计完整工作内容。其中“3个阶段”是指预备架构阶段(PA阶段:把握需求特点,确定架构驱动力)、概念架构阶段(CA阶段:根据重大需求,确定概念架构)、细化架构阶段(RA阶段:细化架构设计,关注不同视图),“1个贯穿环节”是指对非功能目标的考虑。
《一线架构师实践》一书详细的介绍了ADMEMS体系。它将软件架构的过程分为三个阶段和一个贯穿环节,进而覆盖“需求进,架构出”的架构设计的完整工作内容。基中Pre-Architecture阶段,意在全面理解需求,从而把握需求特点,进而确定架构设计驱动力。而Conceptual Architecture阶段所关注的是如何通过关键功能、关键质量及业务需求和约束来塑造概念架构。Refined Architecture阶段,则主要通过5视图方法进行细化架构的设计。而非功能需求不可能“速战速决”,因此,对于非功能需求的关注会贯穿架构设计的整个过程。
Pre-Architecture,是架构设计的最前期阶段,其工作目标包括:理解需求、建议需求大局观、确认架构设计方向等。其对于整个架构设计的意义在于,着眼于全局把握需求、降低架构失败的风险、尽早地开始架构设计、明确架构设计的驱动力。需要注意的是,不同需求影响架构的不同原理,关键需求决定架构,而其他需求用来来验证架构。ADMEMS将Pre-Architecture阶段分为四个步骤,即需求结构化、分析约束影响、确定关键质量、确定关键功能。
“ADMEMS矩阵”是Pre-Architecture阶段的核心方法。 “ADMEMS矩阵”又称为“需求层次-需求方面矩阵”,帮助架构师告别需求列表的陈旧方式,顺利过渡到二维需求观,借此避免遗漏需求、并进一步理清需求间关系和发现衍生需求。
Conceptual Architecture,即概念架构。概念架构不是理想架构,同样概念架构也不是概念视图,概念架构作为架构设计的一个阶段,必须在细化架构设计阶段之前,针对重大需求、特色需求、高风险需求的要求,给出高层的解决方案,形成稳定的高层架构设计成果。ADMEMS将Conceptual Architecture阶段分为三个步骤,即:
初步设计:基于关键功能,借助鲁棒图进行以发现职责为目的的初步设计;
高层分割:对系统这个黑盒进行高层切分,如切分复杂系统为多个二级系统,或者直接切分系统为具体子系统;实践中最常用的系统切分方式为分层,有Layer(逻辑层)、Tier(物理层)、按通用性分层生技术堆叠等流派。
考虑非功能需求:概念架构并非理想化架构,因此不仅要考虑功能,也必须考虑非功能,通常采用的方法为,目标-场景-决策表。
Refined Architecture是相对于Conceptual Architecture而言的,即细化架构。ADMEMS主要通过5视图法对细化架构阶段进行实践。5视图法的主要思想为:错落有致地将众多技术关注点划分“群落”,“群落”内高聚合,“群落”间松耦合。应用5视图方法,便于架构师设计思维的“有序”展开。不同视图源于不同的思维角度及不同的技术关注点,即:
逻辑架构:关注如何划分子系统、如何定义接口、如何运用质疑驱动的思维套路等;
物理架构:关注硬件选择与物理拓扑、软件到硬件的映射关系、方案优化;
运行架构:关注确定引入哪些控制流、确定每条控制流的任务、处理相关问题、进一步考虑控制流之间的同步关系等;
开发架构:关注将“逻辑职责”映射为“程序单元”、开发技术选型、“程序单元”间的关系等;
数据架构:关键是确定数据分布方案。数据分布的6种策略:独立、集中、分区、复制、子集、重组;
非功能目标的设计环节。非功能目标的设计是以场景技术为核心手段、以目标-场景-决策表为思维工具致力于支撑非功能目标的理性设计过程。经过非功能目标的设计,将使得架构设计更有针对性、可操作性更强、避免过度设计,同时便于系统升级时参考。
目标-场景-决策表方法,可以帮助架构师快速建议非功能目标的设计思维,更理性地应对架构师普遍感到棘手的非功能支持问题,提升自己的核心竞争力。
软件架构设计 ADMEMS方法体系的更多相关文章
- SoC嵌入式软件架构设计II:没有MMU的CPU虚拟内存管理的设计和实现方法
大多数的程序代码是必要的时,它可以被加载到内存中运行.手术后,可直接丢弃或覆盖其它代码. 我们PC然在同一时间大量的应用,地址空间差点儿能够整个线性地址空间(除了部分留给操作系统或者预留它用).能够觉 ...
- SoC嵌入式软件架构设计II:否MMU的CPU虚拟内存管理的设计与实现方法
大多数的程序代码是必要的时,它可以被加载到内存中运行.手术后,可直接丢弃或覆盖其他代码.我们PC然在同一时间大量的应用,能够整个线性地址空间(除了部分留给操作系统或者预留它用),能够觉得每一个应用程序 ...
- SoC嵌入式软件架构设计之六:API设计方法
在嵌入式系统中,驱动都是以API的方式提供给应用进行调用.这里介绍嵌入式系统的API设计和管理方法. 驱动在系统中会按模块进行分类,比如按键驱动.LCD驱动.文件系统.card驱动.I2C驱动等等:每 ...
- SoC嵌入式软件架构设计
内存是SoC(System on Chip,片上系统)集成设计的重要模块,是SoC中成本比重较大的部分.内存管理的软硬件设计是SoC软件架构设计的重要一环,架构设计师必须要在成本和效率中取得平衡,做到 ...
- SoC嵌入式软件架构设计之三:代码分块(Bank)设计原则
上一节讲述了在没有MMU的CPU(如80251.MIPS M控制器系列.ARM cortex m系列)上实现虚拟内存管理的集成硬件设计方法.新设计的内存管理管理单元要实现虚拟内存管理还须要操作系统.代 ...
- 大型Java进阶专题(三) 软件架构设计原则(下)
前言 今天开始我们专题的第二课了,本章节继续分享软件架构设计原则的下篇,将介绍:接口隔离原则.迪米特原则.里氏替换原则和合成复用原则.本章节参考资料书籍<Spring 5核心原理>中的 ...
- PowerDotNet平台化软件架构设计与实现系列(03):系统应用平台
为了复用和解耦,快速开发更多的系统和应用,我们对自己经常说的"系统"和"应用"进行更高级的提取和抽象. 十多年前入行,辗转至今,写过很多很多应用,个人喜欢分门别 ...
- [开发笔记usbTOcan]软件需求分析和软件架构设计
前面文章进行了系统分析和系统架构设计,手工焊接了一个板子,集合EK-TMC123GXL开发板(请忽略焊接技术) SWE.1 | 软件需求分析 软件需求分析过程的目的是将系统需求的软件相关部分转化为一组 ...
- 使用java泛型设计通用方法
泛型是Java SE 1.5的新特性, 泛型的本质是参数化类型, 也就是说所操作的数据类型被指定为一个参数. 因此我们可以利用泛型和反射来设计一些通用方法. 现在有2张表, 一张user表和一张stu ...
随机推荐
- Java 集合系列13之 TreeMap详细介绍(源码解析)和使用示例
转载 http://www.cnblogs.com/skywang12345/p/3310928.html https://www.jianshu.com/p/454208905619
- Linux挂载Windows共享目录
在windows中设置共享目录并添加权限用户 把Window系统的文件共享挂载到linux centos 目录下的方法步骤: 1.先在windows下面共享需要挂载的目录. 2.确保linux与win ...
- JS以指定格式获取当前日期
//获取当前时间,格式YYYY-MM-DD function getNowFormatDate() { var date = new Date(); var seperator1 = "-& ...
- HashSet,TreeSet和LinkedHashSet的区别
1. Set接口 Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false. Set判断两个对象相同不是使用==运算符,而是根据equals方法.也就是说,只要两个 ...
- 发送ajax请求实现上传图片显示在网页上
<?php // 1,通过超全局变量来获取files[上传的图片名称] $file = $_FILES["files"] // 2,在通过strrchr来获取图片的格式 $e ...
- 如何用hexo+github搭建个人博客
搭建环境 1.安装 Node.js: https://nodejs.org/en/ windows下点击链接,下载安装即可;Linux下更加简单,在终端下输入sudo apt-get install ...
- 关于es集群转换为单点后,主分片丢失的问题(健康检测状态为red)
正在找解决方案 前后情况是, 之前是es双节点,之后更改为单节点,data中的数据都是双节点的,也许导致了单节点的状态不正常,删除了data目录下内容后,重启es,好了,这是测试环境,所以这么干的
- python的map与reduce与filter
map(f, Itera) # 对每一个元素都使用f(x) >>> sq = lambda x:x**2 >>> l = map(sq,[-1,0,1,2,-3] ...
- MySql 创建/删除数据库
C:\Users\Mr.Black>mysql -u root -pEnter password: ****Welcome to the MySQL monitor. Commands end ...
- Thinkpad E440个性化设置:如何/禁用关闭触摸板?
#如何禁用/关闭触摸版 默认情况下,ThinkPad E440是不支持触摸板的关闭功能,如果要关闭的话,需要去官方下载相应的鼠标驱动 UltraNav. 下载地址:http://think.lenov ...