引言:我们已经习惯于一个人独立进行软件开发,每个人都使用自己的风格进行程序设计,但随着工程项目变大或者是对时间要求比较紧时,就需要几个人,十几个人,甚至是上百个人协作进行软件开发与设计,这时一个比较棘手的
问题就是如何将若干人所编写的软件代码(有可能是链接库、组件)进行无缝地集成,纵然进行源代码集成是个比较传统也比较成熟的方式,适当使用
链接库或组件,也可减少源代码的泄露,但经常的情况是每一次的
程序集成和代码维护都需要重新编译与链接源代码和重新发布新软件,这种工作有时又是非常麻烦的。那么就有疑问产生,能不能有一种方法将需要开发的目标软件分为若干功能部件,各部件之间遵循着标准接口规定,这样在各个部件按要求开发之后,在进行整个软件集成时只是将需要的部件进行组装,而不是集成各源代码或链接库进行编译与链接,需要新的功能组件时也是按规定开发,之后只进行组装软件就可以使用,这就是使用一种二进制的软件集成方法。
答案是肯定,这就是平台+插件的软件设计方法。
一、已有的软件系统(平台+插件)介绍与插件分类
现在就来看一看所有软件系统的根——操作系统(OS)。操作系统是系统软件,是计算机不可缺少的关键软件,只有安装有操作系统的
计算机才能为人所用,才能变为真正计算工具。操作系统除完成其基本功能以外,还为软件开发人员提供了应用程序开发接口(API),软件开发人员使用API进行软件设计与代码编写,
程序调试编译以后,安装在所依托的操作系统之后,用户开发的软件(可分为工具软件和应用软件)就可以正常运行。而这时并不需要对操作系统进行修改,也不需要重新编译和链接操作系统,对于用户软件来说,操作系统是完全透明的。操作系统与用户软件是一个极好的平台+插件实例。
除操作系统之外,在用户软件方面也有许多这种平台+插件的软件系统实例,其中大名鼎鼎的就是Adobe公司的PHOTOSHOP图形处理软件。PHOTOSHOP除其图形处理功能卓越以外,还有一项给开发人员印象较深的就是其插件(Plug-in)功能。为了提高图形的处理功能PHOTOSHOP提供了标准插件开发接口,这样第三方软件开发商就可以按标准插件接口开发独具特色的图形功能扩展,开发的插件安装后,系统即可使用,而不影响主
程序和其它插件,通过此种方法PHOTOSHOP扩展了成千上万的滤镜(Filter)功能插件。除PHOTOSHOP外,使用插件技术的软件还有IE,Netscape,Macromedia公司的系列软件,以及Microsoft的Visual Studio开发工具及Office办公软件等。各用户软件领域所应用的插件技术可分为三种类型:
1、类似批命令的简单插件(文本插件)。事实上这种插件的自由度非常低。使用这种方法的软件有Win Hacker等,运行这种插件后,会一步步要求用户进行选择/输入,最后根据用户的输入来执行一系列事先定义好的操作。这种插件一般是文本文件。功能比较单一,可扩展性极小。优点是插件做起来非常方便,即使是对
程序设计了解不多的人也可以制作。如WinAmp的Skin。
2、使用一种特殊的脚本语言来实现的插件(脚本插件)。这种插件比较难写,需要软件开发者自己制作一个
程序解释内核。比如微软惹了很多麻烦的宏就是这种类型的。Microsoft Office就提供了开发者用于扩展辅助功能的内置VBScript(VBA)。这种方法的优点在于无需使用其它工具来制作插件,软件本身就可以实现,普遍出现于各种办公自动化软件中。
3、利用已有的程序开发环境来制作插件(程序插件)。例如PhotoShop等软件使用的方法。使用这种方法的软件在程序主体中建立了多个自定义的接口,使插件能够自由访问程序中