Unified Modeling Language(UML)又称作统一建模语言或标准建模语言,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格到构造和配置。
分类
- 静态模型(系统结构)
用例图、类图、对象图、构件图、部署图 - 动态模型(系统行为)
状态图、活动图、序列图、协作图
四种事务
结构事务
名词、静态部分、物理元素。
行为事务
动词、动态部分、行为。
分组事务
包。
注释事务
注解。
用例图
- 用例图是指由参与者(Actor)、用例(Use Case),边界以及他们之间的关系构成的用于描述系统功能的视图。
- 用例图(User Case)是外部用户(被称为参与者)所能观察到的系统功能模型图。
- 用例图是系统蓝图,用于需求分析阶段。
- 用例图呈现了一些参与者,一些用例,以及他们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。
关系
包含(include)关系
基用例并非一个完整的用例,必须和子用例一起使用才够完整,子用例也必然被执行。include关系在用例图中使用带箭头的虚线表示,箭头从基用例指向子用例。
扩展(extend)关系
基用例是一个完整的用例,extend关系在用例图中使用带箭头的虚线表示(在线上标注<
类图
类图(class diagram)展现了一组对象、接口、协作和它们之间的关系。类图是静态视图。
类图包括:类、接口、协作、依赖、泛化、关联关系
类的分类
- 实体类
永久存储、数据库表记录 - 控制类
执行逻辑 - 边界类
用户、系统交互:界面类,
类之间关系
类之间关系
依赖(Dependency)
- 使用关系(use a) 避免双向依赖
- A依赖B,B改变会影响A
- 虚线箭头表示,依赖的一方指向被依赖的一方。
泛化(Generalization)
- 是(is a)
- 继承关系的反关系
- 父类:基类、超类 是子类的泛化,子类:派生类。
- 实线+空心三角形
关联(Association)
- 拥有的关系(has a),一个类知道另一个类的属性、方法。
- 双向无箭头
- 单向关联:有一个箭头
- 自关联
- 多重关联
- 1…1 A类1个对象与B类一个对象有关系。
- 0…* A类1个对象与B类0或多个对象有关系。
- 1…* A类1个对象与B类1个或多个对象有关系。
- 0…1 A类1个对象与B类0个或1个对象有关系。
- m…n A类1个对象与B类最少m个最多n个对象有关系(m≤n)。
聚合(Aggregation)
- has a 关系
- 整体与部分之间是可分离的
- 带空心菱形+直线+箭头 表示。
组合(Composition)
- contains-a ,也称为 强聚合
- 整体、部分不可分离。
- 实心菱形+直线+箭头表示。
实现(Realization)
- 用来规定接口和实现接口的类或者构建结构的关系。
- 接口时操作的集合。
- 接口之间存在继承、依赖关系。
- 类、接口存在实现关系。
- 空心三角+虚线表示。
对象图
维度 | 类图 | 对象图 |
---|---|---|
信息 | 3部分:类名、属性、操作 | 2部分:对象名称、对象属性 |
名称 | 只有类名 | 对象名:类名 |
属性 | 所有属性 | 属性当前值 |
操作 | 列出操作 | 不包含操作 |
关系 | 关联连接,关联中使用名称、角色、约束定义 | 对象使用链进行连接,包含名称、角色 |
关系数目 | 必须说明参与关联的对象数目 | 对象代表单独实体,链都是1对1的,不涉及多重性 |
交互图
序列图(时序图)
描述消息在对象之间如何发送和接收的。
构成:对象、生命线、控制焦点、消息
作用:展示对象间的交互时序。
通信图(协作图)
描述了该协作所有对象组成的网络结构及相互发送消息的整体行为。
构成:对象、消息、链(是关联的实例、是对象间发送消息的路径)、顺序号。
作用:显示了对象及其交互关系的组织结构、表现了一个类的操作实现。
通信方式
交互概览图
强调控制流的交互图
计时图
适合嵌入式系统建模的交互图
状态图
描述一个特定对象的所有可能的状态,及由于各种事件的发生引起的状态间的转移和变化。
动态建模。
活动图
动态建模。活动图描述行为的动作、状态图描述行为的结果。
构件图(组件图)
复用,构件类型:
- 部署构件:dll文件、exe文件、com+对象、CORBA对象、EJB、动态Web和数据库表等。
- 工作产品构件:源代码文件、数据文件等
- 执行构件:系统执行后得到的构件。
教材图:
组合结构图
部署图
- 显示系统中软件、硬件的物理架构。
包图
- 在Uml中用类似于文件夹的符号表示的模型元素的组合。包图是一种维护和描述系统总体结构的模型的重要建模工具,通过对包中各个包以及包之间关系的描述,展现出系统的模块与模块之间的依赖关系。
- 作用:描述需求,设计的高阶概况;反应系统的高层架构,模块化分解;组织源码的方式;
- 一个包图可以由任何一种uml图组成,通常为用例图、类图。
- 包被描述成文件,可以用于uml任何一种图上。
- 包图知识把某些类放在一个包中,因此可以看出是类图的一种。