工具UML统一建模语言
Posted 码上加油站
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工具UML统一建模语言相关的知识,希望对你有一定的参考价值。
历史
UML创始于1994年10月,主要创始人GradyBooch、JimRumbaugh和Ivar Jacobson。
UML(Unified modeling language统一建模语言)
是一种用于软件系统分析和设计的语言工具。它用于帮助软件开发人员进行思考和记录思路的结果。
为什么使用UML
随着程序功能的增加
回顾项目流程
工作交接
效仿建筑学引进工程的概念——软件工程
UML——工程用图纸
类型 |
包含图 |
静态图 |
类图,对象图,包图 |
行为图 |
状态图,活动图 |
用类图 |
用类图 |
交互图 |
顺序图,协作图 |
实现图 |
组件图,部署图 |
用例视图
用例视图中包括了系统中的所有参与者、用例和用例图,必要时还可以在用例视图中添加顺序图、活动图等
逻辑视图
逻辑系统关注系统是如何实现用例中所描述的功能的,主要是对系统功能性需求提供支持,即为用户提供服务方面,系统所应提供的功能。逻辑视图下的模型元素包括类图、顺序图和状态图等
组件视图
组件视图用来描述系统中各个实现模块以及它们之间的关系。组件视图包括模型代码库、执行文件、运行库和其它组件信息,按照内容来划分有包、组件和组件图组成。
部署视图
部署图显示系统的实际部署情况,它是为了便于理解系统在一组处理节点上的物理分布。部署视图中包括进程、处理器和设备。
画UML图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理,图好看与否就是看你的字是否规范,至于工具,就像你用什么笔,不算非常重要。
目前市场上常见的建模工具有:
StarUML,IBM Rational Rose、Microsoft Visio、Power Designer等,Rose使用最广,市场份额最大。
用例图:由参与者、用例以及用例与用例之间的关系构成的用于描述系统功能的动态视图
参与者
用例
用例关系
用例图——参与者
参与者(Actor)是指存在于系统外部并直接与系统交互的人、系统或设备等。
参与者按是否使用系统核心功能可分为主要参与者与次要参与者。参与者在画图中用简笔人物画来表示:
用例图——用例
用例是系统为参与者提供的功能。对于对用例的命名,我们可以给用例取一个简单、概括性的名称,一般为带有动作性的词。用例在画图中用椭圆来表示,椭圆下面附上用例的名称:
实线箭头,在用例图中用于连接参与者与用例,箭头方向指向用例。
用例之间关系
用例之间的关系包括:
① 包含关系(include)
包含(include)关系指的是两个用例之间的关系,其中一个用例(称作基本用例,base use case)的行为包含了另一个用例(称作包含用例,inclusion case)的行为
② 扩展关系(extend)
扩展(extend)关系:将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(Extension Point)上进行扩展,从而使基用例行为更简练和目标更集中
③ 泛化关系(generalization)
泛化(generalization)代表一般与特殊的关系。
在泛化关系中,子用例继承了父用例的行为和含义。下图为购买彩票的简单实现方式
定义 顺序图是显示对象之间交互的图,这些对象之间是按时间顺序排列的。
水平方向对象维
垂直方向 时间维
顺序图—建模元素
顺序图中包括的建模元素有:对象(参与者实例也是对象)、生命线(lifeline)、消息(message)等。
生命线用一条虚线表示, 消息用从一个对象的生命线到另一个对象的生命线的箭头表示. 箭头以时间的顺序在图中上下排列.
异步(asynchronous)消息的发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接收者返回消息或控制。异步消息的接收者和发送者是并发工作的.
返回(return)消息表示从过程调用返回,是可选的,以带箭头的虚线表示
用户登录顺序图演示
活动图—活动
活动(activity)表示的是某流程中的任务的执行,它可以表示某算法过程中语句的执行.
在活动图中需要注意区分动作状态和活动状态这两个概念.
动作状态是原子的,不能被分解,没有内部转移,没有内部活动、动作状态的工作所占用的时间是可忽略的。动作状态的目的是执行进入动作(entryaction),然后转向另一个状态。
活动状态是可分解的,不是原子的,其工作的完成需要一定的时间。可以把动作状态看作是活动状态的特例
活动图——分支
在活动图中,对于同一个触发时间,可以根据不同的条件转向不同的活动,每个可能的转移是一个分支(branch)
活动图——分叉(fork)和汇合(join)
分支表示的是从多种可能的活动转移中选择一个,如果要表示系统或对象中的并发行为,则可以使用分叉(fork)和汇合(join)这两种建模元素。
分叉表示的是一个控制流被两个或多个控制流代替,经过分叉后,这些控制流是并发进行的;
汇合正好与分叉相反,表示两个或多个控制流被一个控制流代替
活动图——泳道
泳道(swimlane)是活动图中的区域划分,根据每个活动的职责对所有活动进行划分,每个泳道代表一个职责区。泳道和类并不是一一对应的关系,泳道关系的是其所代表的职责,一个泳道可能由一个类实现,也可能由多个类实现。
案例:在线填写请假条,三天以下,部门经理审核即可,三天以上需要CTO同意和HR批准,以上情况都通过,即可请假。
简单案例(登录)
类的组成:名称+属性+操作(方法)
类的名称必须是名词,不需要前缀或后缀,可以多个名称组合,单词首字母大写。正体字表示类可实例化,斜体字说明类为抽象类
类的属性(Attributes):
可见性:public、protected、private、Implementation(default)
属性类型与初始值
类的操作(Operations):
可见性:public、protected、private、Implementation
参数
返回类型
抽象类(双击类)——名称斜体
类图——接口
接口中包含方法, 但不包含属性. 在 UML 中接口用一个带有名称的圆圈表示, 通过一条三角箭头的虚线连接具体的接口与实现类,箭头指向接口
有时候接口也使用普通类的符号表示(在这种情况下三角箭头的虚线才能正常显示):
类之间的关系
泛化(Generalization)
在Java中此类关系通过关键字extends明确标识,依赖的特例
实现(Realization)
在Java中此类关系通过关键字implements明确标识,依赖的特例
关联(Association)聚合(Aggregation):聚合关系描述的是部分与整体关系的关联,描述了“has a”的关系,汽车整车与发动机、座椅的关系
组合(Composition):组合关系是一种更强形式的关联,整合控制成员的生命周期,如公司与部门的关系
依赖(Dependency)
在java 中. 依赖关系体现为: 局部变量, 方法中的参数, 和对静态方法的调用.
类之间的关系——泛化
泛化定义了一般元素和特殊元素之间的分类关系,如果从面向对象程序设计语言的角度来说,类与类之间的泛化关系就是平常所说的类之间的继承关系。如人与男人和女人的关系 。
使用空心箭头标示泛化,箭头指向基类。
类之间的关系——实现
实现是一种类与接口的关系, 表示类是接口所有特征和行为的实现
实现用带三角箭头的虚线表示,箭头指向接口
类之间的关系——关联
关联关系是类与类之间的联结,它使一个类知道另一个类的属性和方法 ,关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。在 Java 中,关联关系是通过使用成员变量来实现的。如人与身份证
单向关联
双向关联
自关联
类之间的关系——聚合
聚合关系是关联关系的一种,是更强的关联关系。
聚合是整体和部分之间的关系,例如汽车由引擎、轮胎以及其它零件组成。
聚合关系也是通过成员变量来实现的。但是,关联关系所涉及的两个类处在同一个层次上,而聚合关系中,两个类处于不同的层次上,一个代表整体,一个代表部分。
类之间的关系——组合
UML类图关系中合成关系是关联关系的一种,是比聚合关系还要强的关系。
代表整体的对象负责代表部分对象的生命周期。
类之间的关联——多重性
关联关系的多重性,在UML中,多重性可以用下面的格式表示:
0..1
0..*(也可以表示为0..n)
1(1..1的简写)
1..*(也可以表示为1..n)
*(即0..n)
7
3,6..9
0(0..0的简写)(表示没有实例参与关联,一般不用)
可以看到,多重性是用非负整数的一个子集来表示的。
以上是关于工具UML统一建模语言的主要内容,如果未能解决你的问题,请参考以下文章