统一建模语言(UML,Unified Modeling Language)是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。 UML 2.0共有10种图:
描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。
用例图所包含的元素:
1.参与者(Actor)
用一个小人表示。表示与应用程序或系统进行交互的用户、组织或者外部系统。
2.用例(Use Case)
用椭圆表示。指外部可见的一个系统功能单元,用于对系统提供的服务进行描述。
3.子系统(Subsystem)
用于展示系统的一部分功能。
4.关系
关系类型有:关联、泛化、包含和扩展。
类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。类图表示类、接口和它们之间的协作关系。类图的结构
类一般由三部分组成:
a. “可见性”包括公有(public)、私有(private)和受保护(protected)三种,在类图中分别用符 号+、-和#表示。表示属性对于类外的元素是否可见。b. “名称”用一个字符串表示属性名。c. “类型”可以是基本数据类型,也可以是用户自定义类型,表示属性的数据类型。d. “缺省值”为可选项,即属性的初始值。
a.“可见性”的定义同属性。b.“名称”用字符串表示。c.“参数列表”表示方法的参数,其语法与属性的定义相似,参数个数是任意的,多个参数之间用逗号“,”隔开。d.“返回类型”是一个可选项,表示方法的返回值类型,依赖于具体的编程语言,可以是基本数据类型,也可以是用户自定义类型,还可以是空类型(void),如果是构造方法,则无返回类型。
1.依赖(Dependency)
对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系(使用与被使用关系,例如动物和氧气的依赖关系)。在类图使用带箭头的虚线表示,箭头从使用类指向被依赖的类。
2.关联(Association)
管理关系一般是一个类知道另一个类的属性和方法,通常含有“知道”、“了解”的含义,这种关系比依赖更强,不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。比如说:“渔民”需要知道“天气”的好坏来决定是否出海打鱼 对象之间一种引用关系,比如客户类与订单类之间的关系(通常含有“知道”、“了解”的含义)。在类图使用带箭头的实线表示,箭头从使用类指向被关联的类。可以是单向和双向。
3.继承(泛化, Generalization)
子类与父类的关系(is-a关系),子类可以继承父类的属性或者方法,而其自身可以扩展其他的属性和方法。比如说:水星和火星都属于行星。在类图中使用带三角箭头的实线表示,箭头从子类指向父类。
4.实现(Realization)
指定了两个实体之间的一份合同;即:一个实体定义一份合同,另外一个实体则保证履行该合同;比如:机房收费系统中管理员可以进行日、周账单的报表。类图中使用带三角箭头的虚线表示,箭头从实现类指向接口。
5.聚合(Aggregation)
是关联关系中的一种,体现的是整体与部分的拥有关系,“has-a”关系,部分可以脱离整体而单独存在,如公司和员工的关系,公司包含员工,但如果公司倒闭,员工依然可以换公司。在类图使用空心的菱形表示,菱形从局部指向整体。
6.组合(Composition)
关联关系的一种,但它是比聚合关系更强的关系,“contain-a”关系,同样体现的是整体和部分的关系,只不过此时的整体和部分是不可分离的,比如:人和大脑。
序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。
时序图组成元素
1.对象(Object)
2.生命线(Lifeline)
3.激活(Activation)
4.消息(Message)
与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。
包图用于描述系统的分层结构,由包或类组成,表示包与包之间的关系。
描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。
描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。
和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。
描述代码构件的物理结构以及各种构建之间的依赖关系。用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件是软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。
是用来建模系统的物理部署。例如计算机和设备,以及它们之间是如何连接的。部署图的使用者是开发人员、系统集成人员和测试人员。部署图用于表示一组物理结点的集合及结点间的相互关系,从而建立了系统物理层面的模型。