GB/T28174.2-2011

统一建模语言(UML)第2部分:上层结构

Unifiedmodelinglanguage(UML)-Part2:Superstructurespecification

本文分享国家标准统一建模语言(UML)第2部分:上层结构的全文阅读和高清PDF的下载,统一建模语言(UML)第2部分:上层结构的编号:GB/T28174.2-2011。统一建模语言(UML)第2部分:上层结构共有372页,发布于2012-06-01
  • 中国标准分类号(CCS)L77
  • 国际标准分类号(ICS)35.080
  • 实施日期2012-06-01
  • 文件格式PDF
  • 文本页数372页
  • 文件大小6.42M

以图片形式预览统一建模语言(UML)第2部分:上层结构

统一建模语言(UML)第2部分:上层结构


国家标准 GB/T28174.2一2011 统一建模语言UML 第2部分:上层结构 Umifiedmodelinglanguage(UML)一 Part2:Superstrueturespeeifieatiom 2011-12-30发布 2012-06-01实施 国家质量监督检监检疫总局 发布 国家标准花管理委员会国家标准

GB/T28174.2一2011 目 次 前言 引言 范围 规范性引用文件 类 3.1概述 3. .2 内核一根图(Kernel theRootDiagram 内核一命名空间图(Kernel 3. .3 amespacesDiagram 13 3.4内核一多重性图(Kernel一theMuuplieitiesDiagram 3.5内核一表达式图(Kenel 1 theExpressionsDiagram 3.6内核一约束图Kernel 23 theConstraintsDiagram 3.7内核一实例图 25 Kernel thelnstancesDiag n 内核一类目图 28 3 .8 Kernel theClassifiersDiagram 3.9内核一特征图(Kernel一theFeaturesDagram 36 3.10内核一操作图(Kernel一theOperationsDiagranm 39 3 .11内核一类图Kernel一theClassesDiagram) 42 3 12 内核数据类型图(Kernel一theDataTypesDiagram 54 3 13 内核一包图(Kernel一thePackagesDiagram 5 3 .14依赖(Dependencies) 62 3.15接口(Interface 67 3 16关联类AssociationClasses 7! .17冥类型(PowerType 3. 72 3. .18 图 75 Diagram 构件 81 概述 4.2抽象语法 4.3类描述 83 图 91 4.4 组合结构 92 5.l 概述 92 5.2抽象语法 93 5.3类描述 96 5.!表示选项" 96 5.5 图 112 部署 113 113 概述
GB/T28174.2?2011 114 6.2? 116 6.3 126 6.4 6.5?· 127 127 127 7.1 7.2? 129 7.3 137 7.4 ? 172 ? 172 8.l 172 8.2? 173 184 ??(CommonBehaviors) 250 9. .1 250 9.2? 253 9.3 257 10(Interactions) 273 273 10.1 273 n0. M." 277 10.4? 2296 1 ?? 08 308 1.1? 1.2? 309 1. 312 ? 349 11. 4 12?UseCases) 352 12.1 352 12.2? 352 353 12.3 361 12.4?Diagrams)
GB/T28174.2一2011 前 言 GB/T28174《统一建模语言》分为4个部分 -第1部分:基础结构; 第2部分:上层结构; 第3部分:对象约束语言(OCL); 第4部分图交换 本部分为GB/T28174的第2部分 本部分按照GB/T1.1一2009给出的规则起草 本部分参考面向对象工作组(oMG)的(统一建模语言上层结构)2.0版 请注意本文件的某些内容可能涉及专利 本文件的发布机构不承担识别这些专利的贵任 本部分由全国信息技术标准化技术委员会(sAc/Tc28)提出并归口 本部分起草单位;电子技术标准化研究所、北京大学、广东省广业信息产业集团有限公司、镇江 金钛软件有限公司、广东万维博通信息技术有限公司 本部分主要起草人;高健、江善东、许立勇、周伟强、黄孝和、丁力、杨三宝、吴炯祥邓海强、胡红林、 唐泽欢、麻志毅
GB/T28174.2一2011 引 言 统一建模语言(UML)是一种可视化规约语言,用于定义和构造计算机信息系统的制品,并将其文 档化 它是一种通用建模语言,可以和所有主流的面向对象和面向构件的方法一起使用,并适用于所有 的应用领域和实现平台(如,CORBA、J2EE、NET等). 一建模语言不同版本之间的关系 0.1统一 由于UML的技术较新,所以该国际标准历经多次的版本演化,下面是UML在ONMG的演化过程" 1997 UMIl.1 1998 UML1.2 999 UMLl.3 2001 UML1.4 2003 UM2.0 GB/T28174的本部分正文中的UMI均指UML2.0统一建模语言和GB/T28174 关于对读者的建议 需要了解语言中的元模型构造物,利用这些构造物进行元模型扩展或者是构造新的建模语言的用 户可阅读基础结构部分(GB/T28174.l) 应用系统建模用户和建模工具制造方都需阅读上层结构(GB/T28174.2) 但要注意,该部分的内 容是交叉引用的,可不按目次顺序阅读 对于要精确地对模型进行约束的应用系统建模用户或要支持对象约束语言的建模工具制造方,需 阅读对象约束语言部分(GB/T2817生.3) 支持在不同的软件工具间平滑且无缝地交换文档的建模工具制造方,需阅读图交互部分
GB/T28174.2一2011 统一建模语言(UML 第2部分:上层结构 范围 GB/T28174的本部分规定了用于对各类软件系统进行可视化、详述、构造和文档化的统一建模语 言 本语言也可用于对其他领域进行建模 本部分适用于用户使用的本标准的语言构造物 在严格地遵循了GB/T28174.1基础结构的基础 上,本部分讲述了供用户使用的本标准的元模型,即本标准的语法和语义 规范性引用文件 下列文件对于本文件的应用是必不可少的 凡是注日期的引用文件,仅注日期的版本适用于本文 凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件 件 GB/T28174.1统一建模语言(UML》第1部分;基础结构 GB/T28174.3统一建模语言(UML) 第3部分;对象约束语言(oCL) 类 3.1概述 类(Classe)包含有了与UML基本建模概念相关联的子包,尤其是类以及它们之间的关系 包的结构 图1描述了包Classes的子包之间的依赖关系(比如包合并(merge)) Kernel <3 PowerTypes AssociationClasses Dependencies nteraces 图1 Classes包的子包及它们之间的依赖关系
GB/T28174.2一2011 考虑到Kernel包大小的,本章按照图划分,此处每张Kernel图都为单独的条 AssociationClasses 包和PowerTypes包虽然与kernel图关系紧密,但放在了单独的章条描述(分 De 别见Ass sociationClasses和PowerTypes) pender ncieS 包和Interfaces 包也在不同的条描述(分别见 Dependencies和Interface) 在这样的情况下,如果后4个包的任一个增加了对原定义在Kernel包中的类的定义,新增部分的 描述将写在原有类的下面 来自本标准的复用包 Kermedl包描述了UML的核心建模概念,包括类,关联和包 这部分主要是从基础结构库复用的 因为大部分概念与MOF(例如)中的是一样的 Kernel包是UML的核心部分,主要重用了Infrastrue ture库的Constructs(构造)包和Abstractions(抽象)包 复用的方法就是合并Construct和Ahstracions的相关子包 在很多情况下,用附加的特征,关联 或超类在Kernml中扩展所复用的类 在后面表示抽象语法的图中,通常省略来自lnfrnsruetuc库的 元素的子类,因为该信息仅仅增加了复杂性而不有助于理解 作为本章的部分,对每个元类都进行了完 整的描述;在此处重复来自lnfrastructurelibrary的文本 还要注意,尽管Abstractions包括几个子包,Kernel是一个如constructs一样的平面结构,只包含 元类 这种差异的原因在于,Infrastructure库的有些部分是为灵活性和复用设计的,而Kernel在复用 nfrastructure库时,不得不将所复用的元类的不同方面结合起来 因此,为了组织本章,我们采用图而 非包作为主要分组机制 显式地合并来自InfrastruetureLibrary::Core的包列举如下 Abstractions::lnstances Abstractions::MultiplicityExpressions Abstractions::Literals Abstractions::Generalizations Constructs 通过显式地合并上述包,InfrastructureLibrary::Core中的所有其他包也被隐含地合并 如图2 所示 core: Core Core Abstractions Abstracions: Abstractions MultiplicityExpressions Generalizations Literals < <> > Core Abstracions: Kermel core:Constructs lnstances 图2 由 Kernel合并的 lnfrastruetureLibrary的包 图中的所有依赖关系都表示包合并 3.2 内核一根图(keme一heRDwrumr Kernel包的根图如图3所示
GB/T28174.2一2011 中/owner Eement 0.1union) +/owmedElement (uniony +ownedComment Comment fsubsetsownedEiement /relatedEiement E/ement +annotatedEement Reaions7D Comment DoySurmg union DirectedReationship +/target union, subsetsrelatedElemen心 十/source union subsetsreiatedElement 3 图 Kernel包的根图 mentfromKernel 3.2.1注释来自内核[Co" 注释是附属到一组元素的文本性注解 描述 注释能够把各种解释附加到元素上,其本身不携带语义,但是可以包含对建模者有用的信息 任何元素都可以有注释 属性 body;Stri 指定作为注释内容的串 ing 关联 annotatedElement;Element['] 引用被注释的元素 约束 无添加的约束 语义 让释对被注解的无素没有增加任何谱义,只是为模型的读者提供一些有用信息 记法 注释用一个右上有折角的矩形表示 该矩形中包含本注释的内容 注释与每个被注释元素由虚线 连接 表示选项 如果语境关系明显,或者在图中不重要的话,可以省略连接注释与被注释元索的虚线 例子 如图4所示 Thisclas5wasadded byAlanwightaler meetingwithtte missionplanningteam Account 图4注释的记法
GB/T28174.2一2011 3.2.2有向关系(来自内核包[DireetedReationshipfromKernel门 有向关系表示源模型元素集合与目标模型元素结合之间的关系 描述 指示性关系涉及一个或多个源元素以及一个或多个目标元素 有向关系是一个抽象元类 属性 无添加的属性 关联 //source:Element[1. 说明有向关系的源 Relationship;relatedElement 子集 是一 a 个导出集合 b /arget.Element[1 说明有向关系的目标 Relationship: ;relatedElement子集 是 个导出集合 约束 无添加的约束 语义 有向关系没有特别的语义,它的各种子类将添加适用于它们表示的概念的语义 记法 有向关系没有一般的记法,它的子类将定义自己的记法 在大多数情况下,是从源到目标的直线及 其变体 3.2.3元素(来自内核包)[Element(fromKermel] 元素是构成模型的要索,它具有拥有其他元素的能力 描述 元素是没有父类的抽象元类 在Infrastructure库中是所有元类的共同父类 元素跟自己本身有 派生组合关联,以支持元素拥有其他元素的一般能力 属性 无添加的属性 关联 a)ownedComment:Comment[ 该元素拥有的注释 Element::ownedElement子集 b) /ownedElemment;Element[] 该元素拥有的元素 是一个派生联合 /owner;Element[O..1] -拥有该元素的元素 是一个派生联合 c 约束 一个元素不可以直接或间接拥有本身 a) notself.alOwnedElenments()->inecludes(sel) b 一个被拥有的元素应有一个所有者 elI. stBe(O Owned tEmptyO .must ipliesowner-一notl 附加操作 allOwnedEle lemments()返回一个元素所有的直接或间接拥有的元素; Elemcnt;alowncdElemenrsO).se(Elemen) allOwnedlElements ownedElement >union(ownedElement ->coleet(ele.alOwnedlElenments())) mustBeOwned()表明该类型元素是否应有一个所有者,不要求所有者的元素的子类应重载这 -操作 Element:nustlBeOwned()Bboolean
GB/T28174.2一2011 mustBeOwned true 语义 元素的子类提供了适用于它们表示的概念的语义 元素的注释没有添加语义,但是可以表示给模 型读者的信息 记法 元素没有一般的记法 元素的子类定义了自己的记法 3.2.4关系(来自内核包[RelationshipfromKermel)门 关系是一种说明元素之间某些关系的抽象概念 描述 关系涉及一个或多个相关的元素 关系是一个元类 属性 无添加的属性 关联 /rclatedElemenmt:Element[1.]说明由该关系相联系的元素 这是一个派生联合 约束 无添加的约束 语义 关系没有特定的语义 关系的各种子类会添加适用于它们所表示概念的语义 记法 关系没有一般的记法,关系的特定子类会定义它们自己的记法 在大多数情况下,记法为相关元素 之间的直线及其变体 内核一命名空间图(Kerme一theNamespacesDiagram) 3.3 Kernel包的命名空间(Namespace)图如图5所示 Eermen n NaE地m B POKUPm 1edemO uno) sbityVstityKrd sutbsesmemte /mamespace y/ownedMembe im0OrinONameS0aCe EementimO sutsetsIarOe时 2n sutsetss Sub5etSOwnedEenen s0rCe sb5ersowngn pckaompo nonedPackg Pacaa0e 3 Pacage utsettaroe 图5Kernel包的命名空间图 要找到图中引用的元类 见“方向性关系” a 见“元素”; b
GB/T28174.2一2011 见“包” 3.3.1元素引入(来自内核包[Eementlmportfromkernel] 元素引人用于标识另外一个包中的元素,并且允许不加限定符,仅使用其名称来引用该元素 描述 把元素引人定义为一种可打包元素和引人命名空间之间的有向关系 可打包元素的名称或者它的 别名被添加到所要引人它的命名空间中 还可以控制一个被引人的元素是否可以被进一步引人 属性 visibility:VisibilityKind指定被引人的可打包元素在引人包中的可见性 缺省值同被引 a 人元素的可见性属性 如果被引人元素没有可见性属性,则可以为其增加该属性 b)alias;String[0..1]-指定用来代替引人的可打包元素名称而添加到引人包的命名空间中 的名称 该别名不得同引人包中的成员名称相冲突 缺省情况下,不使用别名 关联 importedElement:PackageableElement[1] -名称被加人到命名空间中的可打包元素的名 -子集 称 DirectedRelationship::target 从其他包中引人可打包元素的命名空间 Directed b)importingNamespace;Namespace[1] source和Element::owner子集 Relationship:: 约束 无素引人的istbiy属性或为bit,或为pnae a) self.visibility=井publicorself.visibility 井private b)被引人元素的可见性要么为public,要么没有 self.importedElenment visibility notEmpty()impliesself importedElement.visibility 井publie 附加操作 [1]getName()操作返回被引人的可打包元素在引人命名空间中的名称 Elementlmport:;getName()String getName ifself.alias->notEmpty()then sel.alias else self.importedElement.narme endif 语义 元素引人将可打包元素的名称从一个包中添加到引人命名空间里 作为引用,意味着不能向元素 引用本身增加特征,但可以在被引用的那个命名空间里修改所引用的元素 元素引人用于选择性地引 人单个元素而无须依靠整个包 如果在引人命名空间中发生外部名称(在封闭的命名空间里定义的元素可以在封闭的命名空间中 不加限定的引用)命名冲突的情况,外部名称被引人元素隐藏,且用未限定的名称标识所引人元素的名 称,可以通过限定名称访问外部名称 如果由于元素引人或包引人导致多个同名元素被引人到一个命名空间中,为了使用应该对引人的 元素的名称加以限定,否则不可以把其添加到命名空间中 如果引人元素跟引人命名空间本身拥有的 元素同名,也应限定所引人元素的名称 被引人的元素,还可以进一步通过元素或成员引人被其他的命名空间引人
GB/T28174.2一2011 元素引人的可见性可以与被引用元素的相同,或者更严格 记法 用带箭头的虚线表示元素引人,箭头从引人命名空间指向被引人元素 如果可见性是public,在虚 线附近加上关键词《import》,否则是《a access》 如果引人元素有别名,该别名写在关键词《import》后面或下面 表示选项 如果被引人元素是包,可以在元素之前加上关键字,如《elem import》. mentln 如果不使用虚线箭头,则可以用花括号限定惟一标识所引人元素的文本,放在命名空间之下或之 后 文本表示如下 gualiiedName>}或elementaccessqualifiedName> elementimportas或elementaccessgualifiedName>as一alias> 例子 在图6中,元素引用允许包Program中的元素不加限定地引用Types中的类型Time 然而,如果 要引用Typeslneger类型仍需要加眼定间,因为该元素设有被引人 ypes < lnteger < <> Program Time 图6元素引入的例子 图7中,引人元素使用了别名,意味着Types;Real类型在Shapes包中称为Double Types Shapes <> < Double Circle Rea radius:Double 图7使用别名的元素引入的例子 3.3.2命名元素(来自内核包,Dependeneies包)[NamedElement(fromKermel,Dependencies)7 命名元素是指模型中拥有名称的一个元素 描述 命名元素表示的是可拥有名称的元素 名称用来在定义该元素的命名空间中识别该元素 命名元素还有一个限定的名称,用于在嵌套的命名空间层次中惟一地识别该元素 命名元素是一 个抽象元类
GB/T28174.2一2011 属性 name:String[O..1]- 被命名元素的名称 a b /qualifiedName;String[o..1] -用于在嵌套命名空间层次内识别命名元素的名称 它由 从嵌套的命名空间的根的名称开始一直到该命名元素本身的名称为止所有的名称构成 是 个派生属性 visibility:VisibilityKind[O..1] -决定了在整个模型中不同命名空间里该命名元素的可见 性 包依赖见“依赖”) suplieDe ependency:Dependeney[] 表明引用提供者的依赖 clientDependency:Dependency[" 表明引用客户的依赖 关联 /namespace:Namespace[O..1] -详述拥有该命名元素的命名空间 Eemen/:ower子集 是 个派生联合 约束 如果元素本身没有名称,或者包含命名空间之一没有名称,则没有限定名; a self.name-isEmpty()orself.alINamespaces()-select(ns|nsname-isEmpty()- notEmpty) impliesself.qualifiedName>isEmpty(O 元素本身有名称,且每个命名空间都有名称,则限定名由所有命名空间的名称构成 self.name->notEmpty()andself.allINamespaces( - select(ns|ns,name>isEmpty( 一isEmpty()implies self.qualifiedName self.alINamespaces()->iterate(ns:Namespace;result:String=self. name ns name->>union(self.separator()->union(result) 如果一个命名元素并不为任何一个命名空间所有,则它的可见性为空 namespace->isEmpty()impliesvisibility->isEmpty( 附加操作 alINamespaces()返回命名元素所在的由内向外的命名空间序列 NamedElement::alINamespaces()Sequence(Namespace): allNamespaces ifself.namespace-isEmpty(O thenSequence amespaces()->prepend(self.namespace) elsesell.name.alIN endif isDistinguishableFrom()表明两个命名元素是否能逻辑共存于一个命名空间中 缺省情况 下,两个命名元素可被辨识 它们是不相关的类型; 它们是相关类型但是名称不同 NamedEle ):Boolean; rom(n:NamedElement,ns;Namespace) ienmeniaDhstinga.hableFr isDis hstinguishable ifself.oclIsKindOf(n.oclType)orn.oclIsKindOf(self.oclType' henns getNamesOfMemberself intersectionns getNamesOfMenbern) i;Empty(0 elsetrue
GB/T28174.2一2011 endif or()返回构造限定名时候使用的分隔符 separator NamedlElement:separatorO);SstrinE; Separator 语义 e属性用于在其名称是可访问的命名空间里标识命名元素 注意该属性有[0..1]的多重性 name 以保证没有名称的可能性(这与名称为空不同 可见性属性提供了这样的含义;在模型的不同命名空间里,约束对命名元素的使用 要把它与引人 和泛化机制一起使用 记法 无 命名空间(来自内核包)[NamesDace(fromKernel 3.3.3 命名空间是模型中的一个元素,它包含一组可用名称识别的命名元素 描述 命名空间是能够拥有其他命名元素的命名元素 每个命名元素至多只能为一个命名空间所有 命 名空间提供了一种靠名称鉴别命名元素的手段 命名空间里靠名称鉴别的命名元素可以是直接属于该 命名空间的,也可以是通过其他方法(比如引人或者继承),加人到该命名空间里来的 命名空间是一个 抽象元类 命名空间可以包含约束 约束不仅可以作用于命名空间本身,还可以作用于命名空间中的元素 命名空间可以引人一个包中的单个甚至所有成员,因此可以在引人命名空间中不加限定地引用命 名元素 在冲突的情况下,则应通过限定名或别名消除歧义 属性 无添加的属性 关联 dlementmport;Elementlmport[]一 命名空间拥有的引人元素 Elemen::nedElement a 子集 /importedMember:PackageableElement[] 引用为该命名空间的成员的可打包元素,作 为包引人或成员引人 Namesbace:member子集 /member:NamedElement[] 命名空间内可识别的命名元素集合,可以是空间本身包含 的,也可以是通过引人或继承等加人的 这是一个派生联合 /ownedMember:NamedElement -由命名空间拥有的命名元素集合 Eemen/: ownedElemen和Namespace::member子集 是一个派生联合 ownedRule;Constraint[ 指定命名空间拥有的一组约束 NasypucenwnedMemher 子集 -对由命名空间拥有的包引人的引用 Eement: packagelmport:Packagelmport['] o7edl uElemen子集 约束 个命名空间中的所有成员在其中都是可识别的; a ishable( sAreD)isingui members importedlMember性质是由元素引人和包引人派生的 self edMember-includesAllsel importedMembers(self.elementlmport.import importee edElement.asSet()union(self, visible .packagelmport.importedPackage->collect ctpp,"
GB/T28174.2一2011 Members())) 附加操作 a getNamesOfMember()返回一个成员在命名空间中的所有名称 一般而言,如果一个成员用 不同的别名被引人多次,那么它在命名空间中将有多个名称 该操作考虑引人,返回元素在引 人命名空间中的名称,这分三种情况 1属于该空间; 2)不属于该空间而是被单独引用 所在的包被引人 Nar es(OfMember(element:;NamedElement):Set(String); amepace::RetNane getNamesOfMember ifsel.ownedMemberincludes(element thenSet}-include(element.name elseletelementlmports:Elementlmport self.elementlmport-select(eiei.import edElement element)in ifelementlmports-notEmpty( thenelementlmports->collect(el|el.getName( else self.packagelmport->select(pi|pi.importedPackage.visibleMembers()- includes(element))- collect(pipi.importedPackage.getNamesOfMember(element) endif endif membersAreDistinguishable()表明是否某个命名空间中的所有成员在其中都是可识别的 b Namespace::membersAreDistinguishable(:Boolean; membersAreDistinguishable self.member>forAIlmemb self.member->exeluding(memb)>forAll(other memb.isDistinguishableFromother,self))) importMembers()定义哪个可打包元素实际被引人到命名空间中 该操作把隐藏元素排除在 外,即那些与固有元素有名称冲突的,还排除了引人时同名的元素 Namespace::importlMembers(irmps;Set(PackageableElement)):Set(PackageableElement); self.exeludeCollisions(imps)->select(imp sel.ownedMember importMembers orAlmem mem.imp.isDistinguishableFrom(mem,self)) excludeColisions()排除了在命名空间中不可识别的可打包元素 SetPac tageableEle lements):SetPackageableEle Namcespae:exdludcolsions(imps. ments); excludeCollisions= llinm isDist iishaleFrom imps.exists(imp2l 一imps>rseGimpl notimpl tingui imp2,.self) 语义 命名空间提供了容纳命名元素的一个容器,提供了名称冲突的解决方法,如namel:;name name3 用形如N;的复合名称,member关联识别命名空间N中的所有命名元素 注意这与在 N中不用限定名的名称不同,因为该集合还包含封闭命名空间中的非隐藏成员 10
GB/T28174.2一2011 -个命名空间中的命名元素根据不同规则与其他命名元素区别 默认的规则是,如果两个元素类 型不相关,或者类型相关但不同名,则它们是不同的元素 特定情况下可以覆盖该规则,比如根据签名 识别的操作 命名空间的ownedRule约束表示用于被约束元素的良构规则 在判定模型元素是否是良构的时 候,计算这些规则 记法 无添加的记法 具体的子类定义自己特定的记法 3.3.4可打包元素来自内核PackageableElementfromKernel 描述 可打包元素是指能够直接被包拥有的命名元素 属性 visibility:VisibilityKind[1] -可打包元素应具有一定的可见性,也就是说,可见性并不是可选 的 重定义NamedElemen;uisibiliy. 关联 无添加的关联 约束 无添加的约束 语义 无添加的语义 记法 无添加的记法 3.3.5包引入(来自内核包[PaeckageImport(fromKermel] 包引人是允许使用非限定的名称引用来自其他的其命名空间的包成员的一种关系 描述 包引人定义为一种有向关系,表示一个包的成员被一个命名空间引人 属性 被引人的可打包元素在引人命名空间中的可见性,即,被引人元 visibility:VisibilityKind一 a 素对其他引人该引人包的包是否可见 如果包引人是pblic的,被引人的包在包外是可见的, 如果是private,则是不可见的 默认情况下,可见性的值是publie 关联 martelPeackage.Pekege[ 成员被引人命名空间的包 DirectedRelationship::targel a 子集 importingNamespace;Namespace[1] -从包中引人成员的命名空间 DDireetedRelationship;soure和Eemenl;;ower子集 约束 包引人的可见性要么是public,要么是private self.visibility=井publicorself.visibility 井private 语义 包引人是包和引人命名空间之间的一种关系,表明引人命名空间将该包的成员名称加人到自己的 命名空间中 从概念上讲,包引人等同于引人每个单独成员,除非已经有了单独定义的元素引人 1
GB/T28174.2一2011 记法 包引人用带箭头的虚线表示,箭头从引人命名空间指向被引人的包 在箭头附近加关键词表明的 是包引人的类型 预定义的关键词是《import),用于公共的包引人,《access》用于私有的包引人 表示选项 除了带箭头的虚线,还可以用惟一识别被引人元素的文本表示元素引人,并将此文本置于花括号 中,跟在命名空间名称的下面或后边 文字表示如下 limpor或acess) 例子 图8表示了几个包引人 Type中的元素被引人到shopimgCar中,又更进一步被引人到web ary中的元素则只能从shopingCart中访问,如果不加限定词webshop Shop中 而Auxilia 是不能引 用的 Axilian < ShoppingCat < 图8公开和私有包引入的例子 3.3.6可见性类型(来自内核包[Visibilitykind(fromKernel)] 可见性类型是枚举类型,用于定义模型元素的可见性的文字 描述 可见性类型是以下文字值的枚举; a)public; b private; protected d package 附加操作 bestVisibility()检查一组仅包括public和private的可见性类型,并且返回可见性publie作为 首选 VisibilityKind::bestVisibility(vis:Set(VisibilityKind)):VisibilityKind pre;notvis>include ted)andnovis>includes(井package) e(井protet btestVisiblitry=irvis>includes(井publie)then井pubicelse井privateendir 语义 可见性类型用于在和Imports.Generalization、和Packa7 等包关联时指定可见性 具体语义与这 R 些机制相关 如果包的可见性脱离这些包而使用,这些文字值将表示其他意义,或者根本没有意义 a)public元素对所有有权访问它所属的命名空间的元素都是可见的; private元素仅在它所属于的命名空间内部可见 b protected元素对与它所属于的命名空间具有泛化关系的元素可见 c 12
GB/T28174.2一2011 d ackage元素被非包的命名空间拥有,对同一包(作为它的拥有命名空间)中的元素可见 只有不 为包所拥有的命名元素才能被设定为package可见性(给其他拥有元素适当的可见性) 任何可 见性为package的元素对同一个最小闭包中的元素可见,对该最小闭包之外的元素不可见 在一个命名元素具有多重可见性的情况下,比如被多次引人,publie可见性覆盖private可见性 也即,如果一个元素被两次引人到同一命名空间中,一次用publie引人一次用private引人,其结果还 是publie的 内核一多重性图(Kernel一theNMultiplieitiesDiagram) Kernel包的多重性图如图9所示 E/ement ownerUpper MultplicityElement +uppervalue [subsetsowner VaueSpecification isOrdered.Boolean=alse subsetsownedEiement 0.1 isUnique:Boolean=true ownerower +owervalue //upper.UnlimtedNatural[0.1] SUbsetsOwnen /IowerInteger[0.1 subsetsownedEiement NamedE/ement PackageableEiement +ype TypedEIemeni Type 0.1 图9Kernel包的多重性图 要找到图中引用的元类 见“类目” a b)见“元索”; c)见“值规约” 3.4.1 多重性元素来自内核包[MultiplieityElementfromKerne] 多重性是定义为一个从非负整数下界到上界(可能是无穷)的区间 多重性元素内嵌该信息,以指 定该元素实例的数目的范围 描述 多重性元素是一个抽象元类,包含了可选的属性,来定义多重性的边界 多重性元素还包含了对元 素实例化值是有序的还是惟一的的说明 属性 对于多值的多重性,该属性说明元素的实例值是否有序 默认值为 isOrdered:Boolean a false 13
GB/T28174.2一2011 b ;Boolean isUmque: -对于多值的多重性,该属性说明元素的实例值是否惟一 默认值为 true /lower;lnteger[0..1 多重性区间的下界 UnlimitedNatural[O..1] -多重性区间的上界 /upper; 关联 定义该多重性的下界 Element::onelElement lowerValue:ValueSpeecification[0..1] a 子集 b wpperValue e;ValueSpecification[0..1] -定义该多重性的上界 Eemenl::ounedElement 子集 约束 这些约束应处理上界可能用模型中不可计算的表达式表示的情况. 多重性应定义至少一个大于0的有效的基数 a perBoundO)>noEmpty()implitsupperBound()> 下界一定是非负的确定的整数 lowerBound(O)>notEmpty()implieslowerBound(O)>= 上界一定大于或等于下界 upperBound()-notEmpty()andlowerBound()-notEmpty()immpliesupperBound()= lowerBound( 如果上界或下界使用了非文字的值规约表示,对该规约的计算不可以存在副效应 不能用 d O)CL表示 如果上界或下界使用了非文字的值规约表示,该规范应是常数表达式 不能用0oCI表示 派生的lower属性应等于lowerBound lower lowerBound( 派生的upper属性应等于upperBound. upper upperBound( 附加操作 sMultivalued()检查该多重性上界是否大于1; MultiplieityElement::isMultivalued();Boolean; pre:upperBound()-notEmpty( isMulivalued=(upperBound()> ineludesCardinality()检查给定的基数对于该多重性是否有效; MultiplieityElement;;includesCardinality(C;lnteger);Boolean:; pre:upperBound(O notEmpty()andlowerBound()->notEmpty( includesCardinality lowerBound(O C)and(upperBound(> includesMultiplieity()检查该多重性是否包含所有由被指定的多重性所允许的基数; );Bbolean; y(M:MultipliceityElement) MuliplieityElement:inele udesMultiplicity(Q pre;self.upperl self. Bound notEmpty()and lowerBound()-一notEmpty( andlM )andM.lowerBound()-notEnm .upperBound( notEmpty( mptyO 8 self.lowerBound()<=M.lower erBound( includesMultiplieity bomd() self.upper )and M. rBound( .upper lowerBound()以整型返回多重性的下界; MultiplieityElement:: lowerBound();[Integer]; lowerBound iflowerValue y)then1elselowerValue. Value()endir -isEmpy ,integer 14
GB/T28174.2一2011 upperBound()以无限制自然数返回多重性的上界 MultiplieityElement::upperBound();[UnlimitedNatural]; pperBound =if erValueisEm y()then1else rValue.unlimitedValue()endif upper mpty upper 语义 多重性定义了一组整数,用于定义有效势域 也即,如果M.includesCardinality(C)为真,则势域C 对于多重性M是有效的 把多重性指定为一个从非负整数下界到上界(可能是无穷)的区间 如果一个多重性元素指定了多重性的值,则该元素的实例是一个值的集合 多重性是对在该集合 中可能有效出现的值的次数的约束 如果该多重性元素是有序的(即,isOrdered为真),则该元素的一个实例的值集合是有序的 这种 一个多重性无素不是多重值的,则isOF 有序意味着存在从正整数到该值集合中元素的映射关系 如果- dered属性的值没有任何语义 如果该多重性元素是无序的(即,isOrdered值假),则该元素实例的值 集合的顺序是不可预计的 如果该多重性元素是惟一的(即,isUnique为真),则该元素实例的值集合是惟一的 如果多重性 元素不是多重值的,则isUnique的值没有任何语义 多重性元素多重性的上下界可以由值规约指定,例如表达式(无副作用,常数) 记法 多重性元素的特定记法由具体的子类定义 一般而言,记法包括一个多重性规约,该规约被表示为 包含区间范围的文本字符串,记法也用于表示可选的有序性和惟一性规约 多重性范围通常表示如下 下界.上界,其中下界是一个整数,上界则是一个无限制的自然数 星号作为多重性规范的一部 分,表示无限(或无穷)的上界 如果多重性与记法为文本字符串的元素相关(比如属性等),用方括号[]把多重性字符串括起来,然 后作为该文本字符串的一部分 图10给出了两个多重性串,作为类记法里的属性规约部分 如果多重性与以符号表示的元素相关(比如关联端点),则无须方括号而是直接将多重性字符串置 于元素符号附近 图11说明了如何表示两个关联端点的多重性 有序性和惟一性的具体记法可能依赖多重性元素的具体子类 一般的记法是使用包含ordered或 者unordered的字符串表示有序性,使用unique或者nonunique表示惟一性 表示选项 如果上下界相等,则可以仅使用上界表示 比如,“1”在语义上等同于“1..1” 下界为0且上界不定的多重性可以用单个星号*代替“o. 以下BNF定义了多重性字符串的语法,包括表示选项 muliplieiy_range>['''] muleiplicily:: loe multiplieily_range::; 4pe lo7e inlegertalue_specificatiom uliiteddnataural upe zalue_specification orrdlered orrddered order_lesigaor uniqgueness_clesignator unique|nonunique ; 例子 如图10,图11所示 15
GB/T28174.2一2011 Customer purchasePurchaseordered.unque) accountAccount[0.5Iunique 图10文本规约中的多重性 account purchase Customer Purchase Account iordered unique 0.5 unique 图11作为符号装饰的多重性 3.4.2类型(来自内核包[Iype(fromkernel门 类型约束了类型元素所表示的值 描述 类型限定了类型元素所能表示的值的范围 类型是一个抽象元类 属性 无添加的属性 关联 无添加的关联 约束 无添加的约束 附加操作 a conlormsTo()返回真,如果一个类型同另一个相容 默认情况下两个类型是互不相容的 该 操作用于重定义特定的适应情况 conformsGB/T28174.2一2011 约束 无添加的约束 语义 元素所能表示的值被限制为类型的实例 没有和类型相关的类型元素可以表示任何类型的值, 记法 没有一般的记法 3.5内核一表达式图(Kerne一theENpressionsDiagram) Kernel包的表达式图如图12所示 TypedEiement [aMeS0eCMiaHon +operand orderesubsesownedElement +instance +expression ENoSSom O08UEesSIon instanceSpecfcaion InstanceVaue LteraISpeccatioad Symbasring body:String 0.1 language:String0.1 subsetsowner LterSBlean Leraieger [LeraISngLraUnImeGNaua LiteralNul aLeBoolear aUeInIegeaUeSgaeUnIIeNre Kernel包的表达式图 图12 要找到图中引用的元类, a)见“元素" 见“实例说明”; b e)见“多重性元素” 3.5.1表达式(来自内核包[Expression(fromKernel门 在一个语境中,表达式是一棵由表示一组值(可能为空)的符号组成的有结构的树 描述 表达式在表达式树中代表一个结点,它可以是终结符或非终结符 它定义了一个符号,有一个可能 为空的操作数(作为值规约)序列 属性 a symbolString[1] -表达式树中的结点相关的符号 关联 operand.ValueSpecifeation[] -操作数序列 Elemen::ownedElemen子集 a 约束 无添加的约束 语义 表达式代表表达式树的一个结点 如果没有操作数则代表终结符结点 如果有操作数,则代表应 用到这些操作数的操作符 无论哪种情况,都有符号与该结点相关联 该符号的解释依赖于表达式所 在的语境 17
GB/T28174.2一2011 记法 默认情况下没有操作数的表达式仅用它的符号表示 有操作数的表达式则由它的符号后面紧跟着 用圆括号引用的顺序的操作数表示 特殊语境中可能允许使用特殊的记法,包括中缀操作符 例子 or else plus(r,l) r十l 3.5.2不透明表达式(来自内核包[OpaqueEspresionfromKermel] 不透明表达式是没有解释的文本声明,表示在一个语境中计算时的一个值的集合(可能为空) 描述 表达式包含一个特定语言的字符.用于揣述值和可选的对语言的规约 -种用于说明表达式的预定义的语言是OCL 也可以使用自然语言或程序语言 属性 表达式的文本 body;String[1] a -指定用于声明表达式的语言 表达式体的解释依赖于该语言 blanguage:String[0..1] 如果未指定语言,则表达式或语境可能会有歧义 关联 无添加的关联 约束 无添加的约束 附加操作 本部分中没有定义这些操作 应当在执行约束中定义这些操作,以便能够计算使用这些操作的 约束 value()返回一个整型值,如果表达式的值是整型的话 Expression::value():lnteger; pre:self.isIntegral(O islntegral()断定表达式是否生成一个整型值; Expression:;isIntegral();Boolean; isPositive()断定一个整型表达式值是否是正数; Expression;;isPositive();Boolean; pre;sel.isntegralG) isNNonNegative()断定一个整型表达式值是否非负 Expression::isNonNegative():Boolean; pre:self.isIntegral) 语义 表达式体的解释依赖于语言 如果未指定语言,则对表达式体或语境的解释可能存在歧义 假定特定语言的语义分析器来计算表达式体 何时计算未指定 记法 不透明表达式表示为特定语言的文本字符串 字符串的语法具有对语言的工具和语言分析器的负 责 不透明表达式本身是它包含元素记法的一部分 不透明表达式的语言(如果被指定),通常不用图表示 一些建模工具可能使用某些特定的语言,或 18
GB/T28174.2一2011 假定缺省的语言 这种语言通常意味着假定表达式的形式使其用意清楚 如果显示了语言名,一定在 表达式字符串之前用}括起来 风格建议 在文档中定义语言的名称时应当使用大写字母拼写 例如,用OCL而非ocl 例子 'OCL}i一jandlself.sixe一i eehoursen week wnkeler aerage InstanceValuefromKernel 3.5.3 实例值(来自内核包)[Iln 实例值是用于标识实例的值规约 描述 实例值指定了由实例规约建模的值 属性 无添加的属性 关联 nstance:lnstanceSpecification[1 指定值的实例 a 约束 无添加的约束 语义 实例说明是规范的值 记法 实例值可以用文本或图形表示 采用文本时,实例名称跟属性槽的值- 一样表示 采用图形时,通过 连接到实例表示引用值 见“实例说明” 3.5.4文字布尔(来自内核包[LileralBooleanfromKernel] 文字布尔是对布尔值的规约 描述 文字布尔包含一个布尔值的属性 属性 指定的布尔值 Val lue;Boolean 关联 无添加的关联 约束 无添加的约束 附加操作 isCo mputable()重定义为t true: LiteralBooleani:Computabe(O)Boolean; isCa ompuable true booleanValue()返回该值 LiteralBooleans:booleanValue():[Boolean]; booleanValue value 19
GB/T28174.2一2011 语义 文字布尔规定了常量布尔的值 记法 根据文字布尔值,用“true”或“alse"表示文字布尔 fromKernel 3.5.5文字整型来自内核包[Literalnteger 文字整型是对整型值的规约 描述 文字整型包含一个整型值的属性 属性 value:lnteger 指定整型值 关联 无添加的关联 约束 无添加的约束 附加操作 isComputable()重定义为true; a Literallnteger;:isComputable():Boolean; isComputable=true integerValue()返回该值 Literallnteger::integerValue():[Integer] integerValue value 语义 文字整型规定了常数整型的值 记法 把一个文字整型表示为一列数字 3.5.6文字空值(来自内核包[LiteraINllfromkernel 文字空值表示没有值 描述 文字空值用于表示空值,也即无值的情况 属性 无添加的属性 关联 无添加的关联 约束 无添加的约束 isComputable()重定义为true: LiteralINullisComputable():Boolean isCo mpuable- true isNull()返回 true LiteralNull:;isNul);Bool lean; isNul true 心
GB/T28174.2一2011 语义 文字空值是为了显式地对缺少值建模而设的 记法 文字空值的记法根据使用地方的不同而不同 经常用词“null”表示,其他特定的用法定义了自已 的记法 3.5.7文字规约(来自内核包[L.iteraISspeeifieation(fromKermel] 文字规约标识所建模的文字常数 描述 文字规约是值规约的抽象规约,标识所建模的文字常数 属性 无添加的属性 关联 无添加的关联 约束 无添加的约束 语义 无添加的语义 定义文字规约的子类,以指定不同类型的文字值 记法 没有特定记法 3.5.8文字串(来自内核包[LiteraIString(fromKermel7 文字串是对串值的规约 描述 文字串包含一个串值属性 属性 指定串值 a value:String 关联 无添加的关联 约束 无添加的约束 附加操作 iisComputable()重定义为truer a LiteralString::isComputable():Boolean isComputable true stringValue()返回该值 Iiteralstring::stringValue():[String], stringValue value 语义 文字串指定了常数串值 记法 文字字符串表示为用双引号括起来的一组字符 没有规定所使用的字符集 21
GB/T28174.2一2011 3.5.9文字无限自然数(来自内核包[LilteralUnlimitedNaturalfromkernel 文字无限自然数是对无限自然数的规约 描述 文字无限自然数包含一个无限自然数值的属性 属性 value:UnlimitedNatural 指定无限自然数值 关联 无添加的关联 约束 无添加的约束 附加操作 isComputable()重定义为true; a LiteralUnlimitedNatural::isComputable():Boolean: isComputable=true unlimitedvalue()返回该值 LiteralUnlimitedNatural::unlimitedValue():[UnlimitedNatural]; unlimitedValue=value 语义 文字无限自然数指定了一个常数无限自然数 记法 文字无限自然数用数字序列表示,或用星号*表示,*表示无限(非无穷大) 3.5.10值规约自内核包[ValueSpeeifieation(romkerel] 值规约是对一个实例集合(可能为空)的规约,包括对象和数据值 描述 值规约是一个抽象元类,用于识别模型中的一个或多个值 它可以引用实例,或者它可以是表明在 计算时实例的表达式 属性 expression;Expression[o..1] 值规约是操作数时所属于的表达式 Eement;;owner子集 关联 无添加的关联 约束 无添加的约束 附加操作 下面介绍的操作希望在子类中重定义 一致的执行可以计算出更多的由与这些操作相关的约束指 定的表达式 isCa omputable()决定模型中的一个值规约是否可计算 该操作不能完全用OcCL定义 希望 -致的执行能够对所有可计算的值规约返回真值,并计算出其值 希望能计算出所有文 字值 ValueSpecifieation:;isComputable();Boolean; isCo false ampuable- b integerValue()返回一个单整型值; 22
GB/T28174.2一2011 ValueSpecifieation::integerValue();[Integer] amgerValue=Stt01 boole leanValue()返回一个单布尔值; ValueSpeeificeation;booleanValue()[Boolea] booleanValue Set0 stringValue()返回一个单字符串值; ValueSpecification:;string gValue();[String; stringValue Set unlimitedValue()返回一个单无限自然数值; ValueSpecification::unlimitedValue():[UnlimitedNatural; unlimitedValue=Set" isNul)当能计算出值为nul时返回rue ValueSpecification::isNull():Boolean; isNull=false 语义 值规约产生零个或多个值 它要求值的类型和数目要适合值规约所使用的语境 记法 没有特定记法 内核一约束图(Kerne一theConstraintsDiagram)y 3.6 Kernel包的约束图如图13所示 PackageableE/ement +constrainedElement Eiement Constraint Namespace +/context ordered (union) +ownedRule +namespace +specification velueSpecifcaton {subsetsownedMember a.1(ebeesownedElemenr {subsetscontext 图13Kernel包的约束图 要找到图中引用的元类: 见“元素” a b见“命名空间” c)见“可打包元素" d)见“值说明” 23
GB/T28174.2一2011 3.6.1约束(来自内核包[Con onstraintfromKernel) 约束是用自然语言文本或机器可读的语言表示的条件或限制,用于声明某些元素的语义 描述 约束包含一个用于说明一个或多个元素的额外语义的值规约 UML中预定义了一些特定约束 or"关联约束),其他的由用户自定义 用户自定义约束用指定语言描述,该语言的句法和解释 比如“xo 由工具负责 0CL就是一种为书写约束预定义的语言 某些情况下,编程语言,比如Java,也适合表示 约束 其他情况可能使用自然语言 约束是限定相关元素扩展的条件(是一个布尔表达式),应用到相关元素的其他的其语言构造婴对 其施加一些含义 约束包含一个可选的名称,不过通常不用 属性 无添加的属性 关联 约束引用的一组有序元素 constrainedElemment:Element a 作为计算约束的语的命名空间 这是一个派生联合 b /context:Namespace[O..1 为了满足约束一定为真的条件 Element c specification:ValueSpecification[0.l1 onedElemen子集 约束 对于约束的值规约应计算出布尔值;不能用oCL表示; a 对于约束的对值规约的计算不可以有副作用 不能用OCL表示; b 约束不能用于自身 c) notconstrainedElement-includes(self 语义 约束表示附加到被约束的元素额外语义信息 约束是对一个系统的正确设计需要满足的限制的断 言 被约束的元素是计算约束时需要的元素 另外,应能够访问约束的语境,约束的语境可以用作命名 空间,以解释在规约中使用的名称 例如,在0oCL中“sel”用于指代语境元素 经常用某种语言的文本字符串表示约束 如果使用了如OCL的形式语言,则可以用工具校验约 束的某些方面 总之,同一约束可以有不同类型的所有者 惟一的限制是拥有元素应能够访问被约束的元素 约束的拥有者决定了何时计算约束规约 例如,操作可以定义约束是表示前置条件还是后置条件 记法 依据如下BNF,把约束表示为由}括起来的文本 constraint::=''[ booleane.rressio 对于其记法为文本字符串的元素(比如属性等),约束字符串可以写在括号中的元素文本字符串之 后 图14显示了类符号中跟在属性之后的一个约束字符串 对于作用于单个元素的约束比如类或关联路径),约束字符串位于元素符号附近,如果有名称的 话,则是在名称旁边 工具应能够确定被约束的元素 对于作用于两个元素的约束(比如两个类或两个关联),约束表示为连接两个元素的虚线,并用}把 约束字符串括起来,置于虚线附近 图15显示了两个关联之间的xor}约束 表示选项 约束字符串可以置于注释符号中,并用虚线附加在每个被约束元素上 图16显示了以注释符号表 示的约束 24

深入了解统一建模语言(UML)第2部分:上层结构GB/T28174.2-2011

UML的第2部分:上层结构GB/T28174.2-2011定义了UML的上层概念和元素,包括交互图、状态机图、活动图、部署图等等。

交互图用来描述对象之间的交互,例如“用户登录”、“购买商品”等等。交互图可以用来描述时序图和协作图。时序图展示了对象之间的时间序列关系,而协作图则展示了对象之间的消息传递关系。

状态机图则用来描述对象的状态转换。一个对象可能会处于多种状态之一,当遇到某些事件时,它会从一个状态转换到另一个状态。状态机图展示了这些状态之间的转换关系。

活动图在UML中也有定义,但在第2部分中进行了详细阐述。活动图用来描述系统中的活动和操作,例如“登录”、“结账”等等。活动图展示了这些活动和操作的流程。

最后,部署图用来描述系统的物理结构。一个系统可能由多个节点组成,每个节点都可以包含处理器、存储器、网卡等设备。部署图展示了这些节点之间的联系和依赖关系。

总之,UML第2部分:上层结构GB/T28174.2-2011定义了UML的上层概念和元素,包括交互图、状态机图、活动图、部署图等等。这些元素可以帮助软件工程师更好地理解和设计系统,特别是对于大型系统而言,使用UML可以提高系统的可维护性和可扩展性。

和统一建模语言(UML)第2部分:上层结构类似的标准

统一建模语言(UML)第1部分:基础结构
上一篇 本文分享国家标准统一建模语言(UML)第1部分:基础结构的全文阅读和高清PDF的下载,统一建模语言(UML)第1部分:基础结构的编号:GB/T28174.1-2011。统一建模语言(UML)第1部分:基础结构共有148页,发布于2012-06-01
统一建模语言(UML)第3部分:对象约束语言(OCL)
本文分享国家标准统一建模语言(UML)第3部分:对象约束语言(OCL)的全文阅读和高清PDF的下载,统一建模语言(UML)第3部分:对象约束语言(OCL)的编号:GB/T28174.3-2011。统一建模语言(UML)第3部分:对象约束语言(OCL)共有144页,发布于2012-06-01 下一篇
相关推荐