接着上篇文章我们来详细介绍下模块的结构属性和行为属性。
模块的结构属性有5种:组成部分属性、引用属性、值属性、约束属性和端口;
图1 模块的5种结构属性
1、组成部分属性
图2 结构属性-组成部分属性
组成部分属性其实就是其字面表达的含义,即模块是由组成部分属性构成的,比如把纯电动汽车看做一个模块,那么动力电池、电机、电机控制器都是它的组成部分属性。
组成部分属性由三部分构成:名称、类型和多重性(默认为1,不显示),如图2所示。
2、引用属性
图3 结构属性-引用属性
组成部分属性是模块的内部结构,而引用属性是代表模块的外部结构,可以理解为带有引用属性的模块因为要达成某种目的而“需要”某些外部结构。如图3所示,动力电池模块需要整车控制单元这个外部结构。
引用属性由三部分构成:名称、类型和多重性(默认为1,不显示)
3、值属性
图4 结构属性-值属性
值属性可以代表一个数字、一个布尔值或者一个字符串,通常情况下可以给值属性赋予一个数字。
这里需要注意,值属性的类型必须是已经在系统中创建的值类型的名称,比如图4中的Voltage和Temperature。
值属性由三部分构成:名称、类型和多重性(默认为1,不显示),区别在于值属性的类型可以赋予一个数字,如图4的Voltage值类型。
4、约束属性
图5 结构属性-约束属性
约束属性通常代表一种数学关系,比如等式或者不等式(值属性之间的数学关系)。对于构建系统的数学模型来说,约束属性是一种核心组成部分。
约束属性仅由两个部分构成:名称和类型。这里需要注意,其中类型必须是已经在系统中创建的约束模块的名称。约束模块是一种特殊的模块,它是为了封装可重用的约束表达式(最常见的就是等式和不等式)。
图4中,纯电动汽车功率是已创建好的约束模块,纯电动汽车模块的约束属性的类型是已创建的约束模块的名称“纯电动汽车功率”。
5、端口
图6 结构属性-端口
模块的端口比较好理解,它就是模块与外部结构的接口。通过端口,外部结构可以和模块进行交互,例如提供服务、请求服务,交换数据、能量等。
模块使用一系列的端口来封装模块,使外部结构与模块的内部结构解耦。
端口可以代表任意类型的交互点。端口可以代表硬件对象边界上的物理对象,比如纯电动车的仪表可以成为显示车辆信息的端口,用户可以通过仪表获取车辆的数据信息。
端口也可以代表软件对象边界上的交互点,例如图形化用户界面或者数据文件等。当然,你也可以把两家公司之间进行沟通的电子邮箱作为端口。笔者再次重申,SysML只是一种建模语言,它不涉及建模方法,因此不会对端口代表现实世界系统里的对象范围做任何限制。
端口分为代理端口和完整端口,如图6所示。
未完待续。。。。。。