软考系统分析师 · 软件工程知识全梳理(考点+应试版)
软件工程是系统分析师综合知识、案例分析的核心必考模块 (综合约8-12分,案例高频),覆盖软件生命周期、开发模型、需求/设计/测试/维护、质量与配置管理、面向对象、UML、设计模式、敏捷与DevOps等全体系。以下按考点层级结构化梳理,适配备考记忆与答题。
软件工程 = 系统规划 → 系统分析 → 系统设计 → 系统实施 → 系统运维
一、软件工程基础(概念+危机+三要素)
1. 定义与核心
- 软件工程 :将系统化、规范化、可量化 的工程方法应用于软件开发、运行、维护及方法研究。
- 目标 :解决软件危机 ,实现高质量、低成本、按时交付、易维护。
- 软件危机表现:进度失控、成本超支、质量差、需求不符、维护难、文档缺失。
2. 三大核心要素
- 方法:技术手段(结构化、面向对象、敏捷)
- 工具:CASE、IDE、测试/配置管理工具
- 过程:生命周期流程、管理规范(过程是核心)
3. 基本原则
模块化、抽象、信息隐藏、高内聚低耦合、逐步求精、可复用
二、软件生命周期与开发模型
1. 生命周期标准阶段
- 系统规划:可行性(技术/经济/操作/时间)、立项、计划
- 需求分析:SRS(需求规格说明书)、需求建模、验证
- 软件设计:架构→概要→详细设计
- 编码实现:单元测试、编码规范
- 软件测试:单元→集成→系统→验收
- 部署交付:发布、灰度/蓝绿/金丝雀
- 运行维护:纠错/适应/完善/预防性维护
2. 经典开发模型(对比表)
| 模型 | 核心特点 | 适用场景 | 优缺点 |
|---|---|---|---|
| 瀑布模型 | 线性串行、阶段明确、里程碑评审 | 需求稳定、小型项目 | 易管理;僵化、变更代价高 |
| 原型模型 | 快速原型→反馈→迭代(抛弃/演化) | 需求模糊、创新产品 | 需求明确快;易范围蔓延 |
| 螺旋模型 | 迭代+风险分析(4阶段:目标→风险→开发→评审) | 大型高风险复杂系统 | 风险可控;复杂、成本高 |
| V模型 | 测试与开发阶段对应(需求验→集测→单元测) | 重视测试、质量严格 | 测试左移;需求变更难 |
| RUP | 用例驱动、架构中心、迭代增量(4阶段9工作流) | 大中型OO项目 | 规范灵活;过程重、成本高 |
| 敏捷(Scrum/XP) | 拥抱变化、迭代增量、轻文档、人本位 | 需求多变、互联网产品 | 快响应;对团队要求高 |
| DevOps | 开发+运维一体化、CI/CD、自动化 | 云原生、持续交付 | 高效交付;文化与工具门槛高 |
三、需求工程(案例高频)
1. 需求层次
- 业务需求 (高层目标)→用户需求 (用户视角)→系统需求(功能/非功能)
- 非功能需求:性能、安全、易用、可维护、可移植、可靠性
2. 需求获取方法
用户访谈、问卷调查、场景分析、原型法、文档审查、联合需求计划(JRP)
3. 需求分析方法
- 结构化分析(SA):DFD(数据流图)、DD(数据字典)、判定表/树、E-R图
- 面向对象分析(OOA):用例模型、领域模型、类图、活动图
4. 需求规格说明书(SRS)
- 核心:完整性、一致性、无二义、可验证、可修改、可跟踪
- 需求验证:评审、测试用例设计、原型确认
- 需求变更管理:变更申请→评估→审批→实施→验证→记录(基线+配置控制)
5. 质量功能部署(QFD)
将用户需求转化为技术需求,分需求层→技术层→部件层→工艺层
四、软件设计(核心:高内聚低耦合)
1. 设计原则
- 结构化 :高内聚(功能/顺序/通信/过程/逻辑/偶然) 、低耦合(内容/公共/外部/控制/标记/数据)
- 面向对象(SOLID) :
- S:单一职责
- O:开放封闭
- L:里氏替换
- I:接口隔离
- D:依赖倒置
2. 架构设计(风格)
- 分层:表示层→业务层→数据访问层(MVC、MVVM)
- 微服务:独立部署、松耦合、API网关
- SOA:服务化、ESB、标准化接口
- 事件驱动 、客户端-服务器(C/S) 、浏览器-服务器(B/S) 、管道-过滤器
3. 详细设计
- 结构化:IPO图、流程图、PDL、程序流程图
- 面向对象:类图、对象图、时序图、协作图、状态图、活动图、组件图、部署图(UML)
4. UML(系统分析师必考)
- 静态图:类图、对象图、组件图、部署图、包图
- 动态图:用例图、时序图、协作图、状态图、活动图
- 考点:用例图(参与者/用例/包含/扩展/泛化)、时序图(消息/生命线)、类图(关联/依赖/聚合/组合)
5. 设计模式(23种GOF,高频)
- 创建型:单例、工厂方法、抽象工厂、建造者、原型
- 结构型:适配器、桥接、组合、装饰、外观、享元、代理
- 行为型:观察者、策略、命令、迭代器、模板方法、责任链
- 考点:模式意图、结构、适用场景、代码意图
五、软件实现(编码+测试)
1. 编码规范
命名、注释、风格、复用、异常处理、防御性编程
2. 软件测试(综合+案例双高频)
(1)测试级别
- 单元测试:模块内部、白盒、桩/驱动
- 集成测试:模块间接口(自顶向下/自底向上/三明治)
- 系统测试:全功能、非功能(性能/安全/压力)
- 验收测试:α(内部)、β(用户)、合同验收
(2)测试方法
- 白盒(结构):语句覆盖、判定、条件、判定-条件、路径、McCabe圈复杂度
- 黑盒(功能) :等价类、边界值(必考)、错误推测、因果图、场景法
- 静态/动态 、人工/自动化(Selenium/Appium/JMeter)
(3)测试策略
回归测试、冒烟测试、探索性测试、压力/负载/性能测试
(4)测试用例设计
核心:输入、预期输出、前置条件、步骤、覆盖项
六、软件维护(必考分类)
- 纠错性维护:修复Bug(占比约20%)
- 适应性维护:适配新环境(OS/硬件,约25%)
- 完善性维护 :功能增强/优化(约50%,占比最高)
- 预防性维护:提前优化防故障(约5%)
七、软件质量与管理
1. 质量模型(ISO 9126/25010)
- 特性:功能性、可靠性、易用性、效率、可维护性、可移植性
- 子特性:成熟性、容错性、易恢复性等
2. 软件质量保证(SQA)
- 活动:评审、审计、过程改进、标准执行、缺陷管理
- 工具:SonarQube、质量管理体系(ISO 9001、CMMI)
3. CMMI(过程能力成熟度)
5级:初始级→可重复级→已定义级→定量管理级→优化级
4. 软件配置管理(SCM)
- 核心:配置项、基线、版本控制、变更控制、配置审计
- 工具:Git、SVN、VSS、CC
八、面向对象技术(核心概念)
- 类/对象:抽象/实例
- 封装:信息隐藏、访问控制
- 继承:单/多继承、泛化
- 多态:重载、重写
- 关联/依赖/聚合/组合(UML关系)
九、敏捷与先进方法(近年热点)
1. Scrum
- 角色:PO(产品负责人)、SM(Scrum Master)、Dev Team
- 事件:Sprint(2-4周)、计划会、每日站会、评审、回顾
- 工件:产品待办、Sprint待办、增量
2. 极限编程(XP)
12实践:用户故事、测试先行(TDD)、结对编程、持续集成、简单设计、重构、小发布等
3. DevOps
CI/CD、自动化、容器(Docker)、编排(K8s)、监控、日志、微服务、云原生
十、系统分析师软件工程考点速记(应试)
综合知识(选择)高频
- 开发模型特点与适用(瀑布/V/螺旋/敏捷)
- 内聚/耦合类型判断
- UML图用途、关系(包含/扩展/聚合/组合)
- 测试方法(边界值/等价类/覆盖)、维护分类
- 设计模式意图与场景
- CMMI、SQA、SCM核心概念
- 需求层次、QFD、变更管理
案例分析高频
- 需求分析:建模(DFD/UML用例/类图)、需求问题解决
- 系统设计:架构选型、高内聚低耦合、UML建模、设计模式应用
- 测试:用例设计、测试策略、缺陷管理
- 过程管理:模型选择、配置/变更/风险管理
- 质量与维护:质量问题、维护类型、优化方案
论文常见主题
- 论软件架构设计与应用
- 论需求工程方法与实践
- 论软件测试策略与质量保证
- 论敏捷/DevOps在项目中的应用
- 论面向对象分析与设计
十一、备考建议
- 模型+UML+设计模式:必须画表对比、记关键词
- 测试:重点黑盒(边界/等价类)、白盒覆盖、测试级别
- 案例:练"问题定位→理论依据→解决方案→总结"结构
- 真题:近10年软件工程选择+案例必刷,总结答题模板