第6章 状态机图及其应用 《Rational Rose 2003基础教程》配套电子教案内 容n基本概念 n状态图 n活动图 n状态机共享的模型元素 n活动图专有的模型元素 n状态规范和活动规范 n动作规范 n转换规范 n判断规范 n同步规范 n1.1理解状态机 – 状态机图通过对类对象的生存周期建立模型 来描述对象随时间变化的动态行为,也可以 用来描述用例、协作和方法的动态行为,它 是展示状态与状态转换的图 – 状态机是一个类的对象所有可能的生命历程 的模型 – 状态机包括状态图和活动图两种表示方法 • 状态图用于对系统的动态方面建模 • 活动图用于对计算流程和工作流程建模,展示的 主要内容是对象的活动状态 • 状态图以状态为中心,活动图以活动为中心 1 基本概念 1 基本概念n1.2 状态机操作– 定义 • 在UML规格文件中,状态机被定义为是一种行 为,说明对象或交互在它们的声明周期中为响应 事件所经历的状态序列,以及它们的响应和动作 • 创建一个状态图或活动图时,Rational Rose自 动创建一个状态/活动模型 • Rational Rose限定每个所有者只能拥有一个状 态/活动模型。
1 基本概念n1.2 状态机操作– 创建一个状态/活动模型: • 单击Browse>State Machine Diagram,在左 边的“State Machine”下面选择新创建的状态/活 动模型所要放置的位置: • 双击New: • 在Title文本框中为图命名; • 指定要创建的图类型:活动图(Activity)或状 态图(Statechart); • 单击OK按钮 2 状态图 状态图显示一个对象从创建到摧毁的整 个生命周期Rose可以对每个类创建一个或 者多个状态图,在状态图中体现类的所有状态 和各种过渡转换,状态变化是状态图显示的焦 点状态图可以帮助系统分析员、设计人员和 开发人员理解系统中各个对象的行为在 Rose中,状态图和类图相互配合,以便完整 描述类的特征仅用类图是不够的,因为它只 能描述类对象的静态特征,而状态图可以对类 对象动态行为进行建模 2 状态图n2.1 状态图所包 含的内容 – 状态图主要显示 以下3种内容: • 对象在生命周期 中所经历的状态 序列; • 诱发对象从一个 状态转换到另一 个状态的事件; • 状态改变所导致 的动作。
2 状态图n2.2 创建状态图– 步骤如下: • 在浏览器中,用鼠标右键单击模型元素(除了属性、 关系和出现在构件视图中的模型元素); • 单击New>Statechart Diagram; 或者, • 单击Browse>State Machine Diagram; • 单击New; • 在New State Machine对话框中选中Statechart Diagram复选框; • 输入状态图标题; • 单击OK按钮 2 状态图n2.3 状态图工具箱– 13种常用的工具: – 可以定制; 3 活动图 n3.1 使用活动图活动图可以对多种不同类型的工作流建 模如果从更简单或者更具体的角度考虑, 可以更容易理解活动图即,活动图被设计 用于简化描述一个过程或操作的工作步骤 例如,软件公司可以用活动图对一个软件的 开发过程建模;会计师事务所可以用活动图 对任意数目的财务往来进行建模;公司可以 用活动图对订单批准过程进行建模;还可以 对诸如求Fibnacci数列第n个数的数值之类的 操作进行建模 3 活动图n3.2 活动图所包含的内容– 活动图包含的内容: • 判断(Decisions) • 状态(States) • 泳道(Swimlanes) • 同步( Synchronizations) • 对象(Objects) • 对象流(Object flows ) • 转换(Transitions) • 活动(Activities) • 初始状态(Start state ) • 终止状态(End state) 3 活动图n3.3 创建活动图– 步骤如下: • 在浏览器中,单击模型元素(除了属性、关系和出现在构 件视图中的模型元素); • 单击New>Activity Diagram; • 在浏览器中对新建的活动图重命名,或者双击 NewDiagram图标来显示活动图。
3 活动图n3.4 活动图工具箱– 19种常用工具 – 可以定制 3 活动图n3.5 理解工作流 – 定义 • 是一个良好定义的动作序列,执行时将产生一个 可观察的值,或者产生一个个体或实体的对象 – 建摸目的 • 理解一个组织的结构和动态特性; • 确保客户、最终用户和开发员对组织形成一致的 理解; • 导出用于支持组织的系统需求 3 活动图n3.5 理解工作流 – 识别工作流 • 谁(who)或什么(what)将对工作流负总责 ? • 要实现目标,需要执行哪些活动? • 谁(who)将对执行各种活动和状态负责? • 活动会创建或者修改对象吗? • 考察模型中的其他元素,活动和状态应该在何处 出现? • 为什么这个活动或状态需要出现? 3 活动图n3.6 用活动图对工作流建模 – 步骤: • 识别工作流的目标: • 确定从起始状态到终止状态工作流的前置条件和后置条件; • 定义并识别为实现目标而必须发生的活动和状态,按逻辑顺 序将它们放进模型图,并对它们命名; • 定义并画出所有要在模型图中创建和修改的对象,将这些对 象和活动同对象流连接起来; • 按泳道决定谁(who)或什么(what)将对执行这些活动和 状态负责; • 从主流程开始,用转换符号连接所有的元素 ; • 在流程可能要分裂出一个候补流(alternate flow)的地方放 置一个判断; • 评估模型图,看是否有并发工作流,如果有,用同步表示分 叉(forking)和结合(joining); • 在每个模型元素的规范窗口中设置动作、触发器和监护条件 。
4 状态机共享的模型元素 n4.1 状态 – 定义 • 状态(state)是指在对象的生命周期中满足某些条件 、执行某些活动或等待某些事件的条件(condition) 或状况(situation) – 图形表示 • 圆角矩形表示,状态的名称放在圆角矩形中4 状态机共享的模型元素 n4.2 起始状态和终止状态– 起始状态 • 又称“初始状态” ,在状态图中,起始状态显式地给出一 个状态机执行的起始点,表示导致转换(transition) 的事件中的起始事件;在活动图中,起始状态显式地给 出一个工作流的起始点 • 一个状态机只能有一个起始状态 4 状态机共享的模型元素 n4.2 起始状态和终止状态– 终止状态 • 表示活动的结束或者一个最终状态,即对象从内 存中删除之前所处的状态 • 状态图和活动图都可以有0个、1个或者多个终止 状态 4 状态机共享的模型元素 n4.3 状态转换 – 说明一个处于源状态的对象将要执行某种(些)指 定的动作,并且当特定的事件发生或者某种条件被 满足时,将进入目标状态 – 状态转换是两个状态之间、两个活动之间或者一个 活动和一个状态之间的关系 – 可以从一个状态发出一个或多个状态转换,前提是 转换要唯一。
从一个状态发出的转换不能具有相同 的事件,除非事件中有多个条件转换既可以出现 在状态图中,也可以出现在活动图中 – 图形表示:4 状态机共享的模型元素 n4.3 状态转换 – 状态转换通常采用如下的语法进行标记: 事件名(参量)[监护条件]/动作^目标.发送事件(参量) – 转换及转换动作 转换种类 含 义UML语法入口动作进入某一状态时执 行的动作entry/actio n 出口动作离开某一状态时执 行的动作exit/action外部转换引起状态改变的转换或自身转换,同 时执行一个具体的动作,包括 引起入口动作和出口动作被执 行的转换e(a:T)[exp] /acti on内部转换引起一个动作的执行但不改变状态或 不引起入口动作和出口动作的 执行e(a:T)[exp] /acti on4 状态机共享的模型元素 n4.4 转换到自身– 定义 • 包含的源状态(活动)和目标状态( 活动)相同,所包含的动作和事件与 转换完全相同 – 图形表示 4 状态机共享的模型元素 n4.5 判断– 定义 • 表示工作流基于监护条件将出现分支的位置 – 图形表示 • 判断在活动图和状态图中表示为一个棱形 4 状态机共享的模型元素 n4.6 同步– 定义 • 在活动图和状态图中,同步可视化地定义那些表 示并行工作流的分叉和结合 • 在浏览器中并不显示同步 – 图形表示:一条粗的水平或垂直的棒条 4 状态机共享的模型元素 n4.7 例子:机器人自 动传输的状态图 – 起始状态 – 终止状态 – 超状态和子状态 – 嵌套状态 – 历史状态5 活动图专有的模型元素 n5.1 活动– 定义 • 活动表示一个工作流中“任务”或“职责”的执行, 也可以表示某个过程中一条语句的执行。
一个活 动类似于状态,但它表达了这样一种含义:在一 个活动中没有明显的等待(事件) – 图形表示 5 活动图专有的模型元素 n5.2 泳道– 定义 • 将活动图中的活动分组,每一组指明了谁(who)或者是什 么(what)对执行活动或状态负责 – 泳道的两个重要特点: • 指明了活动图中的活动主体 • 转换可以跨越不同的泳道 – 在活动图中创建泳道: • 点击活动图工具箱中的泳道图标 • 在活动图中要创建泳道的位置点击鼠标 . – 删除泳道 • 点击活动图中的泳道头(泳道名称) • 按Del键将泳道从活动图中删除; 或者按Ctrl+D将泳道从模型中删除 5 活动图专有的模型元素 n5.3 对象– Rational Rose 2003不 支持专门的对象图建模 ,但是允许对象出现在 活动图、协作图和顺序 图中 – 活动图中的对象可以表 示活动之间的输入输出 关系 – 对象可以以多种状态出 现 5 活动图专有的模型元素 n5.4 对象流– 在UML规格文件中,对象流是指将对象状态作为 输入或输出的控制流 – 活动图中的对象流表示对象和一个活动的关系,对 象可以创建一个对象流(作为输出),也可以使用 对象流(作为输入)。
– 图形表示 • 用虚线箭头来表示对象流5 活动图专有的模型元素 n5.5 理解对象和对象流 – 对象可以以不同的状态 出现多次; – 活动可以改变对象的状 态; – 对象通过对象流和活动 相连 6 状态规范和活动规范 – 状态(起始状态和终止状 态)和活动的规范窗口都 包含下列标签: • General标签 • Actions标签 • Transitions标签 • Swimlanes标签 – 1) General标签 • 复选标记State/activity history:状态/活动历史 ,历史提供了一种通过 子状态直接转换到最近 访问过的状态的机制6 状态规范和活动规范– 2) Actions标签 • Type:类型字段标识符栏列 出了动作规范中指定的动作 种类 • Action Expression:列出 了4种可能的时间选项,规定 了一个动作执行的时机和被 执行动作的类型见动作规 范的Detail标签 7 动作规范 n7.1 创建一个新的动作 – 在状态图或活动图规范窗口 的Actions标签中: • 单击鼠标右键,显示快捷菜 单; • 单击Insert添加一个条目( entry)项; • 双击添加的“Entry/”项,显示 动作规范窗口; • 在Name栏输入动作描述。
如 果该栏未被激活,在Tyep栏 单击Action 7 动作规范 n7.2 状态和活动动作– 在一个状态或活动中,有以 下4中可能的动作: • On。