积木

No sub title

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

常用链接

留言簿(1)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

状态图是系统分析的一种常用工具,它通过建立类对象的生存周期模型来描述对象随时
间变化的动态行为。
----------------------------
状态机是展示状态与状态转换的图。在面向对象分析与设计中,对象的状态、状态的转
换、触发状态转换的事件、对象对事件的响应(即事件的行为〉都可以用状态图来描述。
UML用状态机对软件系统的动态特征建模。 通常一个状态机依附于一个类,并且描述­
个类的实例(即对象的状态机包含了一个类的对象在其生命期间所有状态的序列以及对象对
接收到的事件所产生的反应。
----------------------------
状态机由状态、转换、事件、活动和动作5部分组成。
(1)状态表示一个模型在其生存期内的状况,如满足某些条件、执行某些操作或等待某
些事件。一个状态的生存期是有限的一个时间段.
(2) 转换表示两个不同状态之间的联系,事件可以触发状态之间的转换.
(3)事件是在某个时间产生的,可以触发状态转换的,如信号、对象的创建和销毁、超
时和条件的改变等。
(4) 活动是在状态机中进行的一个非原子的执行,由一系列动作组成。
(5) 动作是一个可执行的原子计算,它导致状态的变更或者返回一个值。
状态机不仅可以用于描述类的行为,也可以描述用例、协作和方法甚至整个系统的动态行为。
----------------------------
状态图由表示状态的节点和表示状态之间转换的带箭头的直线组成。若干个状态由一条
或者多条转换箭头连接,状态的转换由事件触发。模型元素的行为可以由状态图中的一条通
路表示,沿着此通路状态机随之执行了一系列动作。
组成UML的图形元素有状态、转换、初始状态、终结状态和判定等。
(1) 状态由一个带圆角的矩形表示,状态图的图标可以分为3部分: 名称、内部转换和嵌套
状态图。
        a) 名称表示状态的名字,通常用字符串表示
        b) 内部转换。在内部转换中可以包含进入或者走出此状态应该执行的活动或动作,它
们将响应对象所接收到的事件,但是不改变对象的状态。
        c) 嵌套状态图。状态图中的状态有两种·一种是简单状态,简单状态不包含其他状态;
一种是组合状态,组合状态是包含子状态的状态。在组合状态的嵌套状态图部分包含的就是
此状态的子状态。
(2) 转换用带箭头的直线表示,一端连接源状态,即转出的状态,箭头一端连接目标状态,
即转入的状态。转换可以标注与此转换相关的选项,如事件、动作和监护条件。
注意: 如果转换上没有标注触发转换的事件,则表示此转换为自动进行.
(3) 每个状态图都应该有 个初始状态,此状态代表状态图的起始位置。初始状态只能作为
转换的源,而不能作为转换的目标。起始状态在一个状态图中只允许有一个,用一个实心的
圆表示。
(4) 终止状态是模型元素的最后状态,是一个状态图的终止点。终止状态只能作为转换的目
标,而不能作为转换的源。终止状态在一个状态图中可以有多个,它用 个含有实心圆的空
心圆表示。
(5) 判定处在状态图中这样一个位置: 工作流在此处按监护条件的取值而发生分支。 判定用
空心小菱形表示。因为监护条件为布尔表达式,所以通常条件下的判定只有一个入转换和两
个出转换。根据监护条件的真假可以触发不同的分支转换。
----------------------------
入口动作和出口动作表示进入或退出某个状态所要执行的动作。入口动作用"entry/要执
行的动作"表达,而出口动作用"exit/要执行的动作"表达。
----------------------------
事件表示在某一特定的时间或空间出现的能够引发状态改变的运动变化,如接收到的从
一个对象对另一个对象发送的信号、某些值的改变或一个时间段的终结。事件是一个激励的
出现, 它定义一个触发子以触发对象改变其状态,任何影响对象的事物都可以是事件。
事件有多种,大致可分为入口事件、出口事件、动作事件、信号事件、调用事件、修改
事件、时间事件和延迟事件等儿种。
1  入口事件
入口事件表示 个入口的动作序列,它在进入状态时执行。入口事件的动作是原子的,
并且先于人和内部活动或转换。
2  出口事件
出口事件表示一个出口的动作序列,它在退出状态时执行。出口事件也是原子的,它跟
在所有的内部活动之后,但是先于所有的出口转换。
3  动作事件
动作事件也称为"do 事件".它表示对一个嵌套状态机的调用。与动作事件相关的活动
必定引用嵌套状态机,而非引用包含它的对象的操作。
4  信号事件
信号是两个对象之间的通信媒介,信号的接收是信号接收对象的一个事件。 信号分为异
步单路通信和双路通信.在异步单路通信中,发送者是独立的,它不必等待接收者处理信号.
在双路通信模型中,至少在每个方向上都要有一个信号,这就是所谓的多信号B 在信号事件
中,发送者和接收者可以是同一个对象。
5  调用事件
调用事件是一个对象对调用的接收,这个对象用状态的转换而不是用固定的处理过程实
现操作。调用事件至少涉及两个以上的对象,一个对象请求调用另 个对象的操作。 对调用
者来说,一旦调用的接收对象通过囱事件触发的转换完成了对调用事件的处理或调用失败,
而没有进行任何状态转换,则控制返回到调用对象。 调用事件既可以为同步调用,也可以为
异步调用。如果调用者需要等待操作的完成,则是同步调用,否则是异步调用.
6  修改事件
修改事件依靠特定属性值的布尔表达式所表示的条件的满足来触发状态的转换. 它表示
了一种具有时间持续性的并且可能是涉及全局的计算过程,测试修改事件的代价可能很大,
因为原则上修改事件是持续不断的。
监护条件与修改事件的区别在于监护条件只是在引起转换的触发器事件触发时和事件
接收者对事件进行处理时被赋值 次,而修改事件则可以被多次赋值直到条件为真,多次赋
值满足条件后转换也会被激发。
7  时间事件
时间事件代表时间的流逝。
8  延迟事件
延迟事件是在本状态不处理,要推迟到另外一个状态才处理的事件。 通常,在一个状态
生存期出现的事件若不被立即响应就会丢失.但是,这些未立即触发转换的事件可以放在一
个内部的延迟事件队列中,等待需要时触发或者撤消, 如果一个转换依赖一个存在于内部延
迟事件队列中的事件,则事件立即触发转换:如果存在多个转换,则内部延迟事件队列中的
第一个事件将有优先触发相应转换的权利。
----------------------------
转换表示当一个特定事件发生或者某些条件得到满足时,一个源状态下的对象在完成一
定的动作后将发生状态转变,转向另 个称之为目标状态的状态。当发生转换时,转换进入
的状态为活动状态,转换离开的状态变为非活动状态.

转换通常分为外部转换、内部转换、完成转换和复合转换4种。一个转换一般包括5部
分的信息:源状态、目标状态、 触发事件、监护条件和动作。

1  外部转换
外部转换是一种改变对象状态的转换,它是战常见的一种转换。外部转换用从源状态到
目标状态的箭头表示。
2  内部转换
内部转换有一个源状态但是没有目标状态,它转换后的状态仍旧是它本身。 内部转换的
激发规则和改变状态的外部转换的激发规则相同,如果一个内部转换带有动作,动作也要被
执行。内部转换用于对不改变状态的插入动作建立模型,例如建立帮助信息。
内部转换和自转换不同, 自转换是离开本状态后重新进入
该状态,它会激发状态的入口动作和出口动作的执行;而内部转换自始至终都不离开本状态,
所以没有出口或入口事件,也就不执行入口和出口动作。内部转换和入口动作或出口动作采
用相似的表示方法。
4  复合转换
复合转换由简单转换组成,这些简单转换通过分支判定、分叉或接合组合在一起.前
面所讲的由判定参与的转换就是复合转换.除了简单的两个分支的判定,还有多条件的分
支判定.多条件的分支判定又分为链式的和非链式的分支。
5  触发事件
状态机描述了对象的具有事件驱动的动态行为,对象动作的执行、状态的改变都是以特
定事件的发生为前提的,触发事件就是能够引起状态转换的事件。触发事件可以是信号、调
用和时间段等。
6  监护条件
转换可能具有一个监护条件,监护条件是触发转换必须满足的条件,它是一个布尔表达
式。 当事件被触发时,监护条件被赋值. 如果布尔表达式的值为真,那么转换被触发;如果
布尔表达式的值为假,则不会引起转换。 监护条件只能在触发事件发生时被赋值一次,如果
在转换发生后监护条件才由假变为真,那么转换也不会被触发。
从 个状态引出的多个转换可以有同样的触发器事件,但是每个转换必须具有不同的监
护条件。当其中一个监护条件满足时,触发器事件会引起相应的转换,监护条件应该确保
个触发器事件的发生能够引起某些转换。
7  动作
动作是一组可执行语句或者计算处理过程。动作可以包括发送消息给另一个对象、操作
调用、设置返回值、创建和销毁对象等。动作也可以是一个动作序列,即一系列简单的动作
的组合。动作是原子的,不可中断的,动作或动作序列的执行不会被同时发生的其他动作影
响或终止。 动作的执行时间非常短,与外界事件所经历的时间相比是可以忽略的,因此,在
动作的执行过程中不能再插入其他事件.
整个系统可以在同一时间执行多个动作。动作在它的控制线程中是原子性的,一旦开始
执行就必须执行到底并且不能与同时处于活动状态的动作发生交互作用。与系统处理外部事
件所需要的反应时间相比,动作的执行过程应该简洁到能做出实时响应。
----------------------------
状态图建模技术
状态图一般用于对系统中的某些对象,比如类、用例和系统的行为建模。建模的时候要
找出对象所处的状态、 触发状态改变的动作,以及对象状态改变时应执行的动作.具体的建
模步骤如下。
(1)找出适合用模型描述其行为的类。
(2)确定对象可能存在的状态。
(3)确定引起状态转换的事件。
(4) 确定转换进行时对象执行的相应动作,
(5) 对建模的结果进行相应的精化和细化。
posted on 2013-11-11 22:33 Jacc.Kim 阅读(422) 评论(0)  编辑 收藏 引用 所属分类: UML

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理