系统建模语言(SysML)与其他语言一样,需要学习。我们无法像小时候在家听父母讲母语那样幸运地从小接触它,但许多读者可能因各种原因已经对这种语言有所了解,例如:
如果最后一种情况属实,你很可能已对这门语言有深入理解,但或许也需要一些休息一下——因为该规范内容相当密集,你还得深入了解一下统一建模语言(UML)的规范。而更有可能的是,大多数读者此前几乎没有接触过该语言。本示例旨在为你快速、概览性地展示如何在Enterprise Architect中使用SysML进行基于模型的系统工程(MBSE)项目建模。本示例基于规范附录中的混合动力汽车案例。
17.1 包概述(结构模型示例)
包图展示了一种可视化存储库内容的方式;当在 Enterprise Architect 的浏览器窗口中查看该图的内容时,可以浏览其结构。包图上还显示了重要的结构关系和命名空间关系,有助于明确仓库中元素组之间的关键高层级关联。
包图-应用SysML配置文件
如图所示,HSUV模型是一个表示用户模型的包。为了包含该配置文件中的构造型,已将SysML配置文件应用于此包。HSUV模型可能还需要使用其他模型库,例如SI单位类型模型库。这些模型库将按照所示方式导入到用户模型中。
包图——展示模型的包结构
该包图展示了用于定义HybridSUV系统的模型结构。该图提供了一种有效的方式,用于查看构成存储库的高层容器(包),并定义HybridSUV系统的结构、行为和需求。
操作视图与性能视图以及用户模型其余部分之间的关系通过«import»关系明确表达。图中显示的包已定义,也可以使用浏览器窗口在分层视图中可视化。
虽然浏览器窗口为浏览存储库提供了重要机制,但还有许多其他视图可供选择,例如在此情况下使用的图。Enterprise Architect 还提供了一种便捷的方式创建用户自定义的图,可作为浏览存储库的替代方法。该机制使系统工程师及其他人员能够创建任意数量的导航单元,从而为不同受众提供定制化的模型访问方式,使用户无需了解或掌握如何遍历模型。
这些在通过网页浏览器查看模型时特别有用。
17.2 设置上下文(边界和用例)
系统的上下文对于所有利益相关者理解系统在环境中的运作至关重要。用例图是SysML工具包中最为简单却最具描述性的图之一。其优势在于,它能够将系统外部的实体(参与者)与他们期望从系统中获得的利益(用例)联系起来,而无需明确说明系统如何实现这些价值。用例可以在描述性层面编写,但如果需要更详细的信息,可以使用Enterprise Architect的场景构建器来为每个场景指定具体步骤,该工具可大大减轻编写用例文档的工作负担。此外,活动图等行为图以及用例文档也可由该工具自动生成。
领域领域模型 - 确定上下文
该内部结构图展示了用户自定义的图类型用法,用于描述系统在特定环境中的情况。«system» 和 «external»这两个构造型的概念是用户自定义的,未在SysML中规定,但有助于系统工程师描述目标系统与其环境之间的关系。
Enterprise Architect还允许用更具吸引力和意义的图像来替代SysML中的传统符号,从而帮助非技术人员更好地理解并接受该图。
这种元素外观的更改可应用于全局(默认)或特定图级别,从而为不同受众创建不同的显示效果。
用例图 - 顶级用例
用例图将HybridSUV描述为由多个外部角色所使用的系统。该图有助于明确所有与系统交互或从中获取价值的角色(包括人员及其他系统)的背景信息。尽管用例图看起来简单,但它提供了一种机制,确保所有可能的系统交互都被定义并理解。系统本身在图中以边界元素表示,作为用例的容器,而参与者则位于边界之外。在此图中,除驾驶员外,还有多个外部角色将与HybridSUV系统进行交互,包括注册车主、维护人员、保险公司以及车辆管理部门。
用例会显示在浏览器窗口中,并可方便地按参与者和用例进行分组。随后可以定义任意数量的用例图,以便系统工程师可视化这些用例。
Enterprise Architect 还提供了一系列实用且独特的工具,可帮助系统工程师高效地描述用例并定义场景,详细说明参与者与系统之间的交互步骤。一旦完成这些定义,该工具便可直接从模型自动生成行为图。
一旦步骤生成模型元素,便可添加可追溯性:
用例图 - 操作用例
下图中描述了与“操作车辆”相关的目标级用例。这些用例有助于具体说明与驾驶和停车相关的各类目标。该图以车辆驾驶员为核心参与者。而诸如车辆维护、注册和保险等更高层级的用例,则定义在独立的一组上下文用例中。
除了上一节中描述的用于阐述场景及其详细步骤的广泛功能外,该工具还提供了许多其他功能,以协助系统工程师在处理用例时进行工作。其中最有用的功能之一是可追溯性窗口,它能够清晰地展示某个特定用例所关联的内容,以及这些关联元素彼此之间的关系。当在浏览器窗口或图中选择不同的用例(或其他任何元素)时,该窗口会自动刷新,以显示所选元素的连接信息。
17.3 详细行为(顺序图和状态机图)
本节展示了如何使用顺序图和状态机图来表示和详细说明行为。
顺序图 - 驱动黑盒
顺序图是一种交互图,用于描述司机在特定情境下与车辆之间的交互方式。按照惯例,参与的元素通常以从左到右的顺序列在图的水平轴上,时间则垂直于图中推进。从对象发出的虚线称为生命线,表示这些元素存在的持续时间。
该图使用了一种称为“参考”的元素类型,它用作另一个顺序图的占位符。Enterprise Architect 便于用户通过双击图中的“ref”元素来打开这些图。
该图使用“并行”(par)组合片段来表示控制速度(Speed)和转向( Steering )操作同时进行(并行)。图中还使用了标记为“替代”(alt)的组合片段,用于说明驾驶员可采用多种(替代性)方式来控制车速。
Enterprise Architect允许将顺序图定义为“驾驶车辆”用例的子项,从而使建模人员能够轻松访问该图,并将其置于驾驶员希望实现的车辆目标上下文中进行查看。
状态机图 - HSUV 运行状态
该状态机图用于描述混合型SUV在其生命周期中特定阶段所表现出的离散状态。根据观察者的视角,一个系统或系统的一部分可能具有多种不同的状态,因此建模者必须始终明确图示所采用的视角或视图。随后,该图示将阐明实体在指定生命周期内的重要且相关条件。
顺序图“启动车辆”中的消息是触发车辆从关闭状态转换为运行(开启)状态的条件。Enterprise Architect 允许对这些转换进行详细定义。
状态在浏览器窗口中显示,并方便地归类到 StateMachine 节点下。
顺序图 - 启动车辆 黑盒和白盒
该顺序图描述了驾驶员启动车辆的交互过程。它使用由(ref)标记的“交互使用”元素,以引用另一个顺序图。该图本身结构简单,但可以通过添加多种其他元素和连接器来进一步细化更复杂的交互细节。
Enterprise Architect提供了一种便捷的机制,使建模人员能够点击进入所引用的图,即这种情况下为“启动车辆白盒”图。
在 Enterprise Architect 中,元素可以出现在多个图中,从而能够在模型中构建出富有表现力的叙事,并为建模者提供创建同一元素多个视图的机制。图中的元素可位于浏览器窗口中,以显示其与模型其他部分之间的结构关系。在此情况下,启动车辆交互的黑色和白色方框视图均作为“启动车辆用例”的子项存在,便于相互关联。
17.4 建立需求(需求图和需求表)
本模型的这一部分旨在展示需求的可视化建模。车辆系统规范中包含大量基于文本的需求,这些需求已在Enterprise Architect中重新创建。所建模的需求范围广泛,其中包括车辆需通过排放标准的要求,该要求为说明目的进行了扩展。
Enterprise Architect 提供了丰富的工具,用于创建、开发、分析、管理和测试需求,同时还支持与DOORS需求管理工具的集成。
需求图 - HSUV需求层次结构
该图示展示了如何使用包含关系(交叉线)连接器以层级方式可视化需求,用以表示父级与子级之间的关系。高层需求起到一种分组或包含系统的作用,涵盖一系列高层次的关注点,并进一步分解为较低层次且可测量的具体陈述。
需求图-派生需求
该需求图显示,一些需求是从其他需求中派生出来的。这种关系表明已进行了部分分析,而派生出的需求代表了能够满足原始需求意图的必要条件。例如,“再生制动”并非原始需求,而是从“制动”和“燃油经济性”两个需求中派生而来,这两个需求在关系箭头末端的表述中有所体现。
需求图 - Acceleration需求关系
该图展示了在完成一定的分析和建模后,通常出现在需求图中的若干需求关系。图的核心元素是“Acceleration”需求,它展示了其他多个元素如何与该需求相关联。通过引入细化关系,将一个同名的用例与“Acceleration”需求关联起来。此外,还存在另一个派生需求,该需求随后由一个模块满足。图中还展示了一个名为“Max Acceleration”的测试用例,并通过验证关系与核心需求相关联。该图还说明了可以添加除需求之外的其他元素,以增强图的表达力。
表格 - 需求表
这些示例展示了如何以表格形式呈现需求,作为图中图形化表示的替代方式。这种展示方式受到许多习惯于使用电子表格的利益相关方的欢迎。第一张表格列出了带有ID和文字描述的需求;第二张表格则列出了参与派生关系的源需求和目标需求。
Enterprise Architect 还提供了多种工具和可视化方法来呈现需求(及其他元素),包括列表视图、看板、规范视图、甘特图、图等。
17.5 分解各个部分(模块定义图、内部模块图)
模块是结构的基本单元,可用于模块定义图和内部模块图中,以描述系统的结构特征。模块定义图通常是许多工程师了解系统结构并掌握其组织方式的起点。模块本身由结构组成,而该结构通过“特征”(Features)来表示,其中包含由其他模块类型化的部件,例如一个车轮组件可能包含一个碟刹部件。此外还有数值属性,即具有数量的项目,用于表示物理及其他可测量的维度,例如一辆汽车可以有重量、颜色,以及0-100公里/小时加速时间5秒等信息。同时还有交互点,用于表示模块与外部环境之间可以相互作用的接口。
模块定义图 - 汽车领域
该图示展示了如何使用模块定义图来描述构成汽车领域(Automotive domain)的各个组成部分。该领域包括在执行特定角色时与系统互动的人员,例如驾驶员、乘客和维修技师。因此,在维修制动子系统后进行测试时,可能有多个具体人员同时担任驾驶员和维修技师的角色,之后他们也可能将角色从维修技师转变为驾驶员。
模块定义图 - 混合动力SUV
所有需要工程分析和设计的系统,其复杂程度都会较高,因此必须将其分解为多个部分,以帮助降低复杂性并便于项目管理。第一级的分解通常称为子系统,对于混合动力SUV或其他任何汽车而言,这些子系统可能包括动力、制动、照明和底盘等模块。
这些子系统本身又可进一步分解为若干组成部分,例如制动子系统可以分解为盘式组件和液压部件。
内部模块图 - 混合动力SUV
内部模块图提供了一种机制,用于描述部件在整体或所属模块中的相互关系或连接方式。以混合动力SUV为例,我们可以看到动力子系统与制动子系统之间的关联,这可能是为了模拟动力辅助制动功能。因此,虽然模块定义图从组成角度展示了结构,但内部模块图则能够深入查看模块内部的“布线”方式。
我们将在后续章节中看到,如何使用一种特殊的内部模块图形式——即参数图来建模数学方程。
模块定义图 - 电源子系统
在前两个部分中,我们已经了解到一个系统可以被分解为多个子系统,并且这种分解可以通过模块定义图来表示。我们还看到了这些子系统如何在整体系统的背景下相互关联,以及它们如何通过内部模块图来呈现。现在,我们将再次使用模块定义图,来看其中一个子系统(电源子系统)如何被进一步分解为若干组成部分。
电源子系统内部模块图
与我们之前展示子系统之间连接方式类似,通过使用内部模块图,我们同样可以用来表示子系统各部分之间的连接关系。与我们之前展示子系统之间连接方式类似,通过使用内部模块图,我们同样可以用来表示子系统各部分之间的连接关系。因此,我们再次看到,模块定义图和内部模块图这两种图类型可以协同使用,以描述系统的结构,并帮助我们从部件层级向下推进,直至理解复杂性并无需进一步建模为止。
17.6 定义端口与流
本节主题中的示意图展示了如何使用模块定义图、内部模块图和参数图上的端口、流和流规范来建模流动的项目。大多数物理系统都包含流动的元素,这些元素往往是系统运行的重要组成部分。我们可以考虑一些实例,包括:
这些示意图首先定义了一个控制器局域网(CAN)总线架构,并展示如何使用多种流规范来定义动力子系统各部分之间项目流动的方式。燃料的流动通过模块定义图进行建模,该图展示了流端口(在SysML 1.5版本中已弃用),用于表示允许燃料从燃料组件和内燃机之间流动的逻辑“通道”。内部模块图进一步深化了这一过程,最终使用参数图来展示如何利用约束中定义的燃料流量数学方程来建模该方程。随后,通过 Enterprise Architect 的仿真功能对模拟曲线进行可视化。
模块定义图 - ICE 流特性
该图展示了定义和细化总线架构的初步(未完成)步骤。建模人员使用了流规范来模拟项目在车辆中的流动方式;例如,已为以下内容定义了流规范:
内部模块图 - CAN 总线
该图示进一步细化了总线架构,采用内部模块图来展示各个系统如何集成到控制器局域网(CAN)总线上。这种CAN总线架构是控制和集成混合动力SUV子系统各部分的核心设备。
模块定义图- 燃料流特性
该模块定义图继续模拟燃料从油箱组件流向内燃机的过程,并详细说明了“燃料流”的定义。燃料本身被建模为一个模块,具有两个用于定义其重要物理特性的数值属性,即:
动力子系统模块被拆分为两个关键部分:油箱组件和内燃机。这两个部分均设有流端口,并在两个端口之间绘制了连接器,表示“燃料”可以从油箱流向发动机。
参数图 - 燃料流
该参数化图展示了如何使用 ConstraintProperty 及其与 ConstraintProperty 周边绑定的参数来建模数学方程。在本图中,我们看到流既与燃料需求相关,也与燃料压力相关,其关系由以下方程表示:
{flowrate = press / (4 * injectorDemand)}
该约束条件通过约束模块进行建模,并可应用于多种不同场景,利用参数化图中的约束属性实现。Enterprise Architect 拥有先进的仿真功能,可使用 OpenModelica 或 Simulink 来创建建模方程图。
17.7 分析性能(约束图、时间图、视图)
本示例中的图主要是包图,用于描述为应对利益相关者关注而采用的视点(Viewpoint)和视图(View)。这些主题还介绍了可用于权衡研究中评估候选解决方案和架构的有效性度量(MOEs)。视点与视图的概念在ISO-42010标准(原IEEE-1471)中有明确阐述,SysML中的视点和视图结构也与此标准保持一致。典型的视图示例包括操作、制造或安全等,这些视图随后与模型元素相关联。
视点与视图模型最好理解为一种叙述性或描述性模型,有助于澄清和解释系统模型。视点与视图模型揭示了一个或多个系统模型中的要素。更具体地说,视点是从特定角度观察系统模型的框架,是构建视图以应对对利益相关者具有重要意义的一组关注所遵循的规则规范。例如,性能架构师的关注点与安全架构师不同。视图旨在从指定的视点可视化系统。这为利益相关者提供了一种机制,使其能够从自身视点出发,明确系统模型中对他们重要的方面,并将这些系统方面的内容以特定的视图形式进行表达。
视点描述了利益相关者在查看系统模型时所采用的视点或观察方式。并且通过将利益相关者的关注点与生成视图的方法一起视图,可以解决他们的关注点。该方法描述:
换句话说,该过程是一组规则,用于说明视点应如何表达模型中的信息,从而满足利益相关者的关切。当在Enterprise Architect中建模视图和视点时,可定义其与建模元素之间的关系。
模块定义图-分析上下文
建模系统的一个关键原因在于能够对模型进行分析,从而以更经济高效的方式了解所构建系统在实际环境中的表现。对模型进行分析比制作原型成本更低、更方便。该模块定义图展示了本例中用于开展分析的各种模型元素,包括将用于分析的每个约束模块及其相关方程,以及它们之间的主要关系。图中包含两种类型的元素:模块和约束。此外,图还显示了需求与测试用例之间的验证关系。
包图 - 性能视图定义
SysML 允许团队定义自己的观点;在此示例中,我们看到一个用户自定义的性能观点,以及填充 HSUV 特定性能视图的元素。该性能视图本身可能包含多个描述其内部元素的图。从图中可以看出,已定义了若干个视图,包括混合SUV性能视图和SUV功能视图。每个视图都有一个利益相关方和一个视点。通过暴露关系将性能视图与SUV模型关联,而符合关系则表明该性能视图符合性能观点。
包图-视点定义
该包图示展示了与利益相关方、关注点和观点相关的“需求”以及“验证与验证”(VnV)视点的定义。利益相关方和视点通过注释共享相同的关注点,这些注释以文本形式显示为关注点属性的值。如有需要,注释也可通过图形化方式展示,并用标注关系指向利益相关方和观点。请注意,利益相关方属性的值是该构造型类的实例,而非该构造型所应用的类。
该图示展示了“暴露”(Expose)关系的使用,这是一种图形化工具,用于表示属于视图的元素(包括包)。需求以及验证与确认视图均具有指向模型中多个元素的外向暴露关系。这为标识视图所涉及的元素提供了一种有效方式;例如,从图示可以看出,混合型SUV需求视图暴露了驾驶车辆用例、一项性能需求,以及一个包含一组SUV约束条件的包。
借助功能丰富的可视化工具,还可以直观地显示某个元素参与了哪些视图,例如,驾驶车辆用例可能出现在多个不同的视图中。
包图-视图层次结构
这个包图显示了如何将视图或任何其他具有相同原型的元素收集到一个包中并以视觉方式呈现。
参数图- 有效性测量
有效性度量是一种通过设定一系列指标来评估解决方案的机制,使工程团队能够对一个或多个问题解决方案进行评估。该技术通常称为权衡研究(trade study),并针对两个或多个方案计算有效性度量(MOEs),然后使用效用(目标)函数进行比较。MOE是用户自定义的类比结构,不属于SysML核心语言的正式组成部分;它依赖于构造型扩展机制,以允许扩展语言语法。此参数图展示了如何评估HSUV的整体成本效益。图中显示了HSUV设计中某一备选方案的具体有效性度量,并可用于重复评估其他备选方案。
参数图 - 经济学
该参数图用于建模燃油经济性,因为燃油经济性已被定义为SUV的一项重要高层级要求,因此需要进行评估,以确保最终产品能够满足充分的性能需求。参数图包含约束属性(即约束模块的实例),其中包含若干方程,用于评估整体经济性,包括:空气阻力方程、再生制动效率方程、直线车辆动力学方程、滚动摩擦方程以及燃油效率方程。约束属性中包含边界固定的参数,这些参数通过绑定连接器与其他参数相连接。
参数图 - 动力学
在此参数图中,前例中的约束模块“直线车辆动力学”已进行扩展,以展示如何通过多种约束属性来建模。直线车辆动力学约束由图框表示,而构成整体方程的各个方程则以约束属性的形式在图中体现。每个约束属性所基于的约束都定义了一个约束方程,该方程在图中以花括号{}形式显示;例如,加速度方程在约束模块内定义为{a = (550/32)*tp(hp)*dt*tw}。绑定连接器用于将一个方程中的参数(变量)与另一个方程中的参数(变量)相互关联。
(非规范)时间图 - 100马力加速
Enterprise Architect 具有强大的功能,可通过其与 OpenModelica 或 Simulink 的集成来生成参数图。对物理系统建模的一大好处是能够分析系统在现实世界中的行为上下文,而无需构建昂贵的原型或必须对构建的系统本身进行测试。。通过建模控制系统运行方式的数学方程,并利用模块定义和参数图将这些模型作为约束条件创建,为模型仿真提供了基础。
Enterprise Architect 利用名为 OpenModelica 的开源工具,该工具基于 Modelica 语言,能够生成运动方程的图和图形表示。
17.8 定义、分解和分配活动
本节主题中的示例使用了活动图,以描述混合动力SUV的行为特征,其中动作负责定义工作内容,而这些工作最终由模块实例来执行。此外,还包含若干内部模块图,用于展示分配关系的表示方式。
活动图- 加速(顶层)
该活动图展示了代表HSUV加速度的活动的顶层行为。在此示例中,系统工程师的意图是将此行为分配给电源子系统的部分组件。然而,很快发现如图所示的行为无法直接分配,必须进一步分解。图中动作之间对象节点上的构造型,适用于由这些动作调用的行为或操作的参数。
模块定义图 - 加速度
此模块定义图展示了上一主题中图表中的提供电源活动的分解。需要注意的是,这是一个功能分解,因此它定义了层级中各活动之间的结构关系,应按照模块定义图进行建模。
活动图(EFFBD)- 加速度(详细)
该活动图以“提供电源”活动作为图框,包含调用前一张图中分解后的活动和对象节点的动作。同时使用了垂直排列的“活动分区”,这些分区包括电力控制单元、内燃机、电力控制器和电力发电机,用于表示系统中哪些部分负责图中定义的动作。此外,还设有分配标注,明确划分活动,并通过对象流指向电源子系统模块中的各个部分。
建模工程师为“提供电源”活动使用了输入和输出的对象流,目的是区分由电能产生的机械动力与由燃气产生的机械动力,并进一步了解所监测的特定车辆状况。
内部模块图 - 电源子系统行为与流分配
这个部分完成的内部模块图进一步说明了前一个示例中展示的一些分配关系。在这里,我们可以看到添加到图中的属性之间的相互通信方式,并观察到项目从一个模块实例流向另一个模块实例的流程。具体而言,电力控制器与电动机发电机相连,我们可看到电流在两个属性之间流动。
内部模块图:特定属性值 - EPA燃油经济性测试
该内部模块图展示了在子系统表示背景下如何建模测试用例。所进行的测试针对的是某一特定型号的混合动力SUV,该车辆可能已下线并具有特定的VIN(车辆识别号码)。所执行的测试是EPA燃油经济性测试。还可标注特定相关部件的序列号,以识别这些部件实例可能存在的问题。