4. SysML语言核心
SysML(Systems Modeling Language)是在UML基础上为系统工程扩展而来的建模语言。它并不是“九张图各自独立使用”,而是围绕需求、结构、行为、参数四条主线,形成一套可追溯、可验证的模型体系。理解这九类图的关键,不是背名称,而是搞清楚每张图回答什么问题、由谁产生、又向谁传递信息。
从建模视角看,SysML图可分为四组:需求与用例回答“系统为谁做什么”;结构图回答“系统由什么组成、如何连接”;行为图回答“系统如何随时间运行”;参数图回答“性能指标如何被约束和计算”。包图则贯穿始终,承担模型的组织与命名空间管理。下面这张图给出九类图之间的信息流向与协作关系。
包图:模型的组织骨架
包图是SysML模型的“文件系统”。它用包(Package)划分命名空间,用依赖、导入、合并等关系表达模型元素之间的引用。实际建模中,常见的包结构是:需求包、结构包、行为包、参数包、接口包。包图不描述系统本身,但它决定了模型能否被团队并行维护。例如,当两个工程师分别修改“电源块”和“电源状态机”时,包图通过命名空间隔离避免命名冲突,再通过导入关系让状态机引用到正确的块。
需求图与用例图:从利益相关者到系统目标
需求图以需求元素为核心,每个需求有唯一id、文本描述和验证方法(如test、analysis、inspection、demonstration)。需求之间可建立包含、派生、细化关系。用例图则从外部视角描述参与者与系统交互的目标,例如“操作员启动自检”“维护人员更换电池”。两者配合的方式是:用例描述“谁要做什么”,需求图把用例背后的约束量化,例如“自检时间≤30秒”。在模型中,用例可以通过refine关系指向需求,形成从场景到指标的追溯链。
块定义图与内部块图:结构的两层表达
块定义图(BDD)定义系统的类型层:块(Block)是SysML的基本结构单元,块可以拥有值属性、端口、操作和约束属性。块之间通过关联、泛化、组合表达静态关系。例如,无人机块由飞控块、动力块、导航块组合而成,飞控块又泛化出主飞控和备份飞控。
内部块图(IBD)则描述某个块内部的实例层结构:部件(Part)、端口(Port)、连接器(Connector)。BDD回答“有哪些类型”,IBD回答“这个具体块内部怎么连”。例如,在飞控块的IBD中,可以看到传感器接口端口通过连接器连到姿态解算部件,再连到控制律部件。IBD是后续行为分配和参数绑定的物理载体。
活动图、序列图、状态机图:行为的三种视角
活动图强调控制流与数据流,适合描述算法流程、操作步骤和并行分支。它用动作节点、控制流、对象流、决策/合并节点、分叉/汇合节点表达逻辑。例如,“起飞流程”活动图可以包含“解锁”“自检”“电机怠速”“爬升”等动作,并用决策节点判断自检是否通过。
序列图强调交互时序,适合描述部件之间按时间顺序的消息交换。它用生命线、激活条、同步/异步消息、返回消息表达。例如,“地面站发送起飞指令”序列图中,地面站→飞控→动力系统→传感器依次交互,可以清晰看到每条消息的发送者、接收者和时间顺序。
状态机图强调对象生命周期中的状态迁移,适合描述模式切换、故障处理和协议状态。它用状态、迁移、事件、守卫条件、动作表达。例如,飞控的“地面待命→自检中→就绪→飞行→返航→降落”状态机,每个迁移都由事件触发,并可能带守卫条件(如“电池电量>20%”)。
参数图:把性能指标变成可计算约束
参数图是SysML区别于UML的关键图之一。它把值属性与约束属性(Constraint Property)绑定,形成可求解的参数网络。约束属性通常来自数学公式或工程方程,例如“升力=0.5×ρ×v²×S×CL”。在参数图中,升力、速度、空气密度、机翼面积、升力系数这些值属性通过绑定连接器连到约束属性上。当其中若干参数被赋值后,求解器可以反算其余参数。参数图让“需求指标”不再只是文字,而是可被模型计算和验证的约束。
九类图如何协同:一个可追溯的建模片段
以“无人机自检”为例:需求图定义“自检时间≤30秒”;用例图定义“操作员启动自检”;活动图描述自检步骤;序列图描述飞控与传感器的消息交互;状态机图描述飞控从“待命”到“就绪”的状态迁移;BDD定义飞控块及其属性;IBD定义飞控内部部件连接;参数图把“自检时间”与各步骤耗时绑定,形成可计算约束;包图把上述所有元素组织到无人机::自检命名空间下。九类图不是并列关系,而是围绕同一系统对象,从不同侧面形成互补描述。