《实用软件架构:从系统环境到软件部署 》——2.4 架构视图与架构视点

本节书摘来自华章出版社《实用软件架构:从系统环境到软件部署》一书中的第2章,第2.4节,作者[印]蒂拉克·米特拉(Tilak Mitra)著,爱飞翔 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。


2.4 架构视图与架构视点

以软件架构为论题的书籍、文章、研究项目及相关刊物,都会带有各自的观点。不同的流派对架构有不同的看法,他们会按照各自的看法来做架构,并会将各自的做法加以推广。就本书的主题来说,笔者并不打算专门用一个章节把与软件架构有关的各种观点全都讲解一遍,而是只想展示下面的这种观点,因为笔者觉得它比较务实,而且运用起来较为流畅。

视图和视点

Philippe Kruchten (1995.11)率先开始使用视图(view)与视点(viewpoint)这两个概念,来表达业界对软件架构的各种关注。Kruchten是IEEE 1471标准的一位制定者,该标准明确规定了视图的定义,也引入了视点的概念。Kruchten在论文(参见2.6节)中,是这样来描述这两个概念的:

视点—视点是“一份规范书,用来描述构建视图和使用视图时所应依循的约定。它是一种模式或一份模板,用来确立视图的目标和受众,以及创建视图与分析视图所用的技巧,使得我们可以据此创建出不同的视图。”

视图—视图是“从某个角度对整个系统所做的一种表现,该角度是由一系列彼此相联系的关注点所确立的。”

IBM (n.d.)定义了一套列架构视点,这就是IBM IT System Viewpoint Library(IBM IT系统视点库)。笔者认为这套架构视点相当完备地涵盖了系统架构的各个方面。如图2-3所示,该视点库中包含4个基本视点和6个正交(cross-cutting)视点。

 4b4f982cb3780a6abc07b46a5ccf1b8ac13dc215

IBM IT System Viewpoint Library中的四个基本视点分别是:

需求(Requirement)—与该视点有关的模型元素,用来捕捉系统中的各种需求,包括业务需求、技术需求、功能需求以及非功能型需求。对于该视点来说,最为常见的捕捉手段是用例与用例模型。

解决方案(Solution)—与该视点有关的模型元素,用来确定一套可以满足相关需求及约束的解决方案。此视点可以细分为两种:

功能视点(Functional)—此视点所关注的模型元素,从本质上来说,都是结构方面的元素,我们不仅要把元素本身实现出来,而且还要把元素之间的(静态和动态)关系建立好,以便用这些元素来构建系统。一般来说,此视点的细节,是通过功能架构来捕捉的,本书第7章将会专门讲解功能架构。

操作视点(Operational)—此视点关注的是怎样用结构元素来构建目标系统,以及怎样把功能视图部署到(由网络、硬件、计算资源、服务器等所构成的)IT环境中。我们通常使用操作模型来捕获此视点的细节,本书第8章将会专门讲解操作模型。

确认(Validation)—通过此视点所建立的模型元素,主要用来评估系统的能力,以确保该系统能够体现出预定的功能,并且能够提供质量合格的服务。我们通常会把功能和非功能方面的测试用例当作验证标准,以判断该系统是否具备预定的能力。

从图2-3中可以看出,这4个基本视点是相互关联的。功能视点与操作视点,可以合起来实现需求视点,并为其提供支持,而这两个视点,又是通过确认视点得以验收的。为了把这张图画得明确一些,笔者并没有专门标出“解决方案”视点,而是直接把构成该视点的功能视点和操作视点画在了图中。

视点库中还有6个正交视点。在图2-3中,4个基本视点周围的那6个同心正方形,就是用来表示这6个视点的。笔者之所以用这样的方式来画图,是想表达这6个正交视点对一个或多个基本视点所造成的影响。

这6个正交视点分别是:

应用(Application)—该视点专注于满足系统所宣称的业务需求。对于该视点来说,应用架构师扮演着主要角色。

技术(Technical)—该视点关注的是硬件、软件、中间件(其定义请参阅第5章)以及打包的应用程序,这些内容合起来可以实现应用程序的功能,并使得应用程序能够运作。对于该视点来说,基础设施架构师和集成架构师扮演着主要角色。

系统管理(Systems Management)—该视点关注部署之后的管理、维护,以及系统的运作。对于该视点来说,应用维护和管理团队扮演着主要角色。

可用性(Availability)—该视点关注怎样才能把系统构建起来,并令其保持可用(比如,怎样才能使系统的正常运行时间达到总运行时间的99.5%),以便满足预先达成的服务级别协议。对于该视点来说,基础设施架构师扮演着主要角色,而应用架构师与中间件架构师,则会为前者的工作提供支持。

性能(Performance)—该视点关注的问题是,怎样令系统的性能可以满足预先达成的服务级别协议(比如,从用户发出请求到系统给出应答,这之间的平均延迟时间要控制在400毫秒以内)。对于该视点来说,应用架构师扮演着主要角色,而中间件架构师和基础设施架构师,则会为前者的工作提供支持。

安全(Security)—该视点关注的是安全方面的系统需求,例如单点登入(single sign-on)、数据传输协议的安全程度,以及防止入侵等。某些安全需求(例如单点登入)主要是由应用架构师来处理的,而确认数据协议(例如HTTPS协议、安全套接字协议)的安全程度以及防止网络入侵等需求,则主要由基础设施架构师来处理。

每一个基本视点和正交视点背后,都隐藏着很多细节。这些视点均各自对应于一套元素,这些元素合起来能够描述出自身的特征及职责。如果理解了这些元素,那我们就能够深入地观察到每个视点的实现方式。尽管隐藏在每个基本视点和正交视点背后的细节有很多,然而笔者此处所要强调的内容,是大家应该意识到它们的存在,并且意识到我们必须从其中的每一个视点或绝大部分视点来对系统的架构进行观察。这种意识很重要。

笔者曾经对很多视点框架做了研究,我感觉其中的绝大多数框架,在基本形式的层面都有着一些共性。之所以会有这种共性,其原因在于:每个框架都想要确立一套相互补充的视角,并且想通过这些视角来观察系统的架构,以便全面地覆盖架构中的各个方面。

我们需要在各种视点框架之间做出选择,或者说,我们至少要从那些特别成熟、特别稳固而且特别持久的视点框架中进行选择。在选择时,大家应该根据自己的需求以及使用视点框架时的舒适程度来进行判断。

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

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

相关文章

TCP:当初取代NCP,如今害怕被取代

我叫TCP(Transmission Control Protocol)也叫传输控制协议。不觉回忆1983年,亲手将NCP协议淘汰,取而代之的是我,成了火遍大江南北的网络红人之一。现如今,我感受到前所未有的恐惧,因为我一生的敌…

批处理中的IF详解

在CMD使用IF /?打开IF的系统帮助会发现IF有3种基本的用法! 第一种用法:IF [NOT] ERRORLEVEL number command 这种用法现在很少用了,因为它需要使用到CHOICE命令,这个命令现在被set /p代替了,它是判断CHOICE命令选择的选项的&…

fullcalendar 显示的时间间隔只有四十五分钟_【体能新视点】——女子篮球运动员比赛期间的心率、血乳酸浓度和时间运动分析...

女子篮球运动员比赛期间的心率、血乳酸浓度和时间-运动分析—摘要—本研究的目的是检验女子篮球运动员在比赛规则改变后的生理需求和运动模式。在九场正式比赛中,对九名大学代表队队员进行了研究。每场比赛都被录像以确定主要动作的频率,连续记录心率&am…

《JavaScript机器人编程指南》——1.2 NodeBot是什么,基本词汇还有哪些

本节书摘来异步社区《JavaScript机器人编程指南》一书中的第1章,第1.2节,作者:【美】Kassandra Perch(珀芝),更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.2 NodeBot是什么,基本词…

解决在Python中使用Win32api报错的问题,No module named win32api

一、系统环境 操作系统: Win7 64位 Python:3.7.0 二、在使用import win32api时,报错:No module named win32api 网上查到有下面解决办法: 方法1:pip install pypiwin32或pip3 install pypiwin32 或 python -m pip install pypiwin…

《Python游戏编程入门》——1.2 初识Python

本节书摘来自异步社区《Python游戏编程入门》一书中的第1章,第1.2节,作者[美]Jonathan S. Harbour ,李强 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.2 初识Python Python既是一个软件工具包,也是一种…

大数据:Parquet文件存储格式

一、Parquet的组成 Parquet仅仅是一种存储格式,它是语言、平台无关的,并且不需要和任何一种数据处理框架绑定,目前能够和Parquet适配的组件包括下面这些,可以看出基本上通常使用的查询引擎和计算框架都已适配,并且可以…

“数据门”事件频发 如何避免人为因素导致数据泄露?

前段时间,某酒店集团数据泄露引起轩然大波,泄露的数据中包含了用户姓名、手机号、邮箱、号等多项信息。卖家对这个约5亿条数据打包出售价格为8比特币或520门罗币。而关于此次信息泄露事件的原因,目前尚未定论。据悉,由于集团某程序…

lamda获取参数集合去空_JAVA集合框架知识

1. Vector用法和ArrayList区别(1) Vector的特有方法有哪些?void addElement(E obj) 将指定的组件添加到此向量的末尾,将其大小增加1。(2) Vector与ArrayList的区别是什么?①Vector的add()方法是同步方法,ArrayList的add()方法是非…

Blazor学习之旅(2)第一个Blazor应用

【Blazor】| 总结/Edison Zhou大家好,我是Edison。最近在学习Blazor做全栈开发,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。本篇我们来构建第一个Blazor Web应用,…

HTTP与服务器的四种交互方式

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而H…

ubuntu 以太网已连接但是无法联网_工业以太网有多“牛X”?两个案例告诉你

现代生活中,工业以太网发挥的作用愈来愈重要。为增进大家对工业以太网的认识,本文将基于3方面介绍工业以太网:何为工业以太网物理层?工业以太网具有哪些优势?工业以太网两大方案介绍。如果你对工业以太网具有兴趣&…

http服务详解(1)——一次完整的http服务请求处理过程

前言:要熟练掌握一个服务,首先需要非常了解这个服务的工作过程,这篇就详细解释了http服务的请求处理过程。 一次完整的http请求处理过程 (1)流程图 (2)过程详解 0、DNS域名解析:递归…

线程管理(九)使用本地线程变量

声明:本文是《 Java 7 Concurrency Cookbook 》的第一章, 作者: Javier Fernndez Gonzlez 译者:郑玉婷 校对:方腾飞 使用本地线程变量 并发应用的一个关键地方就是共享数据。这个对那些扩展Thread类或者实现Runnable接…

5训练需要更改参数吗_糖尿病病人需要多喝水吗?多喝水的5大好处,了解一下...

糖尿病是典型的慢性疾病,需要在生活中多加讲究,从各方面进行预防,其中喝水也是非常重要的一项调控方法。这就与糖尿病影响到患者的代谢功能有一定的关系,如果能够保持良好的饮水习惯,就可以有效解决糖尿病带来的影响。…

wordpress搭建博客 主题推荐 2019

一、generatepress2.14 主页: 详情页: 二、 Astra 主页: 详情页: 三、Bstone 主页: 详情页: 四、Hestia 主页: 详情页: 五、Rife free 主页: 详情页:

Blazor学习之旅(1)初步了解Blazor

【Blazor】| 总结/Edison Zhou九月以来在学习Blazor做全栈开发,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。作为第一篇,我们先来了解一下这个Blazor到底是个什么鬼。什么是Bl…

C#合并文件夹图片列表 自定义排版顺序

本次程序编写主要为了将pdf word等文档转换为图片后设置不同的打印排版 前提 目标文件夹中的图片高宽都是一致的 /// <summary>/// 合并图片/// </summary>/// <param name"savedictory">文件保存目录</param>/// <param name"singl…

数据库分库分表、读写分离的原理和实现,以及使用场景

2019独角兽企业重金招聘Python工程师标准>>> 为什么要分库分表和读写分离&#xff1f; 类似淘宝网这样的网站&#xff0c;海量数据的存储和访问成为了系统设计的瓶颈问题&#xff0c;日益增长的业务数据&#xff0c;无疑对数据库造成了相当大的负载&#xff0c;同时…

谈谈一些有趣的CSS题目(十六)-- 奇妙的 background-clip: text

开本系列&#xff0c;谈谈一些有趣的 CSS 题目&#xff0c;题目类型天马行空&#xff0c;想到什么说什么&#xff0c;不仅为了拓宽一下解决问题的思路&#xff0c;更涉及一些容易忽视的 CSS 细节。 解题不考虑兼容性&#xff0c;题目天马行空&#xff0c;想到什么说什么&#x…