1 、模型检查是什么
在建立模型的时候,我们要遵守一定的规范。 UML 是一种建模语言,但是它遵循其特定的语法 ( 例如编程语言 ) 。我们用 UML 建模就要遵守 UML 建模的规范,如果不遵循 UML 语法,则认为创建的模型图不合适。如我们在建立类图的时候 ,可以建成这样 :
而不能这样:
因为 UML 元素不能自泛化。
下图 包含几个基本违反 UML 规则的情况:
通过模型检查操作,会在 ” 系统输出 “ 窗口出现如下错误
模型检查就是通过某些指定的规则,对 EA 中建立的模型进行检查。
2 、模型检查有什么用
模型检查可以对照已有的规则 对 EA 模型中单个元素、图表或者整个包进行 检查 。
3 、 模型检查的内容
模型检查的内容包括:
元素验证:元素及其子元素、它的特征(属性和操作)和它的关系(连接器)
图表验证:图表本身(为了正确性)以及图表中的任何元素和连接器
包验证:包和其中的所有子包、元素、连接器和图表
4 、如何 在 EA 中进行模型检查
在 EA 中模型检查的步骤:
1.首先建立模型
2.配置验证的规则:
菜单中选择 :
Design > Package > Manage > Tools > Validate > Configure Validation Rules
( 设计 > 包 > 管理 > 验证 > 配置验证规则 )
显示如下对话框, EA 给出了一些规则,我们可以根据需要选择检查的规则,默认情况下全部选中。
3.选定我们创建的图,然后点击菜单 Design > Package > Manage > Validate > Validate Current Package ( 设计 > 包 > 管理 > 验证 > 验证当前包 ) ,验证模型是否有问题。
4.运行完成后,在 SystemOutput 面板的 Model Validation 中查看检查结果
双击其中某条错误,对应的模型图中错误项会选中,如下图
5.对照规则说明查看情况。
每个错误或警告都有一个错误 ID ,格式如下:
MVRxxnnnn
• MVR 代表模型验证规则
• xx 是一个十六进制数,对应于“模型验证配置”对话框中验证规则的位置,说明违反了哪个规则
• nnnn 是违规消息的编号
例如:
• ID 中带有 MVR05nnnn 的消息表明“关系:格式良好”复选框已选中,并且已检测到违反该规则
具体可以查看本文章 “规则参考”部分。
本条错误 :
错误 ID:MVR050002
错误描述: « 关系 » 对于 « 开始元素 »-->« 结束元素 » 是不合法的
错误:给定的开始和结束元素之间的关系对这些元素无效。
6.根据 UML 规则修改图中错误的关系。然后重新验证,直到检查结果 0 个错误及警告。
5 、规则参考
模型检查通过对选定对象应用一些验证规则来工作。这些规则是通过分组排列的。主要分为如下 4 个规则组:
结构良好
元素组合
属性有效性
OCL 一致性
接下来我们具体讲解一下各个规则组
结构良好
格式良好的规则用于检查元素、关系、特征或图表是否格式良好。例如,目标项是否是有效的 UML 项,或者图表中是否包含有效元素。
错误 ID |
描述 |
MVR010001 |
«Element» is not a valid UML Element
错误:该元素不是可识别的 UML 2.5 元素。 |
MVR050001 |
« Relationship » is not a valid UML Relationship
错误:该关系不是公认的 UML 2.5 关系。 |
MVR050002 |
« Relationship » is not legal for «Start Element» --> «End Element»
错误:给定的开始和结束元素之间的关系对于这些元素无效。 |
MVR050003 |
« Parent Element » : isLeaf =true and cannot be generalized by «Child Element»
错误: 父元素和子元素之间不能存在泛化关系 ,因为父元素被定义为叶元素。 |
MVR050004 |
« Child Element » : isRoot =true and cannot generalize «Parent Element»
错误: 父元素和子元素之间不能存在泛化关系 ,因为子元素被定义为一个根元素。 |
MVR050005 |
« Element » cannot generalize self
错误:元素不能自我泛化。 |
MVR0B0001 |
Statechart violation: « extended information »
错误:状态图包含 UML 错误; « 扩展信息 » 提供了有关特定违规行为的更多详细信息。 |
MVR0C0001 |
Sequence Violation: « extended information »
错误:序列图包含错误, « 扩展信息 » 提供有关特定违规的更多详细信息。
(此规则验证消息调用的操作 - 从 “ 消息属性 ” 对话框的下拉组合框中选择 - 如果该操作不属于生命线,则将报告错误。) |
MVR7F0001 |
« Requirement » Not realized
错误:需求元素 必须位于实现、关联(包括聚合和组合)或泛化连接器的目标端 。 |
元素组合
元素组合规则用于检查 UML 元素是否包含有效子项,它是否包含正确数量的有效子项,以及该元素是否缺少任何必需的子项。
错误 ID |
描述 |
MVR020001 |
« Element » is missing required child element «Child Element»
信息:该元素缺少子元素类型的子元素。 |
MVR020002 |
Invalid UML Package child
信息:该元素不能是包的直接子元素,必须是另一个元素的子元素(例如,端口必须是其他元素的子元素,而不是直接 UML 包成员)。 |
MVR020003 |
Invalid child «Child Element name» («Child Element Type»)
信息:子元素在被测父元素上无效。 |
属性有效性
属性有效性规则用于检查元素、关系或特征是否具有为其定义的正确 UML 属性,以及它们是否包含不正确或冲突的值。
错误 ID |
描述 |
MVR030001 |
« Element » :«Property» property is undefined
信息:元素属性不包含任何值。 |
MVR030002 |
« Element » :«Property» property has invalid value: "«Value»"
信息:元素属性包含无效值。 |
MVR030003 |
« Element » :isLeaf=true and cannot be abstract
信息:该元素的 isLeaf 和 isAbstract 属性 均设置为 True ,这是无效的。 |
MVR060001 |
« Relationship » :«Property» property is undefined
信息:关系属性不包含任何值。 |
MVR060002 |
« Relationship » :«Property» property has invalid value: "«Value»"
信息:关系属性包含无效值。 |
MVR090001 |
Attribute/ AssociationEnd mismatch, «Attribute»: «Mismatch description», ...
信息:给定属性具有同名的关联,但它们在列出的详细信息中有所不同。 |
OCL 一致性
OCL 一致性规则用于根据对象约束语言 (OCL) 中定义的任何约束来验证元素、关系或属性。 OCL 用于描述 UML 模型上的表达式,并表示没有副作用的约束。可以将 OCL 约束添加到 EA 中的任何元素关系或属性。
错误 ID |
描述 |
MVR040001 |
OCL violation: «violated OCL»
信息:元素的 OCL 约束使用了错误的语法。 |
MVR070001 |
OCL violation: « violated OCL »
信息:关系的 OCL 约束使用了错误的语法。 |
MVR0A0001 |
OCL violation: « violated OCL »
信息:属性的 OCL 约束使用了错误的语法。 |
6 、自定义验证配置
除了可以根据 EA 定义好的规则来进行模型验证,还可以通过外接程序或包含自定义规则的 MDG 技术 ( 如 BPMN) 来添加模型验证规则, 实现单个项目、客户端或域相关的自定义规则模型验证。因为涉及到 EA 的二次开发,我们就不在这里详细介绍了。
7. 后记
希望您读了此文后有所收益。 如果您有经验乐于分享,欢迎投稿给我们,如果您对我们的培训、咨询、和工具感兴趣,欢迎了解。 火龙果软件提供团队协同建模环境的咨询服务,可以帮助用户搭建完整的团队建模和 MBSE 解决方案,详细信息请见 http://tool.uml.com.cn/ToolsEA/introduce.asp 希望本文对您的建模工作有帮助。更多的有关 EA 建模资料如下:
如果您希望了解更多信息:
|