· 概述
UML 提供了几种扩展机制,允许建模者在不用改变基本建模语言的情况下做一些通用的扩展。这些扩展机制已经被设计好,以便于在不需理解全部语义的情况下就可以存储和使用。由于这个原因,扩展可以作为字符串存储和使用。对不支持扩展机制的工具来说,扩展只是一个字符串,它可以作为模型的一部分被导入、存储,还可以被传递到其他工具。我们期望后端工具设计成能够处理各种扩展,这些工具会为它们需要理解的扩展定义特定的语法和语义。
这种扩展的方法很可能不能满足出现的多种要求,但是它以一种易于实现的简单方式容纳建模者对 UML 裁制的大部分要求。
扩展机制包括约束、标记值和构造型。
一定要记住扩展是违反 UML 的标准形式的,并且使用它们会导致相互影响。在使用扩展机制之前,建模者应该仔细权衡它的好处和代价,特别是当现有机制能够合理工作时。典型地,扩展用于特定的应用域或编程环境,但是它们导致了 UML 方言的出现,包括所有方言的优点和缺点。
· 约束约束是用文字表达式表示的语义限制。每个表达式有一种隐含的解释语言,这种语言可以是正式的数学符号,如 set-theoretic 表示符号;或是一种基于计算机的约束语言,如 OCL ;或是一种编程语言,如 C++ ;或是伪代码或非正式的自然语言。当然,如果这种语言是非正式的,那么它的解释也是非正式的,并且要由人来解释。即使约束由一种正式语言来表示,也不意味着它自动为有效约束。
约束可以表示不能用 UML 表示法来表示的约束和关系。当陈述全局条件或影响许多元素的条件时约束特别有用。
约束用大括弧内的字符串表达式表示。约束可以附加在表元素、依赖关系,或注释上。图 11-1 表示了几种约束。
图 11-1 约束