共计 2913 个字符,预计需要花费 8 分钟才能阅读完成。
流动图
流动图是状态机的一个非凡例子,它强调计算过程中的程序和并发步骤。流动图所有或少数状态都是活动状态或动作状态,所有或大部分的转换都由原状态中实现的流动触发。
流动图的含意
流动图是一种用于形容零碎行为的模型视图,它可用来形容动作和动作导致对象状态扭转的后果,而不必思考引发状态扭转的事件。通常,流动图记录单个操作或办法的逻辑、单个用例或商业过程的逻辑流程。
在 UML 中,流动图的终点用来形容整个页游框架流动图的开始状态,用黑的实心圆示意。流动图的停止点形容流动图的终止状态,用一个含有实心圆的空心圆示意。流动图中的流动既能够是手动执行的工作,也能够是主动执行的工作。
流动图与状态图的区别:
流动图能够算是状态图的一个变种,并且流动图的符号与状态图的符号十分类似,有时会让人混同。
流动图的次要目标是形容动作及对象的扭转后果,而状态图则是以状态的概念形容对象、子系统、零碎在生命周期中的各种行为。
流动图中的状态转换不须要任何触发事件。流动图中的动作能够放在泳道中,而状态图则不能够。
流动图的作用
流动图是模型中的残缺单元,示意一个程序或工作流,罕用于计算流程和工作流程的建模。流动图着重形容用例实例或对象的流动,以及操作实现中所实现的工作。流动图通常呈现在设计的后期,即在所有实现决定前呈现,特地是在对象被指定执行所有流动前。
流动图的作用次要体现在以下几点:
形容一个操作执行过程中所实现的工作。阐明角色、工作流、组织和对象是如何工作的。
流动图对用例形容尤其有用,它可对用例的工作流建模,显示用例外部和用例之间的门路。它能够阐明用例的实例是如何执行动作以及如何扭转对象状态的。
显示如何执行一组相干的动作,以及这些动作如何影响它们四周的对象。
流动图对了解业务处理过程非常有用。流动图能够画出工作流用以形容业务,有利于领域专家进行交换。通过流动图能够明确业务解决操作是如何进行的,以及可能产生的变动。
描述简单过程的算法,在这种状况下应用的流动图和传统的程序流程图的性能是差不多的。
留神:流动图假设在整个计算机解决的过程中,没有内部事件引起中断,否则一般的状态图更适宜形容此种状况。
互动图的组成
动作状态:
动作状态(Action State)是原子性的动作或操作的执行状态,它不能被内部事件的转换中断。动作状态的原子性决定了动作状态要么不执行,要么就齐全执行,不能中断。
在 UML 中,动作状态应用平滑的圆角矩形示意,动作状态示意的动作写在矩形外部,如下图:
活动状态:
活动状态是非原子性的,用来示意一个具备子结构的纯正计算的执行。活动状态能够分解成其余子活动状态或动作状态,能够被使转换来到状态的工夫从内部中断。活动状态能够有外部转换,能够有入口动作和进口动作。活动状态具备至多一个输入实现转换,当状态中的流动实现时该转换被激发。
活动状态和动作状态的示意图标雷同,都是平滑的圆角矩形。不同的是,活动状态能够在图标中给出入口动作和进口动作等信息,如下图:
组合流动:
组合流动是一种内嵌流动图的状态。咱们把不含内嵌流动或动作的流动成为简略流动,把嵌套了若干流动或动作的流动成为组合流动。
一个组合流动在表面上看是一个状态,但其本质却是一组子流动的概括。一个组合流动能够合成为多个流动或者动作的组合。每个组合流动都有本人的名字和相应的自流动图。一旦进入组合流动,嵌套在其中的自流动图就开始执行,直到到大子流动图的最初一个状态,组合流动才完结。与个别的流动图状态一样,组合流动不具备原子性,它能够在执行的过程中被中断。
分叉与联合:
并发(Concurrency)指的是在同一时间距离内,有两个或两个以上的流动执行。对于一些简单的大型零碎而言,对象在运行时往往不止存在一个控制流,而是存在两个或多个并发运行的控制流。为了对并发的控制流建模,在 UML 中引入了分叉和联合的概念。
分叉示意将一个控制流分成两个或多个并发运行的分支,联合用来示意并行分支在此失去会合。
分叉和联合在 UML 中的示意办法类似,都是用粗黑线示意。分叉具备一个输出转换,两个或多个输入转换,每个转换都能够是独立的控制流,如下图:
联合与分叉相同,联合具备两个或多个输出转换,只有一个输入转换。先实现的控制流须要在此期待,只有当所有的控制流都达到结合点时,管制能力持续进行,如下图:
分支与合并:
分支在流动图中很常见,它是转换的一部分,它将转换门路分成多个局部,每一部分都有独自的监护条件和不同的后果。当动作流遇到分支时,会依据监护条件(布尔值)的虚实来断定动作的流向。分支的每个门路的监护条件应该都是互斥的,这样能够保障只有一条门路的转换被激发。
合并指的是两个或者多个管制门路在此会合的状况。合并是一种便当的表示法,省略它不会失落信息。合并和分支经常成对应用,合并示意从对应分支开始的条件行为的完结。
在 UML 流动图中,分支与合并都是用空心的菱形示意的。分支有一个输出箭头和两个输入箭头,而合并有两个输出箭头和一个输入箭头,如下图:
泳道:
为了对流动图的职责进行组织而在流动图中将活动状态分为不同的组,成为泳道(Swimlane)。每个泳道代表了特定含意的状态职责的局部。在流动图中,每个流动只能明确的属于一个泳道,泳道明确地示意了哪些流动是由哪些对象进行的。每个泳道都有一个与其它泳道不同的名称。
每个泳道都可能由一个或者多个类施行,类所执行的动作或领有的状态依照产生的事件程序自上而下排列在泳道内。
在流动图中,每个泳道通过垂直实线与他的街坊泳道相拆散。泳道的上方是名称,不同泳道中的流动既能够程序进行,也能够并发进行。尽管每个活动状态都指派了一条泳道,然而转移则可能逾越数条泳道。
对象流:
对象流(Object Flow)是将对象流状态作为输出或输入的控制流。在流动图中,对象流形容了动作状态或者活动状态与对象之间的关系,示意动作应用对象以及动作对对象的影响。
对象流中的对象示意的不仅仅是对象本身,还示意了对象作为过程中的一个状态存在,因而也能够将这种对象成为对象流状态(Object Flow State),用以和一般对象区别。
在流动图中,一个对象能够由多个动作操作。对象能够是一个转换的目标,以及一个互动实现转换的源。以后转发激发,对象流状态变成流动的。同一个对象能够不止一次地呈现,它的每一次呈现都表明该对象处于生存期的不同工夫点。
一个对象流状态必须与它所示意的参数和后果的类型匹配。如果它是一个操作的输出,则必须与参数的类型匹配。反之,如果它是一个操作的输入,则必须与后果的类型匹配。
流动图中的对象用矩形示意,其中蕴含带下划线的类名,在类名下方的中括号中则是状态名,表明对象此时的状态,如下图:
对象流示意了对象与对象、对象间彼此操作与转换的关系。为了在流动图中把它们与一般转换离开,用带箭头的虚线而非实线来示意对象流。如果虚线箭头从流动指向对象流状态,则示意输入。输入示意动作对对象施加了影响,影响包含创立、批改、撤销等。如果虚线箭头从对象流状态指向流动,则示意输出。输出示意动作应用了对象流所指向的对象流状态。如果流动有多个输入值或后继控制流,那么箭头背向分叉符号。反之,如果有多个输出箭头,则指向联合符号。