🏛️ 一、概述:软件系统的"骨架"与"蓝图"
软件架构设计是指将软件需求转化为系统顶层设计的过程,它定义了软件的整体结构、组成元素及其相互关系,并为后续的详细设计和实现提供宏观指导。软件架构是系统的"骨架"和"蓝图",决定了系统的质量属性(如性能、安全性、可维护性)和演进能力。
对于系统分析师而言,软件架构设计是你从"需求分析"走向"技术实现"的关键转折点。在需求阶段,你关注"系统必须做什么";在架构设计阶段,你开始思考"系统应该怎么组织"。这一阶段的产出,将直接影响系统的开发效率、运行质量和长期维护成本。
软件架构的核心价值:
· 沟通媒介:为项目干系人(用户、管理者、开发人员、测试人员)提供统一的交流语言
· 设计决策:记录早期的、难以更改的重大技术决定
· 可复用资产:形成可传递和复用的模型,为后续项目提供经验
· 质量预测:通过研究架构可以预测软件的质量属性
· 复杂性管理:将大问题分解为小问题,有效控制系统复杂度
架构设计在生命周期中的位置:
```
系统规划\] → \[需求工程\] → \[软件架构设计\] → \[详细设计\] → \[编码实现\] → \[测试运维
↑
"从做什么到怎么做"的关键过渡
```
本章的知识框架(基于常见教材目录):
· 12.1 软件架构的概念
· 12.2 软件架构风格
· 12.3 软件架构描述与表示
· 12.4 软件架构设计方法
· 12.5 软件架构评估
🏗️ 二、详细讲解:五大核心知识点
1️⃣ 12.1 软件架构的概念
(1)软件架构的定义
软件架构是有关软件整体结构与组件的抽象描述,它包含三个核心要素:
· 组件:系统的组成单元,可以是子系统、模块、应用服务等(不同粒度)
· 结构:组件之间的组织方式,形成特定的系统形态
· 关系:组件之间的连接方式,如调用、依赖、消息传递等
更正式的定义:软件或计算机系统的软件架构是该系统的一个(或多个)结构,而结构由软件元素、元素的外部可见属性及它们之间的关系组成。
(2)架构设计的目标
软件架构设计要达到的目标包括:
· 可靠性:系统必须稳定可靠地运行
· 安全性:系统必须能抵御未授权访问和攻击
· 可伸缩性:系统能在用户量增加时保持合理性能
· 可扩展性:系统能方便地引入新技术和新功能
· 可维护性:系统易于修改和升级
· 可定制性:系统能根据不同客户需求进行调整
(3)架构与软件复杂度的关系
架构设计的本质是解决软件复杂度带来的问题。软件复杂度有多种表现形式:
· 业务复杂度:如何拆解复杂的业务逻辑,找到合适的组件和结构
· 性能复杂度:如何设计结构以满足高性能要求
· 可用性复杂度:如何确保系统在故障时仍能提供服务
· 可扩展性复杂度:如何使系统易于扩展
📌 速记口诀:"组结构关系,三要素定架构;可靠安全可伸缩,扩展维护可定制,六目标记心间"。
2️⃣ 12.2 软件架构风格
软件架构风格是描述特定软件系统组织方式的惯用模式,它反映了众多系统共有的结构和语义特性,强调对软件设计的重用。
五大架构风格分类:
风格大类 子风格 核心特点 典型实例
数据流风格 批处理、管道-过滤器 数据依次经过处理单元,每个单元对数据进行变换 传统编译器、网络报文处理
调用/返回风格 主程序/子程序、面向对象、层次结构 通过调用关系组织系统功能 分层C/S、MVC、三层架构
独立构件风格 进程通信、事件驱动(隐式调用) 构件独立,通过消息或事件交互 GUI系统、消息中间件
虚拟机风格 解释器、规则系统 自定义执行环境和规则 专家系统、脚本引擎
仓库风格 数据库系统、黑板系统、超文本系统 中央数据存储,独立构件在其上操作 数据库、语音识别系统
(1)数据流风格
· 管道-过滤器:每个构件(过滤器)有一组输入和输出,读入数据流,处理后输出
· 优点:松耦合、高重用性、可扩展性、支持并行
· 缺点:交互性较差、性能较差(每个过滤器都需要解析与合成数据)
(2)调用/返回风格
· 层次结构:将系统按抽象层次分为多层,每层为上一层提供服务,使用下一层的服务
· 分层架构的优点:
· 支持基于可增加抽象层的设计
· 不同的层次处于不同的抽象级别
· 每层最多只影响相邻两层,便于修改和复用
· 分层架构的缺点:
· 并非每个系统都可以很容易地划分层次
· 很难找到合适的、正确的层次抽象方法
(3)独立构件风格
· 事件驱动(隐式调用):构件将过程注册到事件,事件发生时自动触发
· 优点:松耦合、良好的重用性/修改性/可扩展性
· 缺点:构件放弃了对系统计算的控制,正确性推理困难
(4)虚拟机风格
· 解释器:具有运行时系统行为自定义与改变能力
· 规则系统:包含规则集、规则解释器、工作内存等
(5)仓库风格
· 黑板系统:由全局共享数据的黑板、控制单元和多个知识源组成
· 应用:语音识别、专家问题解决系统
(6)闭环控制架构(过程控制)
· 工业中的实时控制,如数控机床、生产流水线控制
· 特点:及时采集检测数据,按最佳值自动控制和调节
📌 速记口诀:"数据流调用回,独立构件虚拟机,仓库闭环C2齐,五大风格要牢记"。
3️⃣ 12.3 软件架构描述与表示
(1)4+1视图模型
4+1视图模型是描述软件架构的经典框架,从不同角度满足不同涉众的关注:
视图 关注点 主要涉众 描述内容
逻辑视图 功能需求 最终用户 系统的功能需求,即系统提供给最终用户的服务
开发视图 模块组织 程序员 软件模块的组织和管理,关注代码库、包、层的划分
进程视图 运行特性 集成人员 系统的并发、同步、性能等非功能性需求
物理视图 硬件映射 系统工程人员 软件如何映射到硬件,考虑拓扑结构、安装、通信
场景(+1) 系统活动抽象 所有涉众 重要系统活动的抽象,使四个视图有机联系起来
视图关系:逻辑视图和开发视图描述系统的静态结构,进程视图和物理视图描述系统的动态结构,场景则是驱动这些视图的核心需求抽象。
(2)架构可视化方法
方法 描述 优势 劣势
线框图 通过线框和连线表达架构元素及关系 工具多样、学习成本低 语义一致性差
UML 统一建模语言,标准化的建模元语言 语义一致、表达丰富 学习成本高、复杂度高
草图 非正式的快速图形化 高效沟通、灵活 语义一致性低
C4模型 分层抽象表达系统静态结构 语义一致、易学习 仅覆盖静态结构
(3)C4模型
C4模型在不同抽象层级表达软件系统的静态结构:
· 上下文图:系统与外部环境的交互及边界
· 容器图:系统的组成容器(应用、数据存储)及技术选型
· 组件图:容器内部的组件组成及交互
· 代码:实现细节(可选,可用UML类图等补充)
📌 速记口诀:"4+1视图经典法,逻辑开发进程物,场景贯穿联四者;C4模型分层画,上下容器组件码"。
4️⃣ 12.4 软件架构设计方法
(1)架构设计三原则
原则 核心思想 实践要点
合适原则 一切从实际场景出发 匹配业务发展阶段,合理利用资源
简单原则 用最简单的解决方案解决问题(KISS) 复杂问题拆解为简单单元,避免过度设计
演化原则 架构随业务发展不断演进 区分变化部分与不变部分,持续迭代
(2)架构设计方法论(以TOGAF ADM为例)
ADM软件开发方法包含以下阶段:
· 预备阶段:梳理业务需求,了解真实业务目标
· 架构远景:规划最终要达成的效果
· 业务架构:理解业务场景,抽象业务模型
· 信息系统架构:包括数据架构和应用架构
· 技术架构:选择技术框架、中间件、存储方案
· 技术及解决方案:提出多套方案,做取舍决策
· 迁移规划、实施治理:后续运维事项
(3)常见架构域划分
架构域 关注问题 产出形式
业务架构 业务如何拆解、场景如何梳理 业务架构图(场景层、产品功能层、领域模型层)
数据架构 需要什么数据、如何存储、如何设计 ER图(实体、属性、关系)
应用架构 子系统如何划分、模块间关系 应用架构图、模块划分
技术架构 技术框架选择、非功能需求实现 技术方案、关键技术要点
📌 速记口诀:"合适简单演化,三原则定方向;业务数据应用技术,四架构域齐展开"。
5️⃣ 12.5 软件架构评估
(1)架构评估的重要性
软件系统的质量属性主要由系统的软件体系结构决定。在大型系统中,性能、可用性和可修改性等质量的实现更多地取决于整体软件架构,而非代码级实践。因此,在建造之前就分析和确定系统是否能满足其期望的品质至关重要。
(2)ATAM(架构权衡分析方法)
ATAM是一种系统架构评估方法,主要在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。
ATAM的四个主要活动阶段:
-
需求收集:明确质量属性需求
-
架构视图描述:了解架构设计
-
属性模型构造和分析:分析各质量属性的实现情况
-
架构决策与折中:识别权衡点并做出决策
(3)核心概念
概念 定义 示例
敏感点 实现质量目标时应注意的点,是一个或多个构件(或构件之间的关系)的特性 查询请求处理时间要求影响系统的数据传输协议设计
权衡点 影响多个质量特征,并对多个质量特征都是敏感点的质量特征 改变业务数据编码方式对系统性能和安全都产生影响
风险 某些做法有一些隐患可能导致问题 业务逻辑描述未达成共识,导致功能模块重复
非风险 可行的做法 业务响应小于30ms,请求响应超时设定为1秒可接受
(4)ATAM评估步骤(九步)
-
描述ATAM方法
-
描述业务动机
-
描述架构
-
确定架构方法
-
生成质量效应树
-
分析架构方法
-
讨论场景和对场景分级
-
分析架构方法
-
描述评估结果
📌 速记口诀:"ATAM评估法,性能可用安全可修改;敏感权衡点,风险非风险,九步走完得结论"。
📝 三、重点总结与速记方法
✅ 核心重点
-
软件架构的本质:组件+结构+关系,是系统的"骨架"和"蓝图"。
-
五大架构风格:数据流、调用/返回、独立构件、虚拟机、仓库------必须能根据描述识别风格类型。
-
4+1视图模型:逻辑、开发、进程、物理、场景------从不同角度描述架构。
-
架构设计三原则:合适、简单、演化------指导架构决策的基本法则。
-
ATAM评估方法:识别敏感点、权衡点、风险、非风险,对质量属性进行权衡分析。
-
架构域划分:业务、数据、应用、技术四层架构,层层递进。
⚡ 速记口诀大全
1️⃣ 架构定义"三要素"口诀
"组件结构加关系,三要素定架构"
2️⃣ 五大风格"五字诀"
"数、调、独、虚、仓"(数据流、调用/返回、独立构件、虚拟机、仓库)
3️⃣ 4+1视图"五视图"口诀
"逻辑开发进程物,场景贯穿联四者"
4️⃣ 设计原则"三字诀"
"合适简单演化,三原则定方向"
5️⃣ ATAM"四概念"口诀
"敏感权衡点,风险非风险"
6️⃣ 架构域"四层"口诀
"业务数据应用技术,层层递进设计全"
7️⃣ 一句话总纲
软件架构设计 = (五大风格 + 4+1视图 + 三原则 + ATAM评估),是从需求到实现的"骨架搭建",决定了系统的质量、成本和演进能力。
掌握第12章《软件架构设计》,意味着你具备了从宏观视角规划系统结构的核心能力。这是系统分析师从"需求分析师"迈向"系统架构师"的关键一步。