一种可扩展插件化体系架构的软件系统设计方法与流程

文档序号:26003600发布日期:2021-07-23 21:21阅读:119来源:国知局
一种可扩展插件化体系架构的软件系统设计方法与流程

本发明涉及一种可扩展插件化体系架构的软件系统设计方法,属于软件系统设计领域。



背景技术:

随着近年来航天发射任务数量的不断攀升,各类型航天型号所需进行试验的数量与种类也呈现指数级上升趋势。面对不同型号试验、同一型号的不同试验需求,地面测发控类软件往往需要提供多种软件技术状态。面对这一问题,传统做法是针对不同的软件需求,新研或对现有软件进行适应性修改,这就对软件承制方的研制能力、技术状态控制能力提出了很高的要求。同一软件的多个版本带来的管理工作量、重复开发工作量及技术风险也随之提升。



技术实现要素:

本发明的技术解决问题是:克服现有技术的不足,提供一种可扩展插件化体系架构的软件系统设计方法。

本发明的技术解决方案是:

一种可扩展插件化体系架构的软件系统设计方法,包括如下步骤:

第一步、设计可扩展插件化体系架构

所述可扩展插件化体系架构由下至上分为qt模块层、平台内核层、管理层和插件层4个层级,管理层分为平台管理层和插件管理层;

插件层包括公共插件和私有插件,私有插件为实现地面测发控类软件特殊功能的模块,公共插件为满足地面测发控类软件公共需求的组件;平台内核层用于为插件层的所有插件提供通用功能接口;平台管理层通过设计测试平台管理类、平台表现管理类用于平台管理;插件管理层设计插件管理类用于插件管理;所述平台由平台内核层和管理层构成;

第二步、根据地面测发控类软件特点,设计平台内核层通用功能;

实现方法如下:平台内核层通用功能包括日志记录、配置文件读写、基本界面元素提供、配置界面生成和主界面操作,平台内核层分别为上述通用功能设计对应的实现模块,并在各实现模块中设计相应的接口,供插件调用;

第三步、设计插件生存周期模型;

第四步、进行平台内核层与插件的接口规定与设计;

第五步、设计插件加载流程;

第六步、设计插件通用数据接口,提供插件间通信方法,完成可扩展插件化体系架构的软件系统设计。

所述第二步中,平台内核层在日志记录模块中提供debug、info、warning、error、fatal五个级别的日志记录接口,供插件调用,并对日志记录时间、日志记录文件读写操作进行封装,供上层插件调用。

平台内核层为配置文件读写模块提供xml配置文件、ini配置文件各类型的读写接口。

平台内核层为主界面操作模块提供主界面操作接口,通过主界面操作接口向插件开放界面主屏幕的区域指针接口与布局方式,插件能够通过主界面操作接口进行主界面元素的布局。

所述插件生存周期模型按如下方式定义:

插件的生存周期包括unload、load、ready、working四种状态;

插件生存周期的转移矩阵如下:插件仅能从unload状态转为load状态,插件进入load状态后,仅能返回unload状态或进入ready状态,插件进入ready状态后,仅能返回load状态或进入working状态,插件进入working状态后,仅能回退回ready状态。

插件生存周期的unload、load、ready、working四种状态定义如下:

unload状态:插件已被读入平台内核层,但并未装载或load状态插件在调用卸载函数后完成卸载,在平台内核层的可用插件栏中可以查看;

load状态:unload状态插件在调用安装函数后或ready状态插件在调用关闭函数后,插件在插件管理类中完成注册操作但数据未初始化的状态;

ready状态:程序开始运行后,平台内核层通过调用load状态插件的初始化函数,完成插件的初始化动作,各数据项准备完毕;或working状态插件调用停止试验函数,各数据项完成清零的状态;

working状态:ready状态插件调用开始试验函数,插件中线程开始工作,插件各功能使能,各数据项开始生成或记录。

所述第四步中,平台内核层为所有插件设计统一的插件接口,插件接口包括初始化、关闭、允许关闭、卸载、开始试验及停止试验六个,各插件接口以虚函数的形式供插件调用实现。

所述第五步中,插件加载流程如下:

(5.1)平台内核层读取插件配置文件中注册的插件列表;

(5.2)校验每个注册的插件是否合法;

(5.3)利用反射机制创建插件;

(5.4)在插件的创建函数中调用平台内核层提供的配置文件读写接口读取自身的.ini配置文件中各项配置;

(5.5)根据步骤4中的各项配置完成插件的初始化操作。

所述第六步的实现方法如下:

(6.1)在平台内核层为所有插件统一设计一条数据总线与一条信息总线;

(6.2)为数据总线设计数据管理类,用于实现插件间的数据通信;

(6.3)为信息总线设计消息管理类和消息监听接口,用于实现插件间的信息通信。

所述步骤(6.2)中,插件间数据通信的过程如下:

(6.2.1)插件将要发送的数据发布至数据总线;

(6.2.2)有读取需求的插件直接从数据总线上读取数据,实现插件间数据通信。

所述步骤(6.3)中,插件间数据通信的过程如下:

(6.3.1)插件作为消息发送方及消息接收方,在设计时需实现平台内核层的消息监听接口;

(6.3.2)插件初始化时,在平台内核层的消息管理类中注册;

(6.3.3)某个插件要发送信息时,先生成激活函数激活平台内核层的消息管理类,并将要发送的信息发送给消息管理类;

(6.3.4)消息管理类作为消息服务端,向各个注册的插件进行广播,各插件在接收到信息后,进行校验,如为本插件所接收的消息类型,则进行消息响应,否则,不响应。

与现有技术相比,本发明具有如下有益效果:

(1)本发明所设计的可扩展插件化体系架构层次清晰、接口一致,降低了外部调用难度与系统维护成本,提升了软件系统的可靠性。

(2)本发明基于航天型号地面试验中测试发射控制类软件的使用场景,为插件设计了统一的生存周期模型,除unload、load、ready等状态外,还为插件设计了开始试验与停止试验的试验状态,使插件更好的应用于实际试验场景中。

(3)本发明平台内核层为插件设计了易于调用的日志记录、配置文件读写、图形配置界面等接口,缩小插件研制过程工作量,一致化了相关类型功能的用户交互逻辑;

(4)本发明将插件间通信分成数据共享及信息传递两类,为数据共享设计软总线,降低了插件间耦合度,应用发布/订阅模式实现插件间消息传递,保障了消息传递实时性的同时,降低插件与平台间的耦合度;

(5)本发明使用.ini、.xml等多类型配置文件与反射机制实现了插件的动态装卸载及插件状态配置的灵活性,用户可根据需求进行插件的热插拔或插件功能的实时调整,为软件的测试环境适应性及地面试验过程中的故障定位提供了有效的支撑。

附图说明

图1为本发明可扩展插件化体系架构示意图;

图2为平台内核层—插件—软件关系图;

图3为插件生命周期示意图;

图4为利用反射机制创建插件流程图;

图5为插件间数据交互接口示意图;

图6为插件间消息发送示意图。

具体实施方式

因此,针对航天地面测发控类软件功能相似度高,不同试验间有差别的特点,本发明提出了一种可扩展插件化体系架构的软件系统设计方法。从文献中看,国内尚未有针对航天型号地面试验中测试发射控制类软件使用可扩展插件化体系架构进行软件系统设计的实例。

本发明针对地面测发控类软件的通用功能需求,梳理其基础功能与通用需求,结合面向外部插件的调用逻辑设计了软件体系架构的核心——平台内核层。通过平台内核层提供的统一标准接口,插件与平台内核层进行连接,并被平台内核层调用运行。针对不同需求,可通过组合、插拔插件的方式,进行软件功能的增删。平台内核层—插件—软件关系图如图2所示。

具体地,本发明包括如下步骤:

第一步、设计可扩展插件化体系架构

采用基于windows操作系统及qt平台的研制框架,基于分层思想,完成可扩展插件化体系架构的设计。如图1所示,可扩展插件化体系架构由下至上分为qt模块层、平台内核层、管理层和插件层4个层级,管理层分为平台管理层和插件管理层。

插件层包括公共插件和私有插件,私有插件为实现地面测发控类软件特殊功能的模块;公共插件为满足地面测发控类软件公共需求的组件,能够打包发布,供平台动态加载;公共插件和私有插件统一称为插件。平台内核层用于为插件层的所有插件提供通用功能接口;平台管理层通过设计测试平台管理类、平台表现管理类用于平台管理;插件管理层设计插件管理类用于插件管理。所述平台由平台内核层和管理层构成。

第二步、根据地面测发控类软件特点,设计平台内核层通用功能

平台内核层通用功能包括日志记录、配置文件读写、基本界面元素提供、配置界面生成和主界面操作,平台内核层分别为上述通用功能设计对应的实现模块,并在各实现模块中设计相应的接口,供插件调用。

具体地,平台内核层在日志记录模块中提供debug、info、warning、error、fatal五个级别的日志记录接口,供插件调用,并对日志记录时间、日志记录文件读写操作进行封装,供上层插件调用。

平台内核层为配置文件读写模块提供xml配置文件、ini配置文件各类型的读写接口。插件可利用平台内核层统一提供的配置文件读写接口进行xml与ini配置文件的读写。

平台内核层通过主界面操作接口向插件开放界面主屏幕的区域指针接口与布局方式,插件能够通过平台内核层提供的统一接口进行主界面元素的布局。平台内核层将基本界面元素,如指示灯、lcd数值、按钮等,封装在平台内核中,插件可根据自身界面需要,使用该类型元素。

配置界面生成模块提供获取配置界面接口、获取配置界面标题接口,加载配置界面接口、提交配置界面接口,获取配置文件接口。平台内核层为插件配置界面提供统一接口,避免每个插件自行设计配置界面的重复工作量。

表1平台内核层提供的公共接口

第三步、设计插件生存周期模型

统一将私有、公共插件在平台的生存周期设计为unload、load、ready、working四种状态,并规定插件生存周期的转移矩阵:插件仅能从unload状态转为load状态,插件进入load状态后,仅能返回unload状态或进入ready状态,插件进入ready状态后,仅能返回load状态或进入working状态,插件进入working状态后,仅能回退回ready状态。

unload状态:插件已被读入平台内核层,但并未装载,或load状态插件在调用卸载函数后完成卸载,在平台内核层的可用插件栏中可以查看;

load状态:unload状态插件在调用安装函数后,或ready状态插件在调用关闭函数后,插件在插件管理类中完成注册操作但数据未初始化的状态。

ready状态:程序开始运行后,平台内核层通过调用load状态插件的初始化函数,完成插件的初始化动作,各数据项准备完毕,或working状态插件被调用停止试验函数,各数据项完成清零的状态。

working状态:ready状态插件被调用开始试验函数,插件中线程开始工作,插件各功能使能,各数据项开始生成或记录。

插件生命周期图如图3所示。

第四步、进行平台内核层与插件的接口规定与设计

平台内核层为所有插件设计统一的插件接口,插件接口包括初始化、关闭、允许关闭、卸载、开始试验及停止试验六个,各插件接口以虚函数的形式供插件调用实现。

第五步、设计插件加载流程如下:

(5.1)平台内核层读取插件配置文件中注册的插件列表;

(5.2)校验每个注册的插件是否合法;

(5.3)利用反射机制创建插件,创建流程如图4所示;

(5.4)在插件的创建函数中调用平台内核层提供的配置文件读写接口读取自身的.ini配置文件中各项配置;

(5.5)根据步骤4中的各项配置完成插件的初始化操作。

第六步、设计插件通用数据接口,提供插件间数据及信息的通信方法,并提供插件与平台通信方法。

如图5所示,插件间数据通信的过程如下:

(6.2.1)插件将要发送的数据发布至数据总线,进行数据发布时使用线程锁进行线程保护;

(6.2.2)有读取需求的插件直接从数据总线上读取数据,实现插件间数据通信。

通过平台内核层的数据软总线,实现插件间数据通信的同时,实现插件间的脱耦,插件间无需知道其他插件的在线状态。

如图6所示,插件间数据通信的过程如下:

(6.3.1)插件作为消息发送方及消息接收方,在设计时需实现平台内核层的消息监听接口;

(6.3.2)插件初始化时,在平台内核层的消息管理类中注册;

(6.3.3)某个插件要发送信息时,先生成激活函数激活平台内核层的消息管理类,并将要发送的信息发送给消息管理类;

(6.3.4)消息管理类作为消息服务端,向各个注册的插件进行广播,各插件在接收到信息后,进行校验,如为本插件所接收的消息类型,则进行消息响应,否则,不响应。

本发明结合航天型号地面试验测试发射控制类软件的研制工程实际,提出了一种可扩展插件化体系架构的软件系统设计方法,可缩短软件研制周期,降低软件研制成本,提高地面型号软件研制的规范性,有效增强软件的环境适应性,将该技术应用于工程实际具有重要意义。

本发明未详细说明部分属本领域技术人员公知常识。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1