架构师备考-架构基本概念

news2024/11/7 12:00:56

目录

基本概念

架构设计与生命周期

需求分析

设计阶段

实现阶段

构件组装阶段

部署阶段

后开发阶段

动态软件体系结构

体系结构恢复与重建

软件架构设计的重要性


基本概念

        软件架构(Software Architecture)设计主要关注软件构件的结构、属性和交互作用,并通过多种视图全面描述特定系统的架构。

        软件架构设计是指通过一系列的设计活动,获得满足系统功能性需求,符合一定非功能性需求与质量属性有相似含义的软件系统框架模型。在软件体系结构设计过程中,主要考虑系统的非功能性需求。软件体系结构设计经验的总结与重用是软件工程的重要目标之一,所采用的手段主要包括体系结构风格、(特定领域的架构)DSSA 等技术。

  • 软件体系结构的设计通常考虑到设计金字塔的两个层次-数据设计和体系结构设计
    • 数据设计:体现传统系统中体系结构的数据构件和面向对象系统中类的定义(封装了属性和操作)
    • 体系结构设计:主要关注软件构件的结构、属性和交互作用。

架构设计与生命周期

        架构设计的生命周期包括:需求分析、设计阶段、实现阶段、构件组装阶段、部署阶段、后开发阶段。

需求分析

        需求分析阶段的SA 研究还处于起步阶段。在本质上,需求分析和SA 设计所面临的是不同的对象:一个是问题空间;另一个是解空间。保持两者的可追踪性和可转换性,一直是软件工程领域追求的目标。从软件需求模型向SA 模型的转换主要关注两个问题。

  • 如何根据需求模型构建SA 模型
  • 如何保证模型转换的可追踪性

        针对这两个问题的解决方案,因所采用的需求模型的不同而异。在采用 Use Case 图描述需求的方法中,从Use Case 图向 SA 模型(包括类图等)的转换一般经过词法分析和一些经验规则来完成,而可追踪性则可通过表格或者 Use Case Map 等来维护。

        从软件复用的角度看,SA 影响需求工程也有其自然性和必然性,已有系统的SA 模型对新系统的需求工程能够起到很好的借鉴作用。在需求分析阶段研究SA,有助于将SA 的概念贯穿于整个软件生命周期,从而保证了软件开发过程的概念完整性,有利于各个阶段参与者的交流,也易于维护各阶段的可追踪性。

设计阶段

        设计阶段是SA 研究关注的最早和最多的阶段,这一阶段的SA 研究主要包括:SA模型的描述、SA模型的设计与分析方法,以及对SA 设计经验的总结与复用等。

        有关SA 模型描述的研究分为3个层次:SA 的基本概念、体系结构描述语言(ADL)、SA 模型的多视图表示。

  • SA 的基本概念,即SA 模型由哪些元素组成,这些组成元素之间按照何种原则组织。传统的设计概念只包括构件(软件系统中相对独立的有机组成部分,最初称为模块)以及一些基本的模块互联机制。随着研究的深入,构件间的互联机制逐渐独立出来,成为与构件同等级别的实体,称为连接子。现阶段的SA 描述方法是构件和连接子的建模。近年来,也有学者认为应当把Aspesct 等引入SA 模型。
  • 体系结构描述语言(Architecture Description Language,ADL),支持构件、连接子及其配置的描述语言就是如今所说的体系结构描述语言。ADL 对连接子的重视成为区分ADL 和其他建模语言的重要特征之一。典型的ADL 包括 UniCon、Rapide、Darwin、Wright、C2 SADL、Acme、xADL、XYZ/ADL 和 ABC/ADL 等。
  • SA 模型的多视图表示,从不同的视角描述特定系统的体系结构,从而得到多个视图,并将这些视图组织起来用以描述整体的SA 模型。多视图作为一种描述SA 的重要途经,也是近年来SA 研究领域的重要方向之一。系统的每一个不同侧面的视图反映了一组系统相关人员所关注的系统的某一特定方面,多视图体现了关注点分离的思想。

        把体系结构描述语言和多视图结合起来描述系统的体系结构,使系统更易于理解,方便系统相关人员之间进行交流,并且有利于系统的一致性检测以及系统质量属性的评估。学术界已经提出若干多视图的方案,典型的包括:

  • 4+1 模型(逻辑视图、进程视图、开发视图、物理视图、加上统一的场景)。
  • Hofmesiter 的4视图模型(概念视图、模块视图、执行视图和代码视图)
  • CMU-SEI 的 View and Beyond 模型 (模块视图、构件和连接子视图、分配视图)

        此外工业界也提出了若干多视图描述SA 模型的标准,如IEEE 标准 1471-2000(软件密集型系统体系结构描述推荐实践)、开放分布式处理参考模型(RM-ODP)、统一建模语言(UML)以及IBM 公司推出的 Zachman 框架等。需要说明的是,现阶段的ADL 大多没有显式地支持多视图,并且上述多视图不一定只是描述设计阶段的模型。

实现阶段

        最初的SA 研究往往只关注较高层次的系统设计、描述和验证。为了有效实现从SA 设计向实现的转换,实现阶段的体系结构研究表现在以下几个方面。

  • 研究基于SA 的开发过程支持,如项目组织结构、配置管理等。
  • 寻求从 SA 向实现过渡的途径,如将程序设计语言元素引入SA 阶段、模型映射、构件组装、复用中间件平台等。
  • 研究基于 SA 的测试技术

        SA 提供了待生成系统的蓝图,根据该蓝图较好地实现系统需要的开发组织结构和过程管理技术。以体系为中心的软件项目管理方法,开发团队的组织结构应该和体系结构模型有一定的对应关系,从而提高软件开发的效率和质量。

        对于大型软件系统而言,由于参与实现的人员较多,所以需要提供适当的配置管理手段。SA 引入能够有效扩充现有配置管理的能力,通过在SA 描述中引入版本、可选择项等信息,可以分析和记录不同版本构件和连接子之间的演化,从而可用来组织配置管理的相关活动。典型的例子包括支持给构件指定多种实现的UniCon、支持给构件和连接子定义版本信息和可选信息的XADL 等。

        为了填补高层SA 模型和底层实现之间的鸿沟,可通过封装底层的实现细节、模型转换、精化等手段缩小概念之间的差距。典型的方法如下:

  • 在SA 模型中引入实现阶段的概念,如引入程序设计语言元素等。
  • 通过模型转换技术,将高层的SA 模型逐步精化成能够支持实现的模型。
  • 封装底层的实现细节,使之成为较大粒度构件,在SA 指导下通过构建组装的方式实现系统,这往往需要底层中间件平台的支持。

构件组装阶段

        在SA 设计模型的指导下,可复用构件的组装可以在较高层次上实现系统,并能够提高系统实现的效率。在构件组装的过程中,SA 设计模型起到了系统蓝图的作用。研究内容包括如下两个方面。

  • 如何支持可复用构件的互联,即对SA 设计模型中规约的连接子的实现提供支持。
  • 在组装过程中,如何检测并消除体系结构失配问题。
  • 对设计阶段连接子的支持:不少 ADL 支持在实现阶段将连接子转换为具体的程序代码或系统实现,如 UniCon 定义了 Pipe ,FileIO,ProcedureCall 等多种内建的连接子类型,它们在设计阶段被实例化,并可以在实现阶段中在工具的支持下转化为具体的实现机制,如过程调用、操作系统数据访问、Unix 管道和文件、远程过程调用等。支持从SA 模型生成代码的体系结构描述语言,从C2 SADL 、Rapide 等,也都提供了一定的机制以生成连接子的代码。

        中间件遵循特定的构建标准,为构件互联提供支持,并提供相应的公共服务,如安全服务、命名服务等。中间件支持的连接子实现有如下优势。

  • 中间件提供了构件之间跨平台交互的能力,且遵循特定的工业标准,如CORBA 、J2EE、COM 等,可以有效地保证构件之间的通信完整性。
  • 产品化的中间件可以提供强大的公共服务能力这样能够更好地保证最终系统的质量属性。设计阶段连接子的规约可以用于中间件的选择,如消息通信连接子最好选择提供消息通信机制的中间件平台。从某种意义上说,随着中间件技术的发展,也导致一类新的SA 风格,即中间件导向的体系结构风格的出现。
  • 检测并消除体系结构失配:体系结构失配问题由David Garlan 等人在 1995 年提出。失配是指在软件复用的过程中,由于待复用构建对最终系统的体系结构和环境的假设与实际状况不同而导致的冲突。
  • 在构建组装阶段的失配问题主要包括三个方面:由构件引起的失配、由连接子引起的失配、由于系统成分对全局体系结构的假设存在冲突引起的失配。
  • 由构件引起的失配,包括由于系统对构建基础设置、构建控制模型和构件数据模型的假设存在冲突引起的失配。
  • 由连接子引起的失配。包括由于系统对构件交互协议、连接子数据模型的假设存在冲突引起的失配。
  • 由于系统成分对全局体系结构的假设存在冲突引起的失配等。
  • 要解决失配问题,首选需要能够检测出失配问题,并在此基础上通过适当的手段消除检测出的失配问题。

部署阶段

        随着网络与分布式软件的发展,软件部署逐渐从软件开发过程中独立出来,成为软件生命周期中一个独立的阶段。为了使分布式软件满足一定的质量属性要求,如性能,可靠性等,部署需要考虑多方面的信息,如待部署软件构件的互联性、硬件的拓扑结构、硬件资源占用(如CPU,内存)等。SA 对软件部署作用如下。

  • 提供高层的体系结构视图来描述部署阶段的软硬件模型。
  • 基于SA 模型可以分析部署方案的质量属性,从而选择合理的部署方案。

        现阶段,基于SA 的软件部署研究更多的集中在组织和展示部署阶段的SA、评估分析部署方案等方面,部署方案的分析往往停留在定性的层面,并需要部署人员的参与。

后开发阶段

        后开发阶段是指软件部署安装之后的阶段。这一阶段的SA 研究主要围绕维护、演化、复用等方面来进行。典型的研究方向包括动态软件体系结构、体系结构恢复与重建等。

动态软件体系结构

        传统的SA 研究设想体系结构总是静态的,即软件的体系结构一旦建立,就不会在运行时刻发生变动。但人们在实践中发现,现实中的软件往往具有动态性,即它们的体系结构会在运行时发生改变。SA 在运行时发生的变化包括两类:一类是软件内部执行所导致的体系结构改变。比如,很多服务器端软件会在客户请求到达时创建新的构建来响应用户的请求。某个自适应的软件系统可能根据不同的配置状况采用不同的连接子来传送数据。另一类变化是软件系统外部的请求对软件进行的重配置。比如,有很多高安全性的软件系统,这些系统在升级或进行其他修改时不能停机。因为修改是在运行时刻进行的,体系结构也就动态的发生了变化。在高安全性系统之外也有很多软件需要进行动态修改,比如很多操作系统期望能够在升级时无须重新启动系统,在运行过程中就完成对体系结构的修改。

        由于软件系统会在运行时刻发生动态变化,这就给体系结构的研究提供了很多新的问题。如何在设计阶段捕获体系结构的这种动态性,并进一步指导软件系统在运行时刻实施这些变化,从而实现系统在线演化或自适应甚至自主计算,是动态体系结构所要研究的内容。现阶段,动态软件体系结构研究可分为以下两个部分。

  1. 体系结构设计阶段的支持:主要包括变化的描述、如何根据变化生成修改策略、描述修改过程、在高抽象层次保证修改的可行性以及分析、推理修改所带来的影响等。
  2. 运行时刻基础设施的支持:主要包括系统体系结构的维护、保证体系结构修改在约束范围内、提供系统的运行时刻信息、分析修改后的体系结构符合指定的属性、正确映射体系结构构造元素的变化到实现模块、保证系统的重要子系统的连续执行并保持状态、分析和测试运行系统等。
体系结构恢复与重建

        当前系统的开发很少是从头开始的,大量的软件开发任务是基于已有的遗产系统进行升级、增强或移植。这些系统在开发的时候没有考虑SA,在将这些系统进行构件化包装、复用的时候,会得不到体系结构的支持。因此,从这些系统中恢复或重构体系结构是有意义的,也是必要的。

        SA 重建是指从以实现的系统中获取体系结构的过程。一般地,SA 重建的输出是一组体系结构视图。

        现有的体系结构重建方法可以分为4类:手工体系结构重建、工具支持的手工重建、通过查询语言来自动建立聚集、使用其他技术如数据挖掘等。        

  • 手工体系结构重建
  • 工具支持的手工重建。通过工具对手工重建提供辅助支持,包括获得基本体系结构单元、提供图形界面允许用户操作SA 模型、支持分析SA 模型等。如KLOCwork inSight 工具使用代码分析算法直接从源代码获得SA 构件视图,用户可以通过操作图形化的SA 来设定体系结构规则,并可在工具的支持下实现对体系结构的理解、自动控制和管理。
  • 通过查询语言来自动建立聚集。这类方法适用于较大规模的系统,基本思路是:在逆向工程工具的支持下分析程序源代码,然后将得到的体系结构信息存入数据库,并通过适当的查询语言得到有效的体系结构显示。
  • 使用其他技术,比如数据挖掘等。

软件架构设计的重要性

  1. 架构设计能够满足系统的品质
  2. 架构设计使受益人达成一致的目标
  3. 架构设计能够支持计划编程过程
  4. 架构设计对系统开发的指导性
  5. 架构设计能够有效管理复杂性
  6. 架构设计能够为复用奠定基础
  7. 架构设计能够降低维护费用
  8. 架构设计能够支持冲突分析

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

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

相关文章

【JAVA毕业设计】基于Vue和SpringBoot的墙绘产品展示交易平台

本文项目编号 T 049 ,文末自助获取源码 \color{red}{T049,文末自助获取源码} T049,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

在全域数据整合过程中,如何确保数据的一致性和准确性

在全域数据整合过程中,确保数据的一致性和准确性是至关重要的,这不仅关系到数据分析结果的可靠性,还直接影响到企业决策的科学性和有效性。Aloudata AIR 逻辑数据编织平台通过数据虚拟化技术,为这一过程提供了强有力的支持。以下是…

w024基于SpringBoot的企业客户管理系统的设计与实现

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文件&#xff0…

element-plus快速实现table组件表头吸顶和滚动条吸底

使用devecoui 组件快速实现 element-plus table 组件,表头吸顶和滚动条吸底,且完美实现固定表头的吸顶效果,同时devecoui组件还可以实现,查询列表的快速开发,里面集成了更多的功能。详细功能请前往:添加链接…

C++STL容器详解——list

目录 一.list 1.list的介绍 2.为什么会有list? 二.list的常见接口 1.list的构造函数 2.list的遍历 3.迭代器类型 4.list的头插头删和尾插尾删 5.list任意位置的插入和删除 6.list的sort()及reverse() 7.迭代器失效 三.整体代码 一.list 1.list的介绍 list的文档说…

服务器数据恢复—EVA存储故障导致上层应用不可用的数据恢复案例

服务器存储数据恢复环境: 一台EVA某型号控制器EVA扩展柜FC磁盘。 服务器存储故障&检测: 磁盘故障导致该EVA存储中LUN不可用,导致上层应用无法正常使用。 服务器存储数据恢复过程: 1、将所有磁盘做好标记后从扩展柜中取出。硬…

hf_transformers

强者自定义,弱者用默认,傻逼不看说明书 1. 2.在 model.generate()里填参数,默认为20个新token generated_ids model.generate(**model_inputs, max_new_tokens50) 3. 默认情况下,除非在GenerationConfig文件中指定&#xff0…

Sigrity Power SI 3D-EM Inductance Extraction模式如何进行电感的提取操作指导(一)

Sigrity Power SI 3D-EM Inductance Extraction模式如何进行电感的提取操作指导(一) Sigrity Power SI使用3D-EM Inductance Extraction模式可以进行电感的提取,以下图为例 2D 视图 <

学习记录:js算法(八十七):单词搜索

文章目录 单词搜索思路一思路二 单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其…

应急救援无人车:用科技守护安全!

一、核心功能 快速进入危险区域&#xff1a; 救援无人车能够迅速进入地震、火灾、洪水等自然灾害或重大事故的现场&#xff0c;这些区域往往对人类救援人员构成极大威胁。 通过自主导航和环境感知技术&#xff0c;无人车能够避开危险区域&#xff0c;确保自身安全的同时&…

辩论赛——动态IP与静态IP的巅峰对决

尊敬的各位观众&#xff1a; 大家好&#xff01;欢迎来到今天的演说舞台&#xff0c;我是主持人小蝌蚪。今天&#xff0c;我们将见证一场精彩绝伦的辩论&#xff0c;辩论的双方是动态IP和静态IP。他们将围绕各自的优缺点展开激烈的辩论&#xff0c;为我们揭示代理IP世界中的奥…

红米k70怎么设置「短信通知」在锁屏时隐藏内容,不锁屏时不隐藏内容

红米 K70 设置短信通知在锁屏时隐藏内容、不锁屏时不隐藏内容&#xff0c;可以按照以下步骤进行操作&#xff1a; 打开手机设置&#xff1a;在主屏幕上找到并点击 “设置” 图标&#xff0c;进入手机设置页面。进入通知与控制中心&#xff1a;在设置页面中&#xff0c;找到并点…

【计算机网络】零碎知识点(易忘 / 易错)总结回顾

一、计算机网络的发展背景 1、网络的定义 网络是指将多个计算机或设备通过通信线路、传输协议和网络设备连接起来&#xff0c;形成一个相互通信和共享资源的系统。 2、局域网 LAN 相对于广域网 WAN 而言&#xff0c;局域网 LAN 主要是指在相对较小的范围内的计算机互联网络 …

Python 在PDF中绘制形状(线条、矩形、椭圆形等)

在PDF中绘制图形可以增强文档的视觉效果。通过添加不同类型的形状&#xff0c;如实线、虚线、矩形、圆形等&#xff0c;可以使文档更加生动有趣&#xff0c;提高读者的阅读兴趣。这对于制作报告、演示文稿或是教材特别有用。本文将通过以下几个示例介绍如何使用Python 在PDF中绘…

三菱MR-J4伺服绝对位置检测系统

发生[AL.25 绝对位置丢失]或[AL.E3 绝对位置计数器警告]时&#xff0c;必须再次进行原点设定。否则可能会因此发生预料之外的动作。 概要 常规运行时&#xff0c;编码器由检测1转内位置的编码器和检测转数的旋转累计计数器构成。 绝对位置检测系统与伺服系统控制器电源…

程序员行业会因此受到什么冲击?

床铺再次当选&#xff0c;会对两家关系产生深远影响。在此篇博客中&#xff0c;我们将探讨床铺的政策对我们外贸、就业、留学以及特别是互联网产业和我们程序员职业的潜在影响。 关系趋紧&#xff1a;摩擦可能会更多 床铺在其任期期间对我们施加了诸多贸易税&#xff0c;采取…

Edge浏览器打开PDF无法显示电子签章

Edge浏览器打开PDF无法显示电子签章 直接说处理方式 直接说处理方式 浏览器地址栏&#xff0c;输入 edge://flags/搜索&#xff1a;pdf禁用&#xff1a;New PDF Viewer效果如下

02- 模块化编程-006 ADC0808数码显示对比

1、ADC0808 芯片介绍 ADC0808是一款集成的CMOS设备&#xff0c;包含8位模拟至数字转换器、8通道多路复用器和与微处理器兼容的控制逻辑。8位A/D转换器采用逐次逼近作为转换技术。转换器特点包括高阻抗斩波稳定比较器、256R电压分压器、模拟开关树和逐次逼近寄存器。8通道多路复…

计算机体系结构之多级缓存、缓存miss及缓存hit(二)

前面章节《计算机体系结构之缓存机制原理及其应用&#xff08;一&#xff09;》讲了关于缓存机制的原理及其应用&#xff0c;其中提出了多级缓存、缓存miss以及缓存hit的疑问。故&#xff0c;本章将进行展开讲解&#xff0c; 多级缓存、缓存miss以及缓存hit存在的意义是为了保持…

scala set训练

Set实训内容&#xff1a; 1.创建一个可变Set&#xff0c;用于存储图书馆中的书籍信息&#xff08;假设书籍信息用字符串表示&#xff09;&#xff0c;初始化为包含几本你喜欢的书籍 2.添加两本新的书籍到图书馆集合中&#xff0c;使用操作符 3.删除一本图书馆集合中的书籍&…