缩略图

论显控软件架构的优化设计

作者

陈耀飞

江南机电设计研究所 贵州贵阳 550000

1. 引言

显控软件是负责信息呈现、状态监控、参数设置及指令下发的一类专用软件,广泛应用于工业控制、航空航天、军事指挥、智能交通等关键领域。其核心使命是将底层系统的复杂数据以直观、准确、及时的方式呈现给操作人员,并确保操作指令的可靠执行。

早期的显控软件多采用紧耦合的单体架构,界面逻辑、业务处理与数据访问代码交织在一起。这种架构虽然开发简单,但随着功能增长和需求变更,其弊端凸显:代码臃肿、难以维护、牵一发而动全身、无法满足高实时性与高可用性要求。因此,对显控软件架构进行科学的优化设计,已成为提升整个系统效能和生命周期的关键课题。

2. 显控软件架构的现状与挑战

2.1 常见问题分析

1、紧耦合:界面(UI)与业务逻辑深度绑定,导致UI 的改动可能引发底层逻辑的崩溃,反之亦然。

2、可测试性差:由于逻辑与界面混合,难以编写高效的单元测试和集成测试,质量保障依赖昂贵且不充分的手工测试。

3、可扩展性不足:添加新功能或对接新设备时,往往需要在原有代码基础上“打补丁”,导致系统结构迅速腐化。

4、技术栈僵化:整个系统基于单一技术框架,难以引入新的、更优秀的第三方库或组件。

5、性能瓶颈:所有功能集中于单一进程,某一模块的异常或繁忙可能导致整个界面卡顿甚至无响应。

2.2 核心需求

一个优化的显控软件架构应满足以下核心需求:

1、高内聚、低耦合:功能模块职责单一,相互间依赖清晰、最小化。

2、实时性与响应性:能够快速响应底层数据变化和用户交互,界面无卡顿

3、高可靠性与可维护性:系统稳定,易于排查问题、修复缺陷和升级功能。

4、可扩展性与灵活性:能够平滑地接入新设备、新算法和新显示需求。

5、可测试性:支持自动化测试,确保软件质量

3. 显控软件架构优化设计原则与关键技术

3.1 核心设计原则

1、分层解耦原则:将软件横向划分为清晰的层次,规定上层只能调用相邻下层的服务。

2、模块化原则:将系统纵向拆分为功能独立的模块,模块间通过定义良好的接口进行

3、抽象与接口隔离原则:定义稳定的抽象接口,降低模块间的依赖关系。

4、单一职责原则:每个类、每个模块只承担一个明确的职责。

3.2 关键技术方案

3.2.1 表现层优化

对于图形界面复杂的显控软件,MVVM(Model-View-ViewModel)模式是优化表现层的首选。

1、Model:代表核心业务数据和逻辑,与界面无关。

2、View:即UI,负责数据的可视化呈现和接收用户输入

3、ViewModel:作为View 和 Model 之间的“桥梁”,它将 Model 的数据转换为 View 可以直接显示的状态,并封装View 的交互命令。

4、优势:通过数据绑定机制,实现了View 与 ViewModel 的自动同步,开发者无需编写大量更新UI 的代码。这使得UI 设计与业务逻辑开发可以完全分离,极大提升了可维护性和可测试性。

3.2.2 数据通信优化

采用发布-订阅模式,在模块间或进程间通信中,使用发布-订阅模式替代传统的点对点调用。1、机制:数据发布者将消息发送到特定的主题,而不关心谁接收。数据订阅者只订阅它关心的主题,接收

到消息后自行处理。

2、优势:彻底解耦了通信双方。新增一个订阅者不会影响发布者,非常适合处理显控软件中常见的多对多数据分发场景。常用的中间件DDS(数据分发服务)在实时性要求极高的领域(如军工、航空)应用尤为广泛。

3.2.3 后端服务优化

微服务与容器化对于大型分布式显控系统,将传统的单体后端拆分为一组微服务。

1、微服务:每个服务围绕一个特定的业务功能进行构建,可以独立开发、部署和扩展。

2、容器化:使用 Docker 等容器技术将每个微服务及其依赖打包成一个镜像,通过Kubernetes 等编排工具进行统一管理和调度。

3、优势:实现了技术栈的自由选择、弹性伸缩、高可用部署和持续交付。

3.2.4 数据流优化

底层设备数据、用户交互事件皆被视为数据流。架构的中心是一个(或一系列)可靠的数据总线或事件总线,所有模块围绕总线进行数据的生产和消费。这种架构天然契合显控软件对实时数据流的处理需求。

4. 应用实践与效果分析

假设为一个“无人艇监控系统”设计显控软件,传统架构做法为一个单体程序,包含地图显示、视频显示、设备状态表、控制指令下发等所有代码。

1、优化架构设计:

(1)前端(表现层):使用Qt Quick 框架,采用MVVM 模式。每个主要UI 组件(MapView 等)都有对应的 ViewModel。

(2)通信层:采用DDS 或MQTT 作为数据总线。无人艇上传的GPS、姿态、设备状态等数据通过 DDS发布到相应主题。

(3)后端服务

1)数据采集服务: 订阅DDS 上的原始数据主题,进行解析、校验后,存入时序数据库并发布新的“洁净数据”主题。

2)告警服务: 订阅“洁净数据”主题,根据规则判断是否产生告警,并发布“告警”主题

3)命令服务: 接收来自前端的控制指令,验证后通过DDS 下发至无人艇。

2、效果分析:

(1)开发效率:前后端团队可并行开发,前端只需关心 ViewModel 的接口,后端只需关心 DDS 主题格式。(2)可维护性:修改地图显示样式不会影响数据采集逻辑;需要增加一个新的数据处理算法时,只需编写一个新的微服务订阅和发布数据,无需改动现有代码。

(3)性能与扩展:如果视频流处理成为瓶颈,可以单独对Video-Service 进行水平扩容。

5. 结论与展望

本文系统地探讨了显控软件架构的优化设计。研究表明,通过采纳分层解耦、模块化、MVVM、发布-订阅等现代软件工程理念与技术,能够有效解决传统显控软件架构的固有缺陷,构建出高内聚、低耦合、易扩展、易维护且响应迅速的新型显控系统。

未来,随着人工智能技术的进一步发展,显控软件架构将继续演进。基于 AI 的智能监控与预警模块、云-边-端协同架构等,都将为下一代显控软件的设计提供新的思路与挑战。持续关注并引入这些先进架构,对于保持显控软件的技术先进性和竞争力至关重要。

参考文献

[1] 王伟,冯旭,李志刚.面向服务的显控软件架构设计[J].现代雷达 2021, 43(8): 90-94.

[2] 张强,刘杰,陈虹.基于模块化思想的显控系统软件设计[J].电光与控制 2020, 27(5): 100-103.

[3] 赵宇,孙晓峰.显控软件中实时数据通信架构的研究与优化[J].计算机测量与控制2019, 27(10): 250-254.