【发布时间】:2016-02-16 21:07:03
【问题描述】:
美好的一天!
我正在做一些关于复合结构图(CSD)的工作,但我无法弄清楚 CSD 和组件图之间的区别。两者在我看来都一样。还是我错了?
我能否使用 CSD 对所有情况进行建模,而我可以使用组件图进行建模?如果不是,有哪些情况?
何时使用 CSD 优于组件图? (反之亦然)
组件图旨在为架构建模。我不能用 CSD 为相同的架构建模吗?
谢谢!
【问题讨论】:
美好的一天!
我正在做一些关于复合结构图(CSD)的工作,但我无法弄清楚 CSD 和组件图之间的区别。两者在我看来都一样。还是我错了?
我能否使用 CSD 对所有情况进行建模,而我可以使用组件图进行建模?如果不是,有哪些情况?
何时使用 CSD 优于组件图? (反之亦然)
组件图旨在为架构建模。我不能用 CSD 为相同的架构建模吗?
谢谢!
【问题讨论】:
UML 没有严格定义各种图表类型(“各种图表类型之间的界限没有严格执行”)。 但是,一般来说,创建仅显示该主题的一种观点的图表是一种很好的做法。
假设您有一个组件“Car”、组件“Wheel”和组件“Engine”。引擎驱动前轮,而不是后轮。
组件图显示组件及其关系。组件是一种特殊的类。该图不显示组件实例。在示例中,我们将展示三个组件。 Car 与 Wheel 具有 1:4 组合关联,与 Engine 具有 1:1 组合关联。 Engine 与 Wheel 具有 1:2 的关联。指定发动机仅连接到前轮并且两个车轮必须属于同一辆车并非易事。您需要为此编写一些 OCL 约束。
复合结构图显示了包含在另一个组件中的组件实例以及这些实例之间的链接(实际上,我应该使用 part 这个词而不是实例)。此图将引擎和四个车轮显示为 Car 组件内的单独块。现在很容易展示引擎如何只连接到同一辆车的前轮。
【讨论】:
实际上,大多数 UML 图都是相似的(除了 SD 和 Timing D),您可以随意添加任何内容。在某些图表中使用某些子集更像是一种约定,但没有限制(见上文)。
上层建筑的附录 A (2.5) 规定:
UML 模型由包、类和关联等元素组成。相应的 UML 图是 UML 模型部分的图形表示。
...
注意。此分类法为各种主要类型的图表提供了逻辑组织。然而,它并不排除混合不同类型的图表类型,当一个组合结构和行为元素时可能会这样做(例如,显示嵌套在内部结构中的状态机)。因此,各种图表类型之间的界限并未得到严格执行。
【讨论】: