按照业务建模、需求、分析、设计工作流考察,答案不直接给出,可访问自测链接或扫二维码自测,做到全对才能知道答案。
1 单选
AI降临,软件开发中的搬砖工作首先被横扫。对此,《软件方法》多年前已经说过原因。
以下文字均摘自2018年发布的《软件方法》下册电子书第8章,请问,哪一个最适合用来解释搬砖工作被横扫的现象。
A) 更为复杂的是,同一个核心域可能要映射到多个互相竞争的非核心域,即所谓"多平台"。例如Sports Interactive的《Football Manager(足球经理) 2017》游戏,就有PC版、Mac版、Linux版、iPad版、Android版。
B) 为组织提供软件的软件组织也越来越专注于一个领域,甚至逐渐成为组织里的一个部门。将来,独立的软件组织也许将不复存在,或者说,所有组织都是软件组织。
C) 如果不先用层次状态机的图形对领域逻辑显式建模,再根据模型通过工具或人工映射到实现,而是直接下手实现,领域逻辑靠临时脑补,得到的代码必定破绽百出。
D) 核心域知识和非核心域知识是独立的,域和域之间的映射规律,与域中的个体不直接相关。如果将图8-11中的Person改成Dog,City改成Cat,映射的套路没有变化。如果我们调整了域之间的映射套路,映射结果也会按照我们的调整有规律地变化,与域中的个体依然无关。
2 单选
最近,上海交大樊同学奖金事件引起关注。
用UML类图表示樊同学事件相关概念如下,假设同一团队可以同时获得多个奖项,包括同一等级,例如,F同学和K同学组成的团队可以获得两个二等奖,总奖金2*5000=10000元。

如果给"团队"加一个约束:团队所得奖金总和等于团队人员所分奖金的总和,用OCL如何表达?
A) 获奖s->collect(x | x.数量 * x.奖项.奖金)->sum() = 成员s.所分奖金->sum()
B) 获奖s.奖项.奖金->sum() = 成员s.所分奖金->sum()
C) 获奖s.数量->sum() * self.获奖s.奖项.奖金->sum() = 成员s.所分奖金->sum()
D) 获奖s->collect(x | x.数量 * x.奖项.奖金)->sum() = 成员s.所分奖金->asSet()->sum()
3 单选
DDD圈子曾经写文章展示了一个等式的"不变式"(该文用词为"固定规则)

受到了批评,批评文章在这里:续1-续3 你的医书是假的!(https://mp.weixin.qq.com/s/DtlKuP2uxaPaKaQC6DKiYw)。该批评文章指出,DDD圈子某篇文章展示的"不变式"(或称"固定规则")存在多处建模错误。具体来说,批评主要围绕以下几点展开:位置错误 ------不变式应附着在合适的类上,而非随意放置;表示错误 ------其表达方式不符合OCL(对象约束语言)或契约式设计的规范;逻辑矛盾 ------该"不变式"试图表达的规则(如订单总价等于各订单项金额之和)本身是计算逻辑,而非真正的不变式(Invariant)。真正的不变式应描述对象在其生命周期内必须始终保持为真的条件,例如"订单总金额必须大于零"。而将"总价 = Σ(订单项.单价 × 数量)"作为不变式,实际上混淆了**派生属性(Derived Attribute)**的计算规则与不变式。因此,批评文章认为,除非系统存在一个"从总价出发做假账"的特殊需求(即选项C所描述的场景),否则这样的"不变式"在规范的领域建模中是不合理的。这引导读者思考不变式的本质,并区分领域规则与实现细节。
抛开图中所谓"不变式"的位置错误、表示错误等不谈,请问,什么情况下这样内容的"不变式"是合理的?
A) 拉一群年轻的资深敏捷专家和DDD专家,边喝酒边头脑风暴足足三小时,投票决定:这样内容的"不变式"是合理的。
B) 使用领域驱动设计的革命性创造,令在某个上下文中,这样的不变式是合理的。
C) 系统有一个从总价出发做假账的功能。
D) 系统需要从订单项的属性值来计算订单的属性值。
4 单选
最近,上海交大樊同学奖金事件引起关注。
用UML类图表示樊同学事件相关概念如下。

假设同一团队可以同时获得多个奖项,包括同一等级,例如,F同学和K同学组成的团队可以获得两个二等奖,总奖金2*5000=10000元。
奖金严格按团队成员的等级(例如 婆罗门>刹帝利>吠舍>首陀罗)来分配。目前的分配规则是:如果团队成员等级相同,则平分奖金,如果团队成员存在等级差别,则最高等级成员先平分90%的奖金,剩下的奖金和成员继续按同样规则处理。
如果90%这个数字可以灵活设置,如果强制它一定要成为以下某个类的属性,那么相对比较合适的是:
A) 奖项
B) 团队
C) 人员
D) 等级
5 单选
关于Martin Fowler的《Analysis Patterns》,以下说法正确的是:
A) 作者根据自己极其丰富的项目经验,精选了一批会在很多个领域的系统中反复出现的分析模式,以便读者可以复用在自己的项目中。
B) 书中革命性地提出了用Party作为人和组织的超类。
C) 书中的模式来自Folwer参与过的项目,模式的选择有一定的随机性。
D) 书中的"岗位(Post)"模式为后来的RBAC(基于角色的访问控制)模式奠定了基础。
6 单选
近日,长沙市一公职人员彭某某在德峰小区霸占车位引起关注。
如果为"产权车位"建立状态机,以下不适合作为状态的是:
A) 空闲
B) 被他人车辆占用
C) 存在纠纷
D) 联系占位车主发挪车通知
7 单选
最近,杭州"黄总请你去包厢"登上热搜。

假设餐馆的规矩是:
包厢的客人有权让服务员去把卡座和散座的客人请到包厢,卡座和散座的客人无权让服务员去把包厢的客人请到卡座和散座;
卡座的客人有权让服务员去把散座的客人请到卡座,散座的客人无权让服务员去把卡座的客人请到散座。
也就是说,这里存在着等级问题。
如果用类图来建模上面的规矩,把"等级"建模成一个整数类型的属性。请问,"等级"最适合作为以下哪个类的属性?
A) 包厢
B) 包厢、卡座和散座
C) 场所(包厢、卡座和散座的共同超类)
D) 场所类型
8 单选
最近,"中国人不需要蛋白质"的视频引起关注。
如果有人要做一个系统贯彻这个理念,系统的类图如下:

如果给"人"加一个约束:"中国人不需要蛋白质",以下合适的是:
A) 国籍 = 国家::中国 or所摄取食物类型s.成分类型s->excludes(物质类型::蛋白质)
B) 国籍 = 国家::中国 and所摄取食物类型s.成分类型s->excludes(物质类型::蛋白质)
C) 所摄取食物类型s.成分类型s->includes(物质类型::蛋白质) or国籍 = 国家::中国
D) 国籍 <> 国家::中国 or所摄取食物类型s.成分类型s->excludes(物质类型::蛋白质)
9 单选
某著名的短视频平台的开发人员正在开发TikiTaka商城系统,发现关系数据库"商品"表中,有些行的"虚拟商品兑换码"列为空,有些行的"单位重量"列为空。从面向对象建模的角度看,这可能犯了什么错误?
A)忽略了泛化关系
B)把泛化当成关联
C)把关联当成泛化
D)把设计当成需求
10 单选
下图描述了一个从领域素材到代码的演变过程,其中有一步是多余的,但很容易被伪创新爱好者当作"突破"、"得到了更深刻的领域模型",从而达成其有意无意追求的"假装思考 实则批量刷废话"的效果。这一步是:

A) ①
B) ②
C) ③
D) ④