论软件的组件式开发

论软件的组件式开发

吴旭东(来自51CMM)
我有话说……

提纲:

1、 我所担任的工作。
2、 开发模式和领域的选择。
3、 系统体系结构的选择。
4、 复用资产和复用组件的创建。
5、 通用短消息接口协议SORBA。
6、 组件在各种环境下的实现。
7、 对第三方开发的支持。
8、 长期不懈地培训。
9、 工作中的缺陷。

摘要:

  在我所担任的某移动短消息增值应用系统的规划和开发工作中,面对移动短消息广阔的应用领域,和众多不同行业的ASP,巨大的软件开发工作量。我们选择了组件式软件开发方式,在系统的功能、性能、开发效率和投资等方面都达到了理想的效果。

正文:

  2000年10月我开始担任四川某网络公司移动短消息增值应用系统(简称SMASP)开发部的负责人,主要工作是对SMASP进行规划并实施开发,为总经理提供SMASP开发的参考方案。SMASP的通信服务提供商为中国联通公司,服务内容提供商为如:出租车调度系统的出租车管理公司;电码防伪系统的商用电码公司;水电气三表抄表系统的水电气公司;移动证券系统的证券公司等,还有许多已知的和未知的对移动短消息增值应用有潜在需求的应用领域会不段地加入到SMASP中来。SMASP首期工程应用到联通四川公司,二期工程将推广到山东、河南、广东、福建、湖北等省市,并逐步推广应用到全国联通。由于项目处于起步阶段,还没有定型的系统模型及成功的应用模式,因此,选择一个好的系统体系结构和开发模式就成为当务之急。

  对领域的选择。通常一个领域的专用资产要应用到不相关的领域是比较困难的,组件式开发的首要工作是领域工程,在这个领域内提取可被复用的系统对象,创建可复用资产,开发复用组件。而SMASP正好是这样一个面对具体应用领域的,系统需要不断升级,有着长期的持续开发需求。因此,在SMASP建设的初级阶段,为SMASP创建复用资产是可行的,有回报的。

  对组件(COM)式体系结构的选择。SMASP已经有一部分应用是建立在Windows/NT服务器上了,但考虑到本系统将推广到全国各地联通公司,将来的远程系统维护和远程操作控制以及系统整体性能的需要,我建议公司将系统后台应用部分移植到以SUN系统为主的UNIX系统上来,这一建议得到了公司的支持。我们的服务内容提供商是各式各样的,处在不同的行业,有不同的应用系统在运行,对UNIX、WINDOWS、WINDOWS/NT、LINUX、NETWARE等都有应用,是一个多平台系统。为对这样一个多平台、多应用、长期持续开发的系统选择一个良好的体系结构和开发方式,将决定在将来的开发实践中SMASP的质量、连续可用性、可升级维护性、可扩展性、开发工作量和投资等各项指标。经过反复考虑,我们将整个系统划分为各个独立的组成对象,各对象独立工作又相互协调来完成系统的功能,这样各个独立的对象就形成了系统的组件。在这些组件中,有些是SMASP内通用的,其功能定义在系统内长期稳定;也有面对不同ASP(服务内容提供商)的各式各样的组件。这些组件的开发工作均相对独立,互不干扰,因此可以实现系统的无代演进。

  创建复用资产和复用组件。通常可以被复用的资产是在领域内通用性比较好的对象。通过深入的分析,我们决定建立短消息增值应用系统平台MIS Platform。MIS Platform本身是由多个组件构成的多层次的、组件化的体系结构,在他上面运行的ASP的各种应用也可看作MIS Platform的各个组件。MIS Platform的体系结构,各组件的详细定义,接口定义,专化规范,大量代码以及各部分的文档都是潜在的可复用资产。复用资产和复用组件之间有一定区别,复用资产的范围相对广泛,而复用组件则更为具体,通常指可以直接嵌入到目标系统内或独立运行以完成某一特定功能的程序模块或对象。并不是所有可复用资产都可以制作成复用组件的,在划定了复用资产后还要进一步提炼,如我们在MIS Platform中创建的基本表管理组件、索引管理组件、TCP/IP通信组件、接口组件、加密组件等,都具有很好的通用性。

  通用接口的定义。在组件式开发中,由于系统是依靠预制的或独立运行的组件协同工作来达到系统功能目标,各组件之间对信息的交换就成为必然,而要使各组件之间顺利交换信息,就需要定义一个各组件都能解析的通信接口。在我们的系统中SORBA(短消息对象请求代理结构)承担了这个角色,他的定义能为MIS Platform中所有组件识别和解析,成为组件协同工作的纽带。SORBA的定义要考虑到独立于平台、独立于操作系统、独立于编译系统、独立于开发工具,因为在这个应用范围广大的多平台、长期持续开发的应用系统中,我们无法保证大家都使用相同的开发工具,即使开发工具相同,也不可能保证通信的数据结构绝对不发生改变,因此SORBA的定义的独立性和灵活性就相当重要。

  在各种平台下实现组件。由于我们的系统是多平台的,所以复用组件也需要在多平台下实现。而目前大家讨论得多的如COM、CORBA、ActiveX等是以WINDOWS为平台的,WINDOWS能够提供给组件的实现方式为DLL或OLE技术。而我认为,这个理解是狭隘的,组件可以以多种方式在多种平台下实现。在WINDOWS系统上除了DLL和OLE外,还可以使用静态连接、消息队列等方式来实现;在UNIX上可以采用静态连接、消息队列、共享内存等技术来实现。可以看出,在UNIX和WINDOWS(2000以上版本)上均提供了消息队列。MIS Platform中独立运行的组件是通过消息队列联系起来的,在UNIX和WINDOWS下均采用这个机制,如加密组件和通信组件之间、短消息处理中心和通信组件之间、通信组件和ASP应用组件之间均通过消息队列通信。而嵌入式组件如基本表、索引、SORBA接口协议等组件在UNIX下的实现采用的是静态连接技术,在WINDOWS下采用静态连接和DLL两种技术。不管是嵌入组件还是独立运行的组件,在实现的时候都应当考虑多平台的需求,组件要独立于开发工具、具有高度的可塑性、接口清晰可靠。

  对第三方开发的支持。我们不能保证在整个SMASP的建设过程中始终都由我们一家承担所有的软件开发工作,MIS Platform提供对第三方开发的的支持是必须的。第三方开发者只要得到SORBA接口组件“DataPack.DLL”(在Windows下)或“DataPack.Lib”(在Windows下或Unix下),及相关的文档资料,他们即可访问MIS Platform,不管MIS Platform如何升级换代,也不管MIS Platform是由什么平台来提供服务,我们的客户都不必修改他们的应用系统。

  重视培训工作。我们的多层次组件式体系结构首先是由极少数的几个核心开发人员所掌握的,而在SMASP的建设工作中,其他软件人员的工作也是不能忽视的,还有人员的流动更新。大家在SMASP中的工作是协作性的,为了把大家都纳入到整个系统的应用体系结构中,必须首先让大家了解体系结构,熟练掌握可复用资产和复用构件,这样才能使大家知道自己所做的工作在整个系统中的位置,以及怎样使自己所做的软件和整个系统有机地结合起来,怎样进行组件的专化。最初,我们认为只要将构件的设计文档等资料共享给大家,我们的程序员就知道去学习和使用,而实际上,这些程序员都养成了不爱看别人软件及文档的习惯,他们喜欢无论什么都自己做,所以,尽管我们的SORBA接口和系统体系结构的相关文档都共享了,但大家只对SORBA接口看了一些,而对体系结构就不怎么关心了,更谈不上遵守系统体系结构。培训工作实际上是非常重要的,没有培训工作,大家就很难理解整个系统的体系结构,复用资产也形同虚设。在SMASP的开发中,组件也不是一成不变的,需要升级和增加新的内容,大家对体系结构的认识应当不断强化,因此,我们培训工作也需要不断的开展,持之以恒。

  综上所述,在组件式软件系统开发工作中,我们首先要选定一个领域,然后确定软件的体系结构,挖掘潜在的可复用资产,创建复用构件,持之以恒的培训工作,让我们的软件人员都在充分理解系统体系结构以后随心所欲地使用复用构件,我们的组件式开发工作就能达到满意的效果。

你可能感兴趣的:(开发)