软件工程与面向对象
大约 9 分钟
软件工程与面向对象
快拿分:生命周期模型对比、内聚耦合高低序、测试方法与覆盖关系、UML 关系(尤其聚合/组合、include/extend)、GoF 模式英文+意图、CMMI 等级——上午分值大户,背诵性价比最高。
一、知识与应试(考点·难点·知识点合一)
1.1 过程与需求
- 模型:瀑布、原型、螺旋(风险)、增量、敏捷(Scrum:PO、SM、Sprint、Backlog)。
- 需求:功能/非功能;追溯矩阵链需求-设计-测试。
- 〔真题〕:敏捷宣言四条与「合同谈判、详尽文档」对比。
1.2 结构化与模块化
- DFD + 数据字典(与下午第一题呼应)。
- 内聚:由低到高(偶然→逻辑→时间→过程→通信→顺序→功能)。
- 耦合:由强到弱(内容→公共→外部→控制→标记→数据→无直接)。
- 〔易错〕:「内容耦合」最强,不是数据耦合。
1.3 面向对象与 UML
- OO 特征:封装、继承、多态(+ 抽象)。
- 用例图:
<<include>>必执行复用;<<extend>>条件扩展。 - 类图:依赖 < 关联 < 聚合 < 组合;泛化与实现。
- 顺序图:同步实线三角、异步开口箭头;
opt/alt/loop。 - 〔难点〕:组合部分生命周期随整体;聚合可独立存在。
1.3.1 UML 关系符号与判题关键词
| 关系 | 图形记忆 | 题干关键词 | 易错点 |
|---|---|---|---|
| 依赖 | 虚线箭头 | 临时使用、参数、局部变量 | 强度最弱 |
| 关联 | 实线 | 长期知道/拥有引用 | 不等于整体-部分 |
| 聚合 | 空心菱形 | 整体-部分,部分可独立 | 菱形在整体端 |
| 组合 | 实心菱形 | 同生共死,整体销毁部分也销毁 | 生命周期绑定 |
| 泛化 | 空心三角实线 | 继承、is-a | 子类指向父类 |
| 实现 | 空心三角虚线 | 实现接口 | 类指向接口 |
1.3.2 include / extend 判题
| 关系 | 使用条件 | 箭头方向 | 典型表达 |
|---|---|---|---|
<<include>> | 多个用例抽取公共必经步骤 | 基本用例 → 被包含用例 | “必须”“每次都要”“公共行为” |
<<extend>> | 某条件下可选扩展行为 | 扩展用例 → 基本用例 | “可选”“有时”“若…则…” |
注意写作是 extend,不是 exclude。题目若写“根据不同场景可能发生分支”,通常优先考虑扩展关系。
1.4 设计原则与模式
- SOLID:单一职责、开闭、里氏替换、接口隔离、依赖倒置——题干「对扩展开放」→开闭;「依赖抽象」→DIP。
- GoF:创建型(单例、工厂族)、结构型(适配、装饰、外观、代理)、行为型(策略、模板方法、观察者、状态、命令…)。上午常考 意图匹配 与 类图认模式。
1.5 测试与质量
- 测试级别:单元、集成、确认、系统。
- 黑盒:等价类、边界值、判定表;白盒:语句、判定、条件、路径覆盖强弱。
- McCabe:(V(G)=E-N+2)(环路复杂度)。
- CMMI:5 级名称顺序;ISO/IEC 25010 质量特性大类。
1.6 维护、配置与风险
- 维护:改正性、适应性、完善性、预防性——按现象选类型。
- 配置管理:版本、基线、变更、CCB。
- 风险应对:规避、转移、减轻、接受。
二、速记与背诵
- include 必 include,extend 可 extend(谐音:包含必执行,扩展看条件)。
- 内聚高好、耦合低好;功能内聚最好,内容耦合最坏。
- 观察者:一多依赖通知;策略:算法互换;模板方法:骨架固定子类改步骤。
三、下午关联
- UML 细部与模式选型见 UML与设计模式。
四、考场检查
- 用例关系:别把 泛化(actor 或 use case 继承) 与 extend/include 混选。
- 模式题:选项里类名
Context/Strategy等直接指向策略模式。