UML状态图编写规范
uml用例规约

uml用例规约UML(统一建模语言)用例规约是指对系统中某一特定功能或行为的详细说明和定义。
用例规约被用来描述系统中所需的所有输入、输出、前置条件、后置条件和用例执行步骤等信息。
在UML中,用例规约通常被用来描述用例的所有方面,包括预期的行为和系统响应。
下面将详细介绍一下UML用例规约。
UML用例规约通常包含以下几个方面:1. 名称:用例规约必须具有唯一的名称,以便与系统中的其他用例区分开来。
2. 概述:用例规约需要简要描述该用例的作用和目的。
3. 前置条件:描述执行该用例前必须满足的条件,这些条件可以是系统状态、数据要求、前置操作等。
4. 后置条件:描述执行该用例后的状态。
即系统状态、数据状态、后置操作等。
5. 执行步骤:用例规约必须描述用例的详细执行步骤,包括所有输入和输出。
6. 异常情况:描述当某个步骤失败或者出现错误时,应该采取的措施。
7. 优先级:描述该用例的优先级,以便团队能够确定该用例的重要性。
在编写UML用例规约时,需要遵循一些规则:1. 用例规约必须与用例图中的用例匹配。
2. 确保用例规约中包含所有必要的信息,以便其他团队成员能够理解和实现该用例。
3. 用例规约必须是准确的和一致的,以便与其他用例规约和系统文档相匹配。
在编写UML用例规约时需要注意以下几点:1. 用例规约应该易于理解和阅读,以便其他团队成员能够理解该用例的目的和执行步骤。
2. 用例规约应该尽可能清晰和简明,同时包含所有必要的信息。
3. 用例规约应该是一致的,遵循团队的规范和标准,以便与其他文档相匹配。
总之,UML用例规约是系统中描述某一特定功能或行为的详细说明和定义。
编写UML用例规约需要遵循一些规则和注意事项,以便其他团队成员能够理解和实现该用例。
uml规范

uml规范UML是一种用于建模软件系统的图形化语言,它提供了一套符号和规则,使得软件开发者能够在设计和开发过程中更好地理解和交流系统的结构和行为。
在实践中,使用UML能够提高软件开发的效率和质量,并且能够促进团队协作和沟通。
在进行UML建模时,应该遵循一些规范,以确保模型的准确性和可理解性。
下面是一些常见的UML规范:1. 使用适当的图表类型:UML提供了多种不同的图表类型,如用例图、类图、时序图、活动图等。
在建模过程中,应该选择最合适的图表类型来表示系统的不同方面和视角。
2. 使用清晰的命名和注释:在建模过程中,应该使用清晰和有意义的命名来命名模型元素,如类、属性、方法等。
同时,在图表中加入适当的注释,以促进他人对模型的理解。
3. 使用一致的符号和标记:UML提供了一套符号和标记,如箭头、实线、虚线等,用于表示不同的关系和连接。
在建模过程中,应该使用一致的符号和标记,以确保模型的一致性和易读性。
4. 定义明确的关系和连接:在UML中,模型元素之间的关系和连接非常重要。
在建模过程中,应该明确定义和表示不同的关系和连接,如关联、聚合、继承等,以确保模型的准确性和完整性。
5. 使用适当的颜色和样式:在建模过程中,可以使用适当的颜色和样式来增强模型的可视化效果。
例如,可以使用不同的颜色表示不同的元素类型,或者使用不同的样式表示不同的模型状态。
6. 使用适当的层次和抽象级别:在建模过程中,应该使用适当的层次和抽象级别来表示系统的不同层次和组成部分。
例如,可以使用包和子系统来组织和管理模型的各个部分。
7. 更新和维护模型:在软件开发过程中,系统需求和设计可能会不断变化。
因此,建模过程应该是一个持续的过程,需要不断更新和维护模型,以保持其与实际系统的一致性。
总之,UML规范提供了一套准则和规则,帮助软件开发人员有效地建模和设计软件系统。
通过遵循这些规范,可以提高模型的可理解性、可维护性和可重用性,从而提高软件开发的效率和质量。
跟我学UML建模工具StarUML(第12部分)——应用StarUML创建状态图的创建示例

1.1跟我学UML建模工具StarUML(第12部分)——应用StarUML创建状态图的创建示例1.1.1UML状态图及相关技术1、状态机图和状态机图中的状态(1)状态机图UML状态图(也称UML状态机图)是展示对象状态与状态转换的视图,在UML中,状态机图用于对具有事件驱动的特性的动态行为的建模。
(2)状态机图中的状态状态是状态机图的重要组成部分,所有对象都具有状态,状态是对象执行了一系列活动的结果。
当某个事件发生后,对象的状态将发生变化。
2、状态图(State Diagram)(1)什么是状态图用来描述一个特定对象的所有可能状态及其引起状态转移的事件,从而可以实现对单个的对象行为建模。
(2)状态图的主要作用大多数面向对象技术都用状态图表示单个对象在其生命周期中的行为,同时也显示了该实体如何根据当前所处的状态对不同的时间做出反应的。
3、什么场合中应该要采用状态图当功能行为的改变和状态有关时才需要创建出UML状态图,因为通过状态图可以显示对象在其生命周期中依次经历的各种状态。
但如果要表示由系统内部生成的功能操作(而非外部事件)驱动的事件流时,则一般使用UML活动图。
如下给出一个Account对象的状态图示例:4、为什么要使用UML状态图(1)动态特性是由事情所触发的一个完全静态的系统是无任何应用价值的,因为没有事件发生也就不可能产生出具体的功能。
所有真正的软件应用系统自身都含有某些动态的特性,并且这些动态的特性是由内部或外部发生的事件所触发。
比如,在一个ATM机上,动作是由一个用户按下相关的功能按钮引发而开始一个事件;在一个自动机器人中,动作是由机器人碰上一个对象而引发的;在一个网络路由器中,动作是由检测消息缓冲区是否溢出而引发的。
如下图为一个图书销售业务的状态图示例:(2)为单个的对象和共同工作的对象建模使用UML交互图可以对共同工作的对象群体的行为进行建模,而使用状态图,则可以对单个的对象行为进行建模。
UML状态图编写规范

UML状态图规范说明一、状态图简介状态图(Statechart Diagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的时间做出反应的。
通常我们创建一个UML状态图是为了以下的研究目的:研究类、角色、子系统、或组件的复杂行为。
状态图用于显示状态机(它指定对象所在的状态序列)、使对象达到这些状态的事件和条件、以及达到这些状态时所发生的操作。
状态机用于对模型元素的动态行为进行建模,更具体地说,就是对系统行为中受事件驱动的方面进行建模(请参见概念:事件与信号)。
状态机专门用于定义依赖于状态的行为(即根据模型元素所处的状态而有所变化的行为)。
其行为不会随着其元素状态发生变化的模型元素不需要用状态机来描述其行为(这些元素通常是主要负载管理数据的被动类)。
状态是对象执行某项活动或等待某个事件时的条件。
对象可能会在有限长度内保持某一状态。
状态具有以下几项特征:二、状态图内容2.1 转移转移是两个状态之间的关系,它表示当发生指定事件并且满足指定条件时,第一个状态中的对象将执行某些操作并进入第二个状态。
当发生这种状态变更时,即“触发”了转移。
在触发转移之前,可认为对象处于“源”状态;在触发转移之后,可认为对象处于“目标”状态。
转移具有以下几项特征:一个转移可能有多个源状态,在这种情况下,它将呈现为一个从多个并行状态出发的结合点;一个转移也可能有多个目标状态,在这种情况下,它将呈现为一个到多个并发状态的叉形图。
2.2 事件触发器在状态机环境中,事件是指可触发状态转移的激励的发生。
事件可能包括信号、调用、时间推移或状态变更。
信号或调用可能具有其值可用于转移的参数,其中包括警戒条件和操作的表达式。
也可能会有无触发器的转移,这样的转移没有事件触发器。
这种转移也被称为完成转移,它们在源状态完成其活动后将被隐含触发。
2.3 警戒条件当转移的触发事件发生时,将对警戒条件进行求值。
只要警戒条件不重叠,就可能会有来自同一源状态并具有同一事件触发器的多个转移。
使用UML状态图进行行为建模的指南

使用UML状态图进行行为建模的指南在软件开发过程中,行为建模是非常重要的一步,它能够帮助开发人员更好地理解系统的行为和交互方式。
而UML(统一建模语言)状态图是一种常用的行为建模工具,它可以清晰地表示系统中各个对象的状态以及它们之间的转换关系。
本文将为您介绍使用UML状态图进行行为建模的指南。
1. 状态图的基本概念在开始使用UML状态图进行行为建模之前,我们首先需要了解一些基本概念。
在UML状态图中,有以下几个核心概念:- 状态(State):表示对象在系统中的某个特定时刻所处的状态。
它可以是一个离散的状态,也可以是一个连续的状态。
- 转换(Transition):表示对象在不同状态之间的转换关系。
转换可以由事件触发,也可以由条件满足触发。
- 事件(Event):表示触发状态转换的外部或内部事件。
事件可以是一个简单的动作,也可以是一个复杂的操作。
- 条件(Condition):表示触发状态转换的条件。
条件可以是一个简单的判断,也可以是一个复杂的表达式。
2. 状态图的元素在UML状态图中,有以下几个基本元素:- 状态(State):用一个圆角矩形表示,圆角矩形内部写上状态的名称。
- 转换(Transition):用一个带箭头的直线表示,箭头指向转换的目标状态。
- 事件(Event):用一个带箭头的直线表示,箭头指向接收事件的状态。
- 条件(Condition):用一个带箭头的直线表示,箭头指向满足条件的状态。
3. 状态图的绘制步骤接下来,我们将介绍使用UML状态图进行行为建模的具体绘制步骤。
步骤一:确定需求和对象首先,我们需要明确系统的需求,并确定需要建模的对象。
这些对象可以是实体对象,也可以是系统的各个模块或组件。
步骤二:确定状态和转换根据需求和对象的特性,我们可以确定对象的各个状态以及它们之间的转换关系。
可以使用状态迁移图或状态转换表来帮助我们进行分析和设计。
步骤三:绘制状态图在绘制状态图时,我们可以使用UML工具或绘图软件来进行绘制。
UML中的状态图的细节拆分和优化技巧

UML中的状态图的细节拆分和优化技巧在软件开发过程中,UML(统一建模语言)是一种常用的建模语言,用于描述软件系统的结构和行为。
其中,状态图是一种重要的图表类型,用于描述系统中对象的状态转换和行为。
在使用状态图进行建模时,我们需要注意细节拆分和优化技巧,以确保图表的清晰和可读性。
首先,细节拆分是指将复杂的状态图拆分成更小的模块,以便更好地理解和管理系统的状态转换。
在进行细节拆分时,我们可以按照系统的功能或模块进行划分,将相关的状态和转换放在同一个模块中。
例如,对于一个电子商务系统,我们可以将用户登录和注册的状态和转换放在一个模块中,将商品浏览和购买的状态和转换放在另一个模块中。
这样一来,我们可以更加清晰地了解系统中的各个功能和模块之间的状态转换关系。
其次,优化技巧是指通过一些技巧和方法,使得状态图更加简洁和易读。
在进行状态图的优化时,我们可以采取以下几个方面的措施:1. 合并相似的状态和转换:如果系统中存在多个相似的状态或转换,我们可以考虑将它们合并成一个,以减少图表的复杂性。
例如,对于一个订单系统,如果存在多个相似的订单状态(如待支付、已支付、已发货等),我们可以将它们合并成一个订单状态,并使用不同的属性或条件来区分它们。
2. 使用子状态和超状态:如果系统中存在一些复杂的状态,我们可以考虑使用子状态和超状态来表示它们的层次结构。
通过使用子状态和超状态,我们可以将复杂的状态图拆分成多个较小的子图,从而使得图表更加清晰和易读。
3. 使用合适的符号和标记:在状态图中,我们可以使用一些合适的符号和标记来表示不同的状态和转换。
例如,可以使用箭头表示状态之间的转换关系,使用不同的颜色或形状表示不同的状态,以及使用标记表示状态之间的条件或动作。
通过使用合适的符号和标记,我们可以使得状态图更加直观和易懂。
4. 添加注释和说明:在状态图中,我们可以添加一些注释和说明,以帮助读者更好地理解图表的含义和用途。
例如,可以在状态之间添加注释,解释状态之间的转换条件或动作;可以在状态图的边缘添加说明,解释图表的整体结构和用途。
uml用例规约

uml用例规约UML (Unified Modeling Language) 是一种广泛应用于软件工程领域的建模语言,它通过图形化的方式描述软件系统的不同方面。
其中,用例规约是 UML 中用例模型的一部分,用于详细定义系统的功能需求。
用例规约中包含了用例名称、参与者、前置条件、后置条件、基本流程以及可选的替代流程等内容。
下面将详细介绍用例规约的结构和各个部分的含义。
一、用例名称用例名称应简洁明确地描述该用例的功能。
例如,对于在线购物系统,一个用例的名称可以是“用户下单”。
二、参与者参与者是指与系统进行交互的实体,可以是人、其他系统或外部设备等。
在用例规约中,列出参与者的名称和对其的简要描述,以便清楚地了解使用该用例时所涉及的角色。
三、前置条件前置条件是指执行该用例前必须满足的条件。
例如,对于“用户下单”的用例,前置条件可能包括用户已登录到系统并选择了要购买的商品。
四、后置条件后置条件是指执行该用例后的系统状态或结果。
例如,对于“用户下单”的用例,后置条件可能包括生成订单并跳转到支付页面。
五、基本流程基本流程描述了用例的主要执行步骤。
通常按照时间顺序,从开始到结束依次描述每个步骤。
在描述基本流程时,可以使用活动图或流程图等图形工具来更好地展示。
六、可选的替代流程替代流程描述了在特定情况下,用例的执行可能会走不同的流程路径。
例如,在“用户下单”的用例中,用户可能会取消订单或选择使用优惠券等。
这些情况可以在替代流程中进行描述。
除了上述几个部分外,用例规约还可以包含其他内容,如预置条件、扩展点、例外处理和相关文档等。
这些内容可以根据具体的需求和项目进行适当的扩展。
在编写用例规约时,需要注意以下几点:1. 确保用例规约的准确性和清晰性,避免模糊或歧义的描述。
2. 用例名称应该简明扼要,能够准确地传达该用例的功能。
3. 参与者的身份和角色应该明确定义,以便准确描述用例的执行者和相应的交互。
4. 前置条件和后置条件应该具体明确,并确保执行用例时满足前置条件,可以达到预期的后置条件。
UML练习-状态图

状态图
1,电梯的状态建模
电梯的第一层有向上按钮,最高层有向下 电梯的第一层有向上按钮, 按钮,中间各层都有向上或向下的按钮. 按钮,中间各层都有向上或向下的按钮. 平时电梯处于第一层, 平时电梯处于第一层,当有人按了向上按 钮时,电梯向上移动到指定的楼层, 钮时,电梯向上移动到指定的楼层,到达 后电梯处于闲置状态, 后电梯处于闲置状态,此时可以接收向上 移动或向下移动请求.若闲置时间超过3 移动或向下移动请求.若闲置时间超过3分 则电梯自动移动到第一层. 钟,则电梯自动移动到第一层.
�
2,ATM自动取款机的状态建 ATM自动取款机的状态建 模
ATM取款机平时处于闲置状态. ATM取款机平时处于闲置状态.用户需要 取款机平时处于闲置状态 取钱时,首先插入银行卡,此时ATM要求 取钱时,首先插入银行卡,此时ATM要求 用户输入密码,若连续输入3 用户输入密码,若连续输入3次错误则自动 退卡.若输入正确则进入选择服务界面. 退卡.若输入正确则进入选择服务界面. 用户可以选择查询,取款等服务. 用户可以选择查询,取款等服务.取款完 用户可以选择继续服务, 毕,用户可以选择继续服务,也可以选择 直接退卡. 直接退卡.
取款时,用户首先输入取款金额,系统进 取款时额不足则回到输入金额界面, 否则ATM吐出现金 吐出现金, 否则ATM吐出现金,然后提示是否打印凭 选择是则打印, 据.选择是则打印,打印完毕提示是直接 退卡还是继续服务. 退卡还是继续服务.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UML状态图规范说明一、状态图简介状态图(Statechart Diagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的时间做出反应的。
通常我们创建一个UML状态图是为了以下的研究目的:研究类、角色、子系统、或组件的复杂行为。
状态图用于显示状态机(它指定对象所在的状态序列)、使对象达到这些状态的事件和条件、以及达到这些状态时所发生的操作。
状态机用于对模型元素的动态行为进行建模,更具体地说,就是对系统行为中受事件驱动的方面进行建模(请参见概念:事件与信号)。
状态机专门用于定义依赖于状态的行为(即根据模型元素所处的状态而有所变化的行为)。
其行为不会随着其元素状态发生变化的模型元素不需要用状态机来描述其行为(这些元素通常是主要负载管理数据的被动类)。
状态是对象执行某项活动或等待某个事件时的条件。
对象可能会在有限长度内保持某一状态。
状态具有以下几项特征:二、状态图内容2.1 转移转移是两个状态之间的关系,它表示当发生指定事件并且满足指定条件时,第一个状态中的对象将执行某些操作并进入第二个状态。
当发生这种状态变更时,即“触发”了转移。
在触发转移之前,可认为对象处于“源”状态;在触发转移之后,可认为对象处于“目标”状态。
转移具有以下几项特征:一个转移可能有多个源状态,在这种情况下,它将呈现为一个从多个并行状态出发的结合点;一个转移也可能有多个目标状态,在这种情况下,它将呈现为一个到多个并发状态的叉形图。
2.2 事件触发器在状态机环境中,事件是指可触发状态转移的激励的发生。
事件可能包括信号、调用、时间推移或状态变更。
信号或调用可能具有其值可用于转移的参数,其中包括警戒条件和操作的表达式。
也可能会有无触发器的转移,这样的转移没有事件触发器。
这种转移也被称为完成转移,它们在源状态完成其活动后将被隐含触发。
2.3 警戒条件当转移的触发事件发生时,将对警戒条件进行求值。
只要警戒条件不重叠,就可能会有来自同一源状态并具有同一事件触发器的多个转移。
在事件发生时,只为转移进行一次警戒条件求值。
该布尔表达式可能会引用对象的状态。
2.4 操作操作是可执行的、不可分割的计算过程,这意味着,它不会被事件中断,而会一直运行到结束为止。
它与活动正好相对,因为活动可能被其他事件中断。
操作可以包括操作调用(调用状态机的拥有者以及其他可见对象)、创建或破坏其他对象、或者向另一个对象发送信号。
在发送信号的情况下,信号名称以关键字“send”为前缀。
2.5 进入和退出操作每当进入或退出状态时,进入和退出操作将分别允许发出同一操作。
这可以通过进入和退出操作来顺利地完成,而不必明确地将操作放在每个输入或输出转移上。
进入和退出操作可能没有实参或警戒条件。
位于模型元素的状态机顶层的进入操作可能具有特定的参数,这些参数代表了在创建该模型元素时状态机所接收到的实参。
2.6 内部转移内部转移使事件可以在不退出状态的情况下在状态内得到处理,从而可避免触发进入或退出操作。
内部转移可能会有带参数和警戒条件的事件,它们所代表的基本上是中断处理程序。
2.7 延迟的事件延迟的事件是其处理过程被推迟的事件,它们的处理过程要到事件不被延迟的状态被激活时才会执行。
当该状态被激活时,将触发该事件,同时可能导致转移(好象该事件刚刚发生)。
要实施延迟的事件,需要有事件的内部队列。
如果事件已发生但被列为延迟,它就会被添加到队列中。
当对象进入了不会使事件延迟的状态时,将立即从该队列中取出这些事件。
2.8 子状态简单状态是没有子结构的状态。
具有子状态(嵌套状态)的状态被称为复合状态。
子状态可能被嵌套到任意级别。
嵌套的状态机最多可能有一个初始状态和一个终止状态。
通过显示某些状态只能在特定环境(包含状态)中存在,子状态可以简化复杂的平面状态机。
图3:子状态。
转移的源状态是包含复合状态之外的源状态,其目标状态可能是复合状态或子状态。
如果其目标状态是复合状态,嵌套的状态机就必须包括一个初始状态,在进入复合状态之后并在发出它的进入操作(如果有)之后,控制权将被传递给该初始状态。
如果其目标状态是嵌套状态,那么,在发出复合状态的进入操作(如果有)并发出嵌套状态的进入操作(如果有)后,控制权将被传递给该嵌套状态。
从复合状态出发的转移可能会以复合状态或子状态作为它的源状态。
在这两种情况下,控制权先离开嵌套状态(并在可能的情况下发出它的退出操作),然后离开复合状态(并在可能的情况下发出它的退出操作)。
其源状态为复合状态的转移基本上会中断嵌套状态机的活动。
除非另有指定,当转移进入复合状态时,嵌套状态机的操作将从初始状态开始重新执行(除非转移直接以子状态为目标)。
历史状态使状态机可以重新进入在它退出复合状态之前的最后一个活动子状态。
图 4 显示了如何使用历史状态的示例。
图4:历史状态。
三、常用的建模技术状态机最多地用于建立对象在其生命期内的行为模型。
当对象具有依赖于状态的行为时,尤其需要使用状态机。
可能具有状态机的对象包括:类、子系统、用例、接口(以声明实现该接口的对象必须满足的状态)和协议(以声明实现该协议的对象必须满足的状态)。
并非所有对象都需要有状态机。
如果对象的行为很简单,只是存储或检索数据,那么该对象的行为就与状态无关,它的状态机也没有多少用处。
要建立对象生命期的模型,需要包括三个事项:指定对象可以响应的事件、指定对这些事件作出的响应以及指定过去行为对当前行为的影响。
对象生命期的建模还涉及到确定对象有意义地响应事件的顺序,即从创建对象时开始,继续到该对象被破坏时为止。
3.1 通用准则敏捷建模( AM) ( Ambler 2002)的原则--最大化项目干系人的投资--建议你只有当模型能够提供正面价值的时候才创建模型。
如果一个实体,比如一个类或组件,表示的行为的顺序和当前的状态无关,那么画一个UML状态图可能是没有什么用处的。
例如一个SurfaceAddrESs类就很简单,表示了那些你将会在系统中显示和操作的数据,因此一个UML状态图就没有任何相关之处。
而一个Seminar对象就非常的复杂,学生注册这样一个事件将会根据它的当前状态有不同的反应,就像你在图1中看到的。
图⒈班级注册的一个UML状态图。
3.1.1 把初始状态放置在左上角。
如你在图1所见的,初始状态被建模成一个实心圈,把初始状态放在左上角反映西方人的阅读文化的习惯。
3.1.2 把最终状态放置在右下角。
如你在图1所见,最终状态被建模为一个带边界的实心圆。
把最终状态放右下角反映了西方的文化的从左到右,从上到下的阅读习惯。
3.1.3 状态指南状态是一个实体的行为模式的某个阶段。
状态的表示是通过实体的属性值。
例如,在图1中,当seminar被标记为open,并且存在空位的时候,seminar 就处于Open For Enrollment的状态。
3.1.4 状态名称要简单但应具有描述性。
象Open For Enrollment和PropOSed这种的状态名称很容易理解,从而提高了图⒈的沟通价值。
理论上状态名称应该是现在时,但是用过去式写成的诸如Proposed的名称要比用现在时写成的诸如Is Proposed的名称好的多。
3.1.5 避免"黑洞"状态。
黑洞状态是那种只有变换进来但没有任何变换发出的状态,这种情况要么由于该状态是一个最终状态,要么就是你已经错过了一个或多个变换变换。
3.1.6 避免"奇迹"状态。
奇迹状态是那种只有变换发出但没有任何变换进来的状态,这种情况要么由于该状态是一个起点,要么就是你已经错过了一个或多个变换变换。
3.2 子状态建模指南图1中展示的UML状态图是不完3.2整的,因为它没有建模Seminar的poST - enrollment(注册后)状态。
图2建模了一个Seminar的完整的生命周期,把图1描述为一个新的包括子状态集合的Enrollment的复合状态,也称作超状态。
注意按理说你会像图1的模型那样处理标记,但为了简化起见在原先变换上的标记都没有包括在内。
当一个现有状态表现出复杂的行为时,建模子状态就是有意义的,从而促使你来研究它的子状态。
当几个现有状态共用一个通用的入口条件或出口条件( DouglASs 1999)时,引入超状态是有意义的,在图1中你可以看到所有的状态共用一个通用的closed变换,以到达最终状态。
图⒉Seminar的完整生命周期3.2.1 把通用的子状态变换放在一起和图1中每一个子状态都拥有一个cancelled变换不同,在图2中你可以看到cancelled变换仅用于描述Enrollment超状态,这使图形得到简化。
如果子状态都共享一个入口变换或出口变换,都可以使用一个同样的方法。
变换上的警戒点和动作(如果有)也应该使相等的。
3.2.2 为复杂的实体创建一个分层的状态图虽然这种表现子状态的方法是很好使的,但是最终的图可能变得相当复杂--我们只要设想一下如果Being Taught状态也有子状态的话,图2会变成什么样就知道了。
一个替代的方法是创建一个分层的UML状态图。
例如,图3表示高阶视图,而图1描述了一个细节视图。
这种方法的好处是如果需要的话,马上就可以建立一张详图来研究Being Taught状态。
图⒊Seminar的高阶状态图。
3.2.3 最高阶的状态图总有初始态和最终态一个高阶的UML状态图,例如图2描述的这样,应该表示实体的完整的生命周期,包括"出生"和最后的"死亡"。
低阶的图未必包含初始状态和最终状态,特别是那些建模一个实体的生命周期的"中间状态"的图。
3.2.4 变换和动作变换是从一种状态到另一种状态的序列,它可能是通过一个事件触发的。
简而言之就是被建模的实体的内部或外部的行为。
对一个类来说,变换一般是将会导致状态的重要改变的操作调用的结果,因此我们需要了解一点,并不是所有的方法调用都会导致变换产生的,这一点非常重要。
一个动作就是某个东西,对类来说就是一个操作,被建模的实体所调用的操作。
3.2.4 用实现语言的命名规则命名软件动作图1中的动作遵循Java操作的命名规则( Vermeulen et. 2000),因为系统使用用叙述性文字命名角色动作UML状态图可用于建模非软件实体的生命周期,特别是UML图上的角色。
例如学生角色就可能有诸如Accepted、Full Time、Part Time、Graduated、Masters、Doctoral、和Post - Doctoral等状态,以显示各人的不同行为。
当你在建模现实世界的角色时,与软件中Student类不同的是,状态间的变换最好是使用叙述性文字来描述,例如drop seminar和pay fees,而不是dropSeminar ()和payFees (),因为现实生活中的人是做事情,而不是执行操作。