二次开发平台的基础探究

2013-04-27 03:32张娟萍
山西广播电视大学学报 2013年2期
关键词:源代码体系结构二次开发

□张娟萍

(山西交通职业技术学院,山西 太原 030031)

随着软件开发行业的不断发展,越来越多的企业利用计算机来管理企业的日常经营、生产和销售等活动,要是让每个企业都去开发新的软件系统不是很现实,但如果能够在一个已有的软件开发框架下增加上自己企业特别的管理功能模块就相当理想了,这就为二次开发平台提供了广阔的运用空间。二次开发平台是指在某个已有的开发体系架构下对一个基于此开发框架开发的应用软件进行功能扩充的平台。二次开发平台的产生和发展都有其必然性和历史性,一个良好的应用软件系统必然有一个与之对应的二次开发平台。正是基于此,针对二次开发平台的理论和技术的相关问题进行了分析与讨论。

一、二次开发平台的理论基础

1.敏捷信息系统。敏捷信息系统(Agile Information System)是一种由计算机(包括网络)、人和管理规则集成的信息化系统。该系统是为组织或企业的作业、管理和决策提供有用的信息支持。它利用的是手工规程,计算机的软硬件,数据模型和数据库,其中数据模型和数据库用于分析、计划、控制和决策。

随着经济的发展和计算机技术的广泛应用,越来越多的企业期望利用计算机来管理企业日常经营、生产、销售活动,以此提高企业的竞争力。但这并不意味着企业采用了信息管理系统其竞争力及生存状况就一定能得到提高。

敏捷信息系统是随着市场全球化而产生,随着企业之间竞争的激烈而发展。敏捷信息系统的产生和发展的过程和现代管理理论的发展是相对应的,所以,敏捷信息系统基本呈扁平的网状结构,形成自主管理、分布式、讲究轻薄和柔性的分布式、多元化、网络化的体系结构。

敏捷信息系统具备的特征:能够信息集成和辅助决策;有标准的信息交换接口,能实现无缝传递信息;能够推翻原有的设计模式和实现方法,具备敏捷性系统的可重构、可重用和可扩展性;能够根据不同的要求和管理功能进行重组;能够随“任务”的开始而诞生,随“任务”的结束而自行解体,因此具有时效性。

2.面向服务的体系结构。近来比较流行的一种架构技术是面向服务的体系结构和思想。面向服务的体系结构是一个组件模型,它将应用程序的不同功能单元通过这些服务之间定义良好的接口和契约联系起来。体系结构需要硬件平台、操作系统和编程语言来实现服务,而接口是独立于它们的,因为它是采用中立的方式定义的。这便能达到所构建的软件和其他软件之间互相通信的目的。

面向服务的体系结构为二次开发的实现提供了一种方法,此方法是以构建系统的元素形式存在的,主要分为功能元素和服务质量元素两大类,就组成面向服务的体系结构的元素而言,其为实现二次开发从功能与质量方面均提供了有力保证。

面向服务体系的三种角色分别是:服务提供者,服务注册中心和服务请求者。面向服务的体系结构中的每个组件都扮演着服务提供者、服务请求者和服务注册中心这三种角色中的某一种(或多种)。面向服务体系的三种操作分别是:发布操作,查找操作和绑定操作。

面向服务体系中的不同角色的工作流程如下图1所示:

图1 面向服务体系中不同角色的工作流程

面向服务体系有以下五个特性:(1)可重用性。即一个服务创建后可以用于多个应用和业务流程。(2)松耦合性。(3)明确定义的接口。服务交互必须是明确定义的。服务请求者不需要知道服务究竟是由哪种程序设计语言编写的。(4)无状态的服务设计。服务应该是独立的、自包含的请求,在实现时它不需要获取从一个请求到另一个请求的信息或状态。(5)基于开放标准。

二、二次开发平台的技术基础

1.反射技术。很多时候,反射为程序的动态性提供了一种可能,从而成了在程序开发设计中不可缺少的一种技术。其在主流的开发工具中应用广泛,如:在Java中,反射技术可以根据类名生成类的实例,获取类的相关方法名称、调用方法等;在Spring框架中,其依赖注入的基础亦建立在反射技术的基础之上。反射技术大量应用于主流开发工具的理由很多,但其可以通过降低程序模块的耦合性从而优化系统的稳定性、可靠性并可以通过后期绑定保证系统良好的可扩展性是主要原因。反射机制一般可以提供以下功能:

* 在运行时判断任意一个对象所属的类

* 在运行时构造任意一个类的对象

* 在运行时判断任意一个类所具有的成员变量和方法

* 在运行时调用任意一个对象的方法

例如,在使用Java进行实时开发时,可以利用反射来分配线程,其首先设置一个优先级值来确定期望的线程类型,根据类名称实例化实时线程或常规线程而无需与类路径上的实时类一起编译。

在微软的.net中,反射是一个运行库类型发现的过程。举例来说,通过反射,可以得到一个给定的程序集所包含的所有类型的列表,这个列表包括给定类型中定义的方法、字段、属性和事件。也可以动态地发现一组给定类支持的接口、方法的参数和其他相关细节。如果想要通过类的程序集名和该类的名称去动态地创建该类,调用该类的方法,属性,甚至跨过访问修饰符的限定去调用保护的、私有的方法和属性也都能利用反射技术实现。这样就可以用比较方便的方法来实现一个更为高效的框架,这样的框架不需要关心类的具体的实现就能够调用类的方法,实现了每个程序的按需组装,很大程度上提高了应用程序的灵活性和可扩展性。

在微软的.net框架中,应用程序的结构被划分为一个单树结构,按照层级依次为应用程序域、程序集、模块、类型和成员。当运行一个程序时,公共语言运行库首先加载管理器,然后创建并管理应用程序域,接着在应用程序域中加载并控制每个程序集中类型层次结构的内存布局。

程序集中包含模块,模块中又包含类型,而类型中又包含成员,反射技术则提供了相应的对象,能够将程序集、模块和类型都进行封装。使用反射技术,可以从现有对象中获取类型,再访问其字段和属性或者调用类型的方法,还可以动态地创建类型的实例并将类型绑定到现有对象。

2.动态编码技术。CodeDOM是代码文档对象模型(Code Document Object Model)的缩写,它允许.Net开发者以多种语言在运行时产生和编译源代码。CodeDOM是用于描述源代码的类的一个集合。一旦源代码被描述为CodeDOM,它就能被打印、编译成汇编语言、或编译到内存中并执行。应用程序也能使用CodeDOM,作为阅读源代码的一个抽象层,而无需有具体语言的内部知识。

CodeDOM提供可用于表示(独立于编程语言之外的)源代码的类、接口和结构,这就意味着CodeDOM是不依赖于某一种编程语言的。基于此人们可以得出以下观点:利用Code-DOM技术动态产生代码,不需要具有某一种特定语言的编程知识,只要知道业务逻辑规则,按照自然语言的书写风格即可产生合格的代码。CodeDOM能将任何表示形式输出为以CodeDOM所支持的任何语言表示的源代码,在.NET Framework 2.0 中,CodeDOM 支持 VB.NET,C#,JScript的代码生成器和代码编译器。

CodeDOM技术的优点如下:

(1)CodeDOM是用单一模式来表现源代码。

(2)CodeDOM可以允许程序员动态的创建、编译和编码程序。

(3)CodeDOM可以通过CodeDOM对象图生成不同语言的源代码。

3.插件技术。不同应用软件的体系结构和开发方法随着计算机技术的发展的不断变化而改变。我们一直在寻找更好的软件体系结构和开发方法来实现软件开发效率和产品质量的提高,增加软件的可扩展性。插件技术之所以能够被越来越多的应用,就是由于它能够满足以上要求。采用插件技术已经成功开发出了当前很多非常实用的软件产品。比如说我们常用的图像编辑软件PhotoShop就是一个典型的例子。使用过PhotoShop的人对滤镜一定不陌生。即使是初涉图形制作的新手,只要去获取一些好的滤镜,也能够轻易地作出特殊效果。还有就是MP3播放软件Winamp也大量的应用了插件技术。Winamp早期的成功虽然在于其快速的解码引擎,但在MP3播放器中能够保持重要地位,也正是由于内置了健全的Skin和PlugIn(插件)。后期的Winamp中增加的midi、mod、wava等音乐格式的播放功能完全是靠插件技术来实现的。插件技术将程序按照其功能的不同划分为一个个插件,它们之间没有任何依赖次序,相互独立,因此这样的组件式结构非常灵活。插件是可独立开发的程序模块,它不仅独立于系统,而且能够动态地插入到系统中,还可以被自由地插入、替换和删除。

最早的时候Erich Gama提出了插件技术的设计模式。该模式通用的通信模型是利用对象思想和架构来实现的。只要组件的结构相似,不管输入和输出是否相同,该设计模式都能利用面向对象的理论来帮助开发者解决问题。它只是描述解决问题方案的语言,而不用去管编程语言的具体细节。其关键点在于把整个方案如何根据功能进行分解,从而不同程序按照不同功能分解开来执行完成。插件技术就是利用这个原理,将程序划分为主程序和子程序两部分。在主程序的框架中来运行子程序,实际的业务操作由子程序完成,它都是按照一定的规范来编写的。只要接口相同,主程序就可以通过反射技术最大灵活地动态加载子程序。

三、二次开发的开发要点

二次开发平台,简单来说就是让开发人员利用已有的软件框架快速地开发出符合其体系结构的应用程序,从而达到企业的要求。但在实际二次开发的过程中,往往不是原来软件的编写人员作为二次开发的技术人员,他们根本不知道原来软件的体系架构,甚至根本不了解原来软件的编程逻辑,这样就会影响到二次开发的进度。二次开发人员如果不了解原来软件中的内部逻辑,仅仅按照自己的开发技术水平的理解重新编写程序,而不是有效的复用原来存在的程序逻辑,就大大降低了软件开发的效率,严重时会对整个程序产生不可预见的重大影响。这样就会影响用户的正常工作。为了保证二次开发的顺利进行,现将二次开发的开发要点总结如下:

要进行二次开发,则必须保证平台是开放的并提供了进行二次开发的相关工具,这样才有可能在现有的软件框架下开发出满足用户需求且符合平台的固有框架;要进行二次开发,则必须清楚二次开发的类型,一般包括功能扩充、功能覆盖、新增功能三种类型,只有在确定了类型之后,才可确定工作量及所需的技术力量;要进行二次开发,则必须进行整体设计,并尽可能地使二次开发的功能与原平台保证相对的独立性,以插件的形式来提供,如IBM公司的Rational系列软件,都是基于Eclipse平台进行二次开发的典型案例,便是以插件的形式进行二次开发的;要进行二次开发,最好选择本身就是以面向服务的体系结构进行组织的二次开发平台,这样可以在减少功能开发难度的同时保证二次开发的质量。

四、结论

文章主要通过对二次开发平台理论及技术方面的研究,尤其是对面向服务的体系结构和插件技术的深入分析,最终得出了二次开发平台的开发要点,为进行二次开发的编程人员在某种程度上提出了指导性的参考意见。在此研究基础上,今后可以具体的为二次开发的开发模式及技术方面作进一步的探讨。

[1]张育平.基于构件的软件体系结构实现技术[J].计算机工程与应用,2010,(4).

[2]胡开顺.企业集群化与制造系统敏捷化策略的拓展[J].工业工程,2010,(1).

[3]王 森.基于U8-ERP的二次开发平台的研究[D].上海:复旦大学,2007,(8).

猜你喜欢
源代码体系结构二次开发
基于TXL的源代码插桩技术研究
浅谈基于Revit平台的二次开发
浅谈Mastercam后处理器的二次开发
软件源代码非公知性司法鉴定方法探析
西门子Easy Screen对倒棱机床界面二次开发
基于语法和语义结合的源代码精确搜索方法
基于粒计算的武器装备体系结构超网络模型
作战体系结构稳定性突变分析
揭秘龙湖产品“源代码”
基于DODAF的装备体系结构设计