分销网站有哪些,智能行业网站模板,wordpress 图片分类,大数据营销平台有哪些系列文章目录
系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA#xff08;一#xff09;【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估#xff08;二#xff09;【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…系列文章目录
系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA一【系统架构设计师】 系统架构设计高级技能 · 系统质量属性与架构评估二【系统架构设计师】 系统架构设计高级技能 · 软件可靠性分析与设计三【系统架构设计师】
现在的一切都是为将来的梦想编织翅膀让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 系统架构设计 · 基础一【系统架构设计师】 系列文章目录一、软件架构的概念★★★1.1 软件架构的定义1.2 软件架构设计4 1视图1.3 软件架构设计与生命周期1.4 软件架构的重要性 二、软件架构的风格★★★★★2.1 软件架构经典五大风格2.1.1 数据流体系结构风格2.1.1.1 批处理风格2.1.1.2 管道/过滤器风格 2.1.2 调用/返回系结构风格2.1.2.1 主程序/子程序风格2.1.2.2 面向对象风格2.1.2.3 层次结构风格 2.1.3 以数据为中心系结构风格2.1.3.1 仓库结构风格2.1.3.2 黑板结构风格2.1.3.3 超文本系统风格 2.1.4 虚拟机体系结构风格2.1.4.1 解释器风格2.1.4.2 规则系统风格 2.1.5 独立构件体系结构风格2.1.5.1 进程间通信风格2.1.5.2 事件驱动系统风格隐式调用 2.2 C2风格2.3 闭环风格 三、基于架构的软件开发方法ABSD★★★★3.1 体系机构设计的方法概述3.2 基于架构的开发模型ABSD 四、特定领域的软件架构DSSA★★★4.1 特定领域的软件架构 - 基本活动4.2 特定领域的软件架构 - 领域分析机制4.3 特定领域的软件架构 - 建立过程 五、软件架构的复用★★★ 一、软件架构的概念★★★
1.1 软件架构的定义
软件架构概念
软件架构Software Architecture 软件体系结构 指系统的一个或者多个结构结构包括 1结构 - 软件的构件可能是程序的模块、类、或者中间件 2属性 - 构件的外部可见属性 3交互作用 - 构件之间的相互关系
软件架构的本质
软件架构为软件系统提供了一个 结构、行为和属性的高级抽象。 软件架构风格是特定应用领域的 惯用模式架构定义 一个词汇表和一组约束。
软件架构的作用
软件架构是 项目干系人进行交流的手段。 软件架构是 可传递和可复用的模型通过研究软件架构可能预测软件的质量。 软件架构使推理和控制的更改更加简单 有助于循序渐进的原型设计可以作为培训的基础。
需求分析 → 架构弥补需求到设计的鸿沟→ 软件设计 架构设计就是需求分配既 将满足的需求的职责分配到组件上。
软件架构设计通过多种视图全面描述 - 4 1 视图。
1.2 软件架构设计4 1视图
视角与视图 从不同的视角来检查所以会有不同的视图。
图1_1 软件架构4 1视图 Kruchten在1995年提出了一个“41”的视图模型。“41”视图模型从5个不同的视角包括逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件架构。每一个视图只关心系统的一个侧面5个视图结合在一起才能反映系统的软件架构的全部内容。
逻辑视图主要支持系统的功能需求即系统提供给最终用户的服务。逻辑视图设计中要注意的主要问题是要保持一个单一的、内聚的对象模型贯穿整个系统且描述对象模型和对象之间的关系。
开发视图也称为模块视图主要侧重于软件模块的组织和管理。开发视图通过系统输入输出关系的模型图和子系统图来描述。可以在确定了软件包含的所有元素之后描述完整的开发角度也可以在确定每个元素之前列出开发视图原则。
进程视图也称为过程视图。侧重于系统的运行特性主要关注一些非功能性的需求例如系统的性能和可用性。进程视图强调并发性、分布性、系统集成性和容错能力以及逻辑视图中的主要抽象的进程结构。进程视图可以描述成多层抽象每个级别分别关注不同的方面。
物理视图主要考虑如何把软件映射到硬件上它通常要考虑到解决系统拓扑结构、系统安装、通信等问题。
场景可以看作是那些重要系统活动的抽象它使四个视图有机地联系起来从某种意义上说场景是最重要的需求抽象。在开发架构时它可以帮助设计者找到架构的构件和它们之间的作用关系。同时也可以用场景来分析一个特定的视图或描述不同视图构件间是如何相互作用的。场景可以用文本表示也可以用图形表示。
逻辑视图和开发视图描述系统的静态结构而进程视图和物理视图描述系统的动态结构。对于不同的软件系统来说侧重的角度也有所不同。例如对于管理信息系统来说比较侧重于从逻辑视图和开发视图来描述系统而对于实时控制系统来说则比较注重于从进程视图和物理视图来描述系统。
1.3 软件架构设计与生命周期
软件架构是贯穿整个生命周期的不同阶段的作用和意义不同各阶段架构工作表现表
阶段作用和意义需求分析阶段有利于各阶段参与者的交流也易于维护各阶段的可追踪性。 软件需求模型向软件架构模型转换关注两个问题 1如何根据需求模型构建软件架构模型2如何保证模型转换的可追踪性设计阶段关注最早和最多的阶段。这一阶段的研究主要包括 1软件架构模型的描述2软件架构模型的设计与分析方法3软件架构设计经验的总结与复用架构模型的描述研究包括①组成SA软件架构模型 - 构件和连接的建模②架构描述语言Architecture Describe LanguageADL③多视图 - 4 1视图ADL三个基本元素1构件计算或数据存储单元包括构件和相应的构件接口 2连接件用于构件之间交互建模的体系结构构造块及其支配这些交互的规则3架构配置描述体系结构的构件和连接件的连接图ADL是建模用的是一些伪代码实现阶段有效实现从软件架构设计向实现的转换。这一阶段架构研究包括1基于架构开发过程的支持2寻求从架构向实现过渡的途径3研究基于架构的测试技术构件组装阶段可复用构件组装的设计能够提高系统实现的效率。这一阶段的研究内容包括1如何支持可复用构件的互联即对架构设计模型中规约的连接子的实现提供支持2组装过程中如何检测并消除架构失配问题适配问题主要包括①构件本身适配②连接子互联机制的失配③部分和整体的失配部署阶段组织和展示部署阶段的软硬件架构、评估分析部署方案。部署阶段的软件架构对软件部署的作用1提供高层的体系结构视图描述部署阶段的软硬件模型2基于软件架构模型可以分析部署方案的质量属性从而选择合理的部署方案后开发阶段 主要围绕维护、演化、复用进行。部署安装后后开发阶段的系统架构研究方向包括1动态软件体系结构2体系结构恢复与重建
1.4 软件架构的重要性
软件架构设计是降低成本、改进质量、按时和按需交付产品的关键因素。
二、软件架构的风格★★★★★
架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。架构风格反映了领域中众多系统所共有的结构和语义特性并指导如何将各个构件有效地组织成一个完整的系统。软件架构风格是特定应用领域的惯用模式架构定义一个词汇表和一组约束。
2.1 软件架构经典五大风格
五大架构风格子风格数据流风格批处理、管道-过滤器调用/返回风格程序/子程序、面向对象、层次结构以数据为中心风格数据库系统、黑板系统、超文本系统虚拟机风格解释器、规则系统独立构件风格进程通信、事件驱动系统隐式调用
2.1.1 数据流体系结构风格 图2_1 数据流风格 优点缺点典型实例1、松耦合【高内聚-低耦合】2、良好的重用性/可维护性 3、可扩展性【标准接口适配】4、良好的隐蔽性 5、支持并行1、交互性较差 2、复杂性高3、性能较差每个过滤器都需要解析与合成数据 传统编译器网络报文处理
2.1.1.1 批处理风格
批处理风格的每一步处理都是独立的并且每一步是顺序执行的。数据必须是完整的以整体的方式传递。
2.1.1.2 管道/过滤器风格
在管道/过滤器风格的软件架构中每个构件都有一组输入和输出构件读输入的数据流经过内部处理然后产生输出数据流。
2.1.2 调用/返回系结构风格 图2_2 调用/返回风格 2.1.2.1 主程序/子程序风格
主程序/子程序风格是结构化开发时期的经典架构风格。这种风格一般采用单线程控制把问题划分为若干处理步骤构件即为主程序和子程序。子程序通常可合成为模块。过程调用作为交互机制即充当连接件。
2.1.2.2 面向对象风格
这种风格的构件是对象或者说是抽象数据类型的实例。对象是一种被称作管理者的构件它负责保持资源的完整性。对象是通过函数和过程的调用来交互的。
2.1.2.3 层次结构风格
层次系统组织成一个层次结构每一层为上层服务并作为下层客户。在一些层次系统中除了一些精心挑选的输出函数外内部的层只对相邻的层可见
2.1.3 以数据为中心系结构风格 图2_3 以数据为中心系结构风格 2.1.3.1 仓库结构风格
数据库系统是仓库风格最常见的形式。在数据库系统中构件主要有两大类一类是中央共享数据源保存当前系统的数据状态另一类是多个独立处理单元处理单元对数据元素进行操作。
2.1.3.2 黑板结构风格
黑板系统包括知识源、黑板和控制三个部分。知识源包括若干独立计算的不同单元提供解决问题的知识。知识源响应黑板的变化也只修改黑板黑板是一个全局数据库包含问题域解空间的全部状态是知识源相互作用的唯一媒介知识源响应是通过黑板状态的变化来控制的。黑板系统通常应用在对于解决问题没有确定性算法的软件中例如信号处理、问题规划和编译器优化等。语音识别、知识推理。
2.1.3.3 超文本系统风格
超文本系统中出现的构件以网状链接方式相互连接用户可以在构件之间进行按照人类的联想思维方式任意跳转到相关构件。超文本是一种非线性的网状信息组织方法它以结点为基本单位链作为结点之间的联想式关联。超文本系统通常应用在互联网领域。
2.1.4 虚拟机体系结构风格 图2_4 虚拟机体系结构风格 2.1.4.1 解释器风格
解释器通常包括一个完成解释工作的解释引擎、一个包含将被解释的代码的存储区、一个记录解释引擎当前工作状态的数据结构以及一个记录源代码被解释执行的进度的数据结构。具有解释器风格的软件中含有一个虚拟机可以仿真硬件的执行过程和一些关键应用其缺点是执行效率比较低。
2.1.4.2 规则系统风格
基于规则的系统包括规则集、规则解释器、规则/数据选择器和工作内存一般用在人工智能领域和DSS中。
2.1.5 独立构件体系结构风格 图2_5 独立构件体系结构风格 2.1.5.1 进程间通信风格
构件是独立的过程连接件是消息传递构件通常是命名过程消息传递的方式可以是点对点异步或者同步的方式以及远程过程方法调用等。
2.1.5.2 事件驱动系统风格隐式调用
构件不直接调用一个过程而是触发或广播一个或多个事件。这种风格中的构件是匿名的过程它们之间交互的连接件往往是以过程之间的隐式调用implicit invocation来实现的。基于事件的隐式调用风格的主要优点是为软件复用提供了强大的支持为构件的维护和演化带来了方便其缺点是构件放弃了对系统计算的控制。
2.2 C2风格
C2风格通过连接件连接构件或某个构件组构件与构件之间无连接。
软件体系结构设计的一个核心问题就是能否使用重复的体系结构模式即能否达到体系结构级的软件重用。
C2 EBI基于事件的集成 LCS分层客户端服务器
C2是一种基于构件和消息的架构风格可用于创建灵活的可伸缩的软件系统。可以将架构看作是按照一定规则由连接件如消息路由设备连接的许多构件组成的层次网络系统中的构件和连接件都有一个“顶部”和“底部”;一个构件的“顶部”或“底部”可以连接到一个连接件的“底部”或“顶部”;对于一个连接件和其相连的构件或连接件的数量没有限制但是构件和构件之间不能直接相连。
图2_6 C2体系结构风格 C2架构的基本规则
构件和连接件都有一个顶部和一个底部。构件的顶部要连接到连接件的底部构件的底部要连接到连接件的顶部构件之间不允许直连。一个连接件可以和任意数目的其他构件和连接件连接。当两个连接件进行直接连接时必须由其中一个的底部到另一个的顶部。
2.3 闭环风格 图2_7 闭环控制体系结构风格 适用于嵌入式系统用于解决简单闭环控制问题。经典应用空调温控定速巡航。
三、基于架构的软件开发方法ABSD★★★★
3.1 体系机构设计的方法概述
基于架构的软件设计ABSDArchitecture-Based Software Design是一种架构驱动方法架构驱动也就是说架构先行需求获取和分析还没有完成就开始架构设计需求获取和分析与架构设计并行例如产品线系统和长期运行的系统我们不可能开始就能决定所有的需求。
ABSD强调由业务、质量和功能需求的组合驱动架构设计 强调采用 视角和视图 来 描述软件架构 采用 用例功能需求和质量场景质量需求 来 描述需求 。
ABSD方法有三个基础
第一个基础是功能的分解。在功能分解中ABSD方法使用已有的基于模块的内聚和耦合技术。第二个基础是通过选择架构风格来实现质量和业务需求。第三个基础是软件模板的使用。
3.2 基于架构的开发模型ABSD
传统的软件开发过程是问题定义需求分析软件设计实现测试。ABSD把整个软件过程分成六个部分架构需求设计文档化复审实现演化六个步骤。
图3_1 基于架构软件的开发过程 图3_2 基于架构软件的需求、设计、实现、演化过程 四、特定领域的软件架构DSSA★★★
DSSADomain Specific Software Architecture特定领域软件架构可以看做开发产品线的一个方法或理论目标就是支持一个特定领域中多应用的生成。
4.1 特定领域的软件架构 - 基本活动 图4_1 基本活动 1建立领域模型一个严格定义的问题域或解决域。其中垂直域是在相同领域中深入水平域是在不同领域中平移。 2具有普遍性使其可以用于领域中某个特定应用的开发。 3对整个领域的合适程序的抽象。 4具备该领域固定的、典型的在开发过程中的。可复用元素。
4.2 特定领域的软件架构 - 领域分析机制 图4_2 领域分析机制 4.3 特定领域的软件架构 - 建立过程 图4_3 建立过程 五、软件架构的复用★★★ 软件架构复用的定义及分类 软件架构复用是系统化的软件开发过程开发一组基本的软件构件模块以覆盖不同的需求/体系结构之间的相似性提高系统开发的效率、质量和性能。 软件架构复用的原因 减少开发工作、减少开发时间、降低开发成本、提高生产力、提高产品质量更好的互操作性。 软件架构复用的对象及形式 可复用的资产包括需求、架构设计、元素、建模分析、测试、项目规划、过程方法工具、人员、样本系统、缺陷消除。 一般形式的复用包括函数的复用、库的复用、面向对象开发中的类、接口和包的复用。 软件架构复用的基本过程 1 首先构建/获取可复用的软件资产复用前提 2 管理可复用资产 3 使用可复用资产。