UML / SysML:派生属性的OCL规范,用于计算特定关系/构造型的数量

问题描述

我目前正在使用UML / SysML配置文件(使用Cameo Systems Modeler(NoMagic))。

我创建了两个新的刻板印象。一个是与元类依赖项“ collaborates”的新关系,另一个是称为“ SystemGroup”的类构造型。

然后,我将一个派生属性添加到名为“ / size”的«SystemGroup»构造型中。想法是,此属性由通过新的“协作”构造型连接到SystemGroup的系统的数量得出。

我认为使用OCL(或什至是工具的表达式)应该不难。我是MBSE的绝对新手,OCL规范到目前为止并没有帮助,因为该规范确实非常详细,并且google上的答案通常是通用的,例如“派生属性是由OCL中的特定表达式派生的属性或其他语言”。

有人可以帮助我或给我发送链接如何对派生属性进行一些顶级OCL吗?

谢谢!

解决方法

使用OCL进行刻板印象尚未得到充分说明。 OCL规范中零提及,只是UML规范中的一个示例提示。基于Pivot的Eclipse OCL原型可能是唯一一致的实现,它包含使用base_XXX和extension_XXX名称和多重性提供明智的类型安全导航的提示。我怀疑其他工具是否会完全一样。我怀疑NoMagic使用传统的Classic Eclipse OCL,因为OCL功能不足会鼓励许多用户访问Eclipse MDT UML2项目Java API。

您可能会从https://help.eclipse.org/2020-03/topic/org.eclipse.ocl.doc/help/OCLExamplesforUML.html#OCLM2Constraints那里获得一些线索

,

如果我很好地理解了构造型<<SystemGroup>>的类,则派生属性/size会从该类开始(无论目标的类型如何)确定构造型<<collaborates>>的依赖项数量就像:

context SystemGroup:: size: Integer
derive: self.clientDependency->select(v | v.stereotype.name = "collaborates")->size()

连接到系统组的系统数

这是否意味着您也具有构造型 System ,并且仅计数构造型<<System>>的目标?如果是:

context SystemGroup:: size: Integer
derive: self.clientDependency->select(v | v.stereotype.name = "collaborates" and v.supplier.stereotype.name = "System")->size()

警告/size metaclass 的派生属性,因此在使用构造型为<<SystemGroup>>的类实例进行实现的应用程序级别上,警告不可用您确定这就是您想要的吗?

P.S。回答我用