
《系统架构设计师》第5章 软件工程基础知识 系统总结本章是架构师考试的核心模块之一分值占比约12-19分综合知识案例分析题也频繁涉及。以下按教材原章节结构逐节梳理。5.1 软件工程概述核心概念概念要点软件工程定义将系统化、规范化、可量化的方法应用于软件开发、运行和维护并对这些方法进行研究软件工程三要素方法、工具、过程教材原话高频考点核心目标在给定时间/成本内交付具有正确性、可靠性、可维护性等质量属性的产品软件生命周期软件从产生到废弃的全过程标准划分为六个阶段可行性分析与计划- 确定项目是否值得做需求分析- 确定做什么产出《需求规格说明书》设计阶段- 概要设计架构设计 详细设计编码实现- 代码编写测试- 验证质量运行与维护- 交付后持续活动理解记忆“可需设编测维”口诀可惜设备测绘常见考查形式选择题软件工程三要素判断注意文档是产物不是核心要素选择题生命周期各阶段任务对应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维度内容核心特征用例驱动、以架构为中心、迭代增量四个阶段初始阶段确定范围→ 细化阶段确立架构→ 构造阶段产品构建→ 移交阶段交付部署41视图逻辑视图、开发视图、过程视图、物理视图 场景用例视图高频考点41视图各视图的关注点选择题逻辑视图功能、类、对象开发视图代码组织、模块、包、分层过程视图并发、线程、性能物理视图硬件部署、拓扑结构场景驱动、验证5.2.7 喷泉模型面向对象的软件过程模型具有迭代性和无间隙性各阶段重叠支持复用。5.2.8 净室软件工程基于数学理论函数理论和抽样理论追求零缺陷或接近零缺陷强调正确性验证而非传统模块测试。缺点理论性强、数学要求高、正确性验证耗时、普通工程师需要加强训练。5.2.9 基于构件的软件工程CBSE维度内容核心理念“购买而不是重新构造”强调通过可复用构件组装系统构件特征可组装性、可部署性、文档化、独立性、标准化5个特征组装方式顺序组装、层次组装、叠加组装主要活动需求概览→识别候选构件→修改需求→架构设计→构件定制适配→组装创建系统5.2.10 形式化方法模型建立在严格数学基础上的软件开发方法主要活动是生成计算机软件形式化的数学规格说明。高频考点速查表模型名称核心关键词看到这些词就选它适用场景瀑布模型线性、文档驱动、需求冻结需求明确、二次开发原型模型快速原型、用户参与、抛弃/演化需求不明确螺旋模型风险分析最重要关键词大型、复杂、高风险增量模型拼图、分批交付、第一个可运行需尽早使用系统RUP用例驱动、架构中心、4阶段复杂企业级应用XP结对编程、TDD、重构需求模糊、小团队Scrum冲刺、Backlog、站会需求模糊、管理聚焦常见考查形式选择题给场景判断最适合的开发模型每年必考案例分析题项目陷入困境分析问题原因并给出改进建议考试技巧看到“风险”关键词 → 选螺旋模型看到“需求明确” → 选瀑布看到“需求多变、小步快跑” → 选敏捷/Scrum5.3 需求工程核心概念需求工程是一系列与需求相关的活动核心目标是明确“软件要做什么”。需求分类高频考点需求类型定义示例功能需求系统“做什么”的具体功能用户登录、数据导出Excel非功能需求“做得怎么样”的质量约束响应时间≤2秒、年停机≤8小时约束需求技术选型、环境等限制必须基于Java开发易错点非功能需求包括性能、安全性、可靠性、可用性、可维护性、可移植性需求工程核心活动需求获取访谈、问卷调查、原型法、观察需求分析建模用例图、数据流图等消除歧义需求规格说明编写SRS软件需求规格说明书需求验证评审、原型验证确认完整性、一致性需求变更管理流程申请→评审→批准→实施→验证需求追踪建立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中涵盖补充以下要点构件定义与特征构件是一个独立分发和部署的单元通过接口对外提供服务。三个必须记住的特征自包含与独立性可独立部署不可拆分的部署单元作为整体安装没有外部可见状态外部黑盒通过接口交互构件组装类型顺序组装构件按顺序调用层次组装构件形成层次结构叠加组装在已有构件上叠加新功能常见考查形式选择题构件特征判断案例分析题构件复用方案5.7 软件项目管理核心管理领域管理领域核心内容进度管理WBS、PERT/CPM、Gantt图配置管理版本控制、变更控制、配置审计质量管理质量计划、质量保证、质量控制风险管理识别、分析、应对、监控进度管理关键计算PERT三点估算法公式关键路径法CPM关键路径项目中最长的路径决定总工期总时差 关键路径工期 - 包含该作业的路径工期总时差 该作业可以延迟而不影响总工期的时间软件能力成熟度模型CMMI等级名称特征1级初始级过程无序依赖个人能力2级已管理级过程为项目服务有基本规范3级已定义级过程为组织服务标准化4级定量管理级过程可度量、可监控5级优化级持续改进数据驱动记忆口诀“初重定管优”初级→重复→定义→管理→优化常见考查形式选择题CMMI等级判断、关键路径计算案例分析题项目延误分析、配置管理问题附本章应试要点汇总考试频率分布章节内容分值占比软件工程整体12-19分综合知识其中开发模型2-3分需求工程约2分系统分析与设计2-3分案例题高频命题角度项目陷入困境需求不明确却用瀑布模型 → 建议改用敏捷/原型架构质量问题用41视图分析架构合理性测试策略根据项目特点设计测试方案论文题可能主题“论敏捷开发在××项目中的应用”“软件架构设计与软件质量保证”“论软件过程改进”理解与记忆方法汇总内容记忆方法开发模型选择口诀场景对应表软件生命周期“可需设编测维”41视图功能→逻辑代码→开发并发→过程硬件→物理CMMI等级“初重定管优”测试级别单元测代码(详设)集成测接口(概设)确认测需求系统测环境α/β测试α在A(开发者现场)β拜拜(用户现场)易错点提醒❌ 文档是软件工程核心要素 → ✅ 三要素是方法、工具、过程❌ 敏捷开发无文档 → ✅ 敏捷是“轻文档”不是“无文档”❌ 非功能需求不重要 → ✅ 架构师最应关注非功能需求❌ 增量模型迭代模型 → ✅ 增量是加法迭代是升级❌ α测试在用户现场 → ✅ α在开发方β在用户方