简介这份复习资料面向《UML系统分析与设计》课程学习者系统梳理关联多重度、类关系判定、交互图对比、高内聚概念、UML图功能区分、四种基本关系以及概念类识别等高频考点适用于期末备考、考研复试或考前自测查漏。资料以1份doc文档打包容量仅132KB内容紧凑可直接打开打印便于随时翻阅。文档按试题考点逐条解析不仅给出答案还详细解释原理例如客户与订单的多重度判断、顺序图与协作图在时间顺序与组织结构上的优劣比较、领域模型对软件设计的启发以及GRASP设计模式、统一过程阶段、FURPS需求分类等拓展内容。此外针对类图、用例图、交互图、SSD图等题型还配有简要的画图思路和答案要点帮助读者理解UML各图在实际项目中的使用场景而非死记硬背。目前已有404人学习下载说明该整理对同类复习需求具有参考价值。无论系统学习UML建模还是考前集中突破这份试题详解都能帮助快速理清知识脉络提升应试与设计能力。1. 别把 UML 复习教材当小说试题真正在考的是读图与建模能力打开一套《UML 系统分析与设计复习试题》不少人第一反应是「把概念背熟、把每个图的样子记住」可真到了闭卷作答选择题能蒙对简答能写几句建模题却总是拿不满分。原因是这类复习试题的命制逻辑从来不是考「你见过这张图」而是考「给你一段业务描述你能不能画出对的图再给你一张图你能不能说出它错在哪、为什么」。也就是说读图、译图、改图这三项能力才是得分主线背诵只是入场券。这套文章适合三类人期末备考但手里只有课件和真题的人准备求职笔试、需要快速把 UML 系统分析与设计知识捡起来的人以及已经画过不少图、却总在关系方向、多重度、消息箭头上被扣分的熟手。我会直接把复习试题拆成题型、考点、建模题的判分点、自测流程和常见翻车现场来写每个部分都能直接对应到你手里的那张卷子上。2. 从试题反推考点选择题与简答题的高频落点清单把复习试题整体摊开看题型结构大体是三种概念辨析类选择题、术语与区别类简答题、读图改错与建模题。我习惯先按题型反推考点而不是按章节顺序去背书因为同一考点会被不同题型反复考只是问法不一样。题型常见占分主要考什么最容易失分的位置选择题三成上下图的分类、关系辨析、符号识别把包含关系和扩展关系记反简答题两成上下图与图的区别、术语解释、建模步骤只答名词不展开场景建模题 / 读图改错四到五成根据描述画图、给图挑错关联方向、多重度、消息箭头这个比例在不同学校的卷子里会有浮动但「建模题占大头」几乎是一致的。所以复习顺序应当是先搞定选择题里的分类和关系辨析再用简答题把「区别类问题」的表达练顺最后把大部分时间留给画图。2.1 结构图与行为图选择题第一步分类选择题里最基础也最常考的是把 UML 的图分成结构图和行为图两类。结构图描述系统的静态骨架行为图描述系统在时间维度上发生了什么。常见问法是「下列哪一组全部属于结构图」或者「交互图包含哪些成员」。结构图类图、对象图、包图、组件图、部署图、复合结构图。行为图用例图、活动图、状态机图、顺序图、通信图、定时图、交互概览图。一个容易记错的地方是用例图。很多人以为用例画的是功能列表属于结构但 UML 里用例图描述的是参与者与系统之间的交互行为所以归到行为图。我的记忆习惯是「动词找行为」结构图里的元素大多是名词行为图里的元素大多含着动作或事件。选择题还喜欢考顺序图和通信图的关系。记住一句话语义等价侧重点不同。顺序图强调时间顺序通信图强调对象之间的链接关系。考试里出现「顺序图能直接转换为通信图」这种判断答案是对的。2.2 关系辨析包含、扩展、聚合、组合、同步异步选择题和简答题的共用考点是关系辨析。这些关系是 UML 里最容易翻车的地方因为名字听起来接近语义差别却很大。用例图里最常考的是包含关系和扩展关系。包含关系表示基用例执行过程中一定会用到被包含的用例它是公共的、必需的子流程画成虚线箭头从基用例指向被包含用例。扩展关系表示在某些条件下才插入的可选或异常分支画成虚线箭头从扩展用例指向基用例的扩展点。类图里最常考的是聚合和组合。聚合是整体与部分可以分开存在比如部门和员工部门没了员工还在组合是整体与部分生命周期绑定比如订单和订单项订单删了订单项没有独立存在的意义。画法上一个用空心菱形一个用实心菱形。顺序图里最常考的是同步消息、异步消息和返回消息。同步消息用实线实心箭头发送后要等对方返回异步消息用实线开放箭头发送完继续往下走返回消息用虚线箭头。选择题经常给一个箭头画法让你选它表示什么这时候只要认准「实心箭头是请求、虚线是返回、开放箭头多半是异步」就能定位。2.3 高频简答题的三段式答法简答题的题目来来去去就那么几道只是换一个图让你比较。常见的有类图和 ER 图的区别、状态图和活动图的区别、顺序图和通信图的区别、用例图和活动图在需求分析中的分工。我一般建议用三段式回答先一句话定位这张图属于哪一类、用来解决什么问题再写两点本质区别最后补一个使用场景说明什么情况下选它。比如问状态图和活动图的区别可以这样答状态图属于行为图用来描述单个对象在生命周期内的事件驱动变化核心是状态、事件和迁移活动图描述的是一段业务流程的执行顺序核心是活动、分支和并发。选型场景上描述订单从创建到完成的状态流转用状态图描述一次请假审批的流程用活动图。这个答法不需要长篇大论但每一条都踩在得分点上。阅卷时通常是按要点给分一句话定位给一分两点区别给两分场景例子再给一分比堆一段概念要稳得多。3. 建模题怎么不丢分用例图、类图、顺序图的答题顺序与判分点建模题是复习试题里的重头戏也是大多数人觉得自己「画出来了但分不高」的部分。我批过不少模拟卷发现失分往往不是因为图丑而是因为关系方向错、多重度漏标、消息箭头用错这些恰恰是阅卷时最容易被盯住的硬伤。建模题有个共性逻辑先读描述再找元素最后标关系。不管画哪种图都不要一上来就画框连线先把题干里的关键对象圈出来。下面按三种最常见的建模题分别说清楚答题顺序和判分点。3.1 用例图从需求描述里捞参与者和用例用例图的第一步是找参与者。参与者不一定是人也可以是外部系统或定时器。判断标准是它是否与系统发生直接交互。第二步是找用例题干里的动词短语基本就是候选用例命名规范是「动词宾语」比如「提交领用申请」「审批借用记录」。举个例子一段典型的建模题描述是设备管理员负责维护设备台账员工可以发起领用申请主管审批通过后由仓库管理员办理出库。这里参与者有三个设备管理员、员工、主管、仓库管理员。用例则包括维护设备台账、发起领用申请、审批申请、办理出库。画图时的判分点有三处。第一参与者画在系统边界框外面用例画在框里面边界框标识出系统名称。第二用例命名必须是动词短语写成「设备」或「台账」这类名词会被扣分。第三关系要不要标包含或扩展要谨慎只有存在公共子流程才用包含只有存在可选分支才用扩展。有一个判断包含关系的小技巧把两个用例放进去看能不能拆开。如果每个用例执行时都必经某一段那这段就是被包含用例如果某段只是偶尔走、或者走错了才触发那就是扩展用例。比如「发起领用申请」和「校验库存」之间如果每次申请都要校验库存就画成包含关系。3.2 类图名词抽类、关联方向与多重度类图建模题的来源通常和用例图是同一段描述所以第一步还是圈名词。题干里的名词都可能是候选类但要经过两轮过滤第一轮去掉纯属性类名词比如编号、日期、数量它们更适合做属性而不是类第二轮合并同名异义和同义异名的概念比如「员工」和「申请人」在同一场景里指同一类角色就要合并。过滤后得到的候选类开始画关联。关联方向是建模题里最容易被扣分的地方。我习惯用一个句式自检从 A 读到 B每个 A 对应多少个 B这句话通顺方向就对了。比如部门和员工读作「一个部门对应 1 到多个员工」关联方向就是部门指向员工多重度标在员工那端。多重度是另一个判分重点。1 表示恰好一个0..1 表示零个或一个* 表示零到多个1..* 表示一个到多个。画的时候最常见的问题是把多重度标在错误的一端或者干脆不标。我会在答题时养成习惯每条关联的两端都检查一遍先从整体端读一遍再从部分端读一遍确认语义一致。如果题干里出现了整体和部分共生死的意思比如订单删除后订单项没有意义就画组合关系实心菱形在整体端如果只是松散地归属比如部门里包含员工员工可以调岗就画聚合空心菱形。继承关系和依赖关系也要留意出现「是一种」的描述画泛化出现「临时使用」的描述画依赖。3.3 顺序图生命线、激活条、消息方向顺序图的建模题通常给一段场景描述要求画出多个对象之间的交互过程。答题顺序是先确定参与交互的对象再从上到下排生命线然后按时间顺序画消息最后检查返回消息和组合片段。消息方向的判分点主要在箭头上。同步调用画实线实心箭头返回结果画虚线箭头异步消息画实线开放箭头。很多人在返回消息上画成实心箭头一道题从第三笔开始就错了。另外消息的语义方向是从发送方指向接收方不是从接收方指向发送方画反了整条交互逻辑就乱了。激活条也是判分点。对象从接收消息开始到处理完返回消息为止生命线上要画一个细长矩形表示对象在这段时间内处于激活状态。没有激活条的顺序图在阅卷时会被视为没掌握基本要素。循环和分支用组合片段表示。循环用 loop多条件分支用 alt可选步骤用 opt。这些操作符要写在组合片段的左上角并标注条件。如果题干里有「重复查询直到成功」「根据角色走不同流程」这类描述没有对应组合片段一定会被扣分。4. 自己出模拟题从往年卷到可闭卷自测的最小流程很多同学复习 UML 系统分析与设计时手里只有一两套复习试题做完就没了然后开始到处找新题。我的做法不太一样我会用「换壳法」把往年的试题改写出一套变体卷考点保持不变只换业务领域和名词这样训练出来的不是对某张图的记忆而是对建模过程的迁移能力。具体流程分三步先整理考点清单再改写题干场景最后闭卷自测并对照判分点估分。整套流程不需要大量题库一套往年卷就能生成五六套变体。4.1 换壳法换领域不换结构先拿出一道做过的建模题把题干里的业务名词全部替换成另一个领域的概念同时保留参与者数量、关系结构、生命周期这些核心骨架。比如原题是图书借阅场景借阅人、图书、借阅记录可以换成实验室设备领用场景员工、设备、领用记录。做换壳对照时要确保考点没变。原领域要素换壳后的要素保留的考点借阅人员工参与者识别图书设备候选类过滤借阅记录领用记录组合关系续借可选延期可选扩展关系超期罚款逾期提醒状态迁移我自己验证过换壳后的卷子做起来比原题更容易暴露问题因为场景不熟没法靠印象里的答案去蒙只能靠对建模规则的理解一步步推。4.2 用脚本从题干池随机组卷复习到后期我习惯把选择题和简答题整理成一个题干池每次随机抽一组来自测避免总是先做到熟悉的题。下面这个脚本可以帮你在本地快速生成一套变体卷。# 随机组卷脚本从题干池抽题按题型控制数量 import random # 题干池示例每个条目含题干、题型、考点 question_pool [ {text: 下列哪张图属于行为图, type: choice, point: 图的分类}, {text: 包含关系和扩展关系的区别是什么, type: short, point: 用例关系}, {text: 聚合和组合的生命周期差异在哪里, type: short, point: 类图关系}, {text: 顺序图中返回消息的箭头画法是, type: choice, point: 消息类型}, {text: 根据描述画出用例图, type: model, point: 用例建模}, # 实际使用时按自己的题库继续往下加 ] def make_paper(pool, choice8, short2, model1, seedNone): # 设置随机种子便于同一套题可复现 if seed is not None: random.seed(seed) choices [q for q in pool if q[type] choice] shorts [q for q in pool if q[type] short] models [q for q in pool if q[type] model] paper [] paper random.sample(choices, min(choice, len(choices))) paper random.sample(shorts, min(short, len(shorts))) paper random.sample(models, min(model, len(models))) random.shuffle(paper) # 打乱题型顺序模拟真实卷面 return paper paper make_paper(question_pool, choice2, short2, model1, seed42) for i, q in enumerate(paper, 1): print(f{i}. [{q[type]}] {q[text]}考点{q[point]})这段脚本的逻辑是先按题型过滤题干池再从每类题里随机抽取指定数量最后整体打乱顺序避免每次自测时题型固定排列。参数里 choice 控制选择题数量short 控制简答题数量model 控制建模题数量seed 用来固定随机结果方便你隔几天重做同一套题时能对比答案。用这种方法组出来的卷子每次的题目组合都不一样但对考点的覆盖率是可控的。需要注意的是这个脚本只负责抽题不负责评分。自测时建议把答案单独写在另一张纸上做完再对照判分点估分否则眼睛会不自觉地往答案上瞟自测效果会大打折扣。4.3 闭卷自测与两遍评分法闭卷做完一套变体卷后我建议用两遍评分法来判分。第一遍只看要点完整性图里该有的元素有没有简答的三段式结构是否齐全这遍给的是「要素分」。第二遍把自己当成阅卷老师专门挑三类硬伤关系方向是否画反、多重度是否漏标、消息箭头是否用错。这遍扣的是「准确分」。两遍分数都记录在考点清单后面。凡是第二遍被扣分的地方回到对应章节重新看一遍规则然后把错题回填到题干池里下一轮自测时加大这类题目的抽取权重。我一般会保持每周一次闭卷自测建模题每题严格限制在十五分钟内时间一到就停笔这样能提前适应考场的节奏。5. 复习与答题中最容易翻车的四个坑现象、原因、补救写法这部分内容来自我批改模拟卷和复盘真题的踩坑记录。每条都是「现象 → 原因 → 解决」的顺序写你可以在复习阶段对照自查也可以在考前快速过一遍。5.1 把类图画成数据库表现象是画类图时类名上写的是「员工表」属性里写了主键 id、外键 department_id还标了 VARCHAR、INT 这类数据类型。整张图看起来像一张 ER 图或者建表语句。阅卷时这类图会被判定为没有掌握领域模型和设计模型的层次。原因是没有区分「数据建模」和「对象建模」。类图描述的是类的职责、属性和操作之间的关系属性应该写业务概念比如员工编号、姓名、所属部门而不是数据库字段和类型。解决方法是画类图前先问一句这个属性是业务上关心的还是存储上需要的业务关心的留下存储细节全部去掉。部门与员工之间画关联并标注多重度即可不要画成外键连线。5.2 包含关系和扩展关系用反现象是题干里写「员工提交领用申请如果库存不足则进入补货流程」有些同学的用例图会画成「提交领用申请」包含「补货流程」或者反过来把必要的登录步骤画成扩展。原因是对定义只背了关键词没理解触发条件。包含关系是每次都会执行的公共子流程扩展关系是满足特定条件才进入的可选分支。补货流程明显是库存不足时才触发所以它应该是扩展关系。解决方法是画完关系后做一次场景模拟沿着主流程走一遍看这个分支是不是每次都经过。每次都经过的画包含偶尔进入、条件触发的画扩展。方向也不要记反扩展关系的箭头从扩展用例指向基用例方向画反同样会扣分。5.3 顺序图里返回消息画成实线箭头现象是对象 A 调用对象 B 的方法B 处理完返回结果这条返回消息被画成了和调用消息一样的实线实心箭头。整张图看起来消息都在一个方向流动但语义全错了。原因是对消息类型只记住了名称没有记住箭头约定的区分。同步调用、异步调用和返回消息各有各的画法阅卷时首先看的就是箭头。解决方法是把三种画法固定成一个口诀刻在脑子里实心箭头是同步请求开放箭头是异步信号虚线箭头是返回结果。画完顺序图后逐条检查箭头凡是「对方答复」性质的消息一律改成虚线。5.4 状态图画成流程图现象是题目要求画某设备的状态图结果画出来一张带开始、判断、结束的活动流程图从上到下堆了一排步骤每个步骤之间用箭头连起来。原因是没有抓住状态图和活动图的本质区别。状态图是事件驱动的关注单个对象在生命周期中可能处于哪些状态以及什么事件触发状态迁移活动图是流程驱动的关注多个活动之间的先后顺序和分支合并。解决方法是画状态图前先列一张状态表把对象可能处于的状态名词都写出来比如待借出、已借出、已归还、已报废再为每个迁移标上触发事件。如果画出的是动词步骤而不是名词状态说明思路还停留在流程图阶段。6. 考前一晚的白纸验证法十五分钟画一张图的自查习惯复习到考前一晚很多人会选择把复习试题从头到尾再看一遍。我不建议这么做因为看答案属于被动输入到考场上能不能主动输出是另一回事。我养成的习惯是白纸验证法拿一张空白 A4 纸不看任何资料随机抽三个考点每个考点闭卷画一张图时间限制在十五分钟内。验证清单固定为四问图的要素是否齐全比如类图有没有标多重度顺序图有没有画激活条。关系种类是否标对包含扩展、聚合组合、同步异步有没有混用。方向是否可读把每条关系读成一句通顺的中文。能不能用一句话向别人解释这张图画了什么。如果四问都能答上来这个考点基本是稳的。如果哪一问卡住了立刻翻对应章节补上后再闭卷重画一次。我当年复习时白纸默画最常暴露的问题是顺序图里返回消息箭头画错第一遍检查时自己都没发现直到对照判分点列表才看出来。后来我把判分点全部变成白纸上的打勾项画完先自查再翻答案这个习惯让建模题的正确率明显稳定下来。考前那一晚与其抱着复习试题反复看不如用一小时把高频考点全部默画一遍。画错的地方就是你第二天最容易丢分的地方提前暴露比在考场上暴露划算得多。希望这个白纸验证法能帮到你也祝你在 UML 系统分析与设计的考试里少踩几个坑把建模题的每一分都拿稳。本文还有配套的精品资源点击获取