美好的一天!
我正在做一些关于复合结构图(CSD)的工作,我无法弄清楚CSD和组件图之间的差异。两者看起来都一样。还是我错了?
我可以用组件图模拟CSD的所有情况吗?如果不是,情况如何?
何时在组件图上使用CSD更好? (反之亦然)
组件图用于建模体系结构。我不能用CSD模拟相同的架构吗?
谢谢!
答案 0 :(得分:6)
实际上大多数UML图都是相似的(除了SD和Timing Ds),你可以放入你喜欢的任何东西。在某些图表中使用某些子集更为一种惯例,但没有限制(除了上面的内容)。
上层建筑的附件A(2.5)规定:
UML模型由诸如包,类和关联之类的元素组成。相应的UML图是UML模型各部分的图形表示。
...
注意。此分类法为各种主要类型的图表提供了逻辑组织。但是,它并不排除混合不同类型的图表类型,就像人们在组合结构和行为元素时所做的那样(例如,显示嵌套在内部结构中的状态机)。因此,不严格执行各种图表类型之间的界限。
答案 1 :(得分:6)
UML没有严格定义各种图表类型(“不严格执行各种图表类型之间的界限”)。 但是,一般情况下,创建仅显示主题的一个视图的图表是一种很好的做法。
假设您有一个组件'Car',组件'Wheel'和组件'Engine'。发动机驱动前轮,而不是后轮。
组件图显示组件及其关系。组件是一种特殊的类。该图不显示组件实例。在示例中,我们将显示三个组件。汽车与车轮具有1:4的组合关联,与发动机具有1:1的组合关联。发动机与Wheel有1:2的关联。指定发动机仅连接到前轮并且两个车轮必须属于同一辆车并非易事。您需要为此编写一些OCL约束。
复合结构图显示了另一个组件中包含的组件实例以及这些实例之间的链接(事实上,我应该使用 part 这个词而不是实例)。此图将Engine和四个车轮显示为Car组件内的单独块。现在很容易说明发动机如何仅连接到同一辆车的前轮。