一、前言
笔记目录大纲请查阅:【软考速通笔记】系统架构设计师——导读
二、软件架构基础
2.1 定义
软件架构(Software Architecture)或称为软件体系结构。
架构==体系结构
是指系统的一个或者多个结构,这些结构包括软件的构件、构件的外部可见属性及其之间的相互关系。
架构设计包括数据库设计和软件结构设计。
2.2 视图
软件结构设计关注软件构件的结构、属性和交互作用,并通过多种视图全面描述。
- 逻辑视图:系统的功能性和业务逻辑。
- 开发视图:系统的模块化和代码结构。
- 物理视图:系统的部署和硬件分布。
- 进程视图:系统的并发和进程结构。
- 场景视图:系统的运行时行为和交互。
三、软件架构生命周期
阶段 | 作用和意义 |
---|---|
需求分析阶段 | 有利于各个阶段参与者的交流,也易于维护各阶段的可追踪性 |
设计阶段 | 软件架构模型描述、软件架构模式的设计和分析方法等 |
实现阶段 | 有效实现从软件架构设计向实现的转换 |
构件组装阶段 | 可复用构建组装的设计能够提高系统实现的效率 |
部署阶段 | 组织和展示部署阶段的软硬件架构、评估分析部署方案 |
后开发阶段 | 主要围绕维护、演化、复用进行 |
四、软件架构重要性
- 指导系统开发
- 提高系统质量
- 降低技术风险
- 降低维护费用
- 支持冲突分析
- 支持计划编制过程
- 管理系统复杂性
五、基于架构的软件开发方法
5.1 基于体系结构(架构)的软件设计(Architecture-Based Software Design,ABSD)
- 采用视角与视图来描述软件架构。
- 采用用例来描述功能需求。
- 采用质量场景来描述质量需求。
5.2 基于体系结构(架构)的软件设计具有三个基础
- 功能的分解
- 通过选择体系结构风格来实现质量和商业需求
- 软件模板的复用
ABSD是自顶向下、递归细化的,迭代的每一步都有清晰的定义,有助于降低体系结构设计的随意。
5.3 基于体系结构(架构)的软件设计的六个子过程
- 体系结构需求:需求获取、标识构件、需求评审。
- 体系结构设计:提出结构模型—>将已标识的构件映射到架构中—>分析构件之间的相互作用—>产生体系结构评审。
- 体系结构文档化:生成《体系结构规格说明书》和《测试体系结构需求的质量设计说明书》。
- 体系结构复审:安排一次由外部人员(如客户代表和领域专家)参加的架构复审。目的是标识潜在的风险,及早发现架构设计中的缺陷和错误,包括架构能否满足需求、质量需求是否在设计中得到体现、层次是否清晰、构件的划分是否合理等。
- 体系结构实现:分析与设计—>构件实现—>构件组装—>系统测试
- 体系结构演化:需求变化归类—>体系结构演化计划—>构件变动—>更新构件的相互作用—>构件的组装与测试—>技术评审—>演化后的体系结构。
六、软件架构风格
6.1 数据流体系结构风格
其核心思想是将数据处理流程划分为一系列独立的处理单元,并通过数据流将这些单元连接起来。这种风格在数据处理和转换方面具有较高的效率和灵活性。
- 批处理
- 管道和过滤器
6.2 调用/返回体系结构风格
调用/返回风格是指在系统中采用了调用与返回机制,其核心思想是将一个复杂的大系统分解为若干子系统,以便降低复杂度,并且增加可修改性。
- 主程序/子程序风格
- 面对对象体系结构风格
- 层次型体系结构风格
- 客户端/服务器体系结构风格
- 浏览器/服务器体系结构风格
6.3 以数据为中心的体系结构风格
以数据为中心的架构风格强调数据在系统中的核心地位,将数据处理逻辑围绕数据进行组织。
- 仓库体系结构风格
- 黑板体系结构风格
6.4 虚拟机体系结构风格
基本思想是人为构建一个运行环境,可以解析与运行自定义的一些语言,增加架构的灵活性。
- 解释器体系结构风格
- 规则系统体系结构风格
6.5 独立构件体系结构风格
系统每个构件都是相对独立的个体,它们之间不直接通信,以降低耦合度,提高灵活性。
- 进程通信体系结构风格
- 事件系统体系结构风格
七、软件架构复用
7.1 软件架构复用的原因
- 减少开发工作
- 减少开发时间
- 降低开发成本
- 提高生产力
- 提高产品质量
7.2 软件架构复用的基本过程
- 构建/获取可复用的软件资产
- 管理可复用软件资产
- 使用可复用软件资产
7.3 软件架构复用类型
- 机会复用:在开发过程中,只要发现有可复用的资产就复用。
- 系统复用:开发前进行规划,决定复用哪些软件资产。
八、特定领域软件架构
特定领域软件架构(Domain Specific Software Architecture,DSSA)
8.1 特定领域软件架构的特征
- 领域性
- 普遍性
- 抽象性
- 可复用性
8.2 特定领域软件架构的基本活动
- 领域分析
- 领域设计
- 领域实现
8.3 特定领域软件架构的参与人员
- 领域专家
- 领域分析师
- 领域设计人员
- 领域实现人员
8.4 特定领域软件架构的建立过程
- 定义领域范围
- 定义领域特定原色
- 定义领域特定的设计和实现约束
- 定义领域模型和体系结构
- 产生、搜集可重用的单元
若觉得文章对你有帮助,随手『点赞』、『收藏』、『关注』,也是对我的支持。