热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UML文献UML表示法指南解析

本节和大家一起学习一下UML表示法,本文献给出UML的可视化表示法,通过例子给出模型元素的图形表示符号.从系统模型这一级别上看,UML表示法由9种图

本节和大家一起学习一下UML表示法,本文献给出UML的可视化表示法,通过例子给出模型元素的图形表示符号.从系统模型这一级别上看,UML表示法由9种图构成,下面就让我们一起看一下详细介绍吧。

UML表示法参考文献

本文献给出UML的可视化表示法,通过例子给出模型元素的图形表示符号.从系统模型这一级别上看,UML表示法由9种图构成,它们是:

静态结构图(Static Structure Diagram),其中包括类图(Class Diagram)和对象图(Object Diagram);

Use Case图 (Use Case Diagram);

顺序图(Sequence Diagram);

协作图(Collaboration Diagram);

状态图(Statechart Diagram);

活动图(Activity Diagram);

实现图(Implementation Diagram),其中包括成分图(Component Diagram)和展开图(Deployment Diagram)两种图.

尽管UML文件称“UML表示法指南定义了表示法并提供了例子”,但确切的说法应该是:该文件对建模元素的表示法给出了一般的文字描述,其图形的画法是通过例子表现的,并没有给出一般的图示.本文大部分插图是参照M.Fowler的著作[4]的作法从一般意义上给出的.

UML定义了一些在各种图中常用的元素,例如String(串)、Name(名)、Label(标签)、Keyword(关键词)、Expression(表达式)、Note(注释条)等,并给出它们的表示符号,例如关键词由一个被书名号括起的串表示,注释条用一个折起一角的长方形内的正文表示.在各种图中用来对一组模型元素打包的元素叫做“包”(Package),其表示法是用一个大的方框围起这组元素,并在角上用一个小框给出包的名字.

此外,UML还定义了一些称作“扩充机制”的元素.这种元素可以附加到其它模型元素之上,将原有的建模元素特化成一种语义较特殊的新变种,或者表示出它们的某些细节.这些元素可以起到对表示法进行扩充或细化的作用,它们是:

Constraint(约束):约束是模型元素之间的一种语义关系,它说明了某种条件和某些必须保持为真的命题.其表示法是在大括号{ }之间用一种工具能识别的语言(如UML提供的OCL)写出表示条件的正文串.

Comment(注释):注释是写在注释条表示符号(折起一个角的长方形)之内的正文串.所使用的语言应易于人的理解,不必考虑被工具理解.

Element Property(元素特征):用来显示模型元素的一些附带特征,如属性、关联、目标值等.其表示法是在大括号{ }内写出形式为 关键词=值 的正文串,多个串之间彼此用逗号隔开.

Stereotype(版式):用来附加到其它模型元素之上,将原有的建模元素特化成一种语义较特殊的新变种.带有版式的建模元素可看作原先建模元素的一个子类,它在属性、关系等方面与原先的元素形式相同,但用途更为具体.板式是用书名号《》括起来的关键字表示的.上述概念的表示法如图1所示.

以下分别介绍各种图以及图中用到的建模元素与UML表示法.

(1) 静态结构图

静态结构图包括类图(class diagram)和对象图(object diagram).“类图是静态结构模型的图形化示图.”“类图是(静态)声明的模型元素集合.”关于对象图,该文献中说道:“对象图是实例的一种图形,包括对象和数据的值,静态的对象图是类图的一个实例;它显示了在一个时间点上系统细节状态的一个快照”.该文献又指出:“对象图的用处是很有限的”,“工具没有必要支持独立形式的对象图.类图能包括对象,一个有对象而没有类的类图便是一个‘对象图’.不过这个术语对于刻画在各种方式下可能达到的特殊用法还是有用的”. 静态结构图中用到的各种建模元素的表示法如图2所示,以下分别加以介绍.

 

(2) Use Case图

“use case图用于表现活动者与use case之间的关系.”“use case模型表现一个系统或一个类对于系统外部的交互者的功能.”UML定义了如下几种构成use case图的元素(如图3).

 Use Case:一个use case是一个系统或一个类提供的紧凑的功能单元,它是由系统与一个或多个外部交互者(即活动者)之间交换的消息序列以及系统执行的活动共同体现的.

Actor(活动者):活动者是直接与系统交互的外部对象所扮演的角色.

Use Case Relationship(use case关系),包括如下3种关系:communicates(通信),这是活动者与use case之间仅有的关系,是活动者对use case的参与;extends(延伸),从use case A到use case B的延伸关系表明B的实例(在延伸说明的特殊条件下)可能包含了在A中说明的行为;uses(使用):从A到B的使用关系表明A的实例也包括了在B中说明的行为.

(3) 顺序图

UML表示法中UML给出了两种形式的交互图(Interaction Diagram),一种叫顺序图,另一种叫协作图.它们基于相同的基本信息但强调不同的方面.顺序图(Sequence Diagram)展示按时间顺序排列出来的交互.特别是,它展示对象在其“生命线”上参加的交互和它们按时间顺序交换的消息.它不展示对象之间的关系.顺序图所表示的交互是一组在对象之间为产生所要求的操作或结果而进行合作时所交换的一组消息.顺序图有简单形式和详细形式两种画法,后一种画法与OOSE[3]等著作介绍的交互图大体一致——在水平方向展示各个参加交互的对象,垂直方向表示时间;整个平面显示各个对象之间进行交互的时间及空间关系,顺序图如图4所示.用于顺序图的建模元素有:

Object Lifeline(对象生命线):一条垂直的虚线,用于展示对象在从创建到撤消的时间范围内所扮演的角色.

Activation(活动期):展示对象直接地或通过其下级过程执行一个活动的时间段.

Message(消息):消息是对象之间的一次通信,用于传送信息并期望发生某种活动.消息的接收是一种事件.

Transition Time(过渡时间):消息发送或接收所用的时间.二者可能相同也可能不同.

(4) 协作图

协作图(Collaboration Diagram)是UML所说的另一种交互图,它表示在一些对象之间组织的操作和它们之间的链.与顺序图不同的是,协作图表示的是对象角色之间的关系,而不表示时间顺序.协作图描绘了在特定上下文中一组相关对象之间的协作,以及这组对象为产生所要求的操作或结果而进行协作时所交换的一组消息.协作图的图形表示以对象为结点,结点之间既有表示消息的箭头连线,也有表示关联的连线.消息连线有3种,分别表示调用、控制流和异步3种不同的消息,但仍有一些不能表示的情况,如阻塞(balking)和超时(time out)等,需要用一些进一步扩充的表示符号.协作图中使用的关联符号也包括多种不同的端点情况,如qualifier和composition等等.

UML表示法指南为协作图定义的概念或建模元素有:Collaboration(协作)、Collaboration Content(协作内容)、Interaction(交互)、Pattern Structure(模式结构)、Collaboration Role(协作角色)、Multiobject(多对象)、Active Object(主动对象)、Message Flows(消息流)、Creation/Destruction Markers(创建/折构标记),这里不再一一介绍.

(5) 状态图

状态图(Statechart Diagram)在UML中也称作状态机,它表现一个对象或一个交互在整个生存期内接受剌激时的状态序列以及它的反应与活动.它附属于一个类或一个方法.建立状态图所用的建模元素有:State(状态)、Composite State(复合状态)、Substate(子状态)、Event(事件)、Simple Transition(简单转换)、Complex Transition(复杂转换)、Nested State(嵌套状态)、Sending Message(发送消息)、Internal Transition(内部转换)等.状态图及其有关元素的表示法和现有的大部分OOA/OOD方法大同小异,这些不再详述.

(6) 活动图

活动图(Activity Diagram)是状态图的变种,它的状态表示操作所执行的活动(activity),其转换(transition)是由操作的完成而触发的.它表示了一个过程本身的状态机,过程是对类中一个操作的实现.构成活动图的元素有:Action State(活动状态)、Decision(判断)、Swimlane(泳道,在图中画出来就象游泳池中的泳道,把各个活动组放在不同的泳道中以便更加清晰)、Action-Object Flow Relationship(活动-对象流关系,表示一个活动与有关对象之间的消息和输入/输出关系)、Control Icon(控制图符,表示信号的发送与接收)等.

(7) 实现图

UML表示法中实现图(Implementation Diagram)表现实现方面的问题,包括源代码结构和运行时的实现结构.实现图分为两种,一种是表示代码自身结构的成分图,另一种是表示运行时系统结构的展开图.

成分图(Component Diagram)表示源代码、二进制代码及可执行代码等软件成分之间的依赖关系.各种软件模块在图中用成分(component)结点表示,它们之间的各种依赖关系(如编译、界面、调用等)用不同的箭头相连.

展开图(Deployment Diagram)表示运行时处理元素的配置以及依赖这些配置的软件成分、进程和对象.图的结点内可包含若干成分或对象,成分之间的箭头表示一个成分使用另一个成分的服务.

为构造实现图而定义的元素及图形表示有Node(结点)和Component(成分).同时UML规定了在一个对象内部定位其它成分和对象的画法.


推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
author-avatar
撒谎滴土豆
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有