IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Rational  >

Rational Edge: 用于产品和系统开发的系统建模语言的概述,第 3 部分:系统行为建模

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Laurent Balmelli, PhD, Research Staff Member, T.J. Watson Research Center and Tokyo Research Laboratory, IBM

2006 年 12 月 14 日

本文来自于 Rational Edge:这是三篇系列文章的最后一篇,本文描述了如何应用 SysML 的行为图及其分配机制。全文以一个现实中的嵌入式系统为例。

编者注: 本文中图的编号是第1和2部分的延续。

illustration这一系列文章介绍了 SysML -- 一种系统工程的标准建模语言。 SysML 使用同一种语言使得系统工程师和架构师能够合作的更顺利。通过实现产品设计的电子化表示,SysML 能够加强开发团队间的交流,帮助管理系统复杂度,在系统开发的所有阶段为作出更快更有效的决策提供分析基础。

在第 1 部分中,我描述了 SysML 相对于统一建模语言(UML)的基本目标和价值, 及其需求图、用例图和测试用例表示。在第 2 部分中,我描述了 SysML 的结构图和需求分配机制。

在第 3 部分中,我将解释 SysML 如何为产品操作行为建模。在文章中,我会以一个现实中的嵌入式系统--汽车使用的 Rain Sensing Wiper (RSW)-- 为例加以解释。

建模系统行为

在这部分中,我们会探讨 SysML 如何为产品行为建模。在指定的非功能化限制集的约束下,系统行为的表达应等价于实现它的用例。 SysML 提供了三种行为结构: 交互状态机活动。UML 中的某些行为模型不能应用于 SysML中,这也许是出于简易性的原因,也许是出于成熟度的考虑。

SysML 交互图

我们首先要介绍的行为模型是 SysML 交互图。这种图允许设计师为组件间的服务调用序列建模。 SysML 利用了 UML 2.0 的互动模型,但是仅仅限于对交互图的使用。在 SysML 中并不使用其他形式的交互图 (如,通信图)。

图 12 表示了 RSW 使用交互图的初始化序列。初始化序列包括组件间的同步协议。这种图能够很好的表达类似的行为类型。首先,汽车电子系统启动 RSW,由 RSW 依次确认传感器和雨刷器接口。之后,软件被加载到引擎控制单元(ECU)的内存中并开始执行。一旦软件启动,它将会读取被存储在校准文件中的参数。

Figure 12

图 12: Rain Sensing Wiper 系统的初始化交互图
点击放大

被称为Initialization (见第1部分中的图4)的用例由图11(见第2部分)中的交互模型实现。我们使用 SysML 分配机制来表达交互模型和实现用例间的关系,其介绍如下。

本文的第 2 部分中,我解释了为满足检验需求,它们是如何被分配到系统元素中的。为了归纳这个概念,SysML 通过 允许元素可以与任何其他元素进行关联来表达某种特殊关系。后面我会更详细的加以解释。与需求关系相似,SysML 中的元素通过属性来显示分配到其他元素的状态。例如,图 12的底部展示了行为模型被分配到Initialization用例。除此之外,模型还被分配到称为Initializing的系统状态中(见下面)。

SysML 状态机图

SysML 状态机图用来表示产品的不同状态。这种行为模型来自于 UML。为简单起见,SysML 并不包括 UML 2.0的状态机协议。

图 13中,显示了 RSW 的不同状态及其过渡状态。分别有三种状态: Deactivated、 InitializingActivated。 在 Deactivated 模式中(例如,用户手动停止),系统等待激活命令。当接收到信号时,它将过渡到 Initializing 状态。此时,执行图 12 中的互动序列。成功完成后,系统过渡到 Activated 状态。注意,当进入或退出某状态时,会分别设置与取消标记。例如,这些标记会在仪表盘上显示当前系统状态。

Figure 13

图 13: Rain Sensing Wiper 系统的状态机图
点击放大

分配状态也可以显示在状态机图中。图 12 中,Initializing 和 Activated 状态同时显示了需求和分配部件。

SysML 活动图

SysML 活动图 利用并扩展了 UML 中的活动模型以支持连续系统。SysML 活动图 具有多种创新,我将在本部分简要的介绍一下。1

SysML 包括用流程图描述行为的方式对活动建模。活动被定义为一组图结点(这些活动是其他活动的用法)所表示的活动,图结点由活动间的控制流和数据流连接。对象结点表示流程图的数据类型,并作为图中数据的容器。例如,对象结点用来存储活动的输入参数,称为 pins。最后,控制结点用来发送控制流与数据流(以创建进程,复制流等)。图 15 展示了一个活动模型的例子。

从 UML 2.0 开始, 活动就是一种分类器,并可在 Class 图中加以表示。 SysML 描述了活动间的语义关联。例如,可以用模块定义图(Block Definition Diagram ,BDD)中模块(Blocks) 表达结构分解的方式表达功能分解。

图 14 表示了系统主要功能的分解。 上限值(与整体相联的成员关系限制)表示了实例可以同时执行的最大值。 图 14 中, Rain Sensing Wiper Main(例如, ActuateProcessSense)具有的每个活动的上限与下限值都被附加在说明框中。这个例子只允许同时运行一个活动实例。

当分类器作为对象结点的类型时,活动也能够与之关联。分类器上限表示可驻留在对象结点中的最大实例值。图 13 定义了Process活动所具有的上限实例值为10。

图 13 展示了 SenseProcess活动具有同一种称为 SensorMeasurement 的对象结点类型。而且所有活动都使用InterfaceCommand 类型。注意,这些 Blocks 是被称作 Bitstream 的数据类型的具体化。 由 Block InterfaceCommand 建模的 bitstream 用来实现 ECU 和雨刷器接口的服务通信,接口由各种服务端口定义。

Figure 14

图 14: RSW 传感活动的活动与对象结点类型
点击放大

图 14 还展示了满足ActuateSense 功能的需求。除此之外,产品的主要功能通过 Allocate关联到 Rain Sensing Wiper Block 。此例中,设计人员表示 Block 拥有此项功能。Actuate 活动显示了它的分配部件,表示这个活动被分配到 Block WiperInterface中。

图 15 中的活动图实现了雨水感知(rain-sensing) 功能。图 14 中定义的三个功能(ActuateProcessSense)用来表示活动中的活动。

图 15 中,数据流穿过通过插脚连接各个动作的边界。能够在动作之间流动的数据类型由它们的插脚类型定义。例如,InterfaceCommand类型的对象从Process动作流入Actuate动作。

SysML 引入了这样一种方法,它能够指定哪些数据能够穿过边界和活动参量(插脚)的比率。定义了如下两种类型的比率:DiscreteContinuous。 图 14 的例子中,在 ProcessActuate功能之间交换的 bitstream 在比率上通过连续链接进行限制,这种连续链接用以连接拥有这些功能(第2部分中的图 8 中所示的部件)的部件。 图 15 中,它通过称作 "serial data channel"的(Discrete类型)边界进行建模。当对象间的时间间隔趋于0时,使用Continuous类型边界。注意,为了使用 rate-controlled 边界和插脚,活动参量必须为 "streaming。"2包含连续参量的活动可在其运行过程的任何时间接收数值。

figure 15

图 15: Rain Sensing Wiper 系统的传感活动
点击放大

UML 2.0 动作模型仅仅能使活动开始。SysML 引入了 控制操作符 概念作为一种特殊活动类型,它可以启动或停止其他活动。图 15中的ManualControl控制操作符用来启动和停止雨水感应功能。当接收到 "deactivate" 信号(例如,由仪表盘上的按钮触发)时,它将使这项功能无效。 当接收到适当的信号时,它将重新启动这项功能。活动Process和活动ManualControl间交换的数据类型是ControlValue类型。 SysML 定义了一些可以根据用户需求(例如,可增加suspend action)进行扩展的控制值(enable action, disable action)类型。

SysML 还拥有两种新的对象结点类型以支持类似瞬时状态(例如,电子信号建模)的连续性概念。图 15 中, Process动作具有 Overwrite 类型的插脚以接收来自传感器的数据。Overwrite 类型的对象结点通过擦除对象结点中的旧信息可以确保来自传感器的最新信息对于 Process 活动是可得到的。注意,根据图 14中定义的边界(0..10),插脚中只能够容纳十个值。第二个新的对象结点类型是 NoBuffer。在这种情况下,插脚不能存储任何信息;因此,如果信息没有直接被流出边界(作为输出插脚)或活动(作为输入)接受,那么它将被废弃。

最后,SysML 支持为行为边界(来源于决策结点或对象结点)和参数集合设置概率。它允许模型为对象值设置概率。它在运行时为参数集合设置概率值。这种特性可以用来模拟通信信道中的损耗。

活动图使用部件符号表示需求和元素的分配。图 15中,活动 ManualControl 满足了 "manual disablement" 的需求。而且它被分配到表示仪表盘按钮的 Block ,用以强调这个按钮引起系统无效。

SysML 分配机制

分配的概念允许用户在不同的建模技术间架起桥梁。通过允许元素间的分配,设计师可以加强模型部分间的一致性。

图 12 至 15 展示了 SysML 可以利用特殊部件或 Allocate 依赖关系表达分配。 仅当相关元素可在同一图中表示时才可以使用这种依赖关系。

分配经常用来表示结构的功能映射,如图 14 所示。元素间的映射可以很复杂,且需要某些关系的表达。为了允许分级表达元素间的依赖关系,SysML 为这种关系制定了一种表格符号,如下所示。

图 16 显示了图 15 中的 Serial Data Channel 边界(连接Process 活动和 Sense活动)与模型中其他元素的分配关系。注意,行为边界类型如图 16 所示的 ObjectFlow,它显示出边界已被分配到模型中的四个元素中。

figure 16

图 16: 使用表格符号显示分配关系
点击放大

需求依赖也可以使用表格符号显示。图 17 显示了对于 System Calibration 需求的分配查询结果。注意,关系间的方向是由提出需求的是客户还是供应者决定的。

figure 17

图 17: 用以表示需求关系的表格符号
点击放大

总结

这个系列文章对 SysML 为系统工程师和产品设计师提供的各种能力提供了一个概括性的介绍。SysML 主要支持产品概念阶段的设计。这一阶段处于将客户需求分解为产品特性前的阶段。通过建模的方式 SysML 允许将这些特性表示为需求。 针对产品,这些需求可以依次分配到用例、子系统和组件(无论是功能性的还是物理性的)中。

这一概念化阶段需要不同子系统的详细规格说明,同时需要根据集成化水平的详细需求说明。SysML 提供了一组构件集合以描述产品的结构。模块被用于建模子系统和组件,端口支持它们的接口描述。结构化属性间的依赖使用约束条件加以表达,使用参数图进行表达。

除了定义产品结构,概念化阶段应阐明产品行为如何通过产品组件的交互得以表达。例如,行为建模详细描述了产品用例。SysML 提供了三种方法说明产品行为,交互、状态机和活动。这三种机制包含了统一的行为概念,从而在整个产品中形成单独的、统一的、复杂的行为模型。

复杂产品模型由多种不同类型(需求,块,约束,活动等等)的"子" 模型组成 。 SysML 提供了一种机制将模型中的不同部分联系起来,并增强了其可追踪性。

概念化阶段处于以不同工程规程详细描述组件之前。因此,概念化设计在产品周期中扮演了核心的角色。下面是我所认为的一些重要的部分。

在早期创建正式的产品描述有利于更好的理解产品需求、满足客户要求。对于模型元素的需求分配确保了需求的实现,并为工程师实现这些需求提供了基本原理。因此设计的合理性是一种跨越了组织层面和生命阶段的通信工具。 它改进了团队内部的交流,团队间的交流(想想不同的工程原则),团队和决策者间的交流。它使用通用的语言--其含义是并不是专门针对某种工程规则 ,这种语言可以支持不断增加的产品细节描述。最后支持组织层面的复制。注意,这种正式的描述非常适合于方法论。

SysML 提供了产品的电子化表达。这可以作为决策工具使用。通过模型上的评估功能(成本功能,集成工作评估)进行权衡。产品早期阶段,经常进行粗估;因此模型并不需要大量细节内容。当增加了细节,或者通过详细的工程工作产生了工件(例如,子系统仿真)时,模型就被用以协调各种模拟并检验需求。因此,SysML 模型是一种不断进化的决策工具,它不仅仅对概念化阶段很有帮助,而且对整个产品周期中各个阶段都十分有用。

产品模型表示了在整个生命周期被逐渐细化的工件的抽象概念。这些工件分布在参与设计的各个工程规程中。因此,模型提供了一种可追溯的方法用以度量开发进度,执行变化影响分析,管理过程与工件间的依赖关系。 对于投资者来说,SysML 模型就是一种管理与集成工具。

很明显,系统模型远远超出了我在本文中所描述的能力。我主要讨论了一些我认为最具吸引力的东西。概念化设计建模还是一项新的规程,关于它的最佳实践还需要不断的发展。

注释

1 更全面的 SysML 活动模型描述在:Conrad Bock, SysML and UML 2 Support for Activity Modeling 中可以得到。 Wiley InterScience (www.interscience.wiley.com) DOI 10.1002/sys.20046。

2 UML 2.0 符号。



参考资料



关于作者

author photo

Laurent Balmelli 博士是 Watson Research Center的一位研究人员,并且是IBM几个领导委员会的成员。他的专业领域涉及集成产品开发解决方案,元数据建模和系统工程方法论。他一直是与客户接触的产品开发和系统工程领域的技术主管。从2003年开始,Laurent Balmelli 是SysML submission 团队内IBM的代表,并且是SysML语言规范的主要作者之一。他最近被授予日本东京Keio大学系统工程与管理研究所客座教授的职位。他的联系方式为balmelli@us.ibm.com。




对本文的评价










回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款