解决协同开发和需求变化的插件结构方法

2011-08-27 07:58焦景欣
探测与控制学报 2011年6期
关键词:主程序功能模块插件

焦景欣,李 伟,王 伟,崔 冬

(机电动态控制重点实验室,陕西 西安 710065)

0 引言

在进行软件系统开发工作中普遍存在两个问题:1)同一软件常常需要若干开发者协同进行开发。由于每个软件开发者的编程习惯和使用的编程语言很难统一,导致后期进行软件集成需要很大的工作量;2)开发完成后的软件对于用户变化的需求无法及时响应。相信大家都有这种经历,已做的软件系统虽然满足了当前用户的需要,但当用户随着对系统使用的深入,新的需求可能会产生,这时就需要在此基础上进行程序修改、增加功能,但是软件的修改甚至仅仅是很小的界面修改,就得重新编译所有程序代码,造成很大的效率浪费。而且在原有基础上的代码修改、添加必然会改变原有系统结构并增加冗余代码。对于问题1)目前是采用动态链接库文件[1-3]方法,它是将独立的程序模块创建为较小的DLL文件,通过不同开发人员并行开发不同的DLL模块来提高程序开发效率。在运行时,只要当EXE程序需要调用这些DLL模块,系统就会将它们装载到内存空间中运行。这种方法有助于解决程序协同开发的问题,缺点是开发的动态链接库文件不能脱离主程序独立执行。对于问题2)目前是充分考虑用户需求,通过优化程序结构[4]或采用基于设计模式的程序结构设计[5]方法来解决。但这些方法均是基于用户需求固定条件下的程序优化,对用户需求变化时的情况没有考虑。针对上述方法的不足,本文引入插件结构方法。

1 模块结构与插件结构

在传统的软件结构模型即模块结构设计中,系统功能是通过各个功能模块之间的切换调用来实现的,模块与模块之间普遍存在着较强的耦合关系,并且各个模块间的关系在编译期就已经固定,从而使得后期对系统进行修改、删减都会破坏原有的系统结构和程序代码。对于用户产生的新的需求,软件程序无法及时响应。另一方面随着软件系统结构越来越复杂、功能越来越多,同一软件时常需要多人协同开发,但是由于编程习惯和程序开发人员所使用的编程语言不统一导致后期进行系统集成时工作十分繁复。为了提高软件开发高效率,开发出高质量的软件产品,人们一直在寻求更好的软件结构和开发方法。设想如果程序也像搭积木似的,将增加的功能模块直接插在原有结构上就好了。插件式体系结构方法就是在此设想基础上最新发展的一种非常灵活的结构方法。这种结构方法的应用最初见于Adobe公司开发的Photoshop软件[6],程序中有“滤镜”功能组,在该功能组中可对图像进行多种效果的处理。开发人员开发出新的滤镜功能,无须发布一个新版本Photoshop或重新编译Photoshop软件,这一切的解决方案就是应用插件结构方法,通过不断优化、升级“滤镜”功能组来实现软件版本的不断更新。目前国外公司开发的商用软件如 Wina mp、Netscape等在应对软件版本升级频繁时经常应用这一结构方法。

基于插件结构的方法原理是通过在进行软件结构设计时将系统有针对性的划分为主程序和插件两部分。主程序只负责处理与插件的通信及调用插件的功能,而与实现具体功能相关的算法程序等则分散由若干插件来完成。插件是具体功能的执行者,插件之间没有什么联系和干扰,从而降低插件模块之间的耦合度,减少插件彼此之间的依赖。采用这种方法在完成软件的设计后,插件管理程序和各个插件模块可以完全独立开发,从而使软件开发能够协同进行提高软件开发效率。在开发和调试过程中甚至在开发完成后,当部分插件模块发生问题的时候,由于各个插件模块之间相对独立,并不会影响到其他模块,有利于软件测试工作的开展和进行,便于在测试和调试的过程中发现问题和解决问题。而且对部分插件的修改、优化不会影响到其他插件,避免了因为改正错误而引出新的问题的情况。对于新的功能需求,只需要开发对应的插件模块即可,从而能有效解决软件开发过程中的需求变化问题,同时给后期进行软件升级和功能扩展提供了便利条件。图1为传统模块结构模型和应用插件结构方法的插件结构模型。

图1 模块结构模型与插件结构模型Fig.1 Module framewor k model and plug-in framewor k model

在系统开发中应用插件结构方法,具体的实现 步骤如下:

1)依据用户需求确定系统的通用程序功能和插件所要完成的非通用程序系列化功能或扩展功能。

2)定义主程序扩展接口和插件接口。

3)完成主程序设计,主要是对插件处理功能。

4)向插件开发者提供主程序(执行代码),公布扩展接口和插件要实现的接口。

5)插件开发者按要求开发插件,实现插件接口,并提供主程序用插件。

6)主程序开发者继续完成内核功能,并可随时调用新增加扩展接口和插件接口。

7)实现步骤4)—6)的良性循环,实现整个软件系统不断完善、更新。

2 插件结构在引信综合分析平台应用

具体在引信综合分析平台的结构设计实现中,与步骤1)类似,首先依据用户需求通过优化程序结构有针对性的将系统分为通用程序功能模块和非通用程序功能模块。这里的通用功能指的是系统模块间共用的功能部分如信息显示、主界面等。通用模块功能通过主程序实现,而非通用功能就是指非所有用户或者是按照用户新的需求开发的扩展的功能模块,非通用功能模块以插件的方式来实现。在引信综合分析平台系统中目标特性仿真、目标特性数据库、测试多媒体资料库设计为除主程序外相对独立的插件模块。对于步骤2)、3)、4)均是对主程序的各功能实现,在实现时可统一进行。步骤5)、6)是对非通用程序功能模块即插件功能模块功能的实现,需要分别在各自的插件功能模块中一一执行,从而实现主程序与各插件功能模块的互动和切换。

图2为应用插件结构方法后的引信综合分析平台系统结构。在引信综合分析平台系统中目标特性仿真、目标特性数据库、测试多媒体资料库插件模块,各自实现计算仿真分析、数据信息管理、测试多媒体信息存储、查阅功能,其中目标特性仿真插件模块又分为目标电磁特性仿真、目标激光特性仿真子模块,目标特性数据库插件模块分为目标特性模型库、目标特性数据库子模块,测试多媒体资料库插件模块分为测试照片库和测试录像库子模块。各个插件模块能够独立运行,也可以进行插件间的自由组合。如用户要进行目标特性的仿真计算,只需将目标特性仿真插件模块导入主程序即可进行仿真计算操作,而目标特性数据库插件模块、测试多媒体信息库插件模块未经调用就不在主程序中显示,若有需要,再行导入即可,从而提高软件的执行效率。目标特性仿真插件模块、目标特性数据库插件模块、测试多媒体资料库插件模块彼此间又可自由组合构成新的功能操作平台满足不同用户的功能需求。通过步骤7)实现各插件功能的完善和功能扩展。从而实现系统对用户需求的响应。

图2 引信综合分析平台系统结构框图Fig.2 The system frame of f use comprehensive analysis platfor m

应用插件机构方法后的引信综合分析平台是一个集成了目标激光特性仿真、目标电磁特性仿真两大计算分析模块,融合目标模型库和目标特性数据库,结合测试录像库、测试照片库一个集多功能、多类型、多内容的资源信息分析系统。

3 插件结构方法应用实例

在未应用插件结构方法前,引信综合分析平台是采用传统模块结构编制的集成目标电磁特性和目标激光特性两大仿真计算模块的仿真计算软件。后随着用户对软件的深入使用,提出了进一步进行仿真算法优化、加入目标特性数据库和目标模型库的需求,由此需要对引信综合分析平台的软件进行必要的修改和功能扩充。但在采用模块结构编制的软件系统中实现程序的修改、功能扩充就得重新编译程序所有代码并再次重新进行软件生成,需加入的目标特性数据库和目标模型库,虽是前期已开发的程序软件,但介于当时的用户需求所采用的编程语言与现开发综合分析平台的编程语言完全不同,导致综合分析平台无法直接调用使用。而要正常的进行程序开发,所有的系统结构、程序代码均包括目标特性数据库和目标模型库都得重新设计、重新编程,需要的时间和工作量巨大。现有条件下采用动态链接库文件方法可以实现软件的协同开发但无法将现有的目标特性数据库和目标模型库做成DLL文件进行调用,若通过优化程序结构或应用基于设计模式的程序结构设计方法只是基于现有需求固定条件下的程序优化,对于软件开发的效率提升没有实际作用,而一旦产生新的需求又得重复进行整个软件开发的工作。

通过在引信综合分析平台应用插件结构方法,将目标电磁特性和目标激光特性仿真计算模块、目标特性数据库、目标模型库、测试多媒体信息库等所有的功能模块均以插件形式实现,主程序只负责处理与插件的通信及调用插件的功能[7]。主程序和各个插件功能模块独立开发,从而使软件开发能够协同进行。其中对于原有的目标特性数据库和目标模型库软件无需重新开发,只需依据它与主程序的接口规则封装成插件模块后,综合分析平台主程序即可调用使用。既满足了用户的新的功能扩展需求,又缩短了软件开发的周期。当用户需求产生变化时,只需对对应的插件功能模块进行修改、优化,无需对整个系统的结构框架和程序代码进行修改和重新编译。若要实现功能的扩展需求,只需按照接口协议开发新的插件功能模块,再通过主程序再行导入调用即可。图3为应用插件结构方法后引信综合分析平台主界面。应用插件结构方法后引信综合分析平台的系统功能的完善及系统的升级,均是通过各自独立的插件功能模块的更新、完善实现。由此协同开发和需求变化带来的问题都得到了顺利的解决。

图3 引信综合分析平台主界面Fig.3 The main interface of f use comprehensive analysis platfor m

对比之前未应用插件结构方法的引信综合分析平台,现在的引信综合分析平台:1)解决了软件开发过程中的协同开发问题。之前的引信综合分析平台要实现系统的协同开发,开发人员必须采用统一的编程语言。各自编写完成的程序模块要不断地逐级联调,方可进行后续的系统集成。而一旦其中的一个模块出现错误或修改,所有的联调、集成工作就要重复进行。而应用插件结构方法后,开发人员只需按照接口协议各自开发独立的插件功能模块,对于编程所采用的语言没有统一要求。后期系统集成简化为主程序对插件模块的调用。而某个模块的错误不会导致整个系统的失败,修改、重新的编译也仅仅局限在本模块。2)解决了用户需求变化时软件系统无法及时响应的问题。之前的引信综合分析平台要实现对系统的修改、功能扩充,就必须对系统的所有程序代码重新编译、重新生成。而应用插件结构方法后,修改及功能的扩充只是对现有对应插件功能模块的重新编译、重新生成,对软件系统及其他插件功能模块均不产生影响。整个系统可以根据用户变化的需求,相应的通过插件模块的功能完善和功能扩充实现整个软件系统不断的完善、更新。

4 结论

本文引入了一种基于插件体系结构的方法。该方法在不改变软件原有结构的前提下,通过修改、升级插件来解决需求变化时软件的功能完善和程序编制时的协同开发。通过在引信综合分析平台系统开发中应用此结构方法,证明这是一种能有效解决软件开发过程中协同开发和需求变化的方法。

[1]宋清昆,孙元娜,王学伟,赵阳.组态软件实时数据库系统的设计[J].自动化技术与应用,2008,27(1):55-57.SONG Qingkun,SUN Yuanna,WANG Xuewei,ZHAO Yang.RTDBS of a configuration soft ware[J].Techniques of Auto mation & Applications,2008,27(1):55-57.

[2]袁魏华,韩裕生,张伟伟,等.Lab VIEW平台下调用DLL实现PC/104数据采集[J].微计算机信息,2008,24(4-2):57-61.YUAN Weihua,HAN Yusheng,ZHANG Weiwei,et al.Realization of data acquisition based on calling DLL in lab VIEW[J].Micro Computer Infor mation,2008,24(4-2):57-61.

[3]黄明志.在C++ Builder中编写和调用DLL[J].仲恺农业技术学院学报,2005,18(3):29-33.HUANG Mingzhi.Creating and linking DLL in C++Builder[J].Jour nal of Zhongkai University of Agriculture and Technology,2005,18(3):29-33.

[4]陈一明.结构化程序与程序结构化[J].茂名学院学报,2008,18(1):42-44.CHENG Yi ming.Structured programs and program str uct uralization[J].Jour nal of Mao ming University,2008,18(1):42-44.

[5]王浩.基于设计模式的程序结构设计[J].中国科技信息,2004,24:29-31.WANG Hao.Program framework plan based on design mode[J].China Science And Technology Infor mation,2004,24:29-31.

[6]刘瑶.插件技术初步研究[J].扬州教育学院学报,2003,21(3):35-37.LIU Yao.Research of delphi plugin[J].Journal of Yangzhou College of Education,2003,21(3);35-37.

[7]焦景欣,代亮,胡含凯,等.采用双缓存的视景仿真图像显示效果改善方法[J].探测与控制学报,2010,32(5):92-95.JIAO Jingxin,Dai Liang,HU Hangkai,et al.To i mprove the display of visual scene si mulation by using double buffer[J].Journal of Detection & Control,2010,32(5):92-95.

猜你喜欢
主程序功能模块插件
自动升级程序在船舶监测系统中的应用
自编插件完善App Inventor与乐高机器人通信
浅谈数控铣削技术代码程序的嵌套方式研究
基于OSGi的军用指挥软件插件机制研究
电控冰箱软件模块化设计
时光倒流 换回PotPlayer老图标
基于jQUerY的自定义插件开发
商业模式是新媒体的核心
基于ASP.NET标准的采购管理系统研究
高校二手交易网络平台功能及技术框架分析与设计