UML 全称 Unified Modeling Language,又称统一建模语言或标准建模语言,是始于1997年一个 OMG 标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持。
UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。
标准建模语言 UML 可以由下列五类图(共9种图形)来定义。
从用户角度描述系统功能,并指出各功能的操作者。
包括类图、对象图和包图。
类图描述系统中类的静态结构,不仅定义系统中的类,表示类之间的联系,如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)。类图描述的是一种静态关系,在系统的整个生命周期都是有效的。
对象图是类图的实例,使用与类图几乎完全相同的标识。不同点在于对象图显示类的多个对象实例,而不是实际的类。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。
包图用于描述系统的分层结构。包由包或类组成,表示包与包之间的关系。
描述系统的动态模型和组成对象间的交互关系。行为图包括:状态图、活动图。
状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件。通常,状态图是对类图的补充。在实用上并不需要为所有的类画状态图,仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态图。
活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。活动图是一种特殊的状态图,它对于系统的功能建模特别重要,强调从活动到活动的控制流程。
描述对象间的交互关系,强调对象到对象到控制流程。
顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;
协作图展现了一组对象,这组对象间的连接以及这组对象收发的消息。它强调收发消息的对象的结构组织,按组织结构对控制流建模。 顺序图和协作图都是交互图,顺序图和协作图可以相互转换。
构件图描述代码部件的物理结构及各部件之间的依赖关系。一个部件可能是一个资源代码部件、一个二进制部件或一个可执行部件。它包含逻辑类或实现类的有关信息。部件图有助于分析和理解部件之间的相互影响程度。
配置图定义系统中软硬件的物理体系结构。它可以显示实际的计算机和设备(用节点表示)以及它们之间的连接关系,也可显示连接的类型及部件之间的依赖性。在节点内部,放置可执行部件和对象以显示节点跟可执行软件单元的对应关系。
从应用的角度看,面向对象技术设计系统的主要步骤如下:
第一步,描述需求。
第二步,根据需求建立系统的静态模型,以构造系统的结构。
第三步,描述系统的行为。
第一步与第二步中所建立的模型都是静态的,包括用例图、类图(包含包)、对象图、组件图和配置图等五个图形,是标准建模语言 UML 的静态建模机制。
第三步中所建立的模型或者可以执行,或者表示执行时的时序状态或交互关系。它包括状态图、活动图、顺序图和合作图等四个图形,是标准建模语言 UML 的动态建模机制。
因此,标准建模语言 UML 的主要内容也可以归纳为静态建模机制和动态建模机制两大类。
活动图是 UML 的动态模型的一种图形,一般用来描述相关用例图。它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模。
活动图描述系统使用的活动、判定点和分支,和流程图很像,传统的流程图所能表示的内容,基本上也能用活动图表示,但是两者是有区别的:
1、流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系。活动图着重表现的是系统的行为,而非系统的处理过程,它描述的是对象活动的顺序关系所遵循的规则。
2、活动图能够表示并发活动的情形,而流程图不能。
3、活动图是面向对象的,而流程图是面向过程的。
活动图与状态图都是状态机的表现形式,但是两者还是有本质区别:
状态图着重描述从一个状态到另一个状态的流程,主要有外部事件的参与。
活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。
活动图中包含的图形元素有动作状态、活动状态、动作流、分支与合并、分叉与汇合、泳道和对象流等。
1、初始节点(只有一个)和活动终点(可有多个)。
2、活动节点。
3、转换。
4、分支与监护条件,它有一个进入转换,一个或多个离开转换。每个离开转换上都会有一个监护条件,用来表示满足什么条件的时候执行该转换。
5、分叉与汇合。
分叉用于将动作流分为多个并发运行的分支,可以用来描述并发线程,每个分叉可以有一个输入转换和多个输出转换,每个转换都可以是独立的控制流。
汇合将多条路径连接到一起,合并成一条路径,代表多个并发控制流同步发生,当所有的控制流都达到汇合点后,控制才能继续往下进行,每个汇合可以有多个输入转换和一个输出转换。
泳道将活动图中的活动化分为若干组,并把每一组指定给负责这组活动的业务组织,即对象。每个泳道代表特定含义的状态职责的部分,每个活动只能明确的属于一个泳道。
动作流和对象流允许穿越分隔线。
活动图中涉及到某个对象时,可以把该对象放置在活动图中,并用一个依赖将其连接到进行创建、修改和撤销的动作状态或者活动状态上,这样就构成了对象流,用带箭头的虚线表示。
对象流中对象的特点:
1、一个对象可以由多个动作操纵。
2、一个动作输出的对象可以作为另一个动作输入的对象。
3、在活动图中,同一个对象可以多次出现,它的每一次出现表明该对象正处于对象生存期的不同时间点。
1、识别要对工作流描述的类或对象。找出负责工作流实现的业务对象,这些对象可以是显示业务领域的实体,也可以是一种抽象的概念和事物。找出业务对象的目的是为每一个重要的业务对象建立泳道。
2、确定工作流的初始状态和终止状态,明确工作流的边界。
3、 对动作状态或活动状态建模。找出随时间发生的动作和活动,将它们表示为动作状态或活动状态。
4、对动作流建模。对动作流建模时可以首先处理顺序动作,接着处理分支与合并等条件行为,然后处理分叉与汇合等并发行为。
5、 对对象流建模。找出与工作流相关的重要对象,并将其连接到相应的动作状态和活动状态。
6、对建立的模型进行精化和细化。