Appearance
考点清单
- [x] CMMI 5 级阶段式表示
- [x] 内聚性排序(7 级从高到低)
- [x] DFD 4 元素 + 3 种逻辑符号
- [x] 逆向工程 4 级别(实现→结构→功能→领域)
- [x] 测试覆盖关系(条件覆盖 ⊅ 判断覆盖)
- [x] RUP 4 阶段 + 用例驱动
- [x] 设计模式 3 大类分类
- [x] 软件复用(横向 vs 纵向)
- [x] 4+1 视图模型
- [x] 净室软件工程(正确性验证 + 统计测试)
- [x] 需求跟踪(正向 vs 逆向)
- [x] 软件维护 4 类型
- [x] 软件产品线双生命周期
- [x] SysML 需求图 vs UML 用例图
笔记
一、内聚性排序(高→低)★
功能内聚 > 顺序内聚 > 通信内聚 > 过程内聚 > 时间内聚 > 逻辑内聚 > 偶然内聚
二、DFD 数据流图
4 种基本元素:外部实体、加工(处理)、数据存储、数据流。
3 种逻辑符号:
| 符号 | 含义 |
|---|---|
| ⊕ | 异或(互斥产生,不能同时) |
| + | 与(同时产生) |
| *** ** | 或(至少产生一个) |
DFD 加工 3 种逻辑错误:黑洞(只有输入无输出)、奇迹(只有输出无输入)、灰洞(输入不足以产生输出)。
平衡原则:子图输入输出数据流必须与父图对应加工保持一致。
DFD 用于建立功能模型;E-R 图用于建立数据模型。
三、逆向工程 4 级别
| 级别 | 内容 | 特点 |
|---|---|---|
| 实现级 | 语法/源代码 | 可完全自动(反编译) |
| 结构级 | 程序结构(模块/调用关系) | 自动变换得到 |
| 功能级 | 计算逻辑 | 需用户指导 |
| 领域级 | 业务语义 | 需专家规则 |
用户指导下的搜索与变换方法可导出功能级和领域级。
四、测试覆盖关系 ★
条件覆盖与判断覆盖互不包含(经典反例:A∨B 仅两个条件真值即可满足条件覆盖,但均使判断为真,未覆盖假分支)。
覆盖强度:路径覆盖 > 条件/判定覆盖 > 判定覆盖 ? 条件覆盖 > 语句覆盖(最弱)。
| 覆盖方法 | 关注点 |
|---|---|
| 语句覆盖 | 每条语句至少执行一次(最弱) |
| 判断覆盖 | 每个判断真/假至少各一次 |
| 条件覆盖 | 每个条件真/假至少各一次 |
| 条件/判定组合覆盖 | 每个条件真/假 + 整个判定真/假 |
| 路径覆盖 | 所有可能执行路径(最强,难以实现) |
五、设计模式 3 大类速记
| 类型 | 核心目的 | 常见模式 |
|---|---|---|
| 创建型 | 对象创建机制,隐藏创建细节 | 单例、工厂方法、抽象工厂、建造者、原型 |
| 结构型 | 类/对象组合成更大结构 | 适配器、桥接、组合、装饰、代理、外观、享元 |
| 行为型 | 对象间职责分配和通信 | 观察者、策略、命令、解释器、迭代器、模板方法、状态、责任链、中介者、备忘录、访问者 |
装饰模式 = 结构型(非行为型);观察者 = 行为型(非结构型);原型 = 创建型。
六、RUP 统一软件开发过程 ★
4 阶段:初始(确定范围)→ 细化(设计体系结构、制订计划)→ 构造(构建产品)→ 移交(交付)。
核心特征:用例驱动。
七、软件复用
| 类型 | 说明 | 速记 |
|---|---|---|
| 横向重用 | 跨不同应用领域重用通用元素(算法、数据结构、UI组件) | "横向跨行业" |
| 纵向重用 | 同一应用领域内重用特定业务组件或领域模型 | "纵向同一域" |
软件产品线双生命周期:领域工程(共性资产开发)+ 应用工程(个性系统组装)。
软件架构复用过程:开发可复用资产 → 管理可复用资产 → 使用可复用资产。
八、4+1 视图模型 ★
| 视图 | 关注点 |
|---|---|
| 逻辑视图 | 功能需求(类、模块、关系) |
| 开发视图 | 静态组织结构(包、库、依赖管理) |
| 进程视图 | 并发、同步、通信(运行时行为) |
| 物理视图 | 软件到硬件映射(节点、网络连接) |
| 场景视图 | 用例串联其他视图 |
"用例视图"非标准说法,标准为"场景"通过用例体现。
九、软件维护 4 类型
| 类型 | 内容 |
|---|---|
| 改正性维护 | 修复发现的错误或缺陷 |
| 适应性维护 | 适应变化的外部环境(新 OS、新硬件) |
| 完善性维护 | 响应用户新需求,扩充功能或提升性能效率 |
| 预防性维护 | 改进未来可维护性或可靠性 |
十、其他速记要点
| 知识点 | 速记 |
|---|---|
| CMMI 5 级 | 初始→已管理→已定义→量化管理→优化 |
| 单元测试依据 | 详细设计("单元看详设,模块看概设") |
| 系统测试依据 | 需求分析("系统测需求,单元测编码") |
| 螺旋模型核心 | 强调风险分析,每个迭代含风险评估 |
| Scrum Backlog 排序 | 依据商业价值 |
| 净室软件工程 | 形式化方法正确性验证 + 统计测试 |
| 需求跟踪 | 正向:需求→后续;逆向:后续→需求 |
| SysML 需求图 | 7 种关系:包含/扩展/泛化/跟踪/复制/满足/验证 |
| 结构化分析核心 | 面向数据流 |
| UML 参与者的关系 | 只能泛化(继承),用例才能包扩(包含+扩展) |
| AB 测试 | 同时段、同特征用户、随机分组、对比不同版本 |
十一、UML 用例关系
| 关系 | 适用对象 |
|---|---|
包含 <<include>> | 用例之间(必选) |
扩展 <<extend>> | 用例之间(可选) |
| 泛化 | 参与者之间 / 用例之间 |
聚合是类图关系,不属于用例模型。
十二、数据驱动测试
核心思想:测试数据与测试脚本分离,数据存储在外部文件(CSV、Excel、XML),脚本从文件读取数据。