网站图片怎样做seo优化,进入公众号怎么找出二维码,wordpress朗读句子插件,包装设计软件DDD领域驱动设计批评文集
做强化自测题获得“软件方法建模师”称号
《软件方法》各章合集 《分析模式》中模型图的UML改编#xff0c;之前也有人做过#xff0c;Martin Fowler网站上给出了部分改编成果。
这些改编成果只覆盖了部分章节#xff0c;而且只是把类型图#…DDD领域驱动设计批评文集
做强化自测题获得“软件方法建模师”称号
《软件方法》各章合集 《分析模式》中模型图的UML改编之前也有人做过Martin Fowler网站上给出了部分改编成果。
这些改编成果只覆盖了部分章节而且只是把类型图Type Diagram改编成类图。书中的动态模型图包括交互图Interaction Diagram、事件图Event Diagram和状态图State Diagram没有改编。
网络上其他地方也未搜到把书中的动态模型图改编成UML模型图的尝试。
之前的改编只是把类型图Type Diagram改编成类图原因可能是这个相对来说比较容易而动态模型图的改编更难一些。
动态模型图中交互图和UML序列图的对应状态图和UML状态机图的对应还是比较直接的事件图又更复杂一些。
2024中译本可能要到2025年初出版将用UML改编全部模型图覆盖全部章节包括静态模型图和动态模型图。
**********
下面我们来展示如何把事件图转成UML的活动图。
全书第一张事件图是图3.15 图1 《分析模式》图3.15
Fowler在书中说他是遵循James Odell的用法并给出了参考书James Martin和James Odell的Object-Oriented Methods: A Foundation1995。
UML1中的活动图来源是比较复杂的。以下文字摘自Martin Fowler的UML Distilled第2版1999
the activity diagram combines ideas from several techniques: the event diagrams of Jim Odell, SDL state modeling techniques, workflow modeling, and Petri nets.
可以看到UML1的活动图参考了Odell的事件图、SDL状态建模、工作流建模和Petri网。
UML2的活动图做了大变革改为基于Petri网的语义解除了和其他表示法的绑定。
**********
我们先给出改编后的结果 图2 原书图3.15的UML改编
并把图3.15的活动参数类型和图3.14的类图上的类对应 图3 图3.15的活动图和图3.14类图的对应
改编后的图3.15看起来比原图复杂但更严谨一些。
几个值得一提的地方
1事件改为数据
下图是《分析模式》中给出的事件图规范 图4 《分析模式》中给出的事件图规范
Odell的事件图上结点是操作是动词输出是事件类型event type区分于事件发生event occurrence还是动词。名词对象、数据呢这个定义是有问题的。
Fowler可能也觉察到了这一点。图1给出的原图3.15中Fowler在输出的地方写的是associated observation concepts关联观察概念这怎么看也不像是“事件类型”的命名更像是输出的数据。 图5 associated observation concepts怎么看也不像“事件类型”
2把evaluate proposal评估提案合并到“提议观察”中
根据图4的事件图规范菱形处应该是一个布尔表达式这是合理的。但《分析模式》原图3.15中菱形处所标的evaluate proposal看起来像是行为不是一个条件表达式这应该是Fowler的问题。 图6 《分析模式》原图3.15的菱形处看起来不像条件表达式
在UML活动图改编中我们把evaluate proposal变成更合适的条件表达式。即使Fowler可能有这样的原意想在evaluate proposal中包含一些行为也应该把这些行为合并到Propose Observation中。
3添加了一个datastore数据存储结点
“做观察”活动应该有两个输出一个是关联的观察概念一个“观察概念”的对象集合另外还应该产生观察的结果一个“观察”的对象集合。
前者Fowler原图有表达并作为“提议观察”的输入后者Fowler原图没有表达所以添加一个datastore数据存储结点接收“做观察”产生的观察结果数据及令牌。
4钉耙符号
改编的图3.15中结点图标右下角有一个钉耙形状的符号说明这是一个Action动作是对Activity活动的调用而不是Activity本身。 图7 图上是Action不是Activity
Activity活动是定义。Activity Diagram活动图描述活动的实现活动图上并没有“活动”只有活动的调用Action调用的活动可以是其他活动也可以是自己递归。
所以平时我们见到的“流程图”或“活动图”很多是不严谨的把定义和使用混在了一起。
**********
一些参考
12002年4月James J. Odell在UMLChina做的交流
交流实录在umlchina.com/Chat/odell.htm 翻译整理发表在《非程序员》2002年第5期所有各期《非程序员》杂志的pdf下载umlchina.com/xprogrammer/index1.html 2“水蒸馏器”案例
如果想深入学习活动图可以参考此案例里面大量而且深入地使用了活动图。
umlchina.com/url/video.html里面的SYS-001番号。