二.基于SOA松耦合的组件复用
近年来,软件复用技术越来越引起人们的重视,是因为人们认识到复用不但能提高生产效率,而且能大大缩短开发时间和减少测试的工作量。例如,基于SOA松耦合思想的组件复用可以减少软件开发活动中大量的重复性工作。更重要的是我们在过往的金融系统开发中已经积累了大量的可用组件。故此,我们将这次项目的整个开发思路定位为基于SOA松耦合的组件复用模式。正如我们项目主管所说:复用的本质是经济问题,也正是我们这次项目的最大要求。
(1)什么是组件复用技术?
软件复用的主要思想是将软件看成是由不同功能成分的"组件"所组成的有机体,每一个组件在设计编写时都被设计成可以完成同类工作的通用部件,类似于传统工业中的零部件。这样当完成各种工作的组件被建立起来后,编写一特定软件的工作就变成了将各种不同组件连接起来的工作,这对于软件开发的最终质量和维护工作都有着本质的改变。
软件组件是共生于软件复用的,基于组件的软件复用是当前复用技术研究的焦点。一般来说,软件组件是一种定义良好的、独立的、可复用的二进制代码,包括功能模块、被封装的对象类、软件框架和软件系统模型等。因此,组件复用可以是设计复用、代码复用或开发过程的其它产品复用。如程序模板、源代码或目标模块、需求说明、规格说明、程序说明、数据说明、测试说明和测试用例等。
与面向对象编程语言不同,组件技术是一种更高层次的对象技术。它独立于语言而面向应用程序,它只规定组件的外在表现形式而不关心其实现方法。因此,组件最重要的特征是具有独立于应用的接口,这个优点可以使它不加修改或者基本不加修改就可作为一个部件和其它组件一起组装成更大的软件。所以,对于组件我们更多的理解为一种资源,一种封装良好的、可供重复使用的代码资源。这里有一点需要区分清楚的是,在一个系统中多次使用一个相同的软件成分,则不称作复用而是称作共享;而对一个软件进行修改,使它运行于新的软硬件平台也不称作复用,而是称作软件移植。
(2)组件技术与组件化
组件技术与组件化的区别在于组件化的关注点不在于组件本身的技术实现,而在于如何把应用系统分解成稳定、灵活、可重用的组件,在于如何利用已有的组件库组装出随需应变的应用软件。它是从一个面向组件的环境中去分析如何做出灵活、重用的组件,也可以说组件技术是组件化的基础,它为组件的工厂化生产提供技术保障。
著名的计算机专家杨芙清教授曾指出:软件组件可分为可复用组件和不可复用组件。我们剖析一个系统就可以发现其中有三类构成成分:①通用基本组件:是指应用系统的基本构成成分,如基本的数据结构、用户界面元素等,它们大同小义的存在于各种应用系统中。②领域共性组件:是指应用系统所属领域的共性构成成分,它们存在于该领域的各个应用系统中。③应用专用组件:是指每个应用系统的特有构成成分。
在软件系统开发中的重复劳动主要在于前两类构成成分的重复开发,在前两类中越靠底层的部分越容易复用。例如库函数、面向对象、软件组件、开发框架等。由于大部分软件的开发过程是从抽象级别较高的形态向抽象级别较低的形态演化,因而复用的级别越高,可得到的回报也越大。因为无论使用哪种技术,都需要首先形成一个个遵循一定业务规则、执行一定业务逻辑并管理一定数据,可在某一领域内多种项目中重复使用的组件。
(3)基于SOA松耦合思想的技术架构
作为一种深奥的、复杂的理念,SOA要么被简化等同于一些产品、技术;要么被神化为是无所不能。其实,从根本上讲SOA是针对系统开发和系统集成的一种思想方法,它的本质是为系统中分散的业务功能、封装提供标准服务的接口。因此,面向组件的SOA架构是一项令人鼓舞的技术,因为它能解决长期困扰软件开发的软件复用和软件灵活性问题。
一般来说,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。而在SOA架构中,它着重强调的是软件的松散耦合。它是将应用程序的不同功能单元通过定义良好的接口和契约联系起来,藉此让软件应用系统变得灵活。松耦合系统的好处有两点:一是它的灵活性;另一个是当组成整个应用程序的每个组件的内部结构和实现逐渐地发生改变时,它能够继续的存在。
简单的说,SOA是一种分布式和减少服务和服务之间耦合的架构模式。这种耦合性减少与OO方法中以对象和对象之间关系的耦合性减少是不一样的。对于对象和对象之间关系的耦合性减少,我们可用IOC设计模式很好的解决,但OO方法却逐渐不能满足用户需求变更加速和老系统集成的需求;而SOA耦合性的减少是把服务和服务之间的耦合性减少,这样就能很好的解决异构系统的集成问题。换句说就是,在开发过程中我们可以利用SOA思想做概要分析和概要设计,而利用OO思想做详细设计。