(案例)(第十三章)软考系统分析师「系统设计」核心知识梳理

软考系统分析师:系统设计核心知识梳理(备考版)

系统设计是软考系统分析师的核心考点,覆盖综合知识(选择题)、案例分析(简答题)、论文写作三大题型,核心是将系统分析的"逻辑模型"转化为可落地的"物理技术方案",解决"怎么做"的问题。以下按考点层级、必背概念、核心模块、设计原则、高频考点全面梳理,适配应试记忆。

系统设计 包含 软件架构设计。

系统设计 = 整体设计(大圈)

软件架构设计 = 系统设计里最核心、最顶层的那一部分(小圈)

详细区别(软考必背)

  1. 范围不一样
    系统设计
    范围最大,覆盖整个系统从宏观到微观:
    架构、模块、接口、数据库、界面、代码、部署、安全...... 全都管。
    软件架构设计
    只管顶层结构:
    用什么架构风格(分层、微服务、C/S、B/S...)、模块怎么划分、组件怎么交互。
  2. 阶段不一样(软考常考)
    系统设计分为两大阶段:
    概要设计(总体设计)
    → 软件架构设计就在这里!
    详细设计
    → 模块内部逻辑、数据库表、界面、算法...
    所以:
    架构设计 = 概要设计的核心内容
    系统设计 = 概要设计 + 详细设计
  • SA、OOA → 系统分析阶段(需求分析)
  • SD、OOD → 系统设计阶段(概要设计 + 详细设计)
  1. SA(Structured Analysis)
    结构化分析
    → 属于:系统分析 / 需求分析
    → 工具:DFD、数据字典
  2. SD(Structured Design)
    结构化设计
    → 属于:系统设计(概要设计(包含架构设计) + 详细设计)
    → 工具:SC 结构图、结构图、高内聚低耦合
  3. OOA(Object-Oriented Analysis)
    面向对象分析
    → 属于:系统分析 / 需求分析
    → 工具:用例图、类图初步
  4. OOD(Object-Oriented Design)
    面向对象设计
    → 属于:系统设计(概要设计(包含架构设计) + 详细设计)
    → 工具:类图、时序图、活动图、状态图

一、系统设计基础(定义、目标、阶段划分)

1. 核心定义与目标

  • 定义:衔接需求分析与系统实现,将需求规格说明书转化为系统架构、模块、数据、接口、部署的技术方案,是软件工程"需求→设计→编码→测试"的关键环节。
  • 核心目标 :满足功能性需求 (业务流程、功能实现)+非功能性需求(性能、安全、可扩展、可靠、易用),输出《系统设计说明书》作为开发、测试、验收依据。

2. 两阶段划分(必背区分,选择题/案例高频)

阶段 别称 核心任务 输出物 考点区分
概要设计(总体设计) 架构设计 宏观规划:系统架构选型、模块划分、接口定义、网络/硬件部署、数据存储总体方案 系统结构图(SC)、架构文档、部署方案 关注"整体、宏观、技术选型"
详细设计 过程设计 微观细化:模块内部逻辑、数据库表结构、界面细节、算法、代码规范、输入输出设计 流程图/PAD图、表结构、界面原型、伪代码 关注"局部、细节、实现逻辑"

3. 核心设计原理(黄金法则)

  • 模块化:将系统拆分为独立、可复用、功能单一的模块,降低复杂度。
  • 高内聚、低耦合:模块内部元素关联紧密(内聚),模块间依赖最少(耦合),是设计优劣的核心标准。

二、结构化设计:内聚与耦合(必考排序+概念)

1. 耦合(模块间依赖程度,从低到高排序)

记忆口诀:非数标控外公内(越低越好,选择题必排序)

  1. 无直接耦合:模块间无关联、不传递信息(最优)
  2. 数据耦合:传递简单数据值(如整数、字符串,推荐)
  3. 标记耦合:传递数据结构(如记录、对象,次优)
  4. 控制耦合:传递控制变量(如开关、标志,需优化)
  5. 外部耦合:依赖外部全局变量/硬件接口(较差)
  6. 公共耦合:共享全局数据区(如全局变量,风险高)
  7. 内容耦合:直接访问另一模块内部数据/代码(最差,严禁)

2. 内聚(模块内部关联程度,从低到高排序)

记忆口诀:偶逻过通信顺功(越高越好)

  1. 偶然内聚:元素无关联,仅偶然放在一起(最差)
  2. 逻辑内聚:逻辑相似但功能无关(如"输入/输出模块")
  3. 过程内聚:按固定顺序执行(如"登录→验证→跳转")
  4. 通信内聚:使用同一输入/输出数据(如"读取文件→处理文件")
  5. 顺序内聚:前一模块输出是后一输入(强关联)
  6. 功能内聚:所有元素完成单一功能(最优,推荐)

三、系统架构设计(总体设计核心,案例/论文高频)

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大设计原则(必背,案例匹配)

  1. 单一职责:一个类/模块只负责一个功能
  2. 开放-封闭:对扩展开放,对修改封闭(核心)
  3. 里氏替换:子类可完全替换父类,不破坏功能
  4. 依赖倒置:依赖抽象(接口/抽象类),不依赖具体实现
  5. 接口隔离:用多个专门接口,不用臃肿总接口
  6. 迪米特(最少知识):模块只与直接朋友交互,减少关联

2. 23种设计模式(分类+核心,案例高频匹配)

(1)创建型(5种:对象创建)(原工够抽单
  • 单例(唯一实例)、工厂方法(创建对象不暴露逻辑)、抽象工厂(一组相关对象)、建造者(复杂对象组装)、原型(克隆复制)
(2)结构型(7种:类/对象组合)(abcdfp
  • 适配器(兼容不同接口)、桥接(分离抽象与实现)、组合(整体-部分层级)、装饰(动态增强功能)、外观(统一复杂子系统接口)、享元(共享对象减少开销)、代理(控制对象访问)
(3)行为型(11种:对象间通信/职责)
  • 观察者(一对多通知)、策略(算法切换)、模板方法(固定流程、子类实现细节)、职责链(请求依次传递)、命令(封装请求)、迭代器(遍历集合)、中介者(解耦多对象交互)、备忘录(保存/恢复状态)、状态(状态改变行为变)、解释器(解析特定语法)、访问者(不修改类添加新操作)

六、系统设计文档与评审

1. 核心输出文档

  • 《系统设计说明书》(核心):架构、模块、数据、接口、部署、安全设计
  • 数据库设计文档(ER图、表结构、索引)
  • 界面原型、接口规范、测试设计说明

2. 设计评审

  • 目的:发现缺陷、验证合规、确认可实现、降低风险
  • 内容:完整性、一致性、可行性、可维护性、安全性、性能

七、高频考点与应试技巧

1. 选择题高频

  • 内聚/耦合排序与概念区分
  • 架构风格适用场景、优缺点
  • 设计原则、设计模式定义匹配
  • 数据库范式、流程工具辨析

2. 案例分析高频

  • 架构选型(给出场景选架构+理由)
  • 数据库设计(画ER图、转表、范式应用、优化)
  • 设计模式匹配(识别场景对应模式+作用)
  • 高并发/安全/可靠性方案设计

3. 论文高频主题

  • 微服务架构设计实践
  • 高可用分布式系统设计
  • 数据库优化与设计
  • 面向对象设计与模式应用

八、易混淆点对比(必记)

  1. 概要设计 vs 详细设计:前者定整体架构、模块划分;后者定内部逻辑、表结构、界面细节
  2. C/S vs B/S:C/S客户端安装、响应快;B/S跨平台、零安装、维护简单
  3. 三层架构 vs MVC:三层是纵向分层(表示/业务/数据);MVC是界面层拆分(模型/视图/控制器)
  4. 耦合 vs 内聚:耦合看模块间关系(越低越好);内聚看模块内部(越高越好)
相关推荐
magic_now1 天前
智能网联汽车边缘媒体处理系统架构设计
系统架构·ffmpeg·汽车·音视频·媒体
网络风云2 天前
软考系统架构设计师论文评分标准解析
系统架构
牵牛老人2 天前
CAN通讯实战:Qt基于周立功 USBCAN 的 CAN 总线通信开发全攻略
网络·qt·系统架构
大迪deblog2 天前
软件工程-④测试
系统架构·软件工程
大迪deblog2 天前
软件工程-③结构化分析与设计
系统架构·软件工程
一切皆是因缘际会2 天前
2026年AGI突围:自主智能体驱动,数字生命从架构落地到自我迭代全解析
人工智能·深度学习·机器学习·架构·系统架构·agi
大迪deblog2 天前
软件工程-⑥面向对象
系统架构·软件工程
大迪deblog2 天前
软件工程-②需求工程
系统架构·软件工程
大迪deblog2 天前
软件工程-⑤系统运行与维护
系统架构·软件工程