UML用例、序列图:很容易转换成可执行代码

工程和IT洞察:UML(统一建模语言)是软件工程的语言,UML中的状态模型用于定义内部逻辑。当状态图、用例图和序列图与UML类图结合在一起时,它们定义了一个系统,非程序员可以很容易地理解,并且可以快速地转换为可执行代码。

通过丹尼斯Brandl 2012年2月20日

UML(统一建模语言)是软件工程的语言,自动化软件内容的不断增加意味着它是自动化工程师必须理解的语言。任何软件都有三个基本部分;结构(数据和或消息)、系统行为和交互以及内部逻辑。UML为这些元素定义了一种标准语言。上个月的专栏文章描述了UML处理结构信息的两个部分;类模型和对象模型。结构模型可用于生成数据库、函数块库、消息、IEC 61131-3结构化文本STRUCT定义、c#类或c++类。系统行为是通过用例图和序列图定义的。UML中的状态模型用于定义内部逻辑。

UML状态模型是有限状态模型的扩展版本,有限状态模型是包含状态和事件的图。状态模型定义对象的内部行为,这些行为可以在过程、功能块或任何其他类型的代码中实现。UML状态模型被扩展为包含嵌套状态、与状态相关联的变量值和保护条件。嵌套状态支持复杂的状态模型,其中一个事件可能导致多个状态之间的转换。嵌套状态通常用于规范中,以降低状态模型的复杂性并使其更易于理解。变量值支持状态/事件值的循环,允许根据循环值进行不同的操作。保护条件定义了布尔检查,用于防止事件导致状态更改,也用于简化状态模型设计。状态模型中的每个事件都定义了事件发生时发生的动作。在控制系统中,也可能有逻辑在某个状态下被重复执行。

下图演示了设备的简单嵌套状态模型。它在IDLE状态启动,当它收到START事件时,它将转到RUNNING状态。设备可能处于暂停状态,当执行暂停逻辑或等待物理设备响应时,设备处于暂停状态。当暂停完成时,设备进入暂停状态。在一个RESUME事件中,设备返回到RUNNING状态。如果接收到STOP事件,那么它将进入IDLE状态,与当前状态无关。如果超过“RUNNING”状态的运行时间,设备也会进入IDLE状态。

用例图(ucd)通过参与者和过程的交互定义系统行为。它们本质上定义了流程或对象所需的接口。ucd包含一个或多个用例,并说明外部系统如何与每个用例交互。外部系统可能是一个人、组织或其他系统,在UML术语中称为“参与者”。一个参与者在交互图中执行一个或多个“角色”,例如一个人执行操作员或监督人员的角色,或者一个PLC执行安全系统的角色。用例用省号表示,并且,在协作标准(如UML)的一个不幸的意外中,参与者被画成简笔画,使得ucd看起来像画得很糟糕的卡通。每个用例代表一个场景。场景表示没有错误的正常情况,也表示可能发生一个或多个错误的异常情况。用例可以被嵌套,这样一个用例就代表了一个完整的UCD,它包含了更详细的小用例。

每当参与者涉及到用例时,就定义关联,并将其表示为实线。许多交互是双向的,有多个相关事务。如果交互只是单向交互,那么就会在行上用箭头记录它。UCD中的每个用例都是通过一系列提供对参与者具有重要性或价值的系统基本功能的操作来定义的。一个典型的UCD可能涉及3到10个用例和1到10个参与者。ucd提供主要外部交互的概述,定义正常或异常情况,并提供序列图的结构。

下图说明了一个典型的UCD。它展示了两个参与者(一个操作员和一个数据历史学家),两个系统(一个控制系统和一个安全系统),以及三个用例。每个用例都有一个相关联的动作序列(显示在序列图中),它描述了与参与者的交互序列。

当知道系统子结构时,UCD中的用例可以被组合到系统中。用例也可以通过“使用”或“扩展”关系联系起来。例如,设备启动用例可以扩展机器上电用例和机器自检用例,其中机器上电用例和机器自检用例定义在不同的ucd中。

ucd不应该用来表示一个步骤序列。序列图应该用来表示两个或多个进程或对象之间的时间序列通信。序列图是一种消息序列图,尽管通信可能不是消息,而是过程调用、对象方法调用、web服务调用或任何其他进程间通信方法。序列图用于描述一个特定用例的预期或期望的信息流。例如,一个用例可能是描述正常通信的无错误用例,而另一个用例可能描述发生错误时的通信顺序。

与在消息序列图中一样,序列图表示为一组垂直线,每一行代表参与序列的每个流程或参与者。参与者之间的每个通信事件都表示为水平箭头,并且通信事件包含事件的内容(例如,如果事件是过程调用,则使用的参数)。通信事件按时间排序,第一条消息在顶部,时间随着您沿着垂直线向下移动而增加。

下面的示例显示了操作符、进程和数据历史记录之间的消息序列。显示设备正常运行的信息。序列图中还有许多其他可用选项,包括显示对象创建和删除、消息事务循环、备用路径和保护语句(它定义了消息发送之前必须满足的条件)。

序列图用于定义流程或对象的接口。每个通信定义一个可能的接口,该接口可以实现为功能块接口、IEC 61131-3结构化文本函数定义、网络消息定义或对象方法定义。这些图表还用于定义接收到通信时应该发生的流程。

状态模型、ucd和序列图的组合定义了系统的内部逻辑和行为,定义了系统将如何响应正常和异常条件。当状态图、ucd和序列图与UML类图结合在一起时,它们提供了一个系统的完整定义,非程序员可以很容易地理解它,并且还可以快速地转换为可执行代码。UML是所有控制工程师都应该理解并开始在其规范和设计中使用的软件工程语言。

- Dennis Brandl是北卡罗来纳州Cary BR&L咨询公司的总裁,www.brlconsulting.com。他的公司专注于IT制造业。通过dbrandl(at)brlconsulting.com联系他。马克·霍斯克编辑,控制工程www.globalelove.com

参见上面的图表和附加说明。请阅读:第1部分:理解UML是工具箱的重要部分。链接如下。

//www.globalelove.com/single-article/understanding-uml-is-an-important-part-of-your-toolkit/7ad8c16929.html

使用下面的链接阅读更多工程和IT洞察专栏。

//www.globalelove.com/cgi-bin/ce.cgi?cmd=Search !fmt =长形式= extended&GroupBySite =没有m = all&ps = 10 q = % 22丹尼斯+ brandl % 22 sp = 1 sy = 1 +类型= ul = wf = 2221 wm = wrd&s =组成