我目前正在编写一个(使用Cameo Systems Modeler (NoMagic))。
我创建了两个新的原型。一个是与元类依赖关系«collaborates»的新关系,另一个是称为«SystemGroup»的类构造型。
然后,我向«SystemGroup»构造型添加了一个派生属性,称为"/size“。这个想法是,这个属性是由通过新的«collaborates»构造型连接到SystemGroup的系统的数量得出的。
我认为使用OCL (或者甚至是该工具的表达式?)应该不是很困难。我是MBSE的初学者,OCL规范和Google到目前为止没有帮助,因为规范非常详细,google上的答案大多是通用的,比如“派生属性是由OCL或其他语言中的特定表达式派生的属性”。
有没有人可以帮我或者给我发一个链接,告诉我如何为派生属性做一些顶级的OCL?
提前感谢!
发布于 2020-08-27 00:18:01
OCL与构造型的使用被大大低估了。在OCL规范中没有提到,在UML规范中只有一个示例的提示。基于Pivot的Eclipse OCL原型可能是唯一一致的实现,它暗示使用base_XXX和extension_XXX名称和多功能性提供合理的类型安全导航。我怀疑其他任何工具都不能做到这一点。我怀疑NoMagic使用了传统的Classic Eclipse OCL,其中不足的OCL功能鼓励许多用户访问Eclipse MDT UML2项目Java API。
发布于 2020-08-27 00:44:31
如果我很好地理解了类构造型<<SystemGroup>>的派生属性/size取值从类开始的构造型<<collaborates>>的数量(无论目标的类型是什么),那么类似于:
context SystemGroup:: size: Integer
derive: self.clientDependency->select(v | v.stereotype.name = "collaborates")->size()连接到SystemGroup的系统数量
这是否意味着您也有构造型系统,并且只有目标构造型的<<System>>必须被计算在内?如果是:
context SystemGroup:: size: Integer
derive: self.clientDependency->select(v | v.stereotype.name = "collaborates" and v.supplier.stereotype.name = "System")->size()警告:/size是元类的派生属性,因此它在使用类构造型实例<<SystemGroup>>实现的应用程序级别不可用,您确定这是您想要的吗?
附言:我用来回答
了解如何访问类的依赖项和dependency
的属性的
https://stackoverflow.com/questions/63597055
复制相似问题