本文和大家重点讨论一下用Visio画UML图基本操作,画UML图有好多种工具,VISIO只是其中一种,VISIO的动作非常轻快.很多人都在用。下面就让我们一起来看一下具体介绍吧。
用Visio画UML图基本操作
目的
画UML图有好多种工具,VISIO只是其中一种.VISIO的动作非常轻快.很多人都在用.但是对众多的C++程序员来讲,存在着一个问题,那就是VISIO中的用语都来自面向对向,和C++程序员常用的说法有所不同.这一点令很多C++程序远很困惑.希望本文能为您解决这个问题.在我们将使用下面的例子(UMLSample.zip)来进行说明。
1.启动Visio
画UML图第一步要启动Visio,然后选择[File]-[New]-[Software]-[UMLModelDiagram]就可以进入到UML作图状态了.这时画面至少应该包含3个部分:形状窗口,模型资源管理器,和作图区域.可以通过选择[View]-[ShapesWindow]来表示和隐藏形状窗口.模型资源管理器比较麻烦,必须通过[UML]-[View]-[ModelExplorer]来进行.
2.创建各种图面
在模型资源管理器中选择[StaticMdel]-[TopPackage],点鼠标右键,从弹出菜单中选择[New]-[StaticStructureDiagram]即可创建用于制作类结构图的图面了,如果从弹出菜单中选择[New]-[SequenceDiagram]即可创建用于制作时序图的的图面.
3.设定对象的属性
设定对象的详细信息的大部分操作是通过属性对话框实现的.可以通过在对象上双击鼠标或单击鼠标右键并选择属性属性来表示属性对话框.
画UML图几种小技巧
◆改变连线的方式
在画UML图的过程中连线是最常见的操作.象下图那样,线有直角连接线和直线连接线和曲线连接线三种.
可以通过,用鼠标右键点击希望改变种类的连接线,在弹出菜单中选择适当的连接线种类.
◆扩大和缩小
我想说的不是当然我们可以通过菜单实现扩大和缩小,而是通过按住Ctrl键,在上滚/下滚鼠标的滚轮来实现扩大和缩小.
◆上下/左右滚动屏幕
除了用鼠标拖动滚动条的方法以外,用鼠标滚轮也可以上下滚动屏幕.那么左右滚动呢,你可能已经猜到了,先按下Shift键就可以了.
◆拷贝已经存在的对象
首先按下Ctrl键,用鼠标脱动对象,最后释放Ctrl键就可以了.需要注意的Ctrl键释放的时机一定要在鼠标释放之后.
◆画水平线/垂直线
按下Shift键,在拖动鼠标画线,就可以很简单的画出水平线和垂直线.其实还可以画45度的斜线.
Visio画UML用例图只需八步轻松实现
本节和大家学习一下如何Visio画UML用例图,UML用例图主要用来图示化系统的主事件流程,它主要用来描述客户的需求,即用户希望系统具备的完成一定功能的动作。
UML用例图简介
首先看一下UML用例图的概念,它主要用来图示化系统的主事件流程,它主要用来描述客户的需求,即用户希望系统具备的完成一定功能的动作,通俗地理解用例就是软件的功能模块,所以是设计系统分析阶段的起点,设计人员根据客户的需求来创建和解释用例图,用来描述软件应具备哪些功能模块以及这些模块之间的调用关系,用例图包含了用例和参与者,用例之间用关联来连接以求把系统的整个结构和功能反映给非技术人员(通常是软件的用户),对应的是软件的结构和功能分解。
用例是从系统外部可见的行为,是系统为某一个或几个参与者(Actor)提供的一段完整的服务。从原则上来讲,用例之间都是独立、并列的,它们之间并不存在着包含从属关系。但是为了体现一些用例之间的业务关系,提高可维护性和一致性,用例之间可以抽象出包含(include)、扩展(extend)和泛(generalization)几种关系。
Visio画UML用例图步骤:
1.在“文件”菜单上,依次指向“新建”、“软件”,然后单击“UML模型图”。
2.在树视图中,右击要包含用例图的包或子系统,再指向“新建”,然后单击“用例图”。
此时会出现一个空白页,而且“UML用例”模具也会显示在最顶部。工作区将“用例”显示为水印。树视图将添加一个表示该图表的图标。
注释如果看不见树视图,请在“UML”菜单中指向“视图”,然后单击“模型资源管理器”。
3.将“系统边界”形状拖到绘图页上。
使用系统边界形状
在用例图中指示系统边界
4.Visio画UML用例图时要从“用例”模具中将“用例”形状拖出并放在系统边界内,然后将“参与者”形状拖到系统边界外。
使用用例形状
使用参与者形状
5.使用“通信”形状指出用例和参与者之间的关系。
使用通信形状
指出参与者和用例之间的关系
6.Visio画UML用例图时需要通过“使用”和“扩展”形状,指出用例之间的关系。
指出两个用例之间的使用关系,指出两个用例之间的扩展关系
7.双击任意形状(“系统边界”形状除外),打开其“UML属性”对话框,您可以在其中添加名称、特性、操作和其他属性。
8.保存该图表。
UML建模中绘制UML用例图行之有效的办法
本节和大家学习一下UML用例图的画法,主要包括UML用例图三要素和用例图之间的关系等内容,相信通过本节的学习你对UML用例图的画法一定会有所认识。下面请看详细介绍。
UML建模中UML用例图的画法
最近在用RationalRose画功能的用例图,总结一下用例图的画法吧,其中的线条都是有特定含义的。
UML用例图设计三要素
1,参与者
2,用例
3,关系
参与者和用例都没有啥好说的,我们就说关系吧。
1参与者之间的关系,用的最多的就是泛化(继承)的关系。
2参与者和用例之间的关系
一个实箭头,表示主动和被动的关系。如上图参与者和用例之间的关系。体现的是一种操作的关联关系。
3UML用例图中用例之间关系
用例之间的关系主要用的是3种关系即包含,扩展,泛化。
3.1UML用例图的包含关系(include)
实箭头加<include>
表达意思:被包含用例的事件流会被插入到基础用例的事件流中。
举出一个实例:
ATM中查询,取款,转帐都会有一个打印回执,我们就可以把“打印回执”做为一个用例提取出来,而原来的查询,取款,转账三个用例都会包含这个用例。一般的画法是多个用例公共的包含一个用例。
3.2UML用例图的扩展关系(extend)
实箭头加<extend>,
表达意思:扩展用例的事件流在一定条件下按照扩展点插入到基础用例的事件流中,即根据一定的条件来判断是否要插入到基础用例的事件流中,并且扩展点可以用多个。
举一个实例:
如基本通话这个用例上可以有”呼叫等待”,”呼叫转移”的扩展的功能用例。如果对方通话正忙着,可以用呼叫等待,如果对方不方便接电话,也可以用呼叫转移。
3.3UML用例图的泛化关系
空三角实箭头
表达意思:代表一般于特殊的关系。它的意思和面向对象程序设计中的继承的概念是类似的。继承关系
举一个实例:
订票是一个很泛化的用例,具体的用例可以是电话订票,网上订票等。
补充一下,如果想给一个用例加一些注释,更能方便交流和理解。我们的画法是用一个注释组件图和一个虚线连接。如下图
UML用例图三大关系揭秘
本文向大家介绍一下UML用例图,UML用例图描述了一组用例,参与者以及他们之间的关系,用例图包括以下几个部分:用例(Case),参与者(Actor).依赖,泛化和关联关系。下面请看详细介绍。
UML用例图概要
UML用例图就是软件产品外部特性描述的视图,他从用户的角度而不是开发者的角度来描述软件产品的需求,分析软件产品所需的功能和行为.
UML用例图描述了一组用例,参与者以及他们之间的关系,用例图包括以下几个部分:
用例(Case),参与者(Actor).依赖,泛化和关联关系.
UML用例视图中的参与者与系统外部的一个实体(可以是任何人或事物),他以某种方式参与了用例的执行过程,
用例是一个叙述型文档,用来描述参与使用系统,完成某个事情时发生的顺序.
UML用例图间关系:
1.泛化关系(Generalization):
用例的泛化关系与类的泛化关系相似,即在用例泛化中,子用例表示父用例的特殊形式,子用例从父用例继承了行为和属性,还可以添加行为和属性,改变已继承的行为.
2.包含关系(Include):
包含关系把几个用例的公共步骤分离成一个被包含的用例,用例间的包含关系允许包含提供者用例的行为到客户用例中.把包含用例称为客户用例,被包含用例称为提供者用例.包含用例提供功能给客户用例,
3扩展关系(Extend):
是把新行为插入到已有用例中的方法.基础用例提供了一组扩展点..这些扩展点可以添加新的行为.而扩展用例提供了一组插入片段.这些片段能插入到基础用例的扩展点
UML用例图实例解析
本文和大家重点讨论一下UML用例图实例的应用,UML用例图包含了用例和参与者,用例之间用关联来连接以求把系统的整个结构和功能反映给非技术人员(通常是软件的用户),对应的是软件的结构和功能分解。
UML用例图
用例图主要用来图示化系统的主事件流程,它主要用来描述客户的需求,即用户希望系统具备的完成一定功能的动作,通俗地理解用例就是软件的功能模块,所以是设计系统分析阶段的起点,设计人员根据客户的需求来创建和解释用例图,用来描述软件应具备哪些功能模块以及这些模块之间的调用关系,UML用例图包含了用例和参与者,用例之间用关联来连接以求把系统的整个结构和功能反映给非技术人员(通常是软件的用户),对应的是软件的结构和功能分解。
用例是从系统外部可见的行为,是系统为某一个或几个参与者(Actor)提供的一段完整的服务。从原则上来讲,用例之间都是独立、并列的,它们之间并不存在着包含从属关系。但是为了体现一些用例之间的业务关系,提高可维护性和一致性,用例之间可以抽象出包含(include)、扩展(extend)和泛(generalization)几种关系。
共性:都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通后过不同的方法来重用这个公共的用例,以减少模型维护的工作量。
1、包含(include)
包含关系:使用包含(Inclusion)用例来封装一组跨越多个用例的相似动作(行为片断),以便多个基(Base)用例复用。基用例控制与包含用例的关系,以及被包含用例的事件流是否会插入到基用例的事件流中。基用例可以依赖包含用例执行的结果,但是双方都不能访问对方的属性。
UML用例图中包含关系对典型的应用就是复用,也就是定义中说的情景。但是有时当某用例的事件流过于复杂时,为了简化用例的描述,我们也可以把某一段事件流抽象成为一个被包含的用例;相反,用例划分太细时,也可以抽象出一个基用例,来包含这些细颗粒的用例。这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个子过程,然后再从主程序中调用这一子过程。
例如:业务中,总是存在着维护某某信息的功能,如果将它作为一个用例,那新建、编辑以及修改都要在用例详述中描述,过于复杂;如果分成新建用例、编辑用例和删除用例,则划分太细。这时包含关系可以用来理清关系。
2、扩展(extend)
扩展关系:将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(ExtensionPoint)上进行扩展,从而使基用例行为更简练和目标更集中。UML用例图中扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己。但是扩展用例对基用例不可见。
对于一个扩展用例,可以在基用例上有几个扩展点。
例如,系统中允许用户对查询的结果进行导出、打印。对于查询而言,能不能导出、打印查询都是一样的,导出、打印是不可见的。导入、打印和查询相对独立,而且为查询添加了新行为。因此可以采用扩展关系来描述:
3、泛化(generalization)
UML用例图中泛化关系:子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。
例如,业务中可能存在许多需要部门领导审批的事情,但是领导审批的流程是很相似的,这时可以做成泛化关系表示:
上面是我参考的一篇文章,觉得将三种关系的区别讲得很清晰,在此基础上结合自己的系统,对项目(在线购物系统)的用例做了整体的描绘。
深入剖析UML用例图关系中包含 扩展和泛化之间的联系
UML用例图中包含(include)、扩展(extend)和泛化(generalization)三种关系详解
共性:都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通后过不同的方法来重用这个公共的用例,以减少模型维护的工作量。
1、包含(include)
UML用例图的包含关系:使用包含(Inclusion)用例来封装一组跨越多个用例的相似动作(行为片断),以便多个基(Base)用例复用。基用例控制与包含用例的关系,以及被包含用例的事件流是否会插入到基用例的事件流中。基用例可以依赖包含用例执行的结果,但是双方都不能访问对方的属性。
UML用例图包含关系对典型的应用就是复用,也就是定义中说的情景。但是有时当某用例的事件流过于复杂时,为了简化用例的描述,我们也可以把某一段事件流抽象成为一个被包含的用例;相反,用例划分太细时,也可以抽象出一个基用例,来包含这些细颗粒的用例。这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个子过程,然后再从主程序中调用这一子过程。
例如:业务中,总是存在着维护某某信息的功能,如果将它作为一个用例,那新建、编辑以及修改都要在用例详述中描述,过于复杂;如果分成新建用例、编辑用例和删除用例,则划分太细。这时包含关系可以用来理清关系。
2、扩展(extend)
UML用例图的扩展关系:将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(ExtensionPoint)上进行扩展,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己。但是扩展用例对基用例不可见。
对于一个扩展用例,可以在基用例上有几个扩展点。
例如,系统中允许用户对查询的结果进行导出、打印。对于查询而言,能不能导出、打印查询都是一样的,导出、打印是不可见的。导入、打印和查询相对独立,而且为查询添加了新行为。因此可以采用扩展关系来描述:
3、泛化(generalization)
UML用例图的泛化关系:子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。
例如,业务中可能存在许多需要部门领导审批的事情,但是领导审批的流程是很相似的,这时可以做成泛化关系表示:
上面是我参考的一篇文章,觉得将三种关系的区别讲得很清晰,在此基础上结合自己的系统,对项目(在线购物系统)的用例做了整体的描绘。