文献[ 14] 按照现行的系统, 对体系布局气势气魄举办了分类,认为常见的有: 管道和过滤器气势气魄、客户/ 处事器气势气魄、面向工具气势气魄、基于事件气势气魄等, 其它典范布局尚有: 分层系统、客栈、表驱动表明器、漫衍式历程、主措施/ 子措施组织、状态转换系统、历程节制系统等. 除此之外, 尚有更多的专门应用规模的软件体系布局, 如航空节制系统、智能网等, 以及由差异气势气魄的体系布局构成的异质体系布局[ 13] .
4) 接口的兼容性与节制打点. 一般来说, 对付差异的插件系统, 应设计差异的接口, 但有时新的接口只是在已有接口上增加新的本领, 因此但愿支持新接口的插件也能支持原有接口的挪用, 这就需要新的接口可以或许兼容以前的版本. 同时也必需对接口的版本举办打点节制, 以使挪用时不产生杂乱以及此后的开拓中能利便地实现对旧接口的兼容.
图5 “平台/ 插件”气势气魄软件的开拓进程
3. 4. 2 对接口设计的约束
统一建模语言UML ( Unified Mo deling Languag e) 是由Gr ady Bo och, Jam es Rumbaugh 和Ivar Jaco bso n 提出, 并由OMG( Object Manag ement Gr oup) 组织采用作为尺度的, 是软件界的第一个统一的建模语言. 它是一种界说精采、易于表达、成果强大且普遍合用的建模语言, 是第三代用来为OO( Object -Or iented) 开拓举办说明、可视化和体例文档的要领.
将一个软件系统设计为P/ P 气势气魄, 只要设计好接口类型和界说好接口类, 差异的插件模块就可以由差异的人员来开拓, 从而到达充实操作人手, 使开拓可以或许并行举办的目标. 别的, 对付软件中大概会常常产生变革的部门, 或一时难于全部开拓完成的部门, 也可以用插件实现, 便于此后增加新的成果或修改. 事实上, 只要设计适当, 一个软件险些可以全部由插件组成, 如其每一项菜单、对话框、按钮、成果模块都可以是插件. 因此, P/ P 气势气魄可以或许在大量的应用中回收, 并会成为一种重要的软件体系布局.
毗连件可以当作是系统的非凡构件. 可以看出, 接口类型是虚拟的类, 在P/ P 气势气魄的软件中, 是通过接口( 平台扩展接口和插件接口) 来浮现的. 这一特点切合软件体系布局对毗连件的界说.
3) 多个插件之间、插件僻静台之间不会产生斗嘴.
基于上述阐明, 本文对软件体系布局气势气魄的观念界说如下.
2. 2 软件体系布局气势气魄及其界说
插件受到的约束是:
3. 1 软件插件技能及其范例
有很多这种“平台+ 插件”的软件系统实例. 如Adobe 公司的图形处理惩罚软件Pho tosho p. 为了提高图形的处理惩罚成果,Pho toshop 提供了尺度插件开拓接口, 这样, 第三方软件开拓商就可以按尺度插件接口开拓独具特色的图形成果扩展, 开拓的插件安装后, 系统即可利用, 而不影响主措施和其它插件. 通过这种要领, Pho tosho p 扩展了成千上万的滤镜( Filter )成果插件. 除Phot oshop 外, 利用插件技能的软件尚有IE、Netsca pe 和Macr omedia 公司的系列软件, 以及Micro so ft 的Visual Studio 开拓东西及Office 办公软件等. 连年在网络应用软件中, 软件插件技能更是获得了遍及的应用. 如著名的网络裂痕扫描软件Nessus 就操作了插件技能来实现裂痕检测进攻插件, 使得有新裂痕呈现时可以利便地更新进攻插件库,以便扩展软件的检测范畴和本领.
另一部门为成果扩展或增补模块, 可界说为“插件( Plug-in) ”.
为了论述利便, 简称为“P/
要害词: 平台/ 插件; 软件体系布局; 体系布局气势气魄; 体系布局发明; UM L1 引 言
[ 9 ] Luo Hua-jun, Tang Zhi-s ong, Zheng Jian-dan . Visu al archi tecturedescr ipti on language XYZ/ ADL[ J] . Jour nal of S oftw are,2000, 11( 8) : 1024-1029.
从“气势气魄”的自然语言语义上看, 体系布局气势气魄应该是一些对软件组成具有整体性、普遍性、一般性的布局和布局干系的要领. 在软件设计中, 遵循这些要领的组成原则, 有利于软件的开拓和维护.
[ 3 ] David Garl an, M ary S haw. An int roduct ion t o s of tw ar e architecture[A] . In V. Ambriol a and G. Tort ora, ed. , Advances inSof tware Engineer ing and Know ledge Engin eering[ M] . VolumeI, World Sci ent if ic Publis hing Company, New Jers ey, 1993.
1) 雷同批呼吁的简朴插件( 文本插件) . 这种插件的自由度很是低. 利用这种要领的软件有Win Hacker 等. 运行这种插件后, 会一步步要求用户举办选择/ 输入, 最后按照用户的输入来执行一系列事先界说好的操纵. 这种插件一般是文本文件, 成果较量单一, 可扩展性极小. 利益是插件的建造较量容易, 纵然是对措施设计相识不多的人也可以建造, 如WinAmp 的Skin.
3 “平台/ 插件”布局应用措施的软件体系布局及其气势气魄
连年来, 软件开拓中呈现的“平台+ 插件”的软件结构要领, 使得宣布后的软件产物可以利便地通过安装插件模块而扩展其成果, 在我们的事情中也应用了这种设计思想[ 1] . 然而, 迄今为止, 未见资料将这种布局从软件体系布局( Software Ar chitecture) 的高度举办提炼和描写, 使得软件开拓人员只能依靠各自领略举办实践, 实现插件的要领也各不沟通.
3) 平台与多插件间的协调通信. 这是接口所要完成的主要成果. 系统对插件的挪用以及使多个插件在系统中协调地事情都是通过彼此间通信来完成的. 这一成果对多个插件的并行挪用与单个插件的可重插入本领有较大的影响.
插件的本质是在不修改措施主体的环境下对软件成果举办扩展和增强. 对付回收了“平台+ 插件”布局的应用措施, 当插件的接口果真后, 任何公司或小我私家都可以建造本身的插件来办理一些操纵上的未便或增加新的成果, 也就是实现真正意义上的“即插即用”软件开拓. 可见, 具有这种布局的软件分为两部门, 一部门为措施的主体或主框架, 可界说为“平台( Plat form)”;
1) 智能化识别插件. 系统中大概会插入许多插件, 而这些插件中的大大都是需要在系统平台完成后在用户端动态地插入( 注册) 或去除( 注销) 的, 甚至个中的一部门大概是由第三方开拓的, 因而, 它们的成果、需要的资源都不能预知, 那么接口就必需在插件插入到系统中时对插件举办识别. 这种识此外进程包罗: 得到插件的信息; 判定插件是否与当前接口气合, 以抉择是否将其插入到系统中; 从得到的信息中阐明插件所需要的资源, 并为其建设运行情况, 使插件可以或许被正确地挪用.
AS = abstr act( SA ??L ay er , A ngle- of - V iew ) ,且S A = instance( A S )
UML 代表了OO 要领的软件开拓技能的成长偏向, 其融入了软件工程规模的新思想、新要领和新技能, 而且, UM L 的浸染域不限于支持OO 的阐明与设计, 还支持从需求阐明开始的软件开拓的全进程.
界说2. 软件体系布局气势气魄是在某一视角和条理下的软件体系布局. 用SA 暗示软件体系布局, AS 暗示SA 的体系布局气势气魄, 则
今朝各用户软件规模所应用的插件技能可归纳为如下三种范例:
P/ P st yle) .
2) 由插件所实现的“插件接口”.
图3 平台的组成
摘 要: 体系布局发明是软件体系布局研究规模的一个重要偏向. 连年呈现的“平台+ 插件”软件设计要领, 使得宣布后的软件产物可以利便地通过安装插件模块而扩展其成果. 然而, 迄今为止, 未见资料将这种布局从软件体系布局的高度举办提炼和描写. 本文提出“平台+ 插件”的软件设计要领是一种软件体系布局气势气魄, 并将其称为“平台/ 插件( Platfo rm / Plug-in) ”气势气魄, 简写为“P/ P 气势气魄”. 由于软件体系布局和体系布局气势气魄的观念还没有一个尺度的界说, 文中首先界说了本文利用的模子和观念; 研究了“平台/ 插件”布局应用措施的特点和分类, 阐明白该类措施的架构, 在本订亲义的软件体系布局模子的基本上, 用统一建模语言UM L 描写了P/ P 体系布局气势气魄及P/ P 气势气魄软件的开拓进程. 本文事情为需要动态扩展成果的大型软件开拓提供了一种可复用的体系布局气势气魄, 可以认为, P/ P 气势气魄是可扩展和可增量进级软件系统的规模体系布局模子.
总之, P/ P 气势气魄的软件设计具有以下利益: 1) 实现真正意义上的软件部件的“即插即用”;
软件体系布局气势气魄是指差异系统所拥有的配合的布局组织模式和语义特性. 一种体系布局气势气魄抉择了部件、毗连件和一组如何将它们团结在一起的约束限制, 包罗拓扑限制( 如无轮回等) 、执行语义限制( 如过滤器不能共享等) . 实质上, 一种体系布局气势气魄抉择了一种体系布局的框架. 文献[ 13] 给出了如下的界说:
2) 软件体系布局可以描写软件的差异抽象条理. 软件的设计进程是体系布局的慢慢细化进程.
软件体系布局的研究今朝还处于初始阶段, 对什么是软件体系布局还没有一个尺度的、为各人所普遍接管的界说. 一般认为, 一个软件系统的体系布局界说了构成系统的计较构件和构件之间的彼此浸染干系, 在体系布局条理的构件如: 客户、处事器、数据库、过滤器等; 构件之间的交互可以长短常简朴的, 如进程挪用、共享数据会见、动静毗连等, 也可以是巨大并具有富厚语义的, 如客户/ 处事器协议、数据会见协议、异步事件广播和管道等[ 7] .
2 软件体系布局与体系布局气势气魄的观念
考查上述体系布局气势气魄, 可以发明, 体系布局气势气魄是基于差异的视角或条理抽象出来的, 差异气势气魄之间经常具有交错现象. 譬喻, 主措施和子措施、面向工具险些是今朝一切软件构件、毗连件设计和实现的基本; 分层系统的条理布局气势气魄险些是一切巨大系统的根基布局要领; 事件系统是一种受操纵系统打点节制的部件毗连方法; 客栈是部件的设计布局; 管道/ 过滤器、客户/ 处事器、表明器等则是非凡的系统布局要领.
综合起来, 本文对软件体系布局的观念界说如下.
界说1.
3. 2 “平台+ 插件”布局应用措施架构阐明
软件插件技能是现代软件设计思想的浮现. 当一个软件工程项目较大可能是对时间要求较量紧时, 需要几小我私家, 十几小我私家, 甚至是上百小我私家协作举办软件开拓与设计, 这时一个较量棘手的问题就是如何将若干人所编写的软件代码( 有大概是链接库、组件) 举办无缝地集成, 即使举办源代码集成是较量传统也较量成熟的方法, 适当利用链接库或组件, 也可淘汰源代码的泄露, 但常常的环境是每一次的措施集成和代码维护都需要从头编译与链接源代码和从头宣布软件. 那么, 是否存在一种要领, 使得可以将需要开拓的方针软件分为若干成果部件, 各部件只要遵循尺度接口划定, 开拓完成后举办整个软件的集成时, 只需要将部件举办组装, 而不是集成源代码或链接库举办编译与链接; 需要新的成果组件时也只需要按划定独立开拓部件, 完成后组装到原软件平台中即可利用? 谜底是必定的, 这就是“平台+ 插件”的软件设计要领.
软件体系布局是大型软件系统与软件产物开拓中的要害技能之一, 已涌现出一系列研究成就[ 2-7] . 在软件工程实践中,人们越来越深刻地认识到, 跟着软件系统局限和巨大性的增长, 系统总体布局设计和说明的重要性己远远高出特定算法和数据布局的选择, 精采的体系布局对担保系统的乐成至关重要[7] .
Fig. 5 The development pro cess o f P/ P style softw ar e文献[ 1] 设计了一个P/ P 气势气魄的软件系统模子, 文献[ 15] 用COM 作为毗连件接口类型实现了一个P/ P 气势气魄的软件系统原型. 以上事情可作为P/ P 气势气魄的应用示例, 篇幅所限, 本文不再赘述.
4 “平台/ 插件”气势气魄软件的开拓进程
在举办软件开拓时, 当确定用“平台+ 插件”的软件布局之后, 就要阐明哪些部门成果由主体完成, 即平台的根基成果, 哪些部门成果由插件完成, 即需要扩展的插件成果. 平台所完成的成果应为一个软件系统的焦点和基本, 这些根基成果既可为用户利用, 也可为插件利用. 因此, 又可以把平台的根基成果分为两个部门: 内核成果和插件处理惩罚成果. 平台的内核成果是整个软件的重要成果, 一个软件的大部门成果应由内核成果完成. 平台的插件处理惩罚成果用于扩展平台和打点插件, 为插件哄骗平台、平台与插件通信提供尺度平台扩展接口. 插件所完成的成果是对平台成果的扩展与增补, 一般插件完成系列化成果( 譬喻, Pho tosho p 的滤镜插件完成对图形的非凡结果处理惩罚) , 这些成果具有某些共性, 可以举办会合打点,而且可以界说出尺度的插件接口.
2) 当在系统中插入插件后, 系统的成果获得扩展或进级;
由界说2 知, 软件体系布局气势气魄是在某一视角和条理下的软件体系布局, 我们把具有“平台+ 插件”布局的应用措施的软件体系布局称为具有“平台/ 插件体系布局气势气魄( Platform / Plug-in ar chitecture sty le )”,
图4 插件类的通用化干系
2) 利用一种非凡的剧本语言来实现的插件( 剧本插件) .
“平台扩展接口”完全由平台实现, 插件只是挪用和利用;“插件接口”完全由插件实现, 平台也只是挪用和利用. 平台扩展接话柄现插件向平台偏向的单向通信, 插件通过平台扩展接口可获取主框架的各类资源和数据, 可包罗各类系统句柄,措施内部数据以及内存分派等. 插件接口为平台向插件偏向的单向通信, 平台通过插件接口挪用插件所实现的成果, 读取插件处理惩罚数据等.
从与平台的干系来看, 插件可有两种: 可以独立运行的插件和不能独立运行的插件. 前者不依赖于平台, 即既可以作为插件插入平台, 作为平台成果的扩展, 也可以独立运行完成某方面的成果; 后者则只能插入平台发挥浸染而不能独立运行,因此是依赖于平台的. 我们用类“自主插件”和“非自主插件”
1) 软件体系布局可以用一个三元组来描写: SA= { 构件( components) , 毗连件( co nnecto rs ) , 约束( co nst rains ) } . 即:
2. 1 软件体系布局的界说
3. 3 “平台+ 插件”是一种软件体系布局气势气魄从上文接头可知, 软件体系布局的根基元素是“构件”.
按照上节阐明, “平台”和“插件”都具备上述构件特征, 且彼此之间有明晰的通信机制, 因此, 可以作为体系布局元素来展开研究.
这种插件较量难写, 需要软件开拓者本身建造一个措施表明内核. 好比微软的宏就是这种范例的, Micr oso ft Office 提供了开拓者用于扩展帮助成果的内置VBScript ( VBA) . 这种要领的利益在于建造插件时不需要利用其它东西, 软件自己就可以实现, 普遍呈现于各类办公自动化软件中. 网络裂痕扫描软件Nessus 中利用的插件也属这种范例.
2) 在二进制级上集成软
另外, 好的毗连件不只可以或许满意成果模块扩展的需要, 还应该可以或许满意内核动态进级的需求. 可见, 在P/ P 气势气魄的系统中, 接口类型的选择和接口的设计是要害.
3) desig n criteria( 设计准则) 包罗了组件和毗连件的利用、选择及它们之间的互连及约束限制等.
P/ P 气势气魄的软件体系布局如图2 所示, 图中给出了三种类此外根基构件, 个中, 平台和插件是组成软件的实体构件,而接口类型浮现的是平台和插件之间的通信方法, 是虚拟的类, 最终是由平台和插件实现的, 因此, 从软件体系布局的角度, 接口类型就是P/ P 气势气魄的毗连件.
代表上述两类插件, 三者之间的干系如图4 所示. 这样设计的目标, 是使得系统具有更大的机动性, 一些独立开拓并利用的已有系统, 增加与平台通信的接口, 即可作为插件插入到平台中, 以扩展平台的成果或与其它子系统集成. 在实际中, 这种设计对付巨大系统的结构长短常有益的.
5 竣事语
也就是说, 对付同一种软件体系布局, 从差异的视角和条理大概抽象出差异的体系布局气势气魄.
个中, L ay er 暗示抽象的条理, A ng le- of - View 暗示抽象的视角.
[ 1 ] Li J une. A novel model of n etw ork s ecurit y archit ecture and s olutions for it s key is sues[ D] . Wuhan Universit y, 2004.
Fig . 1 The fr amewo r k o f platfo rm / plug-in soft war e用UM L 组件图描写的“平台+ 插件”布局应用措施的架构如图1 所示.
Ref erences:
1) com po nents 是组件的荟萃, 它们提供了一个系统所需的根基成果和操纵, 组成了一个系统的根基框架;2) connect or s 是毗连件的荟萃, 暗示两个以上组件之间的交互方法, 界说了组件交互的法则而且也给出了一些实现的机制, 如协议( 毗连的交互特性) 、数据模式( 通信进程中互换的数据范例) ;
3. 4. 1 P/ P 气势气魄的软件体系布局
1) 由平台所实现的“平台扩展接口”;
软件体系布局气势气魄可由一个三元组SAS = { components,co nnecto rs, desig n cr iter ia} 来暗示, 个中:
平台插件处理惩罚成果包罗插件注册、打点和挪用, 以及平台扩展接口的成果实现. 插件注册为凭据某种机制首先在系统中搜索已安装插件, 之后将搜索到的插件注册到平台上, 并在平台上生成相应的挪用机制, 这包罗菜单选项、东西栏、内部挪用等. 插件打点完成插件与平台的协调, 为各插件在平台上生成打点信息以及举办插件的状态跟踪; 插件挪用为挪用各插件所实现的成果. 平台插件处理惩罚模块的另一部门是平台扩展接口的详细实现.
假如将软件体系布局的细化进程用树图来暗示的话, 父体系布局可以认为是子体系布局的气势气魄, 而子体系布局则是父体系布局所代表的气势气魄的实例. 因此可以给出结论: 所有用于软件体系布局的描写要领也合用于体系布局气势气魄的描写.
本文研究内容针对第三种范例的插件, 即操作已有措施开拓情况建造措施插件, 这种要领实现的是一种二进制的软件集成要领.
P/ P 气势气魄软件的开拓进程如图5( 见下页) 所示( UML 勾当图) .
插件是能动态插入到平台中的措施模块, 提供应系统某一方面的成果, 但多个插件能使系统成果完善, 完成多个巨大的处理惩罚, 是插件系统的重要组成部门.
本文的目标是设计一个易于被开拓人员领略的应用软件的体系布局, 而不是研究软件体系布局的验证与阐明, 因此,驻足于利用图形化的描写要领. 为了与软件设计与开拓进程中其它阶段的建模尽大概统一, 而不需要在论文中引入特另外描写标记, 回收了UML 作为本文的描写东西. 关于用UML 描写软件体系布局的深入接头见文献[ 11] .
图2 “平台/ 插件”体系布局气势气魄的根基构件类Fig . 2 The basic components of P/ P sty le平台是P/ P 气势气魄的主要构件, 完成系统的根基成果, 并可以独立运行, 即在没有插入插件的环境下, 仍可以或许实现系统的根基成果. 平台的设计必需遵循一种或几种接口类型( 暗示为图2 中的重数) , 可以插入多个差异的插件, 接管插件提供的处事并提供应用户, 是整个插件系统的基本和骨干.
若干软件体系布局学者对软件体系布局模子( SAM,Soft war e Ar chitecture Mo del) 举办了界说, 文献[ 12] 对软件体系布局的研究举办了很好的综述. 较量文献[ 12] 中各类SAM 可以发明, 尽量各类界说都从差异的角度存眷软件体系布局, 但其焦点内容都是软件系统的布局, 而且都涵盖了如下一些实体: 构件、毗连件( 构件之间的交互干系) 、约束( 包罗构件和毗连件组成的拓扑布局、设计原则与指导目的) .
可见, 上述对软件体系布局气势气魄的界说与界说1 极为相似, 因此, 本文认为, 体系布局气势气魄是软件体系布局在更高条理上的抽象, 可能说, 软件体系布局是一种或多种体系布局气势气魄的实例.
3. 4 “平台/ 插件”软件体系布局气势气魄的描写依据界说1, 本节从构件、毗连件和约束三个方面描写P/P 体系布局气势气魄的特征和属性.
[ 8 ] T ang Zhi-song , Zh ao Chen. A t emporal logic language orient edt ow ard sof tw are engineering [ J ] . Jour nal of Sof tw are, 1994, 5( 12) : 1-16.
上述约束其实也是对接口、可能说是对接口类型的约束.
为了实现“平台+ 插件”布局的软件设计, 需要界说两个尺度接口:
1) 插件必需能在运行进程中动态地插入平台和从平台中注销, 且不影响系统的运行;
那么, P/ P 气势气魄的毗连件就是平台和插件之间交互的方法, 详细来说, 就是平台和插件之间的实现机制和互换信息的协议, 用“接口类型”类暗示( 见图2) . 在今朝的实际应用中,毗连件的详细类型有COM、DLL 及剧本插件的表明器等. 需要说明的是, COM 等只是P/ P 气势气魄毗连件的实例, 跟着软件技能的成长, 毗连件也大概有其它的实现方法.
2) 自动化挪用. 在对插件举办识别和初始化之后, 系统就可以挪用插件中提供的处事了. 对插件的挪用凡是有两种方法: 事件激活与自动挪用. 事件激活指将某种特定的事件动静( 如用户的鼠标点击等) 通报给插件, 然后插件挪用相应的处理惩罚措施. 自动挪用则是指系统按照自身的需要或用户的需求对插件提供的处事举办挪用. 接口的自动挪用本领可以使插件与平台间的团结更为细密, 使系统可以或许更机动地适应差异的需求.
图1 “平台/ 插件”布局应用措施架构
因此, 为了使“平台+ 插件”的软件设计要领在将来的大型软件设计中获得更好的复用, 有须要从软件体系布局的高度对这种软件布局举办研究, 并给出形式化描写.
件, 制止从头编译内核成果, 利便成果扩展和进级; 3) 可以或许很好实现软件模块的分工开拓.
3) 操作已有的措施开拓情况来建造插件( 措施插件) . 譬喻Pho tosho p 等软件利用的插件建造要领. 利用这种要领的软件在措施主体中成立了多个自界说的接口, 使插件可以或许自由会见措施中的各类资源. 这种插件的优势在于自由度极大,可以无限发挥插件开拓者的创意, 而这种插件机制的编写相对巨大, 对付插件接口之间的协调较量坚苦, 插件的开拓也需要专业的措施员才气举办. 这种插件是狭义范畴的插件, 也是真正意义上的插件.
[ 6 ] Mary Shaw , David Garlan. Sof tw are archit ecture: pers pectiveson an emerg ing d iscipl ine[M ] . Prent ice Hall , 1996.
[ 4 ] Rick Kazman, Len Bass , Gregory Abow d, et al . SAAM: amethod f or analyzin g th e properti es of sof tware archit ectu res[C ] . In: Proceedings of 16th Int ern at ional Conference on Sof twar e Engineerin g ( ICSE-16) , May 1994, 81-90.
一般认为, 构件是指具有必然成果、可明晰标识的软件单元, 而且具备以下特点: 语义完整、语法正确、有可重用性代价. 这就意味着, 在布局上, 构件是语义描写、通信接口和实现代码的复合体, 是一个计较单位或数据存储布局. 在体系布局中, 构件可以有差异的粒度, 一个构件可以小到一个进程, 也可以大到一个应用系统, 它可包罗函数、例程、工具、类库和数据包等.
在大局限软件系统的开拓中, 必需从一个较高的条理来思量构成系统的构件、构件之间的交互方法( 毗连件) , 以及由构件与构件交互形成的拓扑布局, 这些要素应该满意必然的限制,遵循必然的设计法则, 可以或许在必然的情况下举办演化. 并且,软件体系布局应能反应系统开拓中具有重要影响的设计决定, 便于各类人员的交换, 反应多种存眷, 并据此开拓的系统能完成既定的成果和机能需求.
如前所述, P/ P 气势气魄的软件由平台和若干成果插件构成,插件可以动态地插手到应用系统中. 在这种布局的措施中, 插件与平台之间的接口对付用户来说是透明的, 插件一旦插入系统中, 所提供的成果与系统措施所提供的成果并无差异. 但在实际应用中, 往往不能预先知道此后开拓的插件会提供什么样的处事, 出格是当插件依赖于第三方产物的时候. 因此,一个设计精采的P/ P 气势气魄的系统, 凡是但愿其在险些不知道插件成果的环境下, 可以或许自动识别插件并正确挪用插件所提供的处事. 那么, 在插件僻静台之间就应该有一层可以或许举办精采交互的接口, 这种接口应该满意以下几个方面的要求:
Fig . 4 T he generalization of plug-in class按照软件体系布局的概念, 毗连是构件与构件之间成立和维持行为关联和信息通报的途径. 因此, 实现毗连需要两方面的支持: 一是毗连得以产生和维持的机制, 二是毗连可以或许正确、无二义、无斗嘴举办的担保. 前者是毗连实现的物质基本,后者是毗连正确有效举办的信息互换法则, 称为毗连的协议.
在体系布局描写语言方面, 到今朝为止, 还没有一个统一的尺度. 体系布局描写要领可分为非形式化、半形式化和形式化三类要领. 今朝, 对ADL 的研究主要会合于形式化要领,凡是是以一种形式化语言( 如CSP、Z、时序逻辑等) 作为它的底层语义模子, 并为软件系统的观念体系布局建模提供详细语法和观念框架, 尚有一系列基于底层语义的东西支持体系布局的暗示、阐明、演化和设计. 这种ADL 不单是形式化描写体系布局的根基东西, 并且也是对体系布局举办求精、验证、演化和阐明的前提和基本. 今朝常见的ADL 有Wrig ht、Rapide、Unicon、Aesco p、Darw in 等, 海内较有影响的研究成就是由中科院软件所唐稚松院士提出的以XYZ/ E[ 8] 为基本的XYZ/ ADL[ 9, 10] . 上述形式化ADL 的缺点是: 描写不足直观, 难于被设计人员领略.
[ 7 ] Zhang Sh i-kun, Wang l i-fu , Yang fu-qing. Archit ecture b as eds oftw are develpoment model [ J ] . Res earch an d Devel opmen t ofWorld T ech nology, 1999, 21( 3) : 31-35.
P 气势气魄”(
[ 2 ] Dew ayne Perry, Al exander Wolf . Foundati on s for the study ofs oftw are ar chit ecture[ C ] . ACM S IGSOFT Sof tw are Engineer -ing Not es , Oct. 1992, 1992, 17( 4) .
总之, 毗连的本质可以认为是: 实现机制和信息互换协议.
本文事情属于特定规模软件体系布局发明的研究领域,结论有利于“平台/ 插件( Plat form/ Plug-in) ”软件体系布局气势气魄在软件工程实践中的复用. P/ P 气势气魄的软件具有动态成果可扩展的特性, 对付一类宣布后需要扩展成果而又不但愿间断运行的软件开拓具有很好的应用代价.
Fig . 3 T he components of plat form
对付软件体系布局的研究始于Dew ayne Per r y 和Alex ander Wo lf[ 2] 、Dav id Garlan 和Mar y Shaw [ 3] 所做的事情. 今朝在软件体系布局规模的研究主要会合于以下几个方面: 体系布局描写语言( Archit ect ur e Descr iptio n Languag e,简称为ADL ) 、体系布局气势气魄( Ar chitecture St yle) 及其分类[4] 、特定规模的体系布局( Domain-Specific So ftw are Ar chitect ur e) [5] 、体系布局的形式化基本等[ 6] . 跟着软件体系布局研究的深入, 软件开拓正在逐渐成长成为一门成熟的工程学科, 但这尚有赖于以下几个问题的办理: 软件体系布局气势气魄的尺度化、构件和毗连件接口的尺度化、面向特定规模的体系布局和构件的总结和积聚. 软件体系布局的研究为软件系统在高条理上的复用提供了基本, 而软件复用正是大型软件开拓追求的方针.
[ 5 ] LT C Erik Mett ala, Mark H Graham. T he dom ain-s pecific s oftware archit ecture program[ C ] . In: Proceedings of the DARPASof tw are T echnology Conf erence, Def en se Advan ced Resear chProject s Agency, Ap ril 1992.
平台由内核和插件处理惩罚两个组件组成( 见图1) , 内核的设计不受P/ P 气势气魄的约束限制, 但插件处理惩罚部门必需提供插件的注册与打点成果, 并遵循接口类型实现挪用插件的接口,如图3 所示, 个中, 平台扩展接口的重数暗示一个平台可以有多个接口. 在实际应用中, 按照扩展成果的需要, 可觉得平台设计多种范例的扩展接口, 以支持实现各类范例的插件. 譬喻, 接口的设计可别离对应界面插件( 界面图标) 、呼吁插件( 菜单呼吁) 、及隐式成果插件( 被内核挪用而用户不行见的插件) .