解读IEEE 7417的软件体系架构描述的概念模型
本文将解读标准IEEE Std 1471-2000(密集型软件的体系结构描述推荐实施规程)的概念模型图部分,从中一窥作为软件架构师的进行架构设计的思考角度与策略。如果我们把世界当做一场游戏,现在要玩的就是策略游戏而已。
说明:
IEEE 1471是适用于软件密集的系统,其目标在于:便于体系结构的表达与交流,并通过体系结构要素及其实践标准化,奠定质量与成本的基础。
细读这个标准,可以加强策略游戏的装备,全新上战场。
基本概念
IT框架的设计者必须是杰出的问题驱动者,设计往往是一个模糊的,非理性的过程,基本概念掌握后,相当于准备好攻击的工具了。
什么是密集型系统呢?1471中的框架标准,主要是针对密集型系统(software-intensive 也称作增强型软件),是指软件对于整个系统的设计、构建、部署和评估有重要影响的任何系统。
除了软件体系架构描述的概念贯穿标准始末,还有两个概念:视图(view)和视点(viewpoint),是在整个框架中将大量会使用到。
视图:是指从相关的关注点的角度来看整个系统的表示。
视点:则是构造和使用视图的约定规范。是一种模式和模板。
他们的关系是:view是表达系统架构在viewpoint中所定义的关注点的表达,而viewpoint是定义了一种语言或方法来描述这些view。他们就类似viewpoint探照灯和人们通过探照灯点亮而看到的view。
至于System StakeHolder(SH 利益相关者)、Architectural Description(AD 架构描述)、Acquirer(需方)、Concern(关注点)这样的概念会穿插在概念模型中介绍。
AD架构描述:是指一组用于记录体系结构的产品,如文档集等。
Acquirer:一个从供方那里采购系统、软件产品或软件服务的组织。(需方可以是买家、客户、所有者、用户或购买者)
软件体系架构概念模型
我们说,架构定义阶段一般在软件生命周期中,位于需求分析和设计阶段之间。在这个阶段要考虑到利益以及涉及利益者的利害关系,由此来形成一个均衡的解决方案。
下图是IEEE Std 1471标准的核心,是一张用UML来表达体系架构要素之间关系的一张重要图示,读懂了这张图,作为架构师将具有有居高临下的大览之心。只要会UML语言,我们就可以很轻松的来解读它。
该图将要素以分层的方式,关联和聚合的概念,表述体系结构中不同要素之间的重要关系。让我们来一一分解。
第1层:Mission(任务)
系统的存在是为了在某种环境里履行1个或多个任务。一个任务(mission)是指一种使用或操作,是一个系统想要满足由一个或多名利益相关者的目标。如图所示Mission只关联System,因此其实框架的起点可以看作是下一层的System。
第2层: Environment、System、Architecture
是从System开始的。这里的系统是个广义的统称,包含:应用程序、传统意义的系统、子系统、系统的系统、产品线、产品组、整个企业或其他利益集团等。
任何一个System都是在某个环境(Environment)中的,而环境又影响(influences)着系统,因为环境,有时候是指上下文(context),决定了这个系统的发展、运作、政治和其他影响的设置和情形。环境也会直接或者间接的影响与之交互的其他系统。环境可以确定一个系统的边界以及与其统的交互范围。也就是可以在本系统和与之相关的其他系统之间画一条线,这个线就是边界。
系统有(has an)一个架构。一个架构可以由一个架构描述来记录。
这里的系统和架构虽然是一对一的关系,但是还是有区别的,一个是概念上的是一个实际具体的事物。
第3层:Stakeholder、AD、Rational
1个系统拥有1个或多个利益相关者。利益相关者拥有1个或多个关注点。
关注点是指对于那些操作或其他方面对于一个或多个利益相关者非常重要,且与那些系统发展相关的利益。
通常关注点包括系统的功能要求、性能需求、安全性、可靠性和保密性等。
架构描述是由多个view组合而成的。体系架构描述将1个或多个模型聚合到视图中。
架构描述选择一个或多个视点供使用。这种选择依赖于利益相关者关注点需要通过架构描述来解决。
例如,ISO的(RM-ODP 开放式分布处理的参考模型)所选择5个视点。但是IEEE std 1471-2000中没有提及选择的特定的视点。可以用架构描述来定义一个视点,也可以在其他地方定义在架构描述中使用而已。
架构描述定义1个或多个利益相关者的关注点。
AD需要提供基本原理,也就是AD需要提供选择当前架构的原因,架构设计师如何满足功能性与非功能性需求的。
第4层:Concern,Viewpoint,View
每一个view又涵盖了一个或多个利益相关者的关注点。一个视图是根据视点(viewpoint)中定义的规则和约定所创建的。除了视图中描述的信息之外,一个架构的描述还可以包含其他的信息,例如系统概述和系统原理等。这些信息的来源可能不是某个视点,而是遵循了其他组织文档的实践。
一个视点是通过创建、描述和分析视图而建立的一种约定。也就是说,一个视图遵从一个视点,一个视点决定了描述视图的语言(包括符号、模型或产品类型),任何一种相关的建模方法或者分析技术,都将被应用在视图的表述上。
第5层:Library Viewpoint,Model
外部定义的视点被称作视点库,例如RM-ODP中的那5个视点。
1. 企业视点(Enterprise Viewpoint):分析系统目的、商业需求、策略和系统范围的试点。处理与企业层面有关的信息,例如组织结构和政策等。
2. 信息视点(Information Viewpoint):信息的结构,当中包括信息的变化、流程及不同功能上的逻辑分割。
3. 计算视点(Computational Viewpoint):着重于系统的分解成相对的实体及接口。
4. 工程视点(Engineering Viewpoint):处理有关分布式系统对象间的交互(interaction),及描述如何支持有关的交互。
5. 技术视点(Technology Viewpoint):定义有关系的软件及硬件组件。
一个视图可能由1个或多个模型组成,模型可以参与一个或多个视图。
每个这样的模型都是根据对应观点定义中建立的方法来定义的。
换个角度来理解就是:
任何一个系统(System)是为了达成某些利益相关者(Stakeholder)的某些人物(Mission),在特定环境(Enviroment)中构建的。每一个系统都有一个架构(Architecture)。
架构(Architecture)是对所有利益相关者的关注点(Concern)的响应和回答,通过架构描述(Architecture Description)来说明。每一个利益相关人都有各自的关注点。这些关注点是指对其重要的,与系统的开发、运营或其它方面相关的利益。
架构描述(Architecture Description)本质上是多视图的。每一个视图(View)是从一个特定的视点(Viewpoint)来表述架构的某一个独立的方面。试图用一个单一的视图来覆盖所有的关注点当然是最好的,但实际上这种表述方式将很难理解。
视点(Viewpoint)的选择,基于要解决哪些利益相关人的哪些关注点。它决定了用来创建视图的语言、符号和模型等,以及任何与创建视图相关的建模方法或者分析技术。
一个视图(View)包括一个或者多个架构模型(Model),一个模型也可能参与多个视图。模型较文本的表述的好处在于,可以更容易的可视化、检查、分析、管理和集成。
架构设计有助于系统从最初概念产生到退役的开发、操作和维护的整个生命周期的工作。因此在软件开发中加入架构设计概念后,可以帮助在软件开发中对软件上下文的理解,整体环境和系统的认知,而不仅仅是多增加了一个活动而已。
参考文献:
1. http://www.rm-odp.net
2. http://blog.sina.com.cn/s/blog_5a010cd10100xxiz.html
3. Summary of IEEE 1471 By Jan Øyvind Aagedal, SINTEF Telecom and Informatics
解读IEEE 7417的软件体系架构描述的概念模型的更多相关文章
- 软件体系架构之ssh框架阅读笔记
首先我们要了解一下什么是ssh框架? SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架. ssh框架系统从职责上分为四层:web层 业 ...
- SaaS系列介绍之十三: SaaS系统体系架构
1 系统体系架构设计 软件开发中系统体系架构决定了一个系统稳定性.健壮性.可扩展性.兼容性和可用性,它是系统的灵魂.体系架构是架构师所关注的核心.良好的体系架构是系统成功的开端,否则,再好的代码与设计 ...
- 全球最低功耗蓝牙单芯片DA14580的软件体系 -层次架构和BLE消息事件处理过程
在作者之前发表的<全球最低功耗蓝牙单芯片DA14580的系统架构和应用开发框架分析>.<全球最低功耗蓝牙单芯片DA14580的硬件架构和低功耗>.<全球最低功耗蓝牙单芯片 ...
- [转] 张凌 ARM体系架构
很多时候我们都会对M0,M0+,M3,M4,M7,arm7,arm9,CORTEX-A系列,或者说AVR,51,PIC等,一头雾水,只知道是架构,不知道具体是什么,有哪些不同?今天查了些资料,来解解惑 ...
- 【转】XenServer体系架构解析
XenServer是一套已在云计算环境中经过验证的企业级开放式服务器虚拟化解决方案,可以将静态.复杂的IT环境转变为更加动态.易于管理的虚拟数据中心,从而大大降低数据中心成本.同时,它可以提供先进的管 ...
- 基于AngularJS的企业软件前端架构[转载]
这篇是我参加QCon北京2014的演讲内容: 提纲: 企业应用在软件行业中占有很大的比重,而这类软件多数现在也都采用B/S的模式开发,在这个日新月异的时代,它们的前端开发技术找到了什么改进点呢? B/ ...
- WebLogic集群体系架构
WebLogic Server集群概述 WebLogic Server 群集由多个 WebLogic Server 服务器实例组成,这些服务器实例同时运行并一起工作以提高可缩放性和可靠性.对于客户端 ...
- 面向服务体系架构(SOA)和数据仓库(DW)的思考基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台
面向服务体系架构(SOA)和数据仓库(DW)的思考 基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台 当前业界对面向服务体系架构(SOA)和数据仓库(Data Warehouse, ...
- 基于物联网操作系统HelloX的智慧家庭体系架构
基于物联网操作系统HelloX的智慧家庭体系架构 智慧家庭是物联网的一个分支应用,是一个被广泛认同的巨大IT市场空间.目前市场上已经有很多针对智慧家庭的产品或解决方案,但与移动互联网不同,智慧家庭至今 ...
随机推荐
- 生成式对抗网络(GAN)实战——书法字体生成练习赛
https://www.tinymind.cn/competitions/ai 生成式对抗网络(GAN)是近年来大热的深度学习模型. 目前GAN最常使用的场景就是图像生成,作为一种优秀的生成式模型,G ...
- How to get raw request body in ASP.NET?
protected void Page_Load(object sender, EventArgs e) { MemoryStream memstream = new MemoryStream(); ...
- 构建你的spring boot代码
Spring boot不需要任何特定的代码布局来工作.然而,有一些最佳实践可以帮助您. 1.避免使用缺省包 当一个类不包含包声明时,它被认为是在“缺省包”中.“默认包”的使用通常是不鼓励的,应该避免. ...
- IntelliJ IDEA2017 + tomcat 即改即生效 实现热部署
https://www.cnblogs.com/1024zy/p/6344000.html
- angular4.0懒加载
用angular4.0进行前后端分离已经好几个月了,现在接近了尾声,pc端和移动端.可是却还存在着很多问题,最近这几天一直在研究懒加载问题,因为通过ng build --prod打包后主文件很大,有2 ...
- mac系统 pip3 install scrapy 失败 No local packages or working download links found for incremental>=16.10.1
使用pip3 install scrapy命令之后,会出现如下问题: Collecting scrapy Downloading Scrapy-1.4.0-py2.py3-none-any.whl ( ...
- 在不安装sqlite3的时候使用sqlite3数据库以及问题/usr/bin/ld: skipping incompatible.....的解决
在没有安装sqlite3的linux机器上,怎么在不安装的情况下使用sqlite3的数据库呢: 其中只需要2个文件即可: 数据库的动态库libsqlite3.so,sqlite3.h. 另外,一些系统 ...
- 关于this的指向
1.谁调用该函数this指向就指向谁 2.回调函数中this的指向永远都指向window 3.箭头函数指向最近的作用域,箭头函数本身是没有this的指向 4.定时器永远指向window 5.严格模式下 ...
- div界面元素生成图片
首先明确一下需求,界面上截取部分元素,生成图片,用户可以长按保存.主要是在微信里,所以设计到生成二维码的问题. 1.链接生成二维码,这里用qrcode生成,搜索可以搜到相关的js文件 var myUr ...
- REdis MASTER aborted replication NOAUTH Authentication required
对于REdis集群,如果设置了requirepass,则一定要设置masterauth,否则从节点无法正常工作,查看从节点日志可以看到哪下内容:19213:S 22 Apr 2019 10:52:17 ...