1 完整示例:“罗卜”自动驾驶汽车
我们设计了一个自动驾驶汽车系统,系统由多个子系统组成,如感知系统、控制系统、导航系统、动力系统等。并且使用SysML的Internal Block Diagram (IBD) 来详细描述这些子系统的内部结构和它们之间的交互。
具体步骤:
1 定义主要块(Blocks):
自动驾驶汽车系统作为一个整体块。
内部子系统如感知系统(Perception System)、控制系统(Control System)、导航系统(Navigation System)、动力系统(Power System)等。
2 定义块内的部分属性(Part Properties):
在感知系统块内,定义雷达(Radar)、摄像头(Camera)、激光雷达(Lidar)等部分属性。
在控制系统块内,定义转向控制器(Steering Controller)、加速控制器(Acceleration Controller)等部分属性。
3 定义端口和接口(Ports and Interfaces):
在感知系统块的雷达、摄像头、激光雷达上定义数据输出端口,用于传输感知数据。
在控制系统块的转向控制器、加速控制器上定义数据输入端口,用于接收控制指令。
4 添加连接器(Connectors):
使用连接器连接感知系统的数据输出端口和控制系统的数据输入端口,表示感知数据传输到控制系统进行处理。
连接导航系统的输出端口和控制系统的输入端口,表示导航指令传输到控制系统进行执行。
5 标注属性和接口信息:
为每个端口标注数据类型,如雷达的输出端口传输距离数据,摄像头的输出端口传输图像数据等。
为连接器标注传输协议和数据格式,确保不同部分属性之间的交互一致性。
现在这是一个复杂的自动驾驶汽车系统(Autonomous Car System),增加了导航系统(Navigation System)引用了外部的地图服务(Map Service)。
+------------------------------------------------+
| Autonomous Car System |
| |
| +-------------------+-----------------------+ |
| | Perception Sys | Control System | |
| | | | |
| | +-------------------------------------+ | |
| | | Camera: SensorBlock | | |
| | | Resolution: 1080p | | |
| | | FrameRate: 30 fps | | |
| | +-------------------------------------+ | |
| | | | |
| | [传感器端口] |----| [控制端口] | |
| +-------------------+-------+---------------+ |
| | |
| | |
| +-----------------------------+ | |
| | MapService: 地图服务 |<--------------+
| +-----------------------------+ |
| |
| +-----------------+ |
| | Block | |
| | Car System | |
| | [燃油口: | |
| | FuelType ->] | |
| +-----------------+ |
| |
| |
| +-----------------------------------------+ |
| | Weight: 1500 kg | |
| | MaxSpeed: 220 km/h | |
| | BatteryCapacity: 75 kWh | |
| +-----------------------------------------+ |
+------------------------------------------------+
在这个IBD图中使用了如下示例定义:
块(Block):Car System,Perception System,Control System
部件(Part):Camera
值属性(Value Property):Weight, MaxSpeed, BatteryCapacity, Resolution, FrameRate
端口(Port):Sensor Port, Ctrl Port
连接器(Connector):连接Sensor Port和Ctrl Port的线条
值属性(Value Property): 表示块内部的属性值,如大小、重量等。
流属性(Flaw Property): 显示连接;流动的物质、能量或数据的类型;提供或要求的服务。
引用属性(Reference Property):MapService引用了Map Service块
2 分析示例优缺点:
通常实际的自动驾驶系统有更复杂更精细的系统,其中包含多个部件和值属性。
比如在感知系统(Perception System)中有上百个个摄像头(Camera)或者视觉感知部件,我们可以为其定义一些值属性,如速度,分辨率(Resolution)和帧率(FrameRate)。
通过添加值属性,IBD图不仅展示了系统的结构和接口,还提供了系统和部件的具体数值特征,帮助工程师更加全面地理解和设计系统。
添加引用属性,不仅展示了系统的内部结构和接口,还清晰地表示了系统与外部对象或服务之间的依赖关系,更全面地理解和设计复杂系统。
IBD系统内部块图具有以下优点:
- 详细描述清晰定义系统内部结构:
该图详细描述了自动驾驶汽车系统的各个子系统及其内部组成部分,使工程师清晰了解系统内部的结构和各部分之间的关系。例如,感知系统中的各个传感器如何协同工作,以及它们如何与控制系统交互。
- 统一接口和交互:
通过定义统一的端口和接口,IBD确保了各子系统之间的数据传输和交互的一致性和标准化。
例如,所有感知数据传输到控制系统时,数据格式和传输协议都是一致的,避免了接口不兼容的问题。
- 提高系统设计的可理解性和可维护性:
IBD图的直观表示使得系统设计更易于理解,不仅对设计者,对后期的维护人员也是如此。
例如,系统维护人员可以通过IBD快速定位到某个子系统的具体接口和连接,方便进行故障排查和维护。
- 支持系统集成和测试:
IBD帮助定义了各个子系统的具体接口和交互方式,为系统集成提供了明确的指导。
在系统集成和测试阶段,工程师可以依据IBD图验证各子系统的接口和交互是否正确,实现了设计到实现的无缝对接。
- 提高系统设计的准确性和完整性:
IBD的详细描述和规范化设计有助于提高系统设计的准确性,避免遗漏关键的组成部分和接口。
例如,通过IBD可以检查每个子系统的端口是否都有对应的连接器,确保所有的交互路径都被考虑到。
3 使用警告和实践场景
使用场景
- 系统内部结构建模:
用途: 描述系统内部的组成部分及其相互关系,展示系统内部的细节结构。
示例: 在一个汽车系统中,描述引擎内部各个部件(如气缸、活塞)的组成和连接关系。
- 子系统交互建模:
用途: 详细描述系统内部子系统或组件之间的交互和连接方式。
示例: 在一个通信系统中,描述发送器、接收器、信号处理模块之间的连接和数据流动。
- 接口定义:
用途: 明确定义系统内部各部分的接口,展示数据、信号或物理连接的传递路径。
示例: 在一个嵌入式系统中,描述处理器与存储器、I/O 设备之间的接口和连接关系。
- 系统集成与验证:
用途: 在系统集成和验证阶段,使用内部块图确保各个部分正确连接和交互。
示例: 在设计和验证一个复杂电子系统时,确保各个模块之间的连接符合设计要求。
- 与UML2的关系
继承关系: 内部块图基于 UML 的复合结构图(Composite Structure Diagram)进行了扩展,专门用于系统工程。
元素一致性: 两者使用相似的基本元素,如端口、连接器等,但内部块图包含更多系统工程特有的元素和关系。
扩展性: 内部块图在功能和用途上进行了扩展,适用于复杂系统的内部结构和子系统交互建模需求。
最佳实践方式:
* 积极地将对象三元组模式分类技术应用于块,以分离控制对象、接口对象和数据对象。
* 通过在 BDD 定义和 IBD 用法之间交替递归分解(“嵌套”)块层次结构。
* 将所有活动分配给代表 Conrol 对象 Blocsk 的分区。
UML2具有以下局限:
局限于软件系统:UML 的类图和组件图主要用于软件系统的建模,难以适应复杂的多领域系统。
接口表示不统一:UML 的接口表示较为自由,可能导致设计的混乱和不一致。
缺乏细节描述:UML 的类图和组件图通常缺乏对内部组成部分和具体接口的详细描述,
不适用于超复杂系统的详细设计。
4 总结优缺点
SysML中的IBD图的优点:
可以看出在开发自动驾驶汽车系统时,通过IBD详细描述了各个子系统的内部结构和接口,使得系统设计更加清晰和规范。
在后期的系统集成和测试阶段,工程师们能够快速定位和解决接口问题,确保了系统的正确性和稳定性。
如果没有内部块图,可能导致系统接口定义不统一,不同子系统之间的数据传输出现不兼容问题。
同时系统设计不够详细,导致在系统集成时发现遗漏关键的组成部分或接口,增加了调试和修改的工作量。
最后系统维护困难,维护人员难以快速理解和定位各个子系统的具体接口和交互,增加了维护成本和时间。
现在通过SysML的IBD,能够有效地解决这些问题,确保系统设计的准确性、完整性和可维护性,最终帮助系统成功实现其预期功能。
可能的使用限制:
* 混淆控制对象、接口对象和数据对象块。
* SA/SD DFD 反模式(又名“回到 1980 年左右的未来”反模式)= 将活动图定义为功能流程图,而不表示控制对象的部件。
* Bloctivity Anti-Pattern = 混淆块和活动语法和语义。
- 复杂性管理困难:
问题: 对于大型复杂系统,内部块图可能变得非常复杂,尤其是当涉及大量部件和连接时,图可能变得难以管理和理解。
一个复杂的电子系统包含成百上千个部件及其连接,内部块图可能变得过于复杂,难以清晰展示。
- 动态行为表示不足:
问题: 内部块图主要描述系统的静态结构,缺乏对系统动态行为和运行时交互的详细描述。
在需要描述系统运行时的动态行为和交互过程时,内部块图无法提供足够的信息,需要结合其他图(如序列图、活动图)来补充。
- 细节表达能力有限:
问题: 在表达具体的实现细节和低层次的设计时,内部块图可能显得不足,特别是对于硬件电路或软件算法的详细描述。
需要详细描述硬件电路中各个元件的连接和功能时,内部块图可能无法提供足够的细节。
- 学习曲线陡峭:
问题: 对于新手来说,理解和使用内部块图及其相关元素可能具有一定的学习难度。
系统工程师在初次使用内部块图时,可能需要时间来熟悉各种元素和关系,才能有效地进行建模。
SysML 的 Internal Block Diagram (IBD) 图在系统设计中扮演着重要的角色,通过详细描述系统块内部的组成部分和接口,帮助工程师理解和设计复杂的多领域系统。
与 UML2 的类图和组件图多用于软件系统相比,SysML 的 IBD 更加适合用于复杂大型系统的详细设计和验证。