系统集成项目管理工程师第五章:软件工程核心笔记(精简版)
一、软件工程基础:核心定义与需求层
1. 软件工程三要素
- 组成:方法(解决问题的技术)、工具(支撑技术的软件/硬件)、过程(规范步骤)
- 目标:降本增效(提质量、升效率、降成本)
2. 需求三层级(高频考点)
层级 | 核心关键词 | 来源/示例 |
---|
业务需求 | 高层目标 | 投资人/客户管理(如“软考办吸引更多考生”) |
用户需求 | 具体任务 | 终端用户(如“考生考取45分通过”) |
系统需求 | 功能+非功能+约束 | 开发限制(功能:直播课回放;非功能:安全性;约束:资金) |
3. 质量功能部署(QFD):三类需求
- 常规需求:用户明确要求
- 期望需求:用户默认应有但说不清
- 意外需求(兴奋需求):超出预期
二、需求获取与分析:方法与模型
1. 需求获取方法
- 常用:用户访谈、问卷调查、采样、情节串联板(故事版)、联合需求计划
- 核心要求:需求需满足无歧义、完整、一致、可测试、可跟踪
2. 结构化分析模型(3大模型+口诀)
模型类型 | 工具 | 核心用途 | 记忆口诀 |
---|
行为模型 | 状态转换图(STD) | 描述对象状态变化(如订单“未下单→已结账”) | 形态S |
数据模型 | 实体联系图(ER图) | 展示实体关系(如“顾客-下单-订单”) | 属实R |
功能模型 | 数据流图(DFD) | 呈现业务流程(如“点菜→炒菜→上菜”) | 能流F |
DFD建模步骤:标顶分发查(明确目标→建顶层图→分一层图→开发层次图→检查)
3. 面向对象分析(OOA)
- 核心特性:抽象(过程+数据,如“教师授课”无需知备课细节)、封装(隐藏内部,暴露接口)、继承(子类获父类属性/服务,如“高级讲师”继承“讲师”)、多态
- OOD设计原则:
- 单职原则:一个类仅一个变化原因(如“打包”“派件”分属不同类)
- 开闭原则:对扩展开放,对修改封闭(如“房子加盖楼层不换地基”)
- 里氏替换原则:子类可替换父类,不改父类功能
- 依赖倒置原则:依赖抽象(接口),不依赖具体实现(如“点外卖不关心做饭过程”)
- 类设计分类:实体类(有属性,永久存储,如“学生档案”)、控制类(有方法,协调流程)、边界类(有属性+方法,交互媒介,如“API接口”)
三、结构化设计:高内聚低耦合
1. 核心原则
- 模块化:系统拆分为独立模块(如“采购模块”“销售模块”)
- 信息隐藏:模块像黑盒,外部仅知功能,不知内部实现
- 模块独立性:三大属性(功能:做什么;逻辑:怎么做;状态:运行条件)
2. 耦合与内聚(必考!)
类型 | 核心定义 | 等级排序(从优到差) | 记忆口诀 |
---|
耦合(模块间联系) | 模块间紧密程度,越低越好 | 非直接→数据→标记→控制→通信→公共→内容 | 非书记致信宫内 |
内聚(模块内联系) | 模块内紧密程度,越高越好 | 功能→顺序→通信→过程→时间→逻辑→偶然 | 恭顺通过失落哦 |
3. 系统结构图(SC)与详细设计工具
- SC:概要设计工具,修改需经项目经理同意
- 详细设计工具:
- 图形工具:程序流程图(方框=步骤,菱形=条件)、PAD图(树形,支持递归)、NS图(强制结构化)
- 语言工具:PDL(伪码,可插注释、自动生成代码)
四、UML统一建模语言(高频考点)
1. 核心认知:UML是建模语言,非编程语言
2. 四类事物与四种关系
- 事物:结构事物(类、对象)、行为事物(活动、状态)、分组事物(包)、注释事物(说明)
- 关系:
- 依赖:一个变化影响另一个(如“对象变心影响关系”)
- 关联:对象间结构连接(如“师生关系”)
- 泛化:子类替换父类(“子替父”,可扩展不修改)
- 实现:类保证执行另一类契约(“证实”)
3. UML视图与图分类
- 五大视图(口诀:逻辑进行实构部分用机):
逻辑视图(设计框架)、进程视图(并行执行)、实现视图(代码建模)、部署视图(软硬件映射)、用例视图(基础需求) - 动态行为图-交互图(口诀:交通顺时):
交互概览图、通信图(原协作图)、顺序图(时间次序)、定时图(实际时间)
五、设计模式:三类核心分类
分类维度 | 类型 | 核心功能 | 包含模式与记忆口诀 |
---|
处理范围 | 类模式 | 类与子类静态关系 | 静类动向(类静、对象动) |
| 对象模式 | 对象间动态关系 | |
目的用途 | 创建型模式 | 创建对象 | 工厂方法、单例等;口诀“创建例行工厂” |
| 结构型模式 | 类/对象组合 | 适配器、代理等;口诀“结构想外装适合接待” |
| 行为型模式 | 类/对象交互与职责分配 | 职责链、命令等(排除法记忆) |
六、软件测试:方法与类型
1. 测试方法对比
类型 | 核心特征 | 适用场景 | 记忆口诀 |
---|
静态测试 | 不运行代码,查文档/代码 | 桌面检查、代码走查 | 静文待查 |
动态测试 | 运行代码 | 单元/集成/系统测试 | |
- 白盒测试 | 知内部结构(透明) | 单元测试(如“验证2+2=4实现”) | 白结单全留意 |
- 黑盒测试 | 不知内部,仅验功能 | 集成/确认/系统测试 | 反推(非白盒即黑盒) |
2. 测试类型及依据(口诀:单项机盖配S)
测试类型 | 测试对象 | 技术依据 |
---|
单元测试 | 独立模块(类/构件) | 软件详细设计说明书 |
集成测试 | 组装后的多个模块 | 软件概要设计文档 |
确认测试 | 软件整体 | 用户需求规格说明 |
系统测试 | 完整计算机系统 | 系统需求规格说明(重点:功能+性能) |
回归测试 | 变更后的软件 | -(验证变更与原有功能) |
七、软件部署:模式与技术
1. 三大部署模式
模式 | 适用场景 | 核心特点 |
---|
单机部署 | 个人软件(微信/抖音) | 访问量<500人,硬件要求低 |
集中式部署 | 中小型组织(高校平台) | 单服务器承载,崩溃即瘫痪 |
微服务部署 | 高并发应用(云原生) | 容器支撑(Docker/K8s),故障隔离、弹性扩展 |
2. 关键部署技术
- 容器技术:轻量、环境隔离(如“饭盒隔间防串味”),代表方案K8s+Docker
- 特殊部署:
- 蓝绿部署:新旧版本并行,域名切换(零停机,快速回滚)
- 金丝雀部署:先5%-10%用户试新,逐步全量(降低风险)
- 完整镜像部署三阶段:Build(打包RPM/Jar)→Ship(装依赖)→Run(启环境)
八、软件质量管理与过程能力成熟度
1. 质量管理核心
- 质量影响因素:改转行(修改、转移、运行)
- SQA(软件质量保证)任务:不审报(处理不合格→审计→发布报告)
- 审计范围:产品、工具、设备
- 报告原则:发软件工程组,不发项目管理人员,可向关心质量者开放
2. 软件过程能力成熟度(五级)
等级 | 核心特征 | 记忆口诀 |
---|
1. 初始级 | 结果不确定,依赖个人能力 | 1初步 |
2. 项目规范级 | 按计划执行,有基础规范 | 2轨迹 |
3. 组织改进级 | 稳定实现,持续改进 | 3改定 |
4. 量化提升级 | 统计分析,量化管理 | 4统计 |
5. 创新引领级 | 创新提升,推广最佳实践 | 5创新 |
九、备考重点总结
- 口诀优先:耦合内聚、UML交互图、测试依据等口诀直接对应考题
- 关键词对应:如“变更”→回归测试,“模块”→单元测试,“统计”→四级成熟度
- 易混点区分:业务需求(高层)vs用户需求(具体),蓝绿(全量切换)vs金丝雀(逐步推广)