技术分享 | 2022-06-22
插件化框架的应用实践

背景

在C++软件开发过程中,往往由于软件项目的庞大以及后期维护、扩展、变更的需求,使得在软件开发的启动阶段就需要对整个软件的技术架构进行考量和设计。通常会使用横向分层、纵向分类的方式来对软件的模块进行相对隔离,理论上,这两种方式能够使软件具有一定程度上的可维护性和易扩展性。

但在更多情况下,即使软件代码包含足够的注释和说明,但由于软件过于庞大,也无法人为的对代码进行快速拆分。在后期扩展时,对项目的整体稳定性也会产生极大影响。若遇到频繁的需求变更,很容易使原本清晰的结构变得更为混乱。

因此,在满足软件横向分层、纵向分类要求的基础上,拥有一套同时能保证各个模块完全分离、互不干扰的框架,则显得尤为必要。

针对以上问题,基于C++的插件化框架—合迅智灵插件式软件开发框架应运而生,它提供了规范的软件开发模式和可复用的插件包,致力于为自主可控平台提供一套高效、敏捷、团队无缝协作和快速部署的软件框架




合迅智灵插件式软件开发框架


合迅智灵插件式软件开发框架是基于OSGI标准的C++软件框架,OSGI规范的核心部分是一个框架,它定义了应用程序的生命周期模式和服务注册机制。基于这个框架扩展了大量的OSGI服务,如日志、配置管理等。由于 OSGI 的可靠性和可扩展性,很多大规模和分布式应用程序都基于它来构建,例如:IDE(Eclipse)、应用服务器(GlassFish、IBM Websphere、Oracle/BEA Weblogic、Jonas、JBoss)、应用框架(Spring、Guice)等。


插件式框架设计采用了一种新的开发模型,它将应用程序定义为由不同的可复用插件组成,插件之间通过服务进行通信,而服务是插件之间用于信息共享的对象。


图1 插件式软件开发框架分层模型


规范的模块化开发是需要OSGI的重要理由之一。与传统的开发模式相比较,模块化的开发有几个明显优势,例如:结构清晰、协同开发更灵活、易于维护、便于权限管控等。



插件化框架的应用实践


✦ 某组态配置软件

基于合迅智灵插件框架可实现灵活可扩展的组态配置软件,在软件后续的维护及升级过程中,通过对特定的插件进行独立维护升级及新插件的独立研发,可快速实现版本迭代升级以满足不同应用场景下的组态配置需求。


图2 某组态配置软件


✦ 某电磁平台

某电磁平台由多个子系统构成,提供从方案编辑生成、方案仿真推演、半实物设备控制、推演态势显示及推演成果评估的功能实现。采用合迅智灵插件框架作为各子系统前端软件框架,将各子系统相同前端功能部分采用“功能复用插件拆分”原则进行拆分实现后,可有效提高各子系统的开发效率及代码复用率,降低后续各子系统的代码维护成本。


图3 某电磁平台


✦ 某显示处理平台

通过对现场采集的数据进行可视化处理后,用户可基于测井图形对地球物理信息进行研究及应用。伴随用户不断增加的需求,平台需要升级并维护大量的地理物理算法及不同应用场景下的可视化需求。该平台采用合迅智灵插件框架将地理物理算法及可视化显示功能作为插件扩展实现,通过对算法插件和可视化插件的维护及升级以应对不断增长变化的需求,提高了软件版本迭代的稳定性,大幅度地降低了的软件维护及测试成本。


图4 某显示处理平台



合迅智灵插件化软件开发框架可以做到


1、 持续降低开发成本

随着业务的不断积累,通过降低业务模块之间的耦合度,提高业务系统代码的复用率;

2、 提高团队的协作能力

使用框架可以使代码结构规范化,可降低团队的沟通成本,利于多人协作;

3、 持续维护及灵活扩展

通过对业务领域的细分和重用,能有效降低软件的后续维护及扩展成本;

4、 大幅度提高大型软件的开发效率

在大型项目的软件开发过程中,不断抽离出很多基于不同业务领域的通用模型,可在大量的业务中进行多次复用。

推荐新闻
返回列表
试用申请
立即申请
试用申请