【IT168 专稿】
目前,关于SOA应用的研究和讨论已经成为IT业界的新热点。许多专家纷纷发表意见,认为基于SOA松耦合的服务调用思想是解决和整合多种异构系统的非常好的方向。而且,基于SOA思想的组件复用技术更被视为是解决软件危机的一条现实可行的途径。
近期,我参与了一个在原有金融系统上增加新功能的开发项目。面对原有金融系统的特定应用环境,在考虑时间和成本的多重压力因素下,为了更快的完成任务,我们选择了基于SOA组件复用的开发方式。本文是分享我在此项目中得到的一些经验和总结,文章先分析组件复用对软件开发的重要性和影响,然后在此基础上再探讨实施SOA组件复用的步骤和方法。

一.软件开发普遍存在的三个要求
在我所参与的金融系统开发项目中,由于原有的金融系统功能单一,已经不能满足业务发展的需要。所以,客户要求我们选择一个适当的开发体系和开发模式以达到在最短的时间内开发出一个可满足现有需求,同时也要为未来发展保持高度扩展性的系统。在项目启动会议上,客户给我们开发团队提了三点要求:
(1)尽量利用原有的体系资源
在项目启动会议上,客户提出的第一个要求是:要尽量利用原有的系统体系资源。目前的现状是这个金融系统经过了多次的升级和改造,系统内混合存在着三种体系结构:基于客户机/服务器的两层结构、基于浏览器/服务器的结构、基于中间件的三层次客户机/服务器结构。这三种体系结构存在于各个不同的应用系统中,各有优势,如果再加上将要新开发的功能,将会是一个多种结构共存的异构系统,也是我们在选择新系统开发架构和开发模式要解决的第一个难题。
(2)快速开发要求
在开发启动会议上,客户还要求我们要考虑快速开发。这个要求使我们面临的挑战是:如何快速且高质量地完成开发任务。一般来说,在软件实现过程中无论采用什么模式的开发方法,都要对设计过程中定义的各个模块进行代码级的实现,但这无疑是需要花费大量的时间,但时间却是我们这个项目所欠缺的。但如果此时拥有很多可复用的组件,就可以节约大量的开发时间。例如,只需修改组件接口或再加一个转换用的中间接口,本来需要从头开始的工作就这样事半功倍了。因此,客户建议我们在开发过程中可把一些功能独立的模块分类、收集、不断抽象和封装,并在多个系统中进行重复使用。
(3)尽量要降低测试难度
客户要求快速开发带来了另一个大问题:就是如何在短时间内,把系统尽量测试得更可靠一些。众所周知,在很多时候测试工作其实是软件开发过程中很重要的一环,在有些大型项目中实现测试的时间甚至超过开发的时间。在这次的项目中,测试包括两个主要的方面:一是测试新开发功能的开发质量;二是测试新功能与原有系统整合后稳定性。所以,如何降低测试难度成为我们开发团队面临的另一个大问题。