本文将解读标准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的软件体系架构描述的概念模型的更多相关文章

  1. 软件体系架构之ssh框架阅读笔记

    首先我们要了解一下什么是ssh框架? SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架. ssh框架系统从职责上分为四层:web层 业 ...

  2. SaaS系列介绍之十三: SaaS系统体系架构

    1 系统体系架构设计 软件开发中系统体系架构决定了一个系统稳定性.健壮性.可扩展性.兼容性和可用性,它是系统的灵魂.体系架构是架构师所关注的核心.良好的体系架构是系统成功的开端,否则,再好的代码与设计 ...

  3. 全球最低功耗蓝牙单芯片DA14580的软件体系 -层次架构和BLE消息事件处理过程

    在作者之前发表的<全球最低功耗蓝牙单芯片DA14580的系统架构和应用开发框架分析>.<全球最低功耗蓝牙单芯片DA14580的硬件架构和低功耗>.<全球最低功耗蓝牙单芯片 ...

  4. [转] 张凌 ARM体系架构

    很多时候我们都会对M0,M0+,M3,M4,M7,arm7,arm9,CORTEX-A系列,或者说AVR,51,PIC等,一头雾水,只知道是架构,不知道具体是什么,有哪些不同?今天查了些资料,来解解惑 ...

  5. 【转】XenServer体系架构解析

    XenServer是一套已在云计算环境中经过验证的企业级开放式服务器虚拟化解决方案,可以将静态.复杂的IT环境转变为更加动态.易于管理的虚拟数据中心,从而大大降低数据中心成本.同时,它可以提供先进的管 ...

  6. 基于AngularJS的企业软件前端架构[转载]

    这篇是我参加QCon北京2014的演讲内容: 提纲: 企业应用在软件行业中占有很大的比重,而这类软件多数现在也都采用B/S的模式开发,在这个日新月异的时代,它们的前端开发技术找到了什么改进点呢? B/ ...

  7. WebLogic集群体系架构

    WebLogic Server集群概述  WebLogic Server 群集由多个 WebLogic Server 服务器实例组成,这些服务器实例同时运行并一起工作以提高可缩放性和可靠性.对于客户端 ...

  8. 面向服务体系架构(SOA)和数据仓库(DW)的思考基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台

    面向服务体系架构(SOA)和数据仓库(DW)的思考 基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台 当前业界对面向服务体系架构(SOA)和数据仓库(Data Warehouse, ...

  9. 基于物联网操作系统HelloX的智慧家庭体系架构

    基于物联网操作系统HelloX的智慧家庭体系架构 智慧家庭是物联网的一个分支应用,是一个被广泛认同的巨大IT市场空间.目前市场上已经有很多针对智慧家庭的产品或解决方案,但与移动互联网不同,智慧家庭至今 ...

随机推荐

  1. 关于STM32CubeMX使用LL库设置PWM输出

    HAL和LL库 HAL是ST为了实现代码在ST家族的MCU上的移植性,推出的一个库,称为硬件抽象层,很明显,这样做将会牺牲存储资源,所以项目最后的代码比较冗余,且运行效率大大降低,运行速度受制于fla ...

  2. Python基础-函数(六)

    一.函数介绍 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print().但你也可以自己创建函数 ...

  3. Excel uploading date format

    if l_wa_field-value eq 'ZFIRST_REQ_DATE'. clear lv_length. lv_length = strlen( l_wa_excel-value ). c ...

  4. dwr去除默认错误弹窗

    在开发中,我实在不希望dwr弹出alter,只需要打印错误日志就可以,客户端不需要alert出error或者a server error has occurred. 这样的提示,更不需要alert出堆 ...

  5. php中使用sphinx搜索引擎

    sphinx是一个高效的搜索引擎,分词搜索的速度比较快,索引建立存储在硬盘文件,不会干扰数据库,有自己内置的一套数据库. 一. 安装.配置 1.ubuntu安装sphinx 如果没有安装aptitud ...

  6. gem 安装问题

    错误提示: ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) SSL_connect returned=1 errno=0 ...

  7. bhttpd

    以前产品应用是用串口做控制台,写了一个带简单命令历史和命令补全功能的控制台Shell,用作程序的调试,包括查看系统状态和调试修改设定等等.确实非常好用,对很多现场简单问题的快速定位起到了很好的作用.系 ...

  8. vue中html页面写入$t(‘’)怎么显示

    1.在 main.js 中引入 vue-i18n (前提是要先引入 vue) 1 2 import VueI18n from'vue-i18n' Vue.use(VueI18n) 2.准备本地的翻译信 ...

  9. MySQL加入log_bin报错

    MySQL中二进制日志功能默认是关闭的,查看各种开启方式后,确定在配置文件中加入如下配置来开启该功能: [root@bogon /]# more /etc/my.cnf [mysqld] datadi ...

  10. Oracle 12c 创建新的数据库实例、用户

    前提:安装好了Oracle 12c数据库,已有一个数据库实例xe,登录用户/密码:system/oralce 我用的是docker安装的Oracle 12c的实例: docker run --name ...