软考系统分析师:系统设计核心知识梳理(备考版)
系统设计是软考系统分析师的核心考点,覆盖综合知识(选择题)、案例分析(简答题)、论文写作三大题型,核心是将系统分析的"逻辑模型"转化为可落地的"物理技术方案",解决"怎么做"的问题。以下按考点层级、必背概念、核心模块、设计原则、高频考点全面梳理,适配应试记忆。
系统设计 包含 软件架构设计。
系统设计 = 整体设计(大圈)
软件架构设计 = 系统设计里最核心、最顶层的那一部分(小圈)
详细区别(软考必背)
- 范围不一样
系统设计
范围最大,覆盖整个系统从宏观到微观:
架构、模块、接口、数据库、界面、代码、部署、安全...... 全都管。
软件架构设计
只管顶层结构:
用什么架构风格(分层、微服务、C/S、B/S...)、模块怎么划分、组件怎么交互。- 阶段不一样(软考常考)
系统设计分为两大阶段:
概要设计(总体设计)
→ 软件架构设计就在这里!
详细设计
→ 模块内部逻辑、数据库表、界面、算法...
所以:
架构设计 = 概要设计的核心内容
系统设计 = 概要设计 + 详细设计
- SA、OOA → 系统分析阶段(需求分析)
- SD、OOD → 系统设计阶段(概要设计 + 详细设计)
- SA(Structured Analysis)
结构化分析
→ 属于:系统分析 / 需求分析
→ 工具:DFD、数据字典- SD(Structured Design)
结构化设计
→ 属于:系统设计(概要设计(包含架构设计) + 详细设计)
→ 工具:SC 结构图、结构图、高内聚低耦合- OOA(Object-Oriented Analysis)
面向对象分析
→ 属于:系统分析 / 需求分析
→ 工具:用例图、类图初步- OOD(Object-Oriented Design)
面向对象设计
→ 属于:系统设计(概要设计(包含架构设计) + 详细设计)
→ 工具:类图、时序图、活动图、状态图
一、系统设计基础(定义、目标、阶段划分)
1. 核心定义与目标
- 定义:衔接需求分析与系统实现,将需求规格说明书转化为系统架构、模块、数据、接口、部署的技术方案,是软件工程"需求→设计→编码→测试"的关键环节。
- 核心目标 :满足功能性需求 (业务流程、功能实现)+非功能性需求(性能、安全、可扩展、可靠、易用),输出《系统设计说明书》作为开发、测试、验收依据。
2. 两阶段划分(必背区分,选择题/案例高频)
| 阶段 | 别称 | 核心任务 | 输出物 | 考点区分 |
|---|---|---|---|---|
| 概要设计(总体设计) | 架构设计 | 宏观规划:系统架构选型、模块划分、接口定义、网络/硬件部署、数据存储总体方案 | 系统结构图(SC)、架构文档、部署方案 | 关注"整体、宏观、技术选型" |
| 详细设计 | 过程设计 | 微观细化:模块内部逻辑、数据库表结构、界面细节、算法、代码规范、输入输出设计 | 流程图/PAD图、表结构、界面原型、伪代码 | 关注"局部、细节、实现逻辑" |
3. 核心设计原理(黄金法则)
- 模块化:将系统拆分为独立、可复用、功能单一的模块,降低复杂度。
- 高内聚、低耦合:模块内部元素关联紧密(内聚),模块间依赖最少(耦合),是设计优劣的核心标准。
二、结构化设计:内聚与耦合(必考排序+概念)
1. 耦合(模块间依赖程度,从低到高排序)
记忆口诀:非数标控外公内(越低越好,选择题必排序)
- 无直接耦合:模块间无关联、不传递信息(最优)
- 数据耦合:传递简单数据值(如整数、字符串,推荐)
- 标记耦合:传递数据结构(如记录、对象,次优)
- 控制耦合:传递控制变量(如开关、标志,需优化)
- 外部耦合:依赖外部全局变量/硬件接口(较差)
- 公共耦合:共享全局数据区(如全局变量,风险高)
- 内容耦合:直接访问另一模块内部数据/代码(最差,严禁)
2. 内聚(模块内部关联程度,从低到高排序)
记忆口诀:偶逻过通信顺功(越高越好)
- 偶然内聚:元素无关联,仅偶然放在一起(最差)
- 逻辑内聚:逻辑相似但功能无关(如"输入/输出模块")
- 过程内聚:按固定顺序执行(如"登录→验证→跳转")
- 通信内聚:使用同一输入/输出数据(如"读取文件→处理文件")
- 顺序内聚:前一模块输出是后一输入(强关联)
- 功能内聚:所有元素完成单一功能(最优,推荐)
三、系统架构设计(总体设计核心,案例/论文高频)
1. 经典架构风格(适用场景+优缺点)
- 分层架构(最常考):分为表示层、业务逻辑层、数据访问层;优点:解耦、易维护;缺点:性能损耗、层级冗余。
- C/S架构(客户端/服务器):客户端安装程序,响应快;适合内网、桌面系统(如财务软件)。
- B/S架构(浏览器/服务器):零安装、跨平台;适合Web系统、互联网应用(主流)。
- 微服务架构:拆分为独立小服务,独立部署、可扩展;适合高并发、分布式系统(电商、云平台)。
- MVC架构:模型(数据)、视图(界面)、控制器(逻辑)分离;适合Web、移动端界面设计。
- 事件驱动架构:基于事件消息通信;适合异步、解耦系统(如消息队列、实时通知)。
- 管道-过滤器:数据依次经过滤器处理;适合数据处理、数据流系统(如ETL、数据清洗)。
2. 分布式/高可用设计(案例必考点)
- 负载均衡:轮询、加权、IP哈希;解决高并发、单点故障。
- 缓存设计:本地缓存、Redis分布式缓存;提升读取性能。
- 容灾备份:主备、多活、异地灾备;保障数据安全与可用性。
- 熔断降级:服务故障时切断调用、返回默认值;防止雪崩效应。
四、详细设计核心模块(全考点覆盖)
1. 数据库设计(案例必考:ER图+范式+优化)
(1)设计三阶段
- 概念设计:ER图(实体、属性、联系:1:1/1:N/M:N)
- 逻辑设计 :ER转关系表、范式规范化(消除冗余、异常)
- 物理设计:表结构、字段类型、主键/外键、索引、分区、存储引擎
(2)三大范式(必背)
- 1NF:列原子性,不可再分(如"地址"拆分为省/市/区)
- 2NF:消除部分函数依赖,主键完全决定所有非主属性
- 3NF:消除传递函数依赖,非主属性不依赖其他非主属性
- BCNF:修正3NF,主键内部无传递/部分依赖(高级范式)
(3)优化要点
索引优化、SQL优化、分库分表、读写分离、NoSQL选型(MongoDB、Redis)
2. 处理过程设计(工具+要素)
(1)流程6要素
输入资源、活动、活动交互、输出结果、用户、价值
(2)设计工具(选择题辨析)
- 图形工具:程序流程图(PFD)、NS盒图、PAD图、UML活动图/时序图
- 表格工具:IPO图(输入-处理-输出)、判定表/判定树(多条件逻辑)
- 语言工具:伪代码、结构化语言(接近代码,无语法)
3. 人机交互(界面)设计
- 三大黄金原则:用户控制、减轻记忆负担、界面一致
- 输入设计4原则:输入最少、操作简单、尽早验证、少数据转换
- 输出设计:格式适配(报表/屏幕/打印)、数据准确、可读性强
- 原型设计:低保真(线框图)、高保真(视觉稿),快速验证需求
4. 代码设计
- 编码原则:唯一性、标准化、可扩展、易维护
- 分类方法:线分类法(层级树形,如行政区划)、面分类法(多维度,如商品:品类+颜色+尺码)
5. 系统安全与可靠性设计
- 安全:身份认证(JWT/OAuth2.0)、授权、加密(AES/RSA)、防注入、日志审计
- 可靠性:冗余设计、容错、故障转移、平均无故障时间(MTBF)、平均修复时间(MTTR)
五、面向对象设计(OOD):6大原则+23种设计模式(案例必考)
1. 6大设计原则(必背,案例匹配)
- 单一职责:一个类/模块只负责一个功能
- 开放-封闭:对扩展开放,对修改封闭(核心)
- 里氏替换:子类可完全替换父类,不破坏功能
- 依赖倒置:依赖抽象(接口/抽象类),不依赖具体实现
- 接口隔离:用多个专门接口,不用臃肿总接口
- 迪米特(最少知识):模块只与直接朋友交互,减少关联
2. 23种设计模式(分类+核心,案例高频匹配)
(1)创建型(5种:对象创建)(原工够抽单)
- 单例(唯一实例)、工厂方法(创建对象不暴露逻辑)、抽象工厂(一组相关对象)、建造者(复杂对象组装)、原型(克隆复制)
(2)结构型(7种:类/对象组合)(abcdfp)
- 适配器(兼容不同接口)、桥接(分离抽象与实现)、组合(整体-部分层级)、装饰(动态增强功能)、外观(统一复杂子系统接口)、享元(共享对象减少开销)、代理(控制对象访问)
(3)行为型(11种:对象间通信/职责)
- 观察者(一对多通知)、策略(算法切换)、模板方法(固定流程、子类实现细节)、职责链(请求依次传递)、命令(封装请求)、迭代器(遍历集合)、中介者(解耦多对象交互)、备忘录(保存/恢复状态)、状态(状态改变行为变)、解释器(解析特定语法)、访问者(不修改类添加新操作)
六、系统设计文档与评审
1. 核心输出文档
- 《系统设计说明书》(核心):架构、模块、数据、接口、部署、安全设计
- 数据库设计文档(ER图、表结构、索引)
- 界面原型、接口规范、测试设计说明
2. 设计评审
- 目的:发现缺陷、验证合规、确认可实现、降低风险
- 内容:完整性、一致性、可行性、可维护性、安全性、性能
七、高频考点与应试技巧
1. 选择题高频
- 内聚/耦合排序与概念区分
- 架构风格适用场景、优缺点
- 设计原则、设计模式定义匹配
- 数据库范式、流程工具辨析
2. 案例分析高频
- 架构选型(给出场景选架构+理由)
- 数据库设计(画ER图、转表、范式应用、优化)
- 设计模式匹配(识别场景对应模式+作用)
- 高并发/安全/可靠性方案设计
3. 论文高频主题
- 微服务架构设计实践
- 高可用分布式系统设计
- 数据库优化与设计
- 面向对象设计与模式应用
八、易混淆点对比(必记)
- 概要设计 vs 详细设计:前者定整体架构、模块划分;后者定内部逻辑、表结构、界面细节
- C/S vs B/S:C/S客户端安装、响应快;B/S跨平台、零安装、维护简单
- 三层架构 vs MVC:三层是纵向分层(表示/业务/数据);MVC是界面层拆分(模型/视图/控制器)
- 耦合 vs 内聚:耦合看模块间关系(越低越好);内聚看模块内部(越高越好)