【软件架构方法论】概念架构:系统设计的指路明灯
文章目录
- 一、核心知识点:概念架构的3个关键
- 知识点1:概念架构是什么?——设计思想的"中转站"
- 知识点2:概念架构的3个特征——直指目标、设计思想、重大选择
- 知识点3:概念架构设计的"1个决定、4个选择"——系统设计的"骨架"
- 二、实战场景串联:从关键需求到概念架构
- 场景1:基础环境准备——识别关键需求
- 场景2:核心功能实现——运用鲁棒图设计
- 场景3:关键质量实现——运用目标-场景-决策表设计
- 场景4:进阶场景适配——完成"1个决定、4个选择"
- 三、总结:概念架构的通用应用逻辑
核心观点:概念架构就像盖房子前的概念图,不是详细施工图,而是告诉你"要盖什么样的房子"。它是直指目标的设计思想、重大选择,是关乎任何复杂系统成败的最关键的、指向性的设计。
很多架构师都有这样的困惑:架构设计从哪里开始?是直接画系统架构图,还是先想清楚设计思路?其实,架构设计应该从"概念架构"开始。概念架构就像盖房子前先画的概念图,不是详细的施工图,而是告诉你"要盖什么样的房子"。
本文通过实战案例,帮你快速掌握概念架构的核心用法:什么是概念架构?它有什么特征?如何设计?
一、核心知识点:概念架构的3个关键
在深入实战之前,先搞懂3个核心知识点,它们是理解概念架构的基础。
知识点1:概念架构是什么?——设计思想的"中转站"
通俗理解:概念架构就像盖房子前的概念图,告诉你"要盖什么样的房子"(设计目标),“用什么思路盖”(设计思想),“做哪些重大选择”(重大决策),但不告诉你"具体怎么施工"(接口细节)。
核心作用:
- 直指系统设计目标,不绕弯子
- 体现设计思想,不是功能堆砌
- 包含重大选择,关乎系统成败
适用场景:设计大中型系统时,必须先有概念架构,才能进行细化设计。就像盖房子,必须先有概念图,才能画施工图。
知识点2:概念架构的3个特征——直指目标、设计思想、重大选择
通俗理解:概念架构就像指路明灯,必须"直指目标"(不跑偏)、“体现思想”(有思路)、“做出选择”(有决策)。
核心作用:
- 直指目标:直接指向系统设计目标,比如"跨平台复用"、“高性能”、“简化开发”
- 设计思想:体现设计思想,比如"分层抽象"、“垂直分离”、“三层封装”
- 重大选择:包含重大选择,比如"分布式架构"还是"集中式架构"、“垂直分离"还是"水平分层”
适用场景:判断一个架构是不是概念架构,就看它是否具备这3个特征。如果只是功能堆砌,没有设计思想和重大选择,就不是概念架构。
知识点3:概念架构设计的"1个决定、4个选择"——系统设计的"骨架"
通俗理解:概念架构设计就像搭骨架,必须明确"1个决定"(怎么划分系统)和"4个选择"(用什么风格、什么技术、怎么集成、怎么扩展)。
核心作用:
- 1个决定:划分顶级子系统(系统怎么分解)
- 4个选择:架构风格选型(用什么架构模式)、开发技术选型(用什么技术栈)、集成技术选型(怎么集成外部系统)、二次开发技术选型(怎么支持扩展)
适用场景:设计概念架构时,必须明确这5项,缺一不可。它们是系统设计的"骨架",后续的细化设计都基于这个骨架。
二、实战场景串联:从关键需求到概念架构
搞懂了核心知识点,下面看实战中怎么用这些知识点解决问题。我们通过一个在线书店系统的案例,串联概念架构设计的完整过程。
场景1:基础环境准备——识别关键需求
真实业务场景:设计一个在线书店系统,需要支持用户浏览图书、搜索图书、下单购买等功能。
核心步骤:从功能需求和质量需求中,识别"关键需求"。
关键操作:
-
识别关键功能:从功能需求中确定关键功能
- 浏览热门图书(高频功能)
- 搜索图书(核心功能)
- 下单购买(核心业务)
-
识别关键质量:从质量需求中确定关键质量
- 高性能(大量用户同时访问)
- 可扩展性(业务量会增长)
- 可用性(系统不能经常崩溃)
为什么这么设计:概念架构设计不是面面俱到,而是聚焦"关键需求"。只有关键功能和质量,才会影响概念架构的设计。就像盖房子,你不需要考虑所有细节,只需要考虑"要盖几层"、"用什么结构"这些关键问题。
对应知识点:这对应知识点1——概念架构直指目标。关键需求就是"目标",概念架构必须直指这些目标。
场景2:核心功能实现——运用鲁棒图设计
真实业务场景:针对"搜索图书"这个关键功能,设计概念架构。
核心步骤:运用鲁棒图,从功能需求过渡到设计概念。
关键操作:
-
识别边界对象:用户界面、搜索界面; 作用:负责接收用户输入,显示搜索结果
-
识别控制对象:搜索控制、输入验证、结果展示; 作用:控制搜索的执行流程
-
识别实体对象:作者名字、图书信息、搜索结果; 作用:存储和传递数据
为什么这么设计:鲁棒图是连接需求与设计的"桥梁"。从用例规格说明(用户如何使用系统)到设计概念(系统内部如何实现),有个"看不见的鸿沟"。鲁棒图通过3种元素(边界、控制、实体),帮助架构师跨越这个鸿沟。
对应知识点:这对应知识点3——概念架构设计的"1个决定"。通过鲁棒图,可以发现系统需要哪些组件,从而决定"怎么划分系统"。
实战示例:在线书店的"按作者名字搜索"功能
用户输入作者名字 → 搜索界面(边界对象)↓检查输入合法性(控制对象)↓获得搜索条件(控制对象)↓获得搜索结果(控制对象)→ 图书信息(实体对象)↓显示搜索结果(控制对象)↓结果界面(边界对象)→ 用户看到结果
关键发现:通过增量建模,发现架构级关键决策点:
- 决策点1:图书信息是放在文件系统,还是放在数据库?
- 如果放在文件系统:需要文件系统访问,纯B/S架构可能不够
- 如果放在数据库:可以用纯B/S架构
- 决策点2:搜索结果需要缓存吗?
- 如果热门搜索很多:需要引入Cache,提高性能
场景3:关键质量实现——运用目标-场景-决策表设计
真实业务场景:针对"高性能"这个关键质量,设计概念架构。
核心步骤:运用目标-场景-决策表,从模糊质量需求到具体设计决策。
关键操作:
-
识别场景:从质量需求中识别具体场景
- 场景1:大量用户同时浏览热门图书,页面生成逻辑重复执行
- 场景2:图书信息存储为单一、大表,搜索功能触发大量I/O开销
- 场景3:业务量增长,系统出现性能瓶颈
-
做出决策:针对每个场景,做出架构决策
- 决策1:热门图书页面静态化为HTML,引入Cache
- 决策2:书目信息和图书详细信息分离存储
- 决策3:设计展现层、业务层、数据层为可独立部署的层,便于分别做集群
为什么这么设计:从模糊质量需求(如"高性能")到具体设计决策,有个"看不见的鸿沟"。**场景技术是跨越这个鸿沟的"跳板"。**通过"目标→场景→决策"的逻辑,可以将模糊的质量需求转化为具体的架构决策。
对应知识点:这对应知识点3——概念架构设计的"4个选择"。通过场景分析,可以发现系统需要什么架构风格、什么技术栈,从而做出选择。
实战示例:在线书店系统的高性能设计
| 场景 | 架构决策 |
|---|---|
| 大量用户浏览热门图书 | 热门图书页面静态化为HTML,引入Cache |
| 图书搜索触发大量I/O | 书目信息和图书详细信息分离存储 |
| 业务量增长,系统出现性能瓶颈 | 设计展现层、业务层、数据层为可独立部署的层,便于分别做集群 |
关键发现:通过场景分析,发现架构级关键决策点:
- 决策点1:需要引入Cache层,提高热门内容的访问速度
- 决策点2:需要分离存储,优化I/O性能
- 决策点3:需要分层设计,支持独立扩展
场景4:进阶场景适配——完成"1个决定、4个选择"
真实业务场景:综合关键功能和关键质量,完成概念架构设计。
核心步骤:明确"1个决定、4个选择",形成概念架构。
关键操作:
-
1个决定:划分顶级子系统
- 展现层:用户界面、搜索界面、结果界面
- 业务层:搜索服务、订单服务、图书服务
- 数据层:图书数据库、缓存层
-
4个选择:
- 架构风格选型:分层架构(展现层、业务层、数据层)
- 开发技术选型:Java + Spring + MySQL + Redis
- 集成技术选型:RESTful API(如果需要集成外部系统)
- 二次开发技术选型:插件机制(如果需要支持扩展)
为什么这么设计:概念架构设计必须明确这5项,它们是系统设计的"骨架"。后续的细化设计都基于这个骨架。就像盖房子,必须先确定"几层"、“什么结构”、“用什么材料”,才能画施工图。
对应知识点:这对应知识点3——概念架构设计的"1个决定、4个选择"。通过鲁棒图和目标-场景-决策表,可以发现系统需要哪些组件、什么架构风格、什么技术栈,从而完成这5项设计。
实战示例:在线书店系统的概念架构
┌─────────────────────────────────────┐
│ 展现层(用户界面) │
│ 搜索界面、结果界面、订单界面 │
└─────────────────────────────────────┘↓
┌─────────────────────────────────────┐
│ 业务层(业务逻辑) │
│ 搜索服务、订单服务、图书服务 │
└─────────────────────────────────────┘↓
┌─────────────────────────────────────┐
│ 数据层(数据存储) │
│ 图书数据库、缓存层 │
└─────────────────────────────────────┘
关键发现:通过综合关键功能和关键质量,形成概念架构:
- 设计目标:高性能、可扩展性
- 设计思想:分层架构,各层独立部署
- 重大选择:分层架构、Java技术栈、缓存机制
三、总结:概念架构的通用应用逻辑
通过实战案例,我们掌握了概念架构的核心用法。现在提炼一下通用应用逻辑:
概念架构设计的通用逻辑:先识别关键需求(关键功能+关键质量)→再运用鲁棒图设计功能(发现组件)→然后运用目标-场景-决策表设计质量(做出决策)→最后完成"1个决定、4个选择"(形成概念架构)。
通俗比喻:概念架构设计就像搭骨架,必须先确定"要搭什么样的骨架"(关键需求),然后"搭骨架的各个部分"(运用鲁棒图和目标-场景-决策表),最后"确定骨架的结构"(1个决定、4个选择)。
可落地的交付物:
- 关键需求清单:列出关键功能和关键质量
- 鲁棒图:针对关键功能的鲁棒图
- 目标-场景-决策表:针对关键质量的目标-场景-决策表
- 概念架构图:展示"1个决定、4个选择"的概念架构图
核心要点:
- 概念架构是直指目标的设计思想、重大选择:不是功能堆砌,而是有设计思想和重大选择
- 概念架构有3个特征:直指目标、设计思想、重大选择
- 概念架构设计要明确"1个决定、4个选择":划分顶级子系统、架构风格选型、开发技术选型、集成技术选型、二次开发技术选型
- 功能需求与质量需求并重:左手功能(鲁棒图),右手质量(目标-场景-决策表),两手都要硬
因此,架构师是设计的行家里手,有很多思想。但只有设计思想与目标联系时,才可能取得成效。概念架构,就是直指系统设计目标的设计思想和重大选择。通过运用鲁棒图和目标-场景-决策表,架构师可以从关键需求出发,设计出既满足功能需求,又满足质量需求的概念架构。
