🏗️ 系统架构设计
掌握系统架构设计的核心理念与实践方法
8
设计原则
6
架构风格
12
架构模式
4
评估方法
🔴 考试重点
架构设计原则、分层架构、MVC模式、架构评估方法是考试的重点内容!
架构设计概述
什么是系统架构
系统架构是系统的基本组织结构,包括系统的组件、组件之间的关系,以及指导系统设计和演进的原则。
架构的核心要素
- • 组件:系统的基本构建块
- • 连接器:组件间的交互机制
- • 配置:组件和连接器的拓扑结构
- • 约束:限制系统设计和演进的规则
架构设计的重要性
质量属性保证
确保系统满足性能、可靠性、安全性等质量要求
复杂性管理
通过分解和抽象管理系统复杂性
团队协作
为开发团队提供共同的理解基础
风险控制
早期识别和控制技术风险
架构设计原则
单一职责原则
每个组件应该只有一个引起它变化的原因
开闭原则
对扩展开放,对修改关闭
里氏替换原则
子类应该能够替换其基类
接口隔离原则
客户端不应该依赖它不需要的接口
依赖倒置原则
高层模块不应该依赖低层模块
关注点分离
将不同的关注点分离到不同的模块中
高内聚低耦合
模块内部紧密相关,模块间松散耦合
最少知识原则
一个对象应该对其他对象有最少的了解
架构风格
分层架构(Layered Architecture)
特点
- • 系统被组织成层次结构
- • 每层只能调用下层的服务
- • 层间通过接口通信
- • 支持关注点分离
典型分层
表示层
业务逻辑层
数据访问层
数据库层
管道过滤器(Pipe and Filter)
特点
- • 数据流经一系列处理组件
- • 过滤器独立处理数据
- • 管道连接过滤器
- • 支持并行处理
应用场景
- • 数据处理管道
- • 编译器设计
- • 图像处理
- • ETL系统
事件驱动架构(Event-Driven)
特点
- • 组件通过事件通信
- • 松散耦合
- • 异步处理
- • 高度可扩展
核心概念
- • 事件生产者
- • 事件消费者
- • 事件总线
- • 事件存储
微内核架构(Microkernel)
特点
- • 核心系统最小化
- • 插件式扩展
- • 高度可定制
- • 易于测试
组成部分
- • 核心系统
- • 插件模块
- • 注册表
- • 契约
面向服务架构(SOA)
特点
- • 服务是基本构建块
- • 标准化接口
- • 服务可重用
- • 平台无关
核心原则
- • 服务契约标准化
- • 服务松散耦合
- • 服务抽象
- • 服务可重用
微服务架构(Microservices)
特点
- • 小型独立服务
- • 业务能力导向
- • 去中心化治理
- • 故障隔离
优势
- • 技术多样性
- • 独立部署
- • 团队自治
- • 弹性扩展
架构模式详解
MVC模式
核心组件
Model:数据和业务逻辑
View:用户界面展示
Controller:控制逻辑和交互
优缺点分析
优点
- • 关注点分离
- • 支持多视图
- • 易于维护
- • 支持并行开发
缺点
- • 增加系统复杂性
- • 学习成本较高
- • 小项目过度设计
MVP模式
核心特点
- • View和Model完全分离
- • Presenter处理所有UI逻辑
- • View变成被动视图
- • 更好的可测试性
与MVC的区别
• View不直接访问Model
• Presenter充当中介者
• 更适合单元测试
MVVM模式
数据绑定机制
- • 双向数据绑定
- • ViewModel作为绑定源
- • 自动同步View和Model
- • 减少样板代码
适用场景
• 富客户端应用
• 复杂的UI交互
• 需要数据绑定的场景
分层架构详解
典型分层结构
表示层 (Presentation Layer)
↓
业务逻辑层 (Business Layer)
↓
数据访问层 (Data Access Layer)
↓
数据库层 (Database Layer)
设计原则
- • 上层依赖下层
- • 不允许跨层调用
- • 每层职责单一
- • 层间接口稳定
架构评估方法
ATAM (Architecture Tradeoff Analysis Method)
评估步骤
阶段1:准备
确定评估目标、组建评估团队
阶段2:评估
分析架构、识别风险和敏感点
阶段3:跟踪
制定改进计划、跟踪实施
核心概念
敏感点
影响质量属性的架构决策
权衡点
影响多个质量属性的敏感点
风险
可能导致架构问题的决策
SAAM (Software Architecture Analysis Method)
评估过程
- 开发场景
- 描述架构
- 分类和优先级排序场景
- 评估间接场景
- 评估直接场景
- 揭示场景交互
- 创建总体评估
适用场景
- • 早期架构评估
- • 可修改性分析
- • 架构比较选择
- • 风险识别
ARID (Active Reviews for Intermediate Designs)
特点
- • 针对部分架构设计
- • 早期发现设计问题
- • 轻量级评估方法
- • 注重设计决策的合理性
评估重点
- • 设计决策的依据
- • 替代方案的考虑
- • 设计的完整性
- • 潜在的设计风险
CBAM (Cost Benefit Analysis Method)
成本效益分析
效益计算
- • 质量属性改进
- • 业务价值提升
- • 风险降低
成本估算
- • 开发成本
- • 维护成本
- • 机会成本
ROI计算
ROI = (效益 - 成本) / 成本 × 100%
架构文档
4+1视图模型
逻辑视图
系统功能需求,类图、对象图
进程视图
并发性和同步,进程图、活动图
开发视图
软件管理,包图、组件图
物理视图
系统部署,部署图
用例视图
用户需求,用例图
架构决策记录(ADR)
ADR模板
标题:简短描述决策
状态:提议/接受/废弃
背景:决策的上下文
决策:具体的架构决策
后果:决策的影响