UML(3)
状态机
状态机是展示状态与状态转换的图。
状态机由状态、转换、事件、活动和动作5部分组成。
(1)状态表示一个模型在其生存期内的状况,如满足某些条件、执行某些操作或等待某些事件。一个状态的生存期是有限的一个时间段。
(2)转换表示两个不同状态之间的联系,事件可以触发状态之间的转换。
(3)事件是在某个时间产生的,可以触发状态转换的,如信号、对象的创建和销毁、超时和条件的改变等。
(4)活动是在状态机中进行的一个非原子的执行,由一系列动作组成。
(5)动作是一个可执行的原子计算,它导致状态的变更或者返回一个值。
状态机不仅可以用于描述类的行为,也可以描述用例、协作和方法甚至整个系统的动态行为。
引发状态转换的事件:
入口事件、出口事件、动作事件、信号事件、调用事件、修改事件、时间事件和延迟事件等。
状态图的一般步骤:
(1)找出适合用模型描述其行为的类。
(2)确定对象可能存在的状态。
(3)确定引起状态转换的事件。
(4)确定转换进行时对象执行的相应动作。
(5)对建模的结果进行相应的精化和细化。
活动图
活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流。活动图在本质上是一种流程图。
活动图与流程图的区别:
活动图着重表现从一个活动到另一个活动的控制流,是内部处理的流程;而状态图着重描述从一个状态到另一个状态的流程,主要有外部事件的参与。
(1)流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系;而活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。
(2)活动图能够表示并发活动的情形,而流程图不能。
(3)活动图是面向对象的,而流程图是面向过程的。
活动图的组成元素
有动作状态、活动状态、动作流、分支与合并、分叉与汇合、泳道和对象流等。
泳道将活动图中的活动化分为若干组,并把每一组指定给负责这组活动的业务组织,即对象。
在活动图中,泳道区分了负责活动的对象,它明确地表示了哪些活动是由哪些对象进行了的。在包含泳道的活动图中,每个活动只能明确地属于一个泳道。
活动图对工作流建模可遵循如下步骤:
(1)识别要对工作流描述的类或对象。找出负责工作流实现的业务对象,这些对象可以是显示业务领域的实体,也可以是一种抽象的概念和事物。找出业务对象的目的是为每一个重要的业务对象建立泳道。
(2)确定工作流的初始状态和终止状态,明确工作流的边界。
(3)对动作状态或活动状态建模。找出随时间发生的动作和活动,将它们表示为动作状态或活动状态。
(4)对动作流建模。对动作流建模时可以首先处理顺序动作,接着处理分支与合并等条件行为,然后处理分叉与汇合等并发行为。
(5)对对象流建模。找出与工作流相关的重要对象,并将其连接到相应的动作状态和活动状态。
(6)对建立的模型进行精华和细化。