在UML中,我们可以用一个被称为“框架”的边界框围绕着UML图形,当然在很多情况下,框架可以省略,也就是不将它描画出来。但是对于某些图形类型而言,框架具有语义意义,在这些图形类型中,图形元素可以放置在框架之内或跨越框架边界以表示不同的含义。因此在这些图形类型中,使用框架是必要的,以便可以表达某些特定的含义。除了这个目的之外,其他情况下是否使用框架通常由建模者自行决定。

当我们决定使用框架时,我们需要为框架设定一个“框架标题”,框架标题是当前图形的名字。

框架标题位于框架的左上角,它书写于一个被砍掉了右下角的矩形而形成的不规则五边形内,如下图所示。



框架标题的命名并不是随意的,而是有其命名规则,它由两个可选部分与一个必选部分组成:[][]

其中可选的kind值应为下列值之一:activity(或act)、class、component(或cmp)、deployment(或dep)、interaction(或sd)、package(或pkg)、state machine(或stm)、use case(或uc)。

自然而然地,我们会认为kind表明了图形的类型。例如,在下图中,它描画了一个actor和两个use case,不出意外的话,你会将它的kind选择为use case(或者uc)。然而,不幸的是,这是错误的。



事实上,由于一组use case通常应当属于一个包(如果你没有意图让这些use case隶属于某个特定的包,那它们将自动隶属于一个被称为“默认包”的包),而描画的这一组use case是在说明“当前包”中有哪些use case,其kind应当是package(或pkg)。所以正确的图形应当如下图所示。



我们可以更进一步地考虑更多的图形所在框架标题kind值的选择设定。通常对于大多数结构图(structure diagram)和用例图(use case diagram)而言,其kind都应当被设定为package(或pkg);而对于行为图(behavior diagram)则一般使用与图形匹配的类型,但它依然有一个令人迷惑的地方需要注意,即所有的交互图(interaction diagram,包含时序图sequence diagram、时序时态图timing diagram、交互总览图interaction overview diagram、通信图communication diagram)框架标题的kind应被设定为sd。

准确选择框架标题的kind值,关键点在于要理解当前框架所包含的图的真正含义是什么。例如上例中“描画了一个actor和两个use case”的图形,它描述的是一组use case及一个actor与它们的关联,所以这个图形并不是用来描述单个use case的,它描述的是“一组在一起”的use case,因此其框架标题kind也就不能是use case(或者uc),相反它应当是容纳这一组use case的“包”,所以其kind应为package(或pkg)。

如果上面的说明还是不能清晰说明框架标题kind如何选择,我们可以看另外一个更明确的例子。

假设当前我们需要用图描绘类Car,这个图将只描绘与类Car的定义相关的内容,也就是类Car的内部信息。类Car可能的一个描绘不完整地图如下:



由于上图的目的就是描述类Car的,图中的所有元素是属于类Car的,因而,上图框架标题的kind应当被设定为class。

假设在另外一张图中,它包含了类Car,如下图所示。图中类Car作为一个元素呈现而不是图的全部内容(在这张图中描绘类Car时,如果类Car已在其他地方单独描画,则可以省略类Car的细节,仅保留类名称Car及类的图形即可)。如果需要,图中还可以有类Car的一个实例或多个实例,或者也可添加其他元素,它们共同被容纳在一个包中,因此这张图的框架标题kind应设定为package(或pkg)。



而行为图的框架kind值之所以一般使用与图形匹配的类型,其原因在于一个行为图所描述的就是当前的“那个”行为,而不是“一组”行为,故其框架标题类型应与当前行为图匹配。

参考文献:

1.《OCUP 2 Certification Guide_ Preparing for the OMG Certified UML 2.5 Professional 2 Foundation Exam》 Michael Jesse Chonoles

2.《OMG Unified Modeling Language (OMG UML) Version 2.5.1》

UML之图框架标题类型之谬的更多相关文章

  1. (转)uml各类图

    原文:http://www.cnblogs.com/way-peng/archive/2012/06/11/2544932.html 一.UML是什么?UML有什么用? 二.UML的历史 三.UML的 ...

  2. 练习UML类图中的类的表示

    第一部分:UML类图(class diagram) 类图用来展现一组类.类的特性以及其类相互之间的关系,一个类图由一组类以及它们之间的关系构成,类图用来对系统的领域概念以及静态结构进行建模. 在软件模 ...

  3. 从零开始单排学设计模式「UML类图」定级赛

    阅读本文大概需要 3.5 分钟. 本篇是设计模式系列的开篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统. 所以现在打算重写,加上距离现在也有一段时间了, ...

  4. UML 序列图详解

    现在是二月,而且到如今你或许已经读到.或听到人们谈论UML 2.0 —— 包括若干进步的 UML 的新规范,所做的变化.考虑到新规范的重要性,我们也正在修改这个文章系列的基础,把我们的注意力从 OMG ...

  5. 23种经典设计模式UML类图汇总

    在这里23种经典设计模式UML类图汇总       创建型模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基 ...

  6. uml各类图

    原文:http://www.cnblogs.com/way-peng/archive/2012/06/11/2544932.html 一.UML是什么?UML有什么用? 二.UML的历史 三.UML的 ...

  7. 设计模式学习(二):面向对象设计原则与UML类图

    一.UML类图和面向对象设计原则简介 在学习设计模式之前,需要找我一些预备知识,主要包括UML类图和面向对象设计原则. UML类图可用于描述每一个设计模式的结构以及对模式实例进行说明,而模式结构又是设 ...

  8. 【软件设计】UML类图怎么看

    前言 无论使用哪种语言,都离不开面向过程与面向对象两个流派,而类图是面向对象程序设计中至关重要的一种软件表达形式,如何看懂类图,并设计好的软件架构,是我们作为软件工程师必不可少的技能之一. 今天小黑把 ...

  9. Java 大黑话讲解设计模式 -- UML类图

    目录 1.啥是UML类图? 2.UML类图有啥用? 3.正式理解UML类图 4.使用idea画第一个UML类图 5.类之间的关系图[必须牢记] 6.类之间的关系 6.1.依赖 6.2.泛化 6.3.实 ...

  10. 设计模式学习笔记(详细) - 七大原则、UML类图、23种设计模式

    目录 设计模式七大原则 UML类图 设计模式分类 单例模式 工厂设计模式 简单工厂模式 工厂方法模式(使用抽象类,多个is-a) 抽象工厂模式(使用接口,多个like-a) 原型模式 建造者模式 适配 ...

随机推荐

  1. 某物联网数智化园区行业基于 KubeSphere 的云原生实践

    公司简介 作为物联网 + 数智化园区一体化解决方案提供商,我们致力于为大中型园区.停车场提供软硬件平台,帮助园区运营者实现数字化.智能化运营. 在使用 K8s 之前我们使用传统的方式部署上线,使用 s ...

  2. 容器部署DNS你会吗?

    docker快速部署DNS,实现快速上线 概念 环境介绍 部署DNS 下载相关镜像 创建并启动DNS容器 简单介绍三种创建方式 容器启动停止 创建dns交互式容器 配置DNS容器相关配置 测试 修改客 ...

  3. 工作中的技术总结_ thymeleaf的应用 _select&input的数据回显 _20210910

    工作中的技术总结_ thymeleaf的应用 _select&input的数据回显 _20210910 在需要用户输入的场合,常常会有对用户填入数据的验证,对数据的验证不通过则需要返回到表单页 ...

  4. hbase的管理相关看法

    运维任务 regionserver添加/删除节点 master备份 1 添加新节点 复制hbase目录并进行配置文件修改(regionserver增加新节点)并保持配置文件在全集群一致,在新节点上启动 ...

  5. 锋利的在线诊断工具——Arthas

    导航 前言 火线告警,CPU飚了 服务重启,迅速救火 黑盒:无尽的猜测和不安 Arthas:锋利的Java诊断工具 在线追踪Cpu占比高的代码段 代码重构,星夜上线,稳了 结语 参考 肮脏的代码必须重 ...

  6. 2.7 使用LiveCD从光盘直接运行Linux,无需安装

    Linux 世界中一个相对较新的现象是可引导的 Linux CD 发行版的出现.它无需安装就可以看到 Linux 系统是什么样的. 多数现代 PC 都能从 CD 启动,而不是必须从标准硬盘启动.基于这 ...

  7. Linux进程监控系统

    目录 动态监控进程 top 基本语法 关键信息说明 第一行:系统信息 第二行:进程信息 第三行:CPU占用情况 第四行:内存信息 第五行:交换区信息 交互操作 操作选项 应用实例 监控网络状态 net ...

  8. swoole的安装

    因为换了一台工作电脑 需要重新安装各种环境,这里简单记录一下swoole的安装步骤. 首先去下载它的git仓库: $ git clone https://gitee.com/swoole/swoole ...

  9. 本机环境virtualbox出现问题重装

    vagrant reload 的时候 电脑卡住死机了,然后我重启了以后就没办法启动了,于是重装这个 vagrant 使用  sudo apt-get remove vagrant  然后如果清除不干净 ...

  10. Java 内存模型 JMM

    原文地址:http://coderbee.net/index.php/concurrent/20131219/650 JMM,Java Memory Model,Java 内存模型. 什么是内存模型, ...