《系统架构设计师》第5章 软件工程基础知识 系统总结
2026/6/13 10:02:27 网站建设 项目流程

《系统架构设计师》第5章 软件工程基础知识 系统总结

本章是架构师考试的核心模块之一,分值占比约12-19分(综合知识),案例分析题也频繁涉及。以下按教材原章节结构逐节梳理。

5.1 软件工程概述

核心概念

概念要点
软件工程定义将系统化、规范化、可量化的方法应用于软件开发、运行和维护,并对这些方法进行研究
软件工程三要素方法、工具、过程(教材原话,高频考点)
核心目标在给定时间/成本内,交付具有正确性、可靠性、可维护性等质量属性的产品

软件生命周期

软件从产生到废弃的全过程,标准划分为六个阶段:

  1. 可行性分析与计划- 确定项目是否值得做
  2. 需求分析- 确定"做什么",产出《需求规格说明书》
  3. 设计阶段- 概要设计(架构设计)+ 详细设计
  4. 编码实现- 代码编写
  5. 测试- 验证质量
  6. 运行与维护- 交付后持续活动

理解记忆:“可需设编测维”(口诀:可惜设备测绘)

常见考查形式

  • 选择题:软件工程三要素判断(注意:文档是产物,不是核心要素)
  • 选择题:生命周期各阶段任务对应

5.2 软件过程模型(软件开发模型)

这是极高频率考点,每年必考,必须熟练掌握各模型的特点、适用场景和优缺点。

5.2.1 瀑布模型

维度内容
核心特征线性顺序、阶段依赖性、文档驱动、需求冻结
优点流程清晰、易于管理、里程碑明确
缺点需求变化适应差、风险滞后(测试阶段才发现问题代价巨大)
适用场景需求明确且稳定的项目(如军工、航天、二次开发)

5.2.2 原型模型

维度内容
核心特征快速构建原型、用户演示反馈、逐步明确需求
分类快速原型(抛弃型)、演化原型(演进为最终产品)
适用场景需求不明确、模糊的项目

5.2.3 螺旋模型

维度内容
核心特征迭代 +风险驱动,每轮包含四个象限:计划→风险分析→工程→评估
优点强调风险分析,适合大型高风险项目
缺点风险分析需要专门技术,成本高

5.2.4 增量模型 vs 迭代模型

模型特点比喻
增量模型分块开发、分块交付,每个增量是完整可运行产品拼图:一块块增加
迭代模型反复精化,每轮完成完整开发循环,功能由少到多升级:一遍遍优化

5.2.5 敏捷模型

敏捷宣言核心价值观

  • 个体和交互 > 过程和工具
  • 可工作的软件 > 面面俱到的文档
  • 客户合作 > 合同谈判
  • 响应变化 > 遵循计划

主要敏捷方法

方法核心实践侧重点
XP(极限编程)TDD(测试驱动开发)、结对编程、持续集成、重构工程实践、代码技术
ScrumProduct Backlog、Sprint(冲刺)、每日站会、评审/回顾会项目管理流程
FDD(特性驱动开发)5个核心过程,定义6种角色人+过程+技术

适用场景:需求多变、需要快速适应市场的项目(互联网产品)

5.2.6 统一过程模型(RUP)

维度内容
核心特征用例驱动、以架构为中心、迭代增量
四个阶段初始阶段(确定范围)→ 细化阶段(确立架构)→ 构造阶段(产品构建)→ 移交阶段(交付部署)
4+1视图逻辑视图、开发视图、过程视图、物理视图 + 场景(用例视图)

高频考点:4+1视图各视图的关注点(选择题)

  • 逻辑视图:功能、类、对象
  • 开发视图:代码组织、模块、包、分层
  • 过程视图:并发、线程、性能
  • 物理视图:硬件部署、拓扑结构
  • 场景:驱动、验证

5.2.7 喷泉模型

面向对象的软件过程模型,具有迭代性和无间隙性,各阶段重叠,支持复用。

5.2.8 净室软件工程

基于数学理论(函数理论)和抽样理论,追求零缺陷或接近零缺陷,强调正确性验证而非传统模块测试。

缺点:理论性强、数学要求高、正确性验证耗时、普通工程师需要加强训练。

5.2.9 基于构件的软件工程(CBSE)

维度内容
核心理念“购买而不是重新构造”,强调通过可复用构件组装系统
构件特征可组装性、可部署性、文档化、独立性、标准化(5个特征)
组装方式顺序组装、层次组装、叠加组装
主要活动需求概览→识别候选构件→修改需求→架构设计→构件定制适配→组装创建系统

5.2.10 形式化方法模型

建立在严格数学基础上的软件开发方法,主要活动是生成计算机软件形式化的数学规格说明。

高频考点速查表

模型名称核心关键词(看到这些词就选它)适用场景
瀑布模型线性、文档驱动、需求冻结需求明确、二次开发
原型模型快速原型、用户参与、抛弃/演化需求不明确
螺旋模型风险分析(最重要关键词)大型、复杂、高风险
增量模型拼图、分批交付、第一个可运行需尽早使用系统
RUP用例驱动、架构中心、4阶段复杂企业级应用
XP结对编程、TDD、重构需求模糊、小团队
Scrum冲刺、Backlog、站会需求模糊、管理聚焦

常见考查形式

  • 选择题:给场景判断最适合的开发模型(每年必考)
  • 案例分析题:项目陷入困境,分析问题原因并给出改进建议

考试技巧:看到“风险”关键词 → 选螺旋模型;看到“需求明确” → 选瀑布;看到“需求多变、小步快跑” → 选敏捷/Scrum

5.3 需求工程

核心概念

需求工程是一系列与需求相关的活动,核心目标是明确“软件要做什么”。

需求分类(高频考点)

需求类型定义示例
功能需求系统“做什么”的具体功能用户登录、数据导出Excel
非功能需求“做得怎么样”的质量约束响应时间≤2秒、年停机≤8小时
约束需求技术选型、环境等限制必须基于Java开发

易错点:非功能需求包括性能、安全性、可靠性、可用性、可维护性、可移植性

需求工程核心活动

  1. 需求获取:访谈、问卷调查、原型法、观察
  2. 需求分析:建模(用例图、数据流图等),消除歧义
  3. 需求规格说明:编写SRS(软件需求规格说明书)
  4. 需求验证:评审、原型验证,确认完整性、一致性
  5. 需求变更管理:流程:申请→评审→批准→实施→验证
  6. 需求追踪:建立RTM(需求追踪矩阵),关联需求、设计、测试用例

需求分析建模方法

方法核心工具特点
结构化分析DFD(数据流图)、数据字典、ERD、STD数据流程驱动
面向对象分析(OOA)用例图、类图、活动图、序列图对象驱动

常见考查形式

  • 选择题:判断功能需求vs非功能需求
  • 案例分析题:需求变更处理流程

5.4 软件设计

设计基本原则

原则核心含义
抽象忽略细节,关注本质特征
模块化系统分解为高内聚、低耦合的模块
信息隐藏模块内部细节对外不可见
高内聚低耦合内聚:模块内部元素关联度;耦合:模块间依赖程度

高内聚类型(由低到高):偶然内聚→逻辑内聚→时间内聚→过程内聚→通信内聚→顺序内聚→功能内聚(最佳)

低耦合类型(由低到高):无直接耦合→数据耦合→标记耦合→控制耦合→外部耦合→公共耦合→内容耦合(最差)

SOLID原则(面向对象设计)

缩写原则核心含义
S单一职责原则一个类只负责一项职责
O开闭原则对扩展开放,对修改关闭
L里氏替换原则子类必须能替换父类
I接口隔离原则多个专门接口优于一个总接口
D依赖倒置原则依赖抽象(接口),而非具体实现

记忆口诀:“S-单职,O-开闭,L-里替,I-隔离,D-倒置”

结构化设计 vs 面向对象设计

维度结构化设计面向对象设计
核心功能分解、数据流对象交互、封装/继承/多态
表示工具DFD、结构化流程图UML(类图、序列图、组件图等)

常见考查形式

  • 选择题:判断高内聚低耦合类型、SOLID原则理解
  • 案例分析题:给出类图,分析设计问题

5.5 软件测试

测试级别(从低到高)

测试级别测试对象测试依据常用方法
单元测试单个模块/类详细设计白盒测试
集成测试模块间接口概要设计自顶向下/自底向上/三明治/一次性
系统测试完整系统需求规格黑盒测试(性能、安全、压力)
验收测试用户验收合同/需求α测试(开发方现场)、β测试(用户现场)

记忆技巧:单元→集成→系统→验收,依次对应:详设→概设→需求→合同

测试方法

方法特点典型技术
白盒测试清楚内部逻辑,针对代码结构逻辑覆盖、路径覆盖
黑盒测试不考虑内部实现,针对功能等价类划分、边界值分析、因果图

软件维护类型

类型定义
改正性维护修复错误(bug修复)
适应性维护适应外部环境变化(如OS升级)
完善性维护扩充功能或改善性能
预防性维护为未来可维护性做修改

高频考点:给场景判断维护类型

常见考查形式

  • 选择题:测试方法判断、维护类型判断
  • 案例分析题:测试策略设计

5.6 基于构件的软件工程

本节核心内容已在5.2.9中涵盖,补充以下要点:

构件定义与特征

构件是一个独立分发和部署的单元,通过接口对外提供服务。

三个必须记住的特征

  1. 自包含与独立性:可独立部署
  2. 不可拆分的部署单元:作为整体安装
  3. 没有外部可见状态:外部黑盒,通过接口交互

构件组装类型

  • 顺序组装:构件按顺序调用
  • 层次组装:构件形成层次结构
  • 叠加组装:在已有构件上叠加新功能

常见考查形式

  • 选择题:构件特征判断
  • 案例分析题:构件复用方案

5.7 软件项目管理

核心管理领域

管理领域核心内容
进度管理WBS、PERT/CPM、Gantt图
配置管理版本控制、变更控制、配置审计
质量管理质量计划、质量保证、质量控制
风险管理识别、分析、应对、监控

进度管理关键计算(PERT)

三点估算法公式

关键路径法(CPM)

  • 关键路径:项目中最长的路径(决定总工期)
  • 总时差 = 关键路径工期 - 包含该作业的路径工期
  • 总时差 = 该作业可以延迟而不影响总工期的时间

软件能力成熟度模型(CMMI)

等级名称特征
1级初始级过程无序,依赖个人能力
2级已管理级过程为项目服务,有基本规范
3级已定义级过程为组织服务,标准化
4级定量管理级过程可度量、可监控
5级优化级持续改进,数据驱动

记忆口诀:“初重定管优”(初级→重复→定义→管理→优化)

常见考查形式

  • 选择题:CMMI等级判断、关键路径计算
  • 案例分析题:项目延误分析、配置管理问题

附:本章应试要点汇总

考试频率分布

章节内容分值占比
软件工程整体12-19分(综合知识)
其中:开发模型2-3分
需求工程约2分
系统分析与设计2-3分

案例题高频命题角度

  1. 项目陷入困境:需求不明确却用瀑布模型 → 建议改用敏捷/原型
  2. 架构质量问题:用4+1视图分析架构合理性
  3. 测试策略:根据项目特点设计测试方案

论文题可能主题

  • “论敏捷开发在××项目中的应用”
  • “软件架构设计与软件质量保证”
  • “论软件过程改进”

理解与记忆方法汇总

内容记忆方法
开发模型选择口诀+场景对应表
软件生命周期“可需设编测维”
4+1视图功能→逻辑,代码→开发,并发→过程,硬件→物理
CMMI等级“初重定管优”
测试级别单元测代码(详设),集成测接口(概设),确认测需求,系统测环境
α/β测试α在A(开发者现场),β拜拜(用户现场)

易错点提醒

  1. ❌ 文档是软件工程核心要素 → ✅ 三要素是:方法、工具、过程
  2. ❌ 敏捷开发无文档 → ✅ 敏捷是“轻文档”不是“无文档”
  3. ❌ 非功能需求不重要 → ✅ 架构师最应关注非功能需求
  4. ❌ 增量模型=迭代模型 → ✅ 增量是加法,迭代是升级
  5. ❌ α测试在用户现场 → ✅ α在开发方,β在用户方

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询