软件系统开发中的组件框架技术研究、设计和应用

发表于:2008-10-08来源:作者:点击数: 标签:框架应用软件系统组件技术
关键字:架构设计 计算机的应用已经从过去单纯的科学计算渗透到政务管理、商品交易、 金融 证券、军事指挥、航天航空、通讯导航、生物工程、医疗服务等多个领域。随着计算机技术的发展和应用范围的不断延伸,作为计算机灵魂的软件系统,其规模也在不断扩大,
关键字:架构设计

      计算机的应用已经从过去单纯的科学计算渗透到政务管理、商品交易、金融证券、军事指挥、航天航空、通讯导航、生物工程、医疗服务等多个领域。随着计算机技术的发展和应用范围的不断延伸,作为计算机灵魂的软件系统,其规模也在不断扩大,结构越来越复杂,代码越来越长、维护越来越困难,从过去几百行代码扩大到几万甚至几十万、几百万行代码的软件系统俯首皆是。因此,设计一个功能完善、结构优良,开发效率高,稳定性和安全性强,扩展方便,维护简单,易于复用,生命周期长,投资成本低的软件系统,一直是系统管理、设计和开发者所追求的目标之一。遗憾的是,现实生活中,被抛弃的软件系统随处可见,造成极大的投资浪费。原因之一是系统开发仓促编码,结构拙劣,功能扩展困难,稍有修改,便错误百出,无法维护,唯有弃之不用。

软件发展的实践证明,模块化的分层设计模型是提高系统可用性和可维护性的主要途径。分层模型设计,既将整个软件系统划分为若干个相互独立的层次进行描述,层与层之间通过事先约定的接口相互通讯。某个层只负责一个或多个功能,各负其则,不越俎代庖。分层设计把一个复杂的问题分而治之,降低了复杂性,功能清晰、易于实现、修改和维护。

分层设计可以分为面向过程、面向对象、面向组件等设计模式。面向过程的设计使用结构化的面向过程的计算机语言来编码;面向对象的设计则使用面向对象的计算机语言来实现,而面向组件的设计则既可用面向过程,也可用面向对象的语言来实现。由于面向组件的设计,系统的耦合度低、复用性强、维护容易,已经成为软件系统设计和开发的主流技术。

组件软件技术的基本思想是:将大而复杂的软件应用分成一系列可先行实现、易于开发、理解和调整的软件单元组件。每个组件功能确定,单独设计,分开编码,最后用组件组装应用,完成系统开发和部署。因此,以组件为基础的软件系统解决方案,开发效率高,投资少,维护成本低,复用能力强,软件升级简单。

1、组件技术的发展现状

目前常用的组件框架模型,一类是与某一计算机操作系统密切相关,而另一类是跨计算机操作系统平台的。前者的典型代表是COM组件对象模型,以及在此基础上发展起来的ActiveX、DCOM、COM+、MTS和.NET等技术。COM组件具有二进制一级的兼容性,基本上与计算机编程语言无关,其缺点是目前只能运行在Windows 操作系统平台上,而不能在Linux 和Unix 系统中运行。COM并不只是面向对象的组件对象模型,它既可用面向过程,也可用面向对象的语言编码。但多采用的编码语言是VC ++、VB和Delphi,性能要求高的场合也可用C语言来编码。COM已经广泛使用在Windows 操作系统中,浏览器、邮件收发系统,Web服务器、字处理软件中都广泛使用COM组件。跨计算机操作系统平台的组件模型其典型代表是CORBA,CORBA主要使用在Unix 类型的操作系统中,但它也可在Windows平台上运行。

从计算机语言来讲,组件模型有以Java语言为代表的框架和以C语言为基础的框架。前者在理论上可以跨平台运行,底层平台支持是JVM 技术,而后者则与虚拟机无关,直接在操作系统中运行,因此,速度快,运行效率高。从应用系统的角度来讲,目前市场上,主要是J2EE和.NET的竞争,两者理论上没有本质的区别,都是采用虚拟机技术。但J2EE可以跨平台运行,而.NET 则基本不行。在企业级的应用系统中,以Java 技术为基础的J2EE似乎更占优势。Java和. NET技术各有特长,因此,在信息系统建设中,应该允许两种技术存在,取长补短,协同发展,最大限度地提高系统开发的性价比和稳定性。

2、组件框架的体系结构

2.1、描述组件的要素

组件是事先定义了编程接口和功能、相互独立的软件单元。一个组件一般有组件标识符、接口、创建方法和功能等要素组成。组件标识符也就是组件的名字,在整个体系结构中必须是唯一的,它是客户程序使用组件的唯一标识。如在COM规范中,组件用一个128位的clsid,通过注册表将clsid与组件真实的物理文件名关联,实现组件的位置无关性。而J2EE框架中的组件则多使用名称服务和事先约定的特殊字符串表示。组件接口是组件与客户程序、容器交互和通讯的API。具体包括函数名称、参数和参数类型等内容。如在Java 语言中可用接口表示,在C语言中用相互有关系的一组函数表示,在C++中则可用虚函数描述。组件多有组件工厂创建,组件工厂也是组件,其创建一般由组件框架提供的系统函数来生成。组件的功能定义了组件需要完成的事情。通常情况下,组件标识符、组件接口、创建方法是组件对用户程序的契约和承诺,设计好后不能轻易改变,但组件的功能可以修改,体现多态性。

2.2、组件体系结构图

javascript:return big(this)" src="http://www.ltesting.net/uploads/2008/10/110593_200810080959201I5Vb.jpg" onload="javascript:if(this.width>498)this.style.width=498;">
图1

原文转自:http://www.ltesting.net