论文部分内容阅读
摘 要:本文作者结合自己多年的实际工作经验介绍了计算机软件设计中插件技术的开发应用情况,并以图形标绘软件的研制过程为例进行了详细分析,同时提出了自己的看法和个人意见,仅供参考。
关键词:计算机;软件;设计;插件
1前言
随着计算机技术的飞速发展,人们已经不再满足于开发有限静态功能的软件,在一定的意义下可以与来自用户的新的需求对接是对现代软件的要求,也就是说可以实现软件功能动态的加载。相信都有这种经历。就是自己做的一个系统软件虽然满足了以前用户的需要,但新的用户需要在此基础上进行功能调整,增加其他的功能。如果重新构建这个软件系统就需要花费很大的时间和精力,如果在原有基础上改进则又碰到结构复杂、改进困难等问题。这时候就会想如果程序也象搭积木似的,将增加的模块直接插在原有结构上就好了,这就是在设计系统软件时所说的插件概念。
2基于插件的应用系统
2.1基于插件的应用系统体系结构
基于插件的应用系统一般能够直接调用插件程序,插件安装后就成为该系统的一部分,可以完成特定的功能、处理特定的文件。一个完整的基于插件的应用系统共分2部分:插件主控程序(含插件调度核心模块)以及插件池(存放所有插件)。主控程序通过核心模块提供插件管理功能,主要包括:①注册及卸载插件:插件在使用之前必须注册或存放于特定的路径中,主控程序根据相关配置参数对插件完成初始化工作;②启用及禁用插件:主控程序可以根据用户指令。对某些已装载的插件予以启用或禁用;③显示插件信息:包括插件描述,开发者信息,版本和版权声明等;④配置插件参数:插件本身的运行需要对某些参数进行定制;根据模块规划,插件实现特定的功能并将接口暴露出来,根据需要。可能还需要调用主控程序提供的方法以操作资源或数据。
2.2基于插件的软件开发方法
插件化软件开发将软件系统分成1个主系统和若干个子系统。主系统作为1个容器,为插件提供运行的环境,而将这些子系统做成相对独立的插件。插件化软件系统可以划分为主框架和插件2个部分。主框架是系统的核心和基础,它的主要功能应为内核功能和插件管理功能。插件所完成的功能是对主框架功能的扩展与补充。在确定用插件化方式开发一个系统后,需分析哪些功能应该由主框架实现,而哪些功能应该由插件实现。
为实现主框架/插件结构的软件设计,需要定义2个标准接口:① 主框架实现的主框架扩展接口;② 插件实现的插件接口。主框架扩展接口完全由主框架实现,插件只是调用和使用.插件接口完全由插件实现,主框架也只是调用和使用。主框架扩展接口实现插件向主框架方向的单向通信,插件通过主框架扩展接口可获取主框架的各种资源和数据,包括各种系统句柄.程序内部数据以及内存分配等。插件接口提供主框架向插件方向的单向通信,主框架通过插件接口调用插件所实现的功能,读取插件处理数据等。主框架插件处理功能包括插件注册、管理和调用。插件注册按照某种机制首先在系统中搜索已安装插件,然后将搜索到的插件注册到主框架上,并在主框架上生成相应的调用机制;插件管理完成插件与主框架的协调,为各插件在主框架上生成管理信息以及进行插件的状态跟踪;插件调用则为调用各插件提供相应的功能。
3插件技术的应用
3.1可行性分析
图形标绘软件的主要功能有2大部分:通信资源分布图的制作及管理和网络拓扑示意图的编辑及管理。此外。该软件需要满足一些用户的特殊需求:①需要具备不同业务用户标绘能力:当不同用户(如无线网络设备管理员、有线网络设备员)面对该软件时需要获得不同的业务资源符号以备其进行标绘管理;②需要具备后期升级能力:由于软件设计完成后要扩展其应用领域到不同应用环境,该软件需要在后期新增部分功能,甚至有可能把扩展软件功能的能力提供给用户或第三方厂商,以达到最大限度的功能扩展;③改进软件不应影响既有功能:该软件主要功能相对固定,不需要更改,可以固化为主程序,而改进软件只需要增加或去掉相应的功能调用,如采用”即插即用”的调用方式比改进原有功能对系统的影响要小的多;④需在短期内完成开发:该软件的开发任务工期紧,工作量大,如果将软件分为主件、插件,并将各个插件分配给不同的成员开发。那么在开发中的复杂度势必大大降低。开发的时间也会减少。综上所述,图形标绘软件适合采用插件化体系结构进行设计开发。
3.2体系结构
软件中对于各类资源的关联以及生成示意图后的各种调整和修饰功能很多很琐碎.而且在后续的升级改造中很可能会因为用户的需求有所变动,因此考虑将这部分的功能以插件形式实现,而对于相对固定的资源布设、定位、标绘、图形的保存和打开等功能将在主框架程序中实现。根据主程序框架与插件的结构化分析原则,对于该软件系统可以定义以下几个主要插件:①示意图整饰插件:将生成好的示意图加边框、图例、调整颜色、隐藏/显示图标:②图形处理插件:批量调整资源的相对位置,左对齐、右对齐、上对齐、下对齐等;③资源分布插件:将选中资源进行矩形分布、树状分布、圆型分布等;④线路调整插件:调整连接线的颜色、线型、宽度用以标识线路的连接属性(开通、损坏、占用、空闲、申请等);⑤网系选择插件:在不同通信网系间切换。
3.3设计方法
在确定系统的需求和体系结构以后其具体的设计步骤如下:① 确定系统的基本功能和插件所要完成的系列化功能或扩展功能;② 定义主程序扩展接口和插件接口;③ 完成主程序设计,主要是对插件处理功能;④ 向插件开发者提供主程序(执行代码),公布扩展接口和插件要实现的接口,可能包括开发用的软件开发工具包;⑤ 插件开发者按要求开发插件,实现插件接KI,并提供主程序测试用插件;⑥ 主程序设计者继续完成内核功能,并可随时公布新增加扩展接口和插件接口;⑦ 实现步骤④一⑥的良性循环,将整个软件系统不断向前进化。
3.4关键技术及解决方案
图形标绘软件是以制图为核心功能的软件,需要布设(显示)多种网系资源(即资源符号)。当所需显示的资源数量比较大时,网系内部的资源节点、线路或各个网系之间的资源会在态势图上重叠显示,此时在图上无法看清资源的分布情况且显示刷新速度降低。针对这种情况,在设计时增加了一种显示控制优化策略,制定了不同地图比例尺下各个网系及网系内节点的优先级。在某个比例尺下,资源重叠显示的区域根据优先级程度,优先选择优先级高的资源节点显示,从而使资源符号显示速度提高且不至重叠。优先级包括网系间的显示优先级以及网系内的节点显示的优先级。当地图放大(重叠现象不明显)时,优先级较低的节点逐步显示出来,这样即保证了图形显示的可视性,又提高了显示效率,解决了复杂图形环境下的显示问题。
具体的冲突显示判断方法如下:
Bi代表第i个冲突资源(O Level(Bi)=h×( W网系(Bi)+ W节点(Bi))
其中h取信为1或0,根据该标绘元素是否存当前比例尺下显示而定。W网系(Bi)为该元素所在的网系的优先级权值,W节点(Bi)为该元素在网系内节点类别的优先级权值。根据实际情况得知,不存在网系权值和节点权值相同的地理位置的资源(重复建设),也就是说根据Level(Bi)求出的2个冲突资源的优先级相比只有大于和小于2种情况,所以利用以上的方法即可实现图形资源布设功能并达到优化显示的效果。
在主程序/插件结构下开发的图形标绘软件,把软件系统划分成一个个的模块,每个模块提供特定的功能。其中主要功能或者说稳定的通用的功能利用主程序进行实现,而对于那些并非所有用户都需要的功能则以插件的方式来实现。这样增强了软件可扩展性,提高了开发效率,节约了资源,提高了软件的重用性,同时也给软件增加了新的生命力。
4结束语
插件化的软件体系结构组成清晰、方便扩展、易于维护,很好地实现了软件开发过程中软件模块的“即插即用”。总的来看,基于插件的应用系统存在诸多优势,一定会为系统的设计者带来更多的应用前景和用户体验,实现软件的插件化势必会给电子信息系统的产品带来好处,有利于后续的推广和应用。
关键词:计算机;软件;设计;插件
1前言
随着计算机技术的飞速发展,人们已经不再满足于开发有限静态功能的软件,在一定的意义下可以与来自用户的新的需求对接是对现代软件的要求,也就是说可以实现软件功能动态的加载。相信都有这种经历。就是自己做的一个系统软件虽然满足了以前用户的需要,但新的用户需要在此基础上进行功能调整,增加其他的功能。如果重新构建这个软件系统就需要花费很大的时间和精力,如果在原有基础上改进则又碰到结构复杂、改进困难等问题。这时候就会想如果程序也象搭积木似的,将增加的模块直接插在原有结构上就好了,这就是在设计系统软件时所说的插件概念。
2基于插件的应用系统
2.1基于插件的应用系统体系结构
基于插件的应用系统一般能够直接调用插件程序,插件安装后就成为该系统的一部分,可以完成特定的功能、处理特定的文件。一个完整的基于插件的应用系统共分2部分:插件主控程序(含插件调度核心模块)以及插件池(存放所有插件)。主控程序通过核心模块提供插件管理功能,主要包括:①注册及卸载插件:插件在使用之前必须注册或存放于特定的路径中,主控程序根据相关配置参数对插件完成初始化工作;②启用及禁用插件:主控程序可以根据用户指令。对某些已装载的插件予以启用或禁用;③显示插件信息:包括插件描述,开发者信息,版本和版权声明等;④配置插件参数:插件本身的运行需要对某些参数进行定制;根据模块规划,插件实现特定的功能并将接口暴露出来,根据需要。可能还需要调用主控程序提供的方法以操作资源或数据。
2.2基于插件的软件开发方法
插件化软件开发将软件系统分成1个主系统和若干个子系统。主系统作为1个容器,为插件提供运行的环境,而将这些子系统做成相对独立的插件。插件化软件系统可以划分为主框架和插件2个部分。主框架是系统的核心和基础,它的主要功能应为内核功能和插件管理功能。插件所完成的功能是对主框架功能的扩展与补充。在确定用插件化方式开发一个系统后,需分析哪些功能应该由主框架实现,而哪些功能应该由插件实现。
为实现主框架/插件结构的软件设计,需要定义2个标准接口:① 主框架实现的主框架扩展接口;② 插件实现的插件接口。主框架扩展接口完全由主框架实现,插件只是调用和使用.插件接口完全由插件实现,主框架也只是调用和使用。主框架扩展接口实现插件向主框架方向的单向通信,插件通过主框架扩展接口可获取主框架的各种资源和数据,包括各种系统句柄.程序内部数据以及内存分配等。插件接口提供主框架向插件方向的单向通信,主框架通过插件接口调用插件所实现的功能,读取插件处理数据等。主框架插件处理功能包括插件注册、管理和调用。插件注册按照某种机制首先在系统中搜索已安装插件,然后将搜索到的插件注册到主框架上,并在主框架上生成相应的调用机制;插件管理完成插件与主框架的协调,为各插件在主框架上生成管理信息以及进行插件的状态跟踪;插件调用则为调用各插件提供相应的功能。
3插件技术的应用
3.1可行性分析
图形标绘软件的主要功能有2大部分:通信资源分布图的制作及管理和网络拓扑示意图的编辑及管理。此外。该软件需要满足一些用户的特殊需求:①需要具备不同业务用户标绘能力:当不同用户(如无线网络设备管理员、有线网络设备员)面对该软件时需要获得不同的业务资源符号以备其进行标绘管理;②需要具备后期升级能力:由于软件设计完成后要扩展其应用领域到不同应用环境,该软件需要在后期新增部分功能,甚至有可能把扩展软件功能的能力提供给用户或第三方厂商,以达到最大限度的功能扩展;③改进软件不应影响既有功能:该软件主要功能相对固定,不需要更改,可以固化为主程序,而改进软件只需要增加或去掉相应的功能调用,如采用”即插即用”的调用方式比改进原有功能对系统的影响要小的多;④需在短期内完成开发:该软件的开发任务工期紧,工作量大,如果将软件分为主件、插件,并将各个插件分配给不同的成员开发。那么在开发中的复杂度势必大大降低。开发的时间也会减少。综上所述,图形标绘软件适合采用插件化体系结构进行设计开发。
3.2体系结构
软件中对于各类资源的关联以及生成示意图后的各种调整和修饰功能很多很琐碎.而且在后续的升级改造中很可能会因为用户的需求有所变动,因此考虑将这部分的功能以插件形式实现,而对于相对固定的资源布设、定位、标绘、图形的保存和打开等功能将在主框架程序中实现。根据主程序框架与插件的结构化分析原则,对于该软件系统可以定义以下几个主要插件:①示意图整饰插件:将生成好的示意图加边框、图例、调整颜色、隐藏/显示图标:②图形处理插件:批量调整资源的相对位置,左对齐、右对齐、上对齐、下对齐等;③资源分布插件:将选中资源进行矩形分布、树状分布、圆型分布等;④线路调整插件:调整连接线的颜色、线型、宽度用以标识线路的连接属性(开通、损坏、占用、空闲、申请等);⑤网系选择插件:在不同通信网系间切换。
3.3设计方法
在确定系统的需求和体系结构以后其具体的设计步骤如下:① 确定系统的基本功能和插件所要完成的系列化功能或扩展功能;② 定义主程序扩展接口和插件接口;③ 完成主程序设计,主要是对插件处理功能;④ 向插件开发者提供主程序(执行代码),公布扩展接口和插件要实现的接口,可能包括开发用的软件开发工具包;⑤ 插件开发者按要求开发插件,实现插件接KI,并提供主程序测试用插件;⑥ 主程序设计者继续完成内核功能,并可随时公布新增加扩展接口和插件接口;⑦ 实现步骤④一⑥的良性循环,将整个软件系统不断向前进化。
3.4关键技术及解决方案
图形标绘软件是以制图为核心功能的软件,需要布设(显示)多种网系资源(即资源符号)。当所需显示的资源数量比较大时,网系内部的资源节点、线路或各个网系之间的资源会在态势图上重叠显示,此时在图上无法看清资源的分布情况且显示刷新速度降低。针对这种情况,在设计时增加了一种显示控制优化策略,制定了不同地图比例尺下各个网系及网系内节点的优先级。在某个比例尺下,资源重叠显示的区域根据优先级程度,优先选择优先级高的资源节点显示,从而使资源符号显示速度提高且不至重叠。优先级包括网系间的显示优先级以及网系内的节点显示的优先级。当地图放大(重叠现象不明显)时,优先级较低的节点逐步显示出来,这样即保证了图形显示的可视性,又提高了显示效率,解决了复杂图形环境下的显示问题。
具体的冲突显示判断方法如下:
Bi代表第i个冲突资源(O Level(Bi)=h×( W网系(Bi)+ W节点(Bi))
其中h取信为1或0,根据该标绘元素是否存当前比例尺下显示而定。W网系(Bi)为该元素所在的网系的优先级权值,W节点(Bi)为该元素在网系内节点类别的优先级权值。根据实际情况得知,不存在网系权值和节点权值相同的地理位置的资源(重复建设),也就是说根据Level(Bi)求出的2个冲突资源的优先级相比只有大于和小于2种情况,所以利用以上的方法即可实现图形资源布设功能并达到优化显示的效果。
在主程序/插件结构下开发的图形标绘软件,把软件系统划分成一个个的模块,每个模块提供特定的功能。其中主要功能或者说稳定的通用的功能利用主程序进行实现,而对于那些并非所有用户都需要的功能则以插件的方式来实现。这样增强了软件可扩展性,提高了开发效率,节约了资源,提高了软件的重用性,同时也给软件增加了新的生命力。
4结束语
插件化的软件体系结构组成清晰、方便扩展、易于维护,很好地实现了软件开发过程中软件模块的“即插即用”。总的来看,基于插件的应用系统存在诸多优势,一定会为系统的设计者带来更多的应用前景和用户体验,实现软件的插件化势必会给电子信息系统的产品带来好处,有利于后续的推广和应用。