APP下载

一种基于重用和快速开发的系统控制软件架构设计

2018-10-21李俊孙洁晶

名城绘 2018年12期
关键词:插件组件

李俊 孙洁晶

摘要:随着装备的发展,系统控制软件规模越来越大,研制周期变短,多平台并存,要求系统控制软件能充分继承重用已有项目成果,快速完成软件研制。

关键词:软件架构;集成框架;组件;插件

1原有系统控制架构

原有系统控制架构通过集成模块完成其它应用模块的加载/卸载和集成,模块间通过WINDOWS消息、回调、函数调用和共享内存交换等方式进行数据交互。

原系统控制架构在软件重用、研制效率以及平台适应方面存在以下不足:

(1)信息交互方式不统一。通过WINDOWS消息、回调、函数调用和共享内存交换等多种方式进行模块间的信息交互,无统一的信息交互方式。降低了软件模块的重用效率。

(2)模块化程度不够。单个软件模块虽可以分解成更多子模块,但子模块的集成完全依赖代码实现,集成效率低。为提高集成效率,原系统控制架构的软件模块划分粒度较大。这种大粒度的模块难以在后续项目中复用。

(3)平台适应性单一。只支持X86和WINDOWS操作系统,不支持国产化硬件平台和操作系统,不具备跨平台运行能力。在这种架构下,原有软件模块只能应用于WINDOWS操作系统,而后续很多装备都要求采用国产化操作系统,原有软件模块的复用度越来越低。

2 系统控制软件架构设计

2.1 架构需求

为实现系统控制软件模块高效重用和快速开发,系统控制软件架构需具备以下特征:

(1)信息交互方式统一。信息交互方式主要指软件模块信息输入输出的方式,统一的信息交互方式可以将软件模块外部接口方式标准化,标准化接口便于软件模块直接复用集成。

(2)模块层次化。系统控制软件需实现软件模块不同粒度的复用,需构建多层次、不同粒度的软件模块/子模块。同时,这种模块构建方式便于将一个软件模块分解为多个子模块,由多人并行开发并直接集成,支持快速开发。

(3)跨平台适应能力。同时适应X86和国产化硬件平台,以及WINDOWS和国产化操作系统,即软件架构能同时运行在两种硬件平臺和操作系统中。跨平台适应能力将大幅提高软件的重用率。

2.2软件架构设计

基于系统控制架构需求,采用“集成框架&组件/插件”体制,设计了一种基于重用和快速开发的系统控制软件架构,如图1所示

整个系统控制软件架构由跨平台软件集成框架、基础层、核心层和应用层组成。

跨平台软件集成框架:提供一组框架目录、执行程序、动态库、配置文件和接口文件,能够将基于此框架开发的“软件模块”通过配置文件快速集成为可执行程序,并能够通过配置文件灵活配置界面布局。

基础层:由界面配置文件、组件/插件配置文件和日志文件等组成。

a)界面配置文件:用于设置组件/插件窗口标题、启动界面名称等显示属性,以及单实例控制和显示方式等。

b)组件/插件配置文件:组件加载配置文件,包含了框架需要加载的各个组件的动态库名称、简要信息、加载顺序、目录名称和组件UI配置文件名称;组件UI配置文件,用于配置菜单、工具栏、视图等;插件配置文件,用于配置窗口主界面的布局组成,可分为主视图、标签视图、切分视图等组成,布局为任意界面。

c)日志文件:包括调试日志信息和软件运行日志信息等。

核心层:包括界面管理器和消息中心,界面管理器负责布局管理和事件响应;布局管理负责菜单栏、状态栏和主界面的初始化,主界面可由组件和插件布局完成;事件响应用于处理菜单栏中各菜单项的响应事件,负责分发到相应的组件或插件中进行处理。消息中心:包括注册管理和消息分发两部分,注册管理记录了被加载的各个软件模块,即插件和组件对应ID到模块指针的映射,便于根据ID索引;消息分发用于软件模块间的内部通信,负责分发消息到指定模块,完成信息交互功能。

应用层:由组件和插件构成,组件和插件的开发必须基于框架提供的接口类实现,才能够被框架调用和集成,从而实现模块间的信息传递,响应菜单事件等。一个组件可以包括多个插件。

2.2.1 工作流程

系统控制软件架构工作流程如图2所示。

a)配置文件读取:软件框架读取基础层的界面配置文件、组件/插件配置文件,获取组件/插件标题、名称、加载顺序和界面布局配置等信息。b)组件/插件加载:软件框架按照配置文件的顺序加载完成组件/插件。c)组件/插件初始化:组件/插件完成业务功能初始化。d)消息订阅:组件/插件通过消息中心的注册管理,完成消息订阅。e)界面布局:软件框架通过界面管理器的布局管理,完成组件/插件界面布局。f)数据交互:组件/插件间通过消息订阅发布机制进行数据交互。g)事件响应:组件/插件接收事件通知,响应各种操作事件,触发相应处理。h)软件退出:软件框架反序卸载加载组件/插件。

2.2.2组件/插件实现机制

组件是一种“软件模块”的存在形式,以动态库部署,可具有UI界面,也可只是后台运行的动态库。插件是一种“软件模块”的存在形式,以动态库部署,是程序UI界面的划分单元,可以仅仅是一个窗口,也可以是若干窗口的集合。组件和插件并没有本质上的区别,都是被软件框架调用集成的软件模块。唯一的区别可以描述为:组件比插件的功能模块大一些,组件可以为纯后台运行动态库,也可以是具有UI界面的动态库,捕件只能是UI单元的动态库,可以划分成很小的粒度,当然“组件”和“插件”粒度的划分没有绝对统一的标准,基于的原则是软件可复用度的考虑。

2.2.3跨平台适应机制

软件框架和组件/插件采用QT开发库进行开发,QT开发库对不同操作系统的应用程序接口进行了封装,具有跨平台特性,同时支持WINDOWS和国产操作系统。

同时,由于国产化硬件平台采用非X86指令集,为同时适应X86和国产化硬件平台,源代码需在不同目标机上重新编译。

3 结束语

目前,系统控制软件架构具备统一的信息交互方式、多层次模块构建能力、跨平台适应能力、良好的外部框架适配能力、高效的模块集成能力。已经在多个课题中进行了充分验证,能够实现软件级、组件级、插件级的多层次高效重用和快速开发,将在后续系统控制软件中推广使用。

(作者单位:南京擎天科技有限公司)

猜你喜欢

插件组件
创建Vue组件npm包实战分析
光伏组件热斑对发电性能的影响
智能机械臂
用好插件浏览器标签页管理更轻松
陶瓷熔块釉筛选剔除设备
升级无障碍 修复Windows 10的Update
TC管理器功能插件批量更新
请个浏览器插件全能管家
基于jQUerY的自定义插件开发
计算机软件中的插件技术探讨