问题的引出

  顺序图是对对象的动态行为进行建模,有多个对象的参与、协作

  问题:

    当需要考察单个实体的动态行为时, 用UML如何来建模呢?

    什么是单个实体:一个软件系统?一个子系统?一个模块、一个构件?

  选择单个对象

    软件系统中核心的、需要进行详细分析的单个实体

    从不同的视点(ViewPoint)可有不同的选择

      类的对象、构件、整个系统

    原则:从选定的角度,把要考察的实体看作一个整体

  UML提供了建模机制

    状态图, 单个对象的动态行为

状态图的概念

   状态(state):

     是对象的生命期中的一个条件或状况

     在此期间,对象可以响应事件、执行某活动等

     例如,灯,有几个状态?

     例如类,color,

   状态机(state machine) :

     是一种行为,

     说明对象在它的生命期中, 响应事件所经历的状态序列 以及它们对每个事 件的响应

   状态图(state diagram, State Chart ):

     状态机可以用状态图来可视化。

     状态图显示了一个状态机,它强调从状态到状态的控制流

   状态有以下几个部分组成:

     1)名称(name)

       每个单词首字母大写

     2)进入/退出动作(entry/exit action)

     3)内部迁移(internal transition)

       Transitions that are handled without causing a change in state

     4)子状态 (substate)

     5)延迟事件 (deferred event)

   事件 Event

     是对一个在时间和空间上占有一定位置的有意义的事情的描述

       在状态机的语境中,一个事件是一个激励的发生,它能够触发一个状态迁移

     UML 对4种事件进行建模

       参量变化 change event

         布尔表达式值变化、定时器、溢出:是内部事件

       信号 signal  (异步)

       调用 call    (同步)

       时间事件 time event

         时间事件 是表示一段时间的推移

           用关键字after 后面跟着时间表达式

           用关键字at 表示某个绝对时间点上发生的时间事件

         变化事件 表示状态的一个变化或某些条件得到满足的事件

           用关键字 when后跟一个布尔表达式,当条件满足,则引发变化事件

   迁移Transition

     在状态A,发生事件并满足一定条件,转到状态B

     一个迁移由5部分组成

       源状态 source state

       事件触发器 event trigger (触发事件名称)

       触发条件 guard condition

       效应(effect) (或称,迁移动作)

         可执行的动作

       目标状态

   特殊的迁移

     自身迁移  self transition

       从状态A迁移到状态A

     内部迁移 internal transition

       在状态A内部 行为

状态图的建模元素

   状态

     一般状态:圆角矩形

     初始状态:实心圆

     结束状态:“牛眼” (bull’s eye)

   事件

     触发事件名[触发条件]/迁移动作

       这三个部分都是可以省略的,但至少有一部分

       事件依附于表示迁移的箭线

   迁移

     叉形箭头实线

       从初始状态指向目标状态

状态图建模

   建模步骤

     1、选择对象及视点

       简单类的实例

       构件

        整个系统 或子系统

       用例

     2、定义 对象在生命期内可能存在的状态

       状态要有意义

       状态持续一定的时间

     3、在每种状态下可以接受的事件及将要转去的新的状态

   状态图建模注意事项:

     不允许孤立的状态存在

     不允许只进不出的状态迁移  (“黑洞”)

     不允许只出不进的状态迁移  (“奇迹”)

     不允许没有事件发生的迁移

       或者“迁移” 没有指明具体的事件

比较状态图与交互图、活动图

   交互

     对共同工作的对象群体的行为建模

     动态行为

   状态机

     对单个对象的行为建模

       有时,可以对单个“完整系统”的行为建模

       说明对象在它的生命期中响应事件所 经历的状态序列以及对那些事件的响应

     动态行为建模

   活动图

     强调从活动到活动的控制流,多个业务角色

     状态图是强调 对象潜在的状态和这些状态之间的迁移

UML工具小结

   建模、模型

   统一建模语言 UML,Unified Modeling Language

     工具包

  用例模型 UseCase Model

   活动图 Activity Diagram

   类图 Class Diagram

   顺序图 Sequence Diagram

   通信图 Communication Diagram

   状态图 State Diagram

2.7 UML状态图的更多相关文章

  1. UML状态图和活动图

    UML状态图和活动图 统一建模语言UML(Unified Modeling Language)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面向对 ...

  2. 时序扩展的UML状态图的测试用例生成研究

    一.基本信息 标题:时序扩展的UML状态图的测试用例生成研究 时间:2014 出版源:西南大学 领域分类:时序扩展:UML状态图:测试用例:需求规格说明:模型 二.研究背景 问题定义:时序扩展的UML ...

  3. UML状态图(转载)

    概述: 图表本身的名称,阐明该图的目的和其他细节.它描述了在一个系统中的一个组成部分不同的状态.状态是特定的一个系统的组件/对象. 状态图描述了一个状态机.我们阐明的状态机可以被定义为一台机器,它定义 ...

  4. Python设计模式 - UML - 状态图(State Machine Diagram)

    简介 状态图主要用于描述对象在其生命周期中各种状态.状态之间的转换过程.触发状态转换的各种事件(条件)及执行的动作. 状态图构建步骤 - 找出适合用状态图描述的类.确定类中需要做状态图的重要对象 - ...

  5. UML状态图

    状态图(Statechart digram)是系统分析的一种经常使用工具,系统分析员在对系统建模时,最先考虑的不是基于活动之间的控制流,而是基于状态之间的控制流,由于系统中对象的状态变化最易被发现和理 ...

  6. UML——状态图

    状态图(Statechart Diagram),主要用于描述对象在其生命周期中基于事件的动态行为,显示了对象如何根据当前的状态对不同的事件(Events)作出反应(Action).一般我们用状态机来对 ...

  7. 【UML】状态图Statechart diagram(转)

    前言         UML由动态图和静态图组成,状态图就是属于动态图中较为重要的一张图. 定义         用来描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移. 目的 ...

  8. UML简介

    Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型 ...

  9. UML(统一建模语言)

    最近看了一个UML图,所以特意来了解一下UML 统一建模语言 锁定 同义词 UML(统一建模语言)一般指统一建模语言 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . Unified Mo ...

随机推荐

  1. bzoj 2527: [Poi2011]Meteors

    昨天写了一晚,越写复杂度越感觉不对,早上一想果然是假的. (这里n,m,k我就不区分了) 首先一个城市的询问可以很容易的二分 check用树状数组维护区间(区间修改,单点查询的那种) 一次是\(O(n ...

  2. win10中命令操作Zookeeper

    目录 zk客户端命令: 连接: 命令: 四字命令: 常用命令: 返回参数说明: 参考: zk客户端命令: 连接: C:\Users\qhong\Desktop $ zkCli.cmd -server ...

  3. 一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm)

    一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm) 2017-12-25  16:29:19   对于 A3C 算法感觉自己总是一知半解,现将其梳理一下,记录在此,也 ...

  4. MPU6050

    MPU6050: Pitch,Roll,Yaw旋转方向遵循右手定则 pith角  –绕Y轴(俯仰)  范围:±90°  ,与旋转方向相反转是增大   -- 抬头为正,低头为负 roll角  –绕X轴( ...

  5. (转载)一张表搞清楚西门子S7系列标准DB块与优化DB块

    在TIA Portal中为S7-1200/S7-1500 CPU 添加一个 DB 块时,其缺省属性为优化的 DB ,优化的 DB 块与标准的 DB 块整体对比如下表所示: 项 标准 DB 优化 DB ...

  6. C++笔记(2018/2/6)

    引用 & 某个变量的引用,等价于这个变量,相当于该变量的一个别名. 定义引用时一定要将其初始化成引用某个变量. 初始化后,它就一直引用该变量,不会再引用别的变量了. 通过引用所做的读写操作,会 ...

  7. 通过sql语句修改表的结构

    1.修改表的列名 oracle: ALTER TABLE 表名 RENAME COLUMN 列名 TO 新列名sqlserver:exec sp_rename '[表名].[列名]','[表名].[新 ...

  8. cmd中utf-8编码的问题

    有时候我们需要使用cmd显示某个utf-8编码的文本,这时候就需要设置cmd的代码页为65100. 也就是 chcp 65001 这条命令.这样设置可以临时生效. 如何要永久生效,需要在注册表中修改. ...

  9. 6、tcp_wrapper

    iptables的链接跟踪表最大容量为/proc/sys/net/ipv4/ip_conntrack_max,链接碰到各种状态的超时后就会从表中删除. 所以解決方法一般有两个: (1) 加大 ip_c ...

  10. Bootstrap & Font Awesome 学习笔记

    学习网站:http://bootstrap.ninghao.net/index.html https://www.freecodecamp.cn http://www.runoob.com/boots ...