DDD领域驱动设计批评文集>>
《软件方法》强化自测题集>>
《软件方法》各章合集>>
Lynn 2023-4-6 13:55
潘老师,咱umlchina的标记是不是不太对劲,火柴人指向用例的箭头是三角形似乎不合uml的标准。
UMLChina潘加宇
是的。如果按UML规范解读,这个图是错误的。(后面有反转)
这么多年以来,偶尔就会有人问这个问题。
其实我在不同场合都简单解释过,当面,聊天室,MSN,QQ群……。现在用公众号比较详细地解释一次,作为存档。
UMLChina现在用的Logo是这样的:
三角形是泛化关系,图中的意思是执行者泛化到用例,即“执行者是用例的一种”,错的。
执行者和用例可以看作关联关系,表示为一条实线,如下图:
您可以注意到,上图没有箭头,UML规范的意思是:执行者和用例之间是双向关联,因此不应该有箭头。
****回忆一****
UMLChina图标是在2001年由当时的一位成员设计的,还包括UMLChina幻灯片的样式以及UMLChina网站的蓝白风格,沿用到今天。
当时我的意思是用小人圈圈的形状做一个logo,但设计人员不懂UML,就用了三角箭头。拿出来以后,我也知道是错的,但设计人员觉得三角形更美观,于是也就沿用下来了,后来就不想改也懒得改了。
就当作是一个美术设计,不要从UML规范的角度去解读就是了。
就像看到品牌起名叫“盒马”,不要说“错别字了,应该是河马”,就当故意叫“盒马”吧。
****回忆二****
记忆里,好像第一个和我说这个logo问题的是当时在Rational的尤克滨(Amos You),2002年8月Rational在国贸中心搞了一个活动宣传自家产品,我作为UML的“民间代表”也去捧场做了个演讲。
在现场,还见到了Rational的另一位同事,潘氏家族的优秀代表,在水木清华BBS上被盛赞的潘海量女士(Helen Pan),此处引用李敖曾经讲的于右任故事,“看看也好”。
如果当年的网络也有这么发达,后来的奶茶妹妹可能就火不起来了,最多是个山寨版。
****反转****
现在想来,其实用个三角形箭头也未尝不可。
我现在依然用箭头,以便区分主执行者和辅执行者,像下图:
如果按照类图的表示来解读,这样是不合理的,因为即使要改成单向关联,也应该是用例指向执行者更合适,毕竟用例需要懂得更多。
但是,用例和执行者是关联关系,这是元模型的含义,而元模型(目前)是类图,模型的表示法并不需要、也不可能只用类图或对象图的表示法。
例如,用例和执行者相关的元模型部分可以是这样:
改成单向关联的话,可能是这样:
对象图可能是这样:
但用例图并不需要表达成这样:
小人圈圈我们一般是表达成:
既然如此,用有向箭头、三角形箭头、甚至其他符号来表示都是可以的,因为这是用例图不是类图。UML规范可以为用例图安排更生动的表示法。
其他模型也类似,例如状态机,两个状态之间有迁移,元模型中是“状态”类和“迁移”类之间有多个关联,但状态机模型中根本就没有“迁移”结点,迁移是边。
33套UML/SysML+EA/StarUML的建模示范视频-全程字幕(20230217更新)