给大家推荐一个工具:StarUML是一款开源、免费得UML开发工具。可绘制9款UML图:用例图、类图、序列图、状态图、活动图、通信图、模块图、部署图以及复合结构图等。StarUML可以依据类图的内容生成Java、C++、C#代码,也能够读取Java、C++、C#代码反向生成类图。反向工程有两个主要用途,其一是旧有的源码反转成图之后,可以构建UML模型的方式继续将新的设计添加上去;另一项用途是想要解析源码时,可以通过反转的类图来理解,不再需要查看一行又一行的代码,这将节省大量的时间和精力。StarUML接受XMI 1.1、1.2和1.3版的导入导出。StarUML可以读取Rational Rose生成的文件。
1.用例图
用例图由一组用例、参与者以及它们之间关系所组成。一个系统的用例图反映了整个系统提供的外部可见服务和工作范围。
用例:
它是对一组动作序列的描述,使用椭圆形的表示符号,其中应该有编号和名称。用例是软件开发的核心,需求是由用例来表示的。界面是为用例而设计的,分析类是根据用例发现和组织的,测试数据是根据用例生成的,整个开发的管理和任务分配也是根据用例来组织的。所以说用例很重要。
角色:
它指与系统交互的人或事物。包括4中类型:系统的使用者、外部系统(某外部系统与正在建模的系统进行交互)、时间(如:按照时间触发系统中的某个事件)、硬件设备(不同的设备具有的特性和处理方式不同)。在实际的操作中可以采用:先列出应用系统的角色清单,然后根据角色找出对应的用例清单。
关系:
它包括关联关系、扩展关系、包含关系、泛化关系。
关联关系:描述角色和用例之间的关系,使用没有箭头的直线连接着相互关联的角色与用例。
包含关系:基本用例与公共用例之间的关系。该基本用例一定使用该公共用例。例如在ATM机上,取钱、查询、更改密码等功能都需要验证用户密码。此时,就可以将密码验证功能独立出来作为一个公共用例。使用带箭头的虚线和<<include>>表示
扩展关系:基本用例与特殊用例之间的关系。该基本用例在某些条件下使用该特殊用例。例如在图书管理系统中,“读者还书”是一个基本用例,“到书通知”是一个特殊用例(有人预定某图书,在该图书被还回来时,发出到书通知信息)。很显然,特殊用例依赖于基本用例,针对某一本被预定的图书而言,“读者还书”是“到书通知”执行的前提条件。在UML中使用带箭头的虚线和<<extend>>表示。
泛化关系:角色之间或用例之间存在的一种继承关系。例如身份认证可以细分为密码认证和指纹认证。使用带箭头的实线表示。
2.活动图
它是UML中用于对系统动态活动建模的图形,反映系统中一个活动到另一个活动的流程,常常用于描述业务过程和并行处理过程。活动图中包括泳道、活动开始、活动结束、活动、对象、分支、消息等图形符号。
泳道将一个活动图中的活动划分为不同的组,每个组分别对应不同角色的操作。活动图描述多个角色之间的协作处理非常有效。
一张活动图可以有多个开始状态和结束状态。
一个活动可以与多个实体对象相关(相关指的是一种访问操作)。
分支用在有多条路径可选的流程中,针对不同的路径进行不同的分支处理。
对象作为活动的参与者通常也包含在活动图中,活动可以创建对象(添加图书借阅记录到图书借阅表)、撤销对象(在图书预定表中撤销读者预定图书的记录)、访问对象(为了检查读者的有效性可以查阅读者信息表和借书记录表)或修改对象(读者成功借阅图书,会将该读者总的借阅图书数量进行更新)。下面是图书馆读者借书过程的活动图。
活动图的走向可以是横向的也可以是纵向的,根据个人喜好而定。下面的这个销售订单处理活动图重点展示的是并发处理符号,它反映多个活动可以同时并发处理,并发结束后,又转变为顺序处理。
3.顺序图(时序图)
它描述了一组对象间的交互方式,表示完成某一个行为的对象和相关其他对象之间传递消息的时间顺序。顺序图由对象、对象生命线、激活框、消息等组成。“对象生命线”是一条垂直的虚线,表示对象存在的时间;“激活框”是一个细长的矩形,表示对象执行一个操作所经历的时间;“消息”是对象之间的一条水平箭头线,表示对象之间的消息通信,在消息的矩形框中可以填写方法调用名或调用说明,它会显示在消息线的上方。下面是顺序图的一个例子。
原文地址:http://blog.csdn.net/qiushisoftware/article/details/24839119
UML图详解(七)——交互图(时序图与协作图)
一、概念
- 交互图描述对象之间的动态合作关系以及合作过程中的行为次序。
- 交互图常常用来描述一个用例的行为,显示该用例中所涉及的对象以及这些对象之间的消息传递情况,即一个用例的实现过程。
交互图有顺序图和协作图两种形式。
- 时序图中描述对象按照时间顺序的消息交换。
- 协作图着重描述系统成分如何协同工作。
时序图和协作图从不同角度表达了系统中的交互和系统行为,它们之间可以相互转化。
时序图(Sequence Diagram)也称为顺序图。
通信图(Communication Diagram)也称为协作图。
二、时序图
<1>概念
- 时序图是以时间为序的表示方法,主要用来描述完成某个行为的对象类和这些对象类之间所传递的消息的时间顺序。
- 时序图是强调消息时间顺序的交互图。
- 时序图描述了对象之间传送消息的时间顺序,用来表示用例中的行为顺序。
顺序图(Sequence Diagram)=生命线(Lifeline)+消息(Message)
时序图将交互关系表示为一个二维图。其中,纵轴是时间轴,时间沿竖线向下延伸。横轴代表了在协作中各独立的对象。
时序图包含了4个元素:对象、生命线、消息、激活
顺序图的可视化图符:
UML异步消息:建模软件使用实线箭头表示。
<2>生命线
每个对象及参与者都有一条垂直的生命线(Lifeline),表示了在交互过程中的生命期限。
表示方式:用矩形框和虚线表示生命线,矩形框中添加生命线的名称,虚线表示生命长度。
生命线名称语法:生命线对象名[选择器]:类名ref decomposition (蓝色表示可选选项)
选择器:同一个类的对象可以有不同的状态值,可以再此中标明。
ref:是引用(Reference)的英文缩写
decomposition:指明在另一个更详细的顺序图中展示了当前交互的参与者如何处理它所接收到的信息的细节
<3>互动条
活动条(Activation Bar)也称为执行发生(Execution Occurrence),用来表示对象的某个行为的执行状态。
表示方式:虚线上的小矩形条。
<4>消息
1.消息简介
对象的行为也称为消息(Message),通常当一个对象调用另一个对象中的行为时,即完成了一次消息传递。
2.表示方式
在生命线间的带有实心箭头表示消息
3.消息命名
信号或消息名(参数:参数类型):返回值
4.简单消息、同步消息、异步消息
消息分为简单消息(Simple Message)、同步消息(Synchronous Message)和异步消息(Asynchronous Message)
- 简单消息:指标是控制如何从一个对象发给另一个对象,并不包含控制信息。
- 同步消息:意味着阻塞和等待
- 异步消息:意味着非等待
表示方式如上《顺序图的可视化图符》图。
5.对象创建消息
参与交互的对象不必再整个顺序图交互的完整周期中一直存在,可以根据需要,通过发送消息来创建和销毁他们。
表示方式有两种:
- 在消息的上方添加构造型《create》来表示对象在交互过程中被创建。
- 消息的箭头直接指向被创建的对象生命线的头部,这样就不需要构造型《create》来表达了
- 消息getPrice被发送给SaleManagement,然后根据quantity的值进行选择判断
- 如果quantity的值小于MiniAmount,那么SaleManagement将向Retail发送消息getPrice
- 否则,SaleManagement将向WholeSale发送消息getPrice
- 识别交互的语境。
- 通过识别对象在交互中扮演的角色,设置交互的场景。
- 为每个对象设置生命线。
- 从引发某个消息的信息开始,在生命线之间画出从顶到底依次展开的消息,显示每个消息的特性(如参数)。
- 如果需要可视化消息的嵌套或实际计算发生时的时间点,可以用激活修饰每个对象的生命期。
- 如果需要更形式化的说明某控制流,可以为每个消息附上前置和后置条件。
- 存在于整个交互作用中的对象
- 在交互作用中创建的对象
- 在交互作用中销毁的对象
- 在加护作用中创建并销毁的对象
- 一般情况下,一个链接就是一个关联实例。
- 消息可以通过链接进行流动。
- 箭头表示消息的方向。
6.对象的销毁
将构造型《destroy》放在消息的上方来表达对象销毁消息,同时在对象的生命线的结束部分画一个“×”来表示对象被销毁
7.无触发对象和无接收对象的消息
无触发对象消息(Found Message):用活动条开始断点上的实心球箭头来表示。(用在开始)
无接收对象消息(lost message):用箭头加实心球表示。(用在结束)
8.控制信息
<1>条件控制信息
当表达式的条件为真的时候消息才会被发送
语法:[表达式]消息标签
<2>重复(迭代)控制信息
消息多次发送给接收对象,迭代条件是表达式,当表达式的判定值为真结束
语法:*[表达式]消息标签
9.消息的返回值
表示方式:用虚线加开箭头的形式表示
<5>交互框
UML2.0添加了交互框(Interaction Frame).
交互框指途中的一块区域(Region)或片段(Fragment),包含一个操作符(或称为标签),并包含一个警戒.
交互框操作符说明
类型 | 参数 | 含义 |
ref | 无 | 表示交互被定义在另一个图中。可将一个规模较大的图划分为若干个规模较小的图,方便图的管理和复用。 |
assert | 无 | 表示发生在交互框内的交互式唯一有效的执行路径,有助于指明何时交互的每一步必须被成功执行,通常与状态变量一起使用来增强系统的某个状态。 |
loop | min times,max times,[guard_condition] | 循环片段,当条件为真的时候执行循环。也可以写成loop(n)来表示循环n次,与java或者C#等中的for循环比较相似。 |
break | 无 | 如果交互中包含break,那么任何封闭在交互中的行为必须被推出,特别是loop片段,这与java中的break语句比较相似。 |
alt | [guard_condition1]... [guard_condition2]... [else] | 选择片段,在境界中表达互斥的条件逻辑,与if...else...语句相似。 |
neg | 无 | 展示了一个无效的交互。 |
opt | [guard_condition] | 可选片段,当警戒值为真的时候执行。 |
par | 无 | 并行片段,表达并行执行。 |
region | 无 | 区域,表示区域内仅能运行一个线程。 |
1.alt
上图理解:
2.loop
3.par
可以理解为saveUserData()和checkQualification()将并行运行。
<6>时序图建模技术
<7>注意事项
对象不一定非得是类,还可以是参与者。
三、协作图
1.概念
协作图与时序图一样也是用来描述对象与对象之间消息连接关系的,侧重于说明哪些对象之间有消息传递。
协助图=交互的参与者+通信链+消息
通信图描述参与一个交互的对象的链接,它强调发送和接收对象之间的链接。
2.交互的参与者
表示方式:用对象符号表示,在矩形框中放置交互的参与者,显示交互的参与者的名称和它所属的类
语法:参与者名:类名
注意:虽然整个系统中可能有其他的对象,但只有涉及协作的对象才会被表示出来。
协作图中可能出现的4类对象:
3.链接
表示方式:用直线表示。
4.消息
表示方式:依附于链接上的来由标记箭头和带顺序号的消息表达式表示。
1.控制消息
表示方式:采用中括号表示。
当控制条件为真的时候消息才会被发送。
2.嵌套消息和自消息
当一个消息导致了另一个消息被发送的时候(编号区分),第二个消息被称为嵌套在第一个消息里。
嵌套可以剁成嵌套。
3.循环
与时序图中的循环类同。
表示方式:用“*”星号表示。
4.并发消息
顾名思义,就是几个消息被同事发送,编号是前半部分可以一样,后面采用字母表示。
5.小细节
编号与后半部分用冒号隔开。
原文地址:http://blog.csdn.net/fanxiaobin577328725/article/category/6514357