一、概述
lUML是什么
lUML历史
UML创始于1994年10月,主要创始人Grady Booch、Jim Rumbaugh和Ivar Jacobson。
lUML(Unifiedmodeling language统一建模语言)是一种用于软件系统分析和设计的语言工具。它用于帮助软件开发人员进行思考和记录思路的结果。
l为什么使用UML
l
随着程序功能的增加
•
如何控制程序结构
•
如何控制开发流程
•
……
l
效仿建筑学引进工程的概念
——
软件工程
•
UML——
工程用图纸
lUML分类
lUML图绘制工具
l
画
UML
图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理,图好看与否就是看你的字是否规范,至于工具,就像你用什么笔,不算非常重要。
l
目前市场上常见的建模工具有
IBMRational Rose
、
MicrosoftVisio
、
PowerDesigner
等,
Rose
使用最广,市场份额最大。
lRose工具使用
一)、Rose界面介绍:
lUML历史
UML创始于1994年10月,主要创始人Grady Booch、Jim Rumbaugh和Ivar Jacobson。
lUML(Unifiedmodeling language统一建模语言)是一种用于软件系统分析和设计的语言工具。它用于帮助软件开发人员进行思考和记录思路的结果。
l
随着程序功能的增加
•
如何控制程序结构
•
如何控制开发流程
•
……
l
效仿建筑学引进工程的概念
——
软件工程
•
UML——
工程用图纸
l
画
UML
图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理,图好看与否就是看你的字是否规范,至于工具,就像你用什么笔,不算非常重要。
l
目前市场上常见的建模工具有
IBMRational Rose
、
MicrosoftVisio
、
PowerDesigner
等,
Rose
使用最广,市场份额最大。
二)、修改默认语言:
三)、Rose的四种视图模型:
1、用例视图
用例视图中包括了系统中的所有参与者、用例和用例图,必要时还可以在用例视图中添加顺序图、活动图
等。
2、逻辑视图
逻辑系统关注系统是如何实现用例中所描述的功能的,主要是对系统功能性需求提供支持,即为用户提供
服务方面,系统所应提供的功能。逻辑视图下的模型元素包括类图、顺序图和状态图等。
3、组件视图
组件视图用来描述系统中各个实现模块以及它们之间的关系。组件视图包括模型代码库、执行文件、运行
库和其它组件信息,按照内容来划分有包、组件和组件图组成。
4、部署视图
部署图显示系统的实际部署情况,它是为了便于理解系统在一组处理节点上的物理分布。部署视图中包括
进程、处理器和设备。
二、用例图
1、由参与者、用例以及用例与用例之间的关系构成的用于描述系统功能的动态视图称为用例图。
2、参与者
参与者(Actor)是指存在于系统外部并直接与系统交互的人、系统或设备等。参与者按是否使用系统 核心功能可分为主要参与者与次要参与者。参与者在画图中用简笔人物画来表示:
3、用例
1)、用例是系统为参与者提供的
功能。对于对用例的命名,我们可以给用例取一个简单、概括性的名称,
一般 为带有动作性的词。用例在画图中用椭圆来表示,椭圆下面附上用例的名称:
2)、实线箭头,在用例图中用于连接参与者与用例,
箭头方向指向用例。
4、用例关系
用例之间的关系包括:
1)、包含关系(include)
包含(include)关系指的是两个用例之间的关系,其中一个用例(称作基本用例,baseuse case)的行为包 含了另一个用例(称作包含用例,inclusioncase)的行为。
2)、扩展关系(extend)
扩展(extend)关系:将基用例中一段相对
独立并且
可选的动作,用扩展(Extension)用例加以封装,再
让它从基用例中声明的扩展点(ExtensionPoint)上进行扩展,从而使基用例行为更简练和目标更集中 。
3)、 泛化关系(generalization)
泛化(
generalization
)代表一般与特殊的关系。
在泛化关系中,子用例继承了父用例的行为和含义。 下图
为购买
彩票的简单实现方式:
5、用例图练习
三、类图
1)、类图:
类的组成:名称+属性+操作(方法)
2)、类图——接口
接口中包含方法
,
但不包含属性(?)
.
在
UML
中接口用一个带有名称的圆圈表示
,
通过一条三角箭头的虚线
连接
具体
的接口与实现类,箭头指向接口:
(注:上图有问题?)
有时候接口也使用普通类的符号表示
(
在这种情况下
三角箭头的虚线
才能正常显示):
类之间的关系:
l
依赖
(Dependency)
•
在java
中.
依赖关系体现为
:
局部变量
,
方法中的参数
,
和对静态方法的调用
.
l
类一方的改动将引起另一方的变动。这是一种典型的临时关系,代表了类之间的一种短暂的交互
。依赖关系在
Java
语言中体现为局部变量、方法的参数或者对静态方法的调用,如工具类,现实
生活中人与锤子。
l
依赖用虚线箭头,箭头指向依赖的类。
l
泛化
(Generalization)
•
在Java中此类关系通过关键字extends明确标识
,依赖的特例。
l
泛化定义了一般元素和特殊元素之间的分类关系,如果从面向对象程序设计语言的角度来说,类
与类之间的泛化关系就是平常所说的类之间的继承关系。如人与男人和女人的关系。
l
使用空心箭头标示泛化,箭头指向基类。
l
实现
(Realization)
•
在Java中此类关系通过关键字implements明确标识
,依赖的特例。
l
实现是一种类与接口的关系
,
表示类是接口所有特征和行为的实现
l
实现用带三角箭头的虚线表示,箭头指向接口 :
l
关联
(Association)
•
聚合
(Aggregation):
聚合关系描述的是部分与整体关系的关联,描述了“ha
s
a
”的关系,汽车整车与发动机、座椅的关系。
a、聚合关系是关联关系的一种,是
更强的关联关系。
b、聚合是
整体和部分之间的关系,例如汽车由引擎、轮胎以及其它零件组成。
c、聚合关系也是通过成员变量来实现的。但是,关联关系所涉及的两个类处在
同一个层次上,而聚合关系中,两个类处于不同的层次上,一个代表整体,
一个代表部分。
•
组合
(Composition)
:组合关系是一种更强形式的关联,整合控制成员的生
命周期,如公司与部门的关系。
l
UML
类图关系中合成关系是关联关系的一种,是比聚合关系还要强的关系。
l
代表整体的对象负责代表部分对象的生命周期。
类之间的关系——多重性
l
关联关系的多重性,
在
UML
中,多重性可以用下
面的格式表示
:
•
0..1
•
0..*
(也可以表示为
0..n
)
•
1
(
1..1
的简写)
•
1..*
(也可以表示为
1..n
)
•
*(即
0..n
)
•
7
•
3,6..9
•
0
(
0..0
的简写)(表示没有实例参与关联,一般不用)
可以看到,多重性是用非负整数的一个子集来表示的。
四、活动图
l活动图的用途
活动图对表示并发行为很有用,其应用非常广泛。一般活动图可以对系统的工作流程建模,也可以对具体的操 作建模,用于描述计算过程的细节。
l活动图可以用于描述系统的工作流程和并发行为。活动图中一个活动结束后将立即进入下一个活动,JBPM就是以活动图为基础。
简单案例——登录:
l基本概念
① 活动
l活动(activity)表示的是某流程中的任务的执行,它可以表示某算法过程中语句的执行。
l在活动图中需要注意区分动作状态和活动状态这两个概念:
•动作状态是原子的,不能被分解,没有内部转移,没有内部活动、动作状态的工作所占用的时间是可忽略的动作状态的目的是执行进入动作(entryaction),然后转向另一个状态。
•活动状态是可分解的,不是原子的,其工作的完成需要一定的时间。可以把动作状态看作是活动状态的特例
② 起点和终点
③ 分支
l在活动图中,对于同一个触发时间,可以根据不同的条件转向不同的活动,每个可能的转移是一个分支(branch)
④ 泳道
l泳道(swimlane)是活动图中的区域划分,根据每个活动的职责对所有活动进行划分,每个泳道代表一个职责区。泳道和类并不是一一对应的关系,泳道关系的是其所代表的职责,一个泳道可能由一个类实现,也可能由多个类实现。
l小案例——员工请假
在线填写请假条,三天以下,部门经理审核即可,三天以上需要CTO同意和HR批准,以上情况都通过,即可请假。
⑤分叉和汇合
l分支表示的是从多种可能的活动转移中选择一个,如果要表示系统或对象中的并发行为,则可以使用分叉(fork)和汇合(join)这两种建模元素。
l分叉表示的是一个控制流被两个或多个控制流代替,经过分叉后,这些控制流是并发进行的;
l汇合正好与分叉相反,表示两个或多个控制流被一个控制流代替。
活动图案例2:
报销业务:填写报销申请单,由部门经理确认出差,财务审核票据,如果超过500元需要CEO签字,都成功即领取报销款。