跳至主要內容

软件工程与面向对象


软件工程与面向对象

快拿分:生命周期模型对比、内聚耦合高低序、测试方法与覆盖关系、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(谐音:包含必执行,扩展看条件)。
  • 内聚高好、耦合低好;功能内聚最好,内容耦合最坏。
  • 观察者:一多依赖通知;策略:算法互换;模板方法:骨架固定子类改步骤。

三、下午关联

四、考场检查

  • 用例关系:别把 泛化(actor 或 use case 继承) 与 extend/include 混选。
  • 模式题:选项里类名 Context/Strategy 等直接指向策略模式