UML的概念与使用

第一部分 基础概念


Part 1 UML语言概述

视图用来表示系统的一个方面, 每个视图代表完整系统描述的一个抽象.显示系统一个特定方面, 每个视图由一组图构成.

根据图在不同架构视图中的应用, 可划分为:

1. 在用户模型视图: 用例图(Use case diagram)

2. 在结构模型(逻辑)视图: 类图(Class diagram) 描述系统静态结构; 对象图(Object diagram) 描述系统在某个时刻静态结构.

3. 在行为模型(并发)视图: 序列图(Sequence diagram) 按时间顺序描述系统元素间交互; 协作图(Collaboration diagram) 按照时间和空间顺序...; 状态图(State diagram) 描述系统元素的状态条件和响应; 活动图(Activity diagram) 描述系统元素活动.

4. 在实现模型视图: 组件图(Component diagram) 描述实现系统元素组织.

5. 在环境模型视图: 展开图(Deployment diagram) 描述环境元素配置.


常见模型元素:



关联关系:



UML建模工作要依照某个方法或过程进行.这个方法列出了应进行哪些不同的步骤, 以及这些步骤怎样实现的阶段大纲(需求阶段, 设计阶段...).



用例图:

包含用例, 系统, 角色三种模型元素.

系统: 是用例模型的一个组成部分, 代表一部机器或者一个商务活动,而不是真正实现的软件系统.

角色: 是与系统交互的人或事, 是一个群体概念; 角色是启动用例的前提条件, 由称为"刺激物".可以分为主要角色和次要角色, 或者主动角色和被动角色.

用例: 是一个完整的功能, 是动作(action)动作步骤的集合, 用例总是由角色初始化, 为角色提供值, 并具有完整性. 用例与角色之间是关联关系.

用例实现为协作, 表示协作的图有协作图, 序列图和活动图。



Part 2 静态建模 类图和对象图

静态建模一般包含4种关系:

关联,通用化(继承 Generalization),依赖, 精化


关联:两个类对象之间存在可以相互通信的关系。包含普通关联(单向,双向关联, 表示类之间1对多,多对多等关系...); 递归关联(一个类与它本身有关联关系,同类对象之间语义上的连接); 限定关联(将关联中多的那一端的具体对象分成对象集);或关联(对两个或者更多个关联附加约束条件,使类的对象一次只能应用于一个关联关系);有序关联(明确表示关联中的次序关系);三元关联(三个类的关联关系)

聚合,是关联的特例。表示相关类之间“整体—部分”的关系。在关联直线一端末加一个菱形,紧贴具有整体性质的类。聚合包含共享聚合和复合聚合。共享聚合中处于部分的对象同时参与了多个处于整体方对象的构成;复合聚合的部分类则完全隶属于整体类,即,没有整体类部分类也就没有存在大的价值了,此时,聚合图示改为一个带实心菱形的直线。




通用化,又成继承,包含普通通用化和首先通用化。

受限通用化是附加一个约束条件,进一步说明该通用关系的使用方法或扩展方法。预定义的约束有四种:多重,不相交,完全和不完全。



多重继承指出,子类的子类可以同时继承多个上一级子类;与不相交继承对立. 完全继承指出父类的所有子类都被穷举完毕, 不可能再有其它未列出的子类存在.与非完全对立.


依赖和精化关系

依赖关系是两个模型元素之间语义上的连接关系, 其中一个元素是独立的,而另一个是非独立的. 图示为带箭头的虚线连接, 指向独立的类.



精化关系用于表示同一事务, 建立在不同抽象层上的的两种描述. 图示用带有空心三角的虚线表示.


接口.

接口通常被描述为抽象操作, 即只说明行为, 而没有具体实现的部分. 在类图中多表示为一个带接口名称的小圆圈.与应用它的模型元素用一条直线相连, 它们之间是一对一的关系.调用接口类与接口之间用带箭头的虚线连接, 它们之间是依赖关系.



模板.

模板(templet)是一个尚未完全具体说明的类. 模板提供参数, 利用参数表向模型传递信息可最终形成用户需要的具体类.

(: Java中没有与此对应的语法)



Part 3 动态建模: 状态图, 序列图, 协作图, 活动图

消息: 两个对象之间的交互表现为一个对象发送一个消息给另一个对象. UML中的消息类型主要包含 简单消息, 同步消息, 异步消息.




状态图: 主要用来描述对象,子系统, 系统生命周期. 所有的类, 只有可标记的状态和复杂的行为, 都应该有一个状态图.

状态和转移, 所有对象均有状态, 包含事件说明, 守卫条件和动作表达式.

事件, 发生并且引起某些动作执行的事情.主要包含一下4: 条件成真, 收到另一个对象中的信号, 收到另一个对象的操作调用, 经过指定的时间间隔.

序列图: 描述对象是如何交互的, 并且将重点放在消息序列上, 描述消息是如何在对象间发送和接受的. 对象间的通信用对象的生命线之间水平消息来表示. 浏览序列图的方法是: 从上到下查看对象间交换的消息. 有两种使用序列图的方式, 一般格式和实例格式. 实例格式对详细的一次可能的交互, 仅仅显示选定的情节的交互. 而一般格式将描述所有的细节.


协作图: 主要描述协作对象之间的交互和链接(一个链接是一个关联的实例化). 序列图和协作图都描述交互. 但序列图强调时间, 而协作图强调是空间.

主要涉及的概念包括消息流, 链接(两个对象之间的连接), 对象生命周期,


活动图: 显示动作及结果. 着重描述方法实现中所完成的工作以及用例实例或对象中的活动. 活动图是状态图的一个变种, 当状态中的动作被执行, 活动图中的状态直接转移到下一个阶段.主要用于描述一个操作的执行过程.

活动图的泳道被用来组合活动, 直接显示动作在哪一个对象中执行.

在活动图中可以发送和接受信号, 具体表示是从发送或接受符号画一条虚线箭头道对象.



活动图可以用来描述操作, 类或用例, 但是它们只能显示工作流. 也可以用活动图来进行商业建模.



Part 4 物理架构视图

架构, 是系统的组织结构. 可以递归的将架构分解成: 通过接口交互的部分, 连接各个部分的关系, 组装各个部分的约束.


逻辑架构: 处理系统功能, 将功能分配到系统各个部分, 详细说明它们的工作流程. 用来描述的逻辑架构图有: 用例, , 状态, 活动, 协作和序列.


物理架构: 描述系统的软件,硬件结构. 包括不同的节点以及节点间如何连接. 还说明逻辑架构中定义的概念的代码模块的物理结构和相关性.

其中, 软件的概念包括组件(一组模型元素实例的物理打包时可重用部分), 进程(重量控制流), 线程(轻量控制流), 对象(对象没有自己执行线程).


组件图:

组件图描述软件及组件之间的关系, 显示代码结构. 组件是逻辑架构中定义的概念和功能(, 对象, 它们间关系, 协作)在物理架构中的实现.

软件组件可以是一下任何一种: 源组件(源代码文件), 二进制组件(对象代码), 可执行组件(可执行程序文件).



展开图

描述处理器, 设备, 软件组件在运行时的架构. 它是系统拓扑的最终物理描述. 包括:

节点: 拥有某些计算机资源的物理对象.

连接: 通过通信关联连接在一起,节点通过这条通信路径交换对象或发送消息.

组件: 将可执行组件的实例包含在节点实例符号中, 表示它们处于同一个节点实例上. 且在同一个节点实例上运行.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值