UMLChina建模竞赛题答案及解析

潘加宇[2020年3月31日更新]

建模竞赛题比起《软件方法》书中的题目要更难一些,可以作为熟悉了《软件方法》中的基本知识之后的进一步练习。题目颇有些陷阱,应一些同学的要求,挑部分题目给出答案并详细讲解,知识点其实都在书中。

同时为了避免丧失学习的积极性,每一套题目都不会完全讲解,会留一部分题目让读者自己挑战,挑战链接>>

UMLChina建模竞赛题自测(1)部分题目解析

1 [ 多选题 ] 在建模中,关于组织和系统的关系,以下陈述成立的是:

A) 组织可以作为系统的涉众

B) 组织可以作为系统的目标组织

C) 系统可以作为组织的业务工人

D) 系统可以作为组织的业务实体

本题答案及答题情况

quizanswer01.png

解析:

A) 组织可以作为系统的涉众

--错误。有51%的人选了这个选项,意味着一半的人答错了。涉众要具体到人员扮演的角色。例如,“北京市国土资源局海淀分局”不适合作为涉众,有涉众利益的“海淀分局”里的局长、处长、科长、科员、保安、保洁阿姨……

B) 组织可以作为系统的目标组织

--正确。当以改善某组织为目标来推导某系统的需求时,该组织就成为该系统的目标组织。

C) 系统可以作为组织的业务工人

--正确。这个选项只有36%的人选中了,也就是说答错率64%。系统包括人肉系统和非人肉系统。

D) 系统可以作为组织的业务实体

--正确。这个不用解释了。

**********

2 [ 多选题 ]在建模中,关于系统和系统的关系,以下陈述成立的是:

A) 系统可以作为系统的涉众

B) 系统可以作为系统的执行者

C) 系统可以作为系统的业务工人

D) 系统可以作为系统的业务实体

本题答案及答题情况

quizanswer02.png

解析:

A) 系统可以作为系统的涉众

--正确。不过也只有51%的人选了这个选项,意味着一半的人答错了。还是同样的问题:系统包括人肉系统和非人肉系统。

B) 系统可以作为系统的执行者

--正确。83%的人选了这个选项,这个选项比较直白。

C) 系统可以作为系统的业务工人

--错误。只有28%的人选了这个选项,答对率较高,但很可能有的答对者是蒙对的,以为系统不是人,不是人怎么是业务工人呢。实际上,这个选项错误的原因是:业务工人是针对组织来说的,系统怎么会有业务工人呢,除非是人肉系统怀孕了(即使这样肚子里的胎儿也不能当工人使唤啊),非人肉系统里都是软硬件组件,没有氧气,人活不了的。这个选项属于送分,顺便为选项D挖坑。

D) 系统可以作为系统的业务实体

--错误。60%的人选了这个选项。你看,把C选项里的“业务工人”换成“业务实体”,避免了以为“人不是系统”导致的误打误撞,掉进陷阱的人就翻了一倍。原因和C一样,业务实体也是针对组织来说的。

**********

6 [ 单选题 ]关于业务序列图和系统用例图,以下说法正确的是:

A) 系统用例图上的用例可能会只来自一张业务序列图。

B) 应该尽可能为每张业务序列图生成一张系统用例图。

C) 业务序列图上,从外部指向业务实体的消息,都可以映射为当前所研究系统的用例。

D) 系统用例图上,有的用例是无法从业务序列图上映射的,需要自己根据经验添加。

本题答案及答题情况

quizanswer06.png

解析:

A) 系统用例图上的用例可能会只来自一张业务序列图。

--正确。不需要解释。

B) 应该尽可能为每张业务序列图生成一张系统用例图。

--错误。一个是组织流程的视角,一个是目标系统的视角,两者没有一一对应关系。

C) 业务序列图上,从外部指向业务实体的消息,都可以映射为当前所研究系统的用例。

--错误。31%的人选了这个选项,错的比例还是比较高的。如果是改进前的序列图,目标系统可能不在上面,即使是目标系统参与改进后的业务序列图,图上的业务实体有可能不止目标系统一个,

D) 系统用例图上,有的用例是无法从业务序列图上映射的,需要自己根据经验添加。

--错误。都需要从现状推导,所谓“经验”也不是从天上掉下来的。

自测链接:https://www.101test.com/cand/index?paperId=EN0MPQ

或扫以下二维码:

009.png

UMLChina建模竞赛题自测(2)部分题目解析

3 [ 单选题 ]如果我们把建模工作流相关的知识画成以下类图。有一个类,它的某个对象的某个属性值可能会是“UML序列图”,请问这个类是:

012.png

A) 工作流类型

B) 工件类型

C) 工件形式

D) 表示法

本题答案及答题情况

quizanswer203.png

解析:

答对的人不到一半。问哪个类,应该问的问题是“UML序列图是一个什么”,回答“是一个表示法”。

几个概念的区分举例:工作流类型-分析,工件类型-部件之间的交互,工件形式-分析数据流图,表示法-数据流图。以上举例故意不使用UML表示法。如果所使用的方法学和表示法已经定死,后面三个概念可以合并成一个。

**********

4 [ 单选题 ]以下说法正确的是:

A) 在业务建模阶段,我们研究的焦点放在组织上。

B) UML是模型内容的一种可选表示形式,不一定要使用。

C) 建模的好处是有章有法,先通盘考虑得到全面的业务流程,然后推导出尽可能全面的系统需求,这样大大减少了漏掉需求的可能性。

D) 使用用例来做需求分析的优势是让需求分析人员时刻牢记“价值”二字。

本题答案及答题情况

quizanswer204.png

解析:

本题答对率63%,还可以。不过可能有的人是用排除法答的,未必了解错误选项到底错在哪里。A和D错在用词不严谨,“业务建模阶段”、“需求分析”,C的错误在于建模是为了排序,不是为了全面,“全面”的概念也是不严谨的。

**********

8 [ 单选题 ]状态机如下图所示。如果对象创建之后,事件e2、e1、e3、e4、e1和e5按给定顺序发生,请问,事件发生结束后,变量x、y和z值分别是_______________________。本题为填空题,直接写结果,例如:1,1,1。

017.png

A) -1,0,4

B) 4,0,3

C) -1,2,4

D) -1,1,0

本题答案及答题情况

quizanswer206.png

解析:

这道题目覆盖了状态机图的各个知识要点。

先补充解释可能比较陌生的概念:

(1)历史状态。

历史状态(带圆圈H)记录最近一次离开一个组合状态之前所处的子状态。浅历史状态(不带*号)只记住同一层的子状态,深历史状态(带*号)可以记住更深的子状态。

历史状态有向外的迁移,表示如果历史状态空白,那么缺省迁移到该迁移的目标状态。这个地方经常有人误解,以为迁移到历史状态就等于迁移到历史状态向外迁移所指向的目标状态。想想就知道是错的,如果是这样,中间插入一个历史状态不是多此一举吗?

(2)完成迁移。

不带触发事件的迁移,在到达状态的终态时隐式触发。

再说一下执行顺序。无警戒条件或警戒条件为真,按以下顺序执行:

(1)源状态的出口活动,先子后父;

(2)迁移上的动作和消息;

(3)改变状态;

(4)目标状态的入口活动,先父后子。

一开始,状态机缺省进入A。在进入A之前,执行迁移上的动作x=2。进入A时,执行A的入口活动z=0。

e2发生,状态机离开A迁移到C。离开A时,执行A的出口活动z++,z的值变为1。然后,执行迁移上的动作z=z*2,z的值变为2。进入组合状态C时,执行C的入口活动z++;y=2。z的值变为3,y的值变为2。C的缺省子状态是C1,状态机进入C1,执行C1的入口活动z=z*2,z的值变为6。

e1发生,状态机保持在C1,执行动作x=4,x的值变为4。

e3发生,先检查迁移的警戒[z==6]。因为z当前值为6,警戒[z==6]为真。状态机离开C1,执行C1的出口活动z=3,z的值变为3。进入C2时,执行C2的入口活动y=0,y的值变为0。

e4发生,状态机离开C2,执行C2的出口活动x=-1,x的值变为-1。然后,状态机离开C,执行C的出口活动y=1,y的值变为1。浅历史状态记住离开时所处的同一层的子状态C2。然后状态机进入E,执行E的入口活动y++,y的值变为2。

e1发生,状态机返回历史状态,即C2。先父后子执行入口活动。先执行C的入口活动z++;y=2。z的值变为4,y的值变为2。然后执行C2的入口活动y=0,y的值变为0。

e5发生,状态机离开C2,执行C2的出口活动x=-1,x的值变为-1。状态机迁移到C的终止状态,触发了完成迁移。图上有完成迁移由C指向A。离开C时,执行C的出口活动y=1,y的值变为1。状态机进入A时,执行A的入口活动z=0。因此,最终x=-1,y=1,z=0。

用表格表示如下:

statemachineseidltable.png

**********

10 [ 多选题 ]假设用以下状态机图描述令狐冲施展剑法的情况,请问以下说法正确的是

018.png

A) 如果令狐冲处在“甲丑”时被“撩”,令狐冲将到达“戊”。

B) 如果令狐冲处在“甲丑”时被“撩”,然后被“劈”,令狐冲将回到“甲丑”。

C) 如果令狐冲处在“甲丑”时被“撩”,然后被“刺”,令狐冲将回到“甲子”。

D) 如果令狐冲从来没有进入过“丁”,那么令狐冲处在“戊”时被“劈”,令狐冲将到达“丙子”。

本题答案及答题情况

quizanswer210.png

解析:

答案ABCD。本题答对率29%,很低,可能是没敢想到全部选项都正确。

A) 如果令狐冲处在“甲丑”时被“撩”,令狐冲将到达“戊”。

--正确。在“丁”时被“撩”,令狐冲将到达“戊”。“甲丑”是“丁”的子状态。

B) 如果令狐冲处在“甲丑”时被“撩”,然后被“劈”,令狐冲将回到“甲丑”。

--正确。在“甲丑”(也是“丁”)时被“撩”,令狐冲将到达“戊”。在“戊”时被“劈”,转到深历史状态,即离开“丁”前的子状态“甲丑”。

C) 如果令狐冲处在“甲丑”时被“撩”,然后被“刺”,令狐冲将回到“甲子”。

--正确。在“甲丑”(也是“丁”)时被“撩”,令狐冲将到达“戊”。在“戊”时被“刺”,转到浅历史状态(带圈H),即带圈H同层的子状态“甲”,到达“甲”也意味着到达“甲子”。

D) 如果令狐冲从来没有进入过“丁”,那么令狐冲处在“戊”时被“劈”,令狐冲将到达“丙子”。

--正确。如果令狐冲从来没有进入过“丁”,那么令狐冲处在“戊”时被“劈”,本来是转到“丁”的深历史状态(带圈H*),但由于没有历史,改为转到深历史状态指向的“丙”,也意味着到达“丙子”。

自测链接:https://www.101test.com/cand/index?paperId=MXMNAW

或扫以下二维码:

019.png

UMLChina建模竞赛题自测(3)部分题目解析

6 [ 单选题 ]企业有一个用例叫纳税,如下图:

031.png

请问,以下序列图中,最正确表达该用例的业务流程片段之一的是:

 A)

032.png

B)

033.png

C)

034.png

D)

035.png

本题答案及答题情况

答案A,答对率31%。

解析:

A)只有31%的人认为这个选项是对的,可能是看文字,这个图里面“发票”二字出现的次数最少。其实只有这个是对的,这是企业要完成纳税目标可以观察到的一个流程片段。

B)42%的人选了这个选项。B的错误在于序列图上应该是类的实例,而不是类。

C)错误在于QQ邮箱和微信无法承担“打印发票”的责任,QQ邮箱系统和微信系统里没有“打印发票”的代码,可能有“打印页面”的代码,至于页面内容是发票还是美女照,QQ邮箱系统和微信系统是不管的。

D)错误同B。

自测链接:https://www.101test.com/cand/index?paperId=YYNI2T

或扫以下二维码:

044.png

UMLChina建模竞赛题自测(4)部分题目解析

1 [ 单选题 ]关于系统用例和类,以下说法正确的是:

A) 系统某个用例的实现中,使用的类的数量可以为0。

B) 系统某个用例的实现中,使用的类的数量至少为3。

C) 系统某个用例的实现中,使用的类的数量至少为1。

D) 系统某个用例的实现中,尽可能保持一个步骤对应一个类,必要时可以调整。

本题答案及答题情况

quizanswer401.png

解析:

需求(系统的整体表现)和设计(系统的内部结构)没有绑定关系。只要满足系统的功能需求、质量需求和必须遵守的设计约束,用任何方法来设计都可以。如果不打算用面向对象(即假设系统由对象组成)的方法来做分析和设计,类的数量就是0。

**********

10 [ 多选题 ]春节到了,很多人要坐火车回老家过春节。铁路员工也是人,很多铁路员工也要坐火车回老家过春节。(以下为假设,非真实情况)“国家铁路集团有限公司”甚至为了体恤员工的辛劳,特地为全国除夕和初一上班的铁路员工开设了多趟不同方向的回家专列。以下说法正确的有:

A) 研究对象为“国家铁路集团有限公司”这样的特殊组织时,业务工人也可以同时是业务执行者。

B) 铁路员工坐火车回家时,可以认为扮演的是“国家铁路集团有限公司”的业务执行者旅客。

C) 以“国家铁路集团有限公司”为研究对象时的“铁路员工乘专列回家”场景和以“***医院”为研究对象时的“清洁工打扫厕所”场景地位相当。

D) 以“国家铁路集团有限公司”为研究对象,火车票是业务实体。

本题答案及答题情况

quizanswer410.png

解析:

A) 某员工和某旅客可以由同一个人扮演,但不能说“业务工人也可以同时是业务执行者”。

B) 正确。

C) 正确,属于扩展路径。如果清洁工不扫厕所,铁路公司不搞内部福利也不影响业务用例,那能不搞就不搞,实际上是影响的。

D) 业务实体要封装一定的逻辑。

自测链接:https://www.101test.com/cand/index?paperId=6XBYVQ

或扫以下二维码:

047.png

UMLChina建模竞赛题自测(5)部分题目解析

1 [ 多选题 ]针对某组织流程的改进,以下列出的措施中,可以采取的有:

A) 引进新的业务实体取代现有业务工人的责任

B) 在现有业务实体上增加新的责任

C) 引进新的业务工人取代现有业务实体的责任

D) 在现有业务工人上增加新的责任

本题答案及答题情况

quizanswer501.png

解析:

本题全选。不过只有33%的人答对,可能心里还是对系统分三六九等,觉得业务工人不够档次。

**********

5 [ 单选题 ]在对某餐馆做调研时,发现经理每隔一段时间会去税务局换新的发票卷。那么,以下说法正确的是:

A) 以餐馆为研究对象,“经理→换发票”是业务用例

B) 经理换发票的流程可以作为某个业务用例的路径

C) 以餐馆为研究对象,“时间→换发票→经理”是业务用例

D) 以税务局为研究对象,“经理→换发票”是业务用例

本题答案及答题情况

quizanswer505.png

解析:

一些人选了D,D是错的,原因是经理的行为代表企业(餐馆),和税务局对应的业务执行者是企业,不是经理。《软件方法》第3章有讲解。

自测链接:https://www.101test.com/cand/index?paperId=IV2ZGT

或扫以下二维码:

053.png

UMLChina建模竞赛题自测(6)部分题目解析

2 [ 单选题 ]某研发团队的任务是开发公司现有产品的“可穿戴设备版本”。公司现有产品是医疗健康系统,目前有桌面版(浏览器)、iOS版、Android版,这些“版本”其实就是界面和交互部分不同,都是通过已有的web service和服务器打交道,新“版本”也如此要求。

关于需求,以下说法正确的是:

A) 可以以此“可穿戴设备版本”为研究对象做需求,服务器部分作为“可穿戴设备版本”的底层设计。

B) 此“可穿戴设备版本”不是独立的系统,做需求时应该把服务器包括进来作为研究对象。

C) 可以以此“可穿戴设备版本”为研究对象做需求,需求规约里主语是执行者和“系统”。

D) 应针对包括服务器在内的整个系统做需求,但特地说明只需完成客户端部分。

本题答案及答题情况

quizanswer602.png

解析:

题目的第一句就已经确定了答案。“系统”就是需要研发团队负责完成的责任总称,凭“感觉”改变系统的边界是错误的。这道题看起来简单,实际上很少有需求人员能理清自己要负责的系统的边界。如果没有类似题目做“照妖镜”,这些人还自我感觉良好呢。

**********

10 [ 多选题 ]关于领域模型,以下说法正确的有:

A) 领域模型中的概念要尽可能使用涉众最常用的词汇来命名

B) 领域模型不一定要用类图表达

C) 要更好应对变化,领域模型要反映领域内涵

D) 判断领域模型好坏的最重要标准是能否反映源代码的精华

本题答案及答题情况

quizanswer610.png

解析:

67%的人选了A,A是错的。《软件方法》第8章:涉众常使用的词汇不一定是合格的领域术语。涉众经常使用一些不严谨的称呼,例如用颜色来表征:绿本(小产权证)、绿卡(永久居民卡)、绿单(预约单)。

自测链接:https://www.101test.com/cand/index?paperId=U0JCGT

或扫以下二维码:

061.png