【系统架构设计师】系统架构设计基础知识

📅 2026/7/13 16:31:02
【系统架构设计师】系统架构设计基础知识
一、软件架构概念一软件架构的定义软件架构Software Architecture或称软件体系结构是指系统的一个或者多个结构这些结构包括软件的构件可能是程序模块、类或者是中间件、构件的外部可见属性及其之间的相互关系。体系结构的设计包括数据库设计和软件结构设计后者主要关注软件构件的结构、属性和交互作用并通过多种视图全面描述。(1)分析设计在满足所规定的需求方面的有效性(2)在设计变更相对容易的阶段考虑体系结构可能的选择方案(3)降低与软件构造相关联的风险。二软件架构设计与生命周期1.需求分析阶段(1)如何根据需求模型构建S A模型。(2)如何保证模型转换的可追踪性。2.设计阶段(1)SA的基本概念(2)体系结构描述语言 (Architecture Description Language,ADL),是用于描述软件体系架构的语言与其他建模语言最大的区别在于其更关注构件间互联机制连接子典型的ADL语言包括Unicon、Rapide、Darwin、Wright、C2SADL、Acme、XADLOL、XYZ/ADL和ABC/ADL等。(3)SA模型的多视图表示。典型的模型包括41 模型、Hofmesiter 的 4 视图模型、CMU-Sei 的 Views and Beyond 模型。视图标准包括IEEE 的 I471-2000、RM-ODP、UML 以及 IBM 的 Zachman。3.实现阶段(1)研究基于S A 的开发过程支持如项目组织结构、配置管理等。(2)寻求从 S A 向实现过渡的途径如将程序设计语言元素引入S A阶段、模型映射、构件组装、复用中间件平台等。(3)研究基于 S A 的测试技术。填补高层 S A模型和底层实现之间鸿沟的典型方法如下(1)在S A 模型中引入实现阶段的概念如引入程序设计语言元素等。(2)通过模型转换技术将高层的S A模型逐步精化成能够支持实现的模型。(3)封装底层的实现细节使之成为较大粒度构件在S A指导下通过构件组装的方式实现系统这往往需要底层中间件平台的支持。4.构件组装阶段构件组装阶段的失配问题主要包括3个方面。(1)由构件引起的失配包括由于系统对构件基础设施、构件控制模型和构件数据模型的假设存在冲突引起的失配。(2)由连接子引起的失配包括由于系统对构件交互协议、连接子数据模型的假设存在冲突引起的失配。(3)由于系统成分对全局体系结构的假设存在冲突引起的失配等。要解决失配问题首先需要能够检测出失配问题并在此基础上通过适当的手段消除检测出的失配问题。5.部署阶段S A 对软件部署作用如下。(1)提供高层的体系结构视图来描述部署阶段的软硬件模型。(2)基于 S A模型可以分析部署方案的质量属性从而选择合理的部署方案。6.后开发阶段后开发阶段是指软件部署安装之后的阶段。1)动态软件体系结构S A在运行时发生的变化包括两类一类是软件内部执行所导致的体系结构改变。另一类变化是软件系统外部的请求对软件进行的重配置。动态软件体系结构研究可分为以下两个部分。(1)体系结构设计阶段的支持主要包括变化的描述、如何根据变化生成修改策略、描述修改过程、在高抽象层次保证修改的可行性以及分析、推理修改所带来的影响等。(2)运行时刻基础设施的支持主要包括系统体系结构的维护、保证体系结构修改在约束范围内、提供系统的运行时刻信息、分析修改后的体系结构符合指定的属性、正确映射体系结构构造元素的变化到实现模块、保证系统的重要子系统的连续执行并保持状态、分析和测试运行系统等。2)体系结构恢复与重建体系结构重建方法可以分为4类。(1)手工体系结构重建。(2)工具支持的手工重建。(3)通过查询语言来自动建立聚集。(4)使用其他技术比如数据挖掘等。三软件架构的重要性软件架构设计是降低成本、改进质量、按时和按需交付产品的关键因素。1.架构设计能够满足系统的品质2.架构设计使受益人达成一致的目标3.架构设计能够支持计划编制过程4.架构设计对系统开发的指导性5.架构设计能够有效地管理复杂性6.架构设计为复用奠定了基础7.架构设计能够降低维护费用8.架构设计能够支持冲突分析二、基于架构的软件开发方法一体系结构的设计方法概述基于体系结构的软件设计 (Architecture-Based Software Design,ABSD) 方法有3个基础。第1个基础是功能的分解。第2个基础是通过选择体系结构风格来实现质量和商业需求。第3个基础是软件模板的使用软件模板利用了一些软件系统的结构。ABSD 是自顶向下、递归细化的迭代的每一步都有清晰的定义有助于降低体系结构设计的随意性。二概念与术语采用视角与视图来描述软件架构采用用例来描述功能需求采用质量场景来描述质量 需求。1.设计元素2.视角与视图3.用例和质量场景三基于体系结构的开发模型ABSD模型把整个基于体系结构的软件过程划分为体系结构需求、设计、文档化、复审、实现和演化6个子过程。四体系结构需求体系结构的需求工作包括获取用户需求和标识系统中拟用构件。1.需求获取。体系结构需求的获取一般来自三个方面质量目标、系统的商业目标和系统 开发人员的商业目标。2.标识构件。标识构件分三步完成生成类图→对类进行分组→把类打包成构件。3.架构需求评审。重点包括需求是否真实反映了用户的要求、类的分组是否合理、构件合并是否合理等。五体系结构设计1.提出软件体系结构模型2.把已标识的构件映射到软件体系结构中3.分析构件之间的相互作用4.产生软件体系结构5.设计评审设计评审必须邀请独立于系统开发的外部人员。六体系结构文档化体系结构文档化过程的主要输出结果是体系结构规格说明和测试体系结构需求的质量设计说明书。七体系结构复审一个主版本的软件体系结构分析之后要安排一次由外部人员用户代表和领域专家参加的复审。复审的目的是标识潜在的风险及早发现体系结构设计中的缺陷和错误必要时可搭建一个可运行的最小化系统用于评估和测试体系结构是否满足需要。八体系结构实现体系结构的实现过程是以复审后的文档化体系结构说明书为基础的具体为分析与设计→构件实现→构件组装→系统测试。体系结构说明书中定义了系统中构件与构件之间的关系。测试包括单个构件的功能性测试及被组装应用的整体功能和性能测试。九体系结构的演化1.需求变化归类2.制订体系结构演化计划3.修改、增加或删除构件4.更新构件的相互作用5.构件组装与测试6.技术评审7.演化 后的体系结构。三、软件架构风格一软件架构风格概述软件体系结构设计的核心目标是重复的体系结构模式软件复用/重用。软件体系结构架构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义一个系统家族即一个体系结构定义一个词汇表和一组约束。1词汇表包含构件和连接件。2约束约束定义构件和连接件的组合方式。体系结构风格反映了领域中众多系统所共有的结构和语义特性并指导如何将各个模块和子系统有效地组织成一个完整的系统。二数据流体系结构风格1.批处理体系结构风格每个处理步骤是一个独立的程序每一步必须在前一步结束后才 能开始且数据必须是完整以整体的方式传递。2.管道-过滤器体系结构风格把系统分为几个序贯地处理步骤每个步骤之间通过数据流连接一个步骤的输出是另一个步骤的输入每个处理步骤都有输入和输出。三调用/返回体系结构风格利用调用-返回实际上是一种分而治之的策 略主要思想是将一个复杂的大系统分解为若干个子系统降低复杂度增加可修改性。1.主程序/子程序风格采用单线程控制把问题划分为若干处理步骤构件即为主程序和子程序。2.面向对象体系结构风格构件是对象即抽象数据类型的实例3.层次型体系结构风格每一层为上层服务并作为下层的接口。仅相邻层间具有层接口4.客户端/服务器体系结构风格1二层C/S模式。主要组成部分数据库服务器后台负责数据管理、客户应用程序前台完成与用户交互任务和网络。优点客户应用和服务器构件分别运行在不同的计算机上。缺点开发成本高客户端设计复杂信息内容和形式单一不利于推广软件移植困难软件维护和升级困难。2三层C/S模式瘦客户端模式。应用该功能分为表示层、功能层和数据层。表示层用户接口与应用逻辑层的交互不影响业务逻辑通常使用图形用户界面。功能层实现具体的业务处理逻辑。数据层数据库管理系统。5.浏览器/服务器风格B/S1B/S风格是三层应用结构的实现方式其三层结构分别为浏览器Web服务器数据库服务器。2相比于C/S的不足之处动态页面的支持能力弱、系统拓展能力差、安全性难以控制、响应速度不足、数据交互性不强四以数据为中心的体系结构风格1.仓库体系结构风格存储和维护数据的中心场所。由中央数据结构说明当前数据状态 和一组独立构件对中央数据进行操作组成。2.黑板体系结构风格是一种问题求解模型是组织推理步骤、控制状态数据和问题求解之领域知识的概念框架。可通过选取各种黑板、知识源和控制模块的构件来设计应用于信号处理领域如语音识别和模式识别。五虚拟机体系结构风格虚拟机体系结构风格基本思想是人为构建一个运行环境可以解析与运行自定义的一些语言增加架构的灵活性。1.解释器体系结构风格通常被用来建立一种虚拟机以弥合程序语义与硬件语义之间的差异缺点是执行效率较低典型例子是专家系统。2.规则系统体系结构风格包括知识库、规则解释器、规则/数据选择器及工作内存程序运行存储区六独立构件体系结构风格独立构件体系结构风格强调系统中的每个构件都是相对独立的个体它们之间不直接通信以降低耦合度提升灵活度。1.进程通信体系结构风格构件是独立的过程连接件是消息传递。2.事件系统体系结构风格构件不直接调用一个过程而是触发或广播一个或多个事件。七C2风格C2风格通过连接件连接构件或某个构件组构件与构件之间无连接四、软件架构复用一软件架构复用的定义及分类软件复用是一种系统化的软件开发过程通过识别、开发、分类、获取和修改软件实体以便在不同的软件开发过程中重复的使用它们。开发一组基本的软件构件模块以覆盖不同的需求/体系结构之间的相似性提高系统开发的效率、质量和性能。二软件架构复用的原因减少开发工作、减少开发时间以及降低开发成本提高生产力、提高产品质量更好的互操作性。三软件架构复用的对象及形式可复用的资产包括需求、架构设计、元素、建模分析、 测试、项目规划、过程方法工具、人员、样本系统、缺陷消除。一般形式的复用包括函数的 复用、库的复用、面向对象开发中的类、接口和包的复用。四软件架构复用的基本过程1.复用的前提获取可复用的软件资产2.管理可复用资产存在两个关键问题一是构件分类构件分类是指将数量众多的构件按照某种特定方式组织起来二是构件检索构件检索是指给定几个查询需求能够快速准确地找到相关构件。3.使用可复用资产五、特定领域软件体系结构在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构即用于某一类特定应用领域的标准软件构件集合。DSSA的特征领域性、普遍性、抽象性、可复用性。一DSSA的定义DSSA (Domain Specific Software Architecture)的必备特征如下。(1)一个严格定义的问题域和问题解域。(2)具有普遍性使其可以用于领域中某个特定应用的开发。(3)对整个领域的构件组织模型的恰当抽象。(4)具备该领域固定的、典型的在开发过程中可重用元素。二DSSA的基本活动1.领域分析通过分析领域中系统的共性需求获得领域模型。2.领域设计设计DSSA且DSSA需要具备领域需求变化的适应性。3.领域实现获取可重用信息。三参与DSSA的人员1.领域专家2.领域分析人员3.领域设计人员4.领域实现人员四DSSA的建立过程DSSA的建立过程是并发的、递归的、反复的螺旋模型(1)定义领域范围。(2)定义领域特定的元素。3定义领域特定的设计和实现约束。4定义领域模型和体系结构。5产生、搜集可重用的单元。