COP仅仅只是提出了一个系统划分的基础,要构成一个完整应用,光有组件和服务还不够,还需要将组件和服务以一种有效的方式组织起来,有些文章把这种组织性的代码称为 Fabric,有结构和组织的意思。而在我们的文章中,称之为软件总线(bus)。
软件总线是什么?他和计算机的总线一样,它负责在各个组件中传递信息流,将各个组件组织起来,完成一个具体的任务。总线是一个抽象的概念,在实际中总线也是由具体的技术构成。例如,一个总线可能是一段代码,负责调用各个组件;总线也能是一个消息系统,负责收集和分派消息;总线也可能是一个工作流系统,负责系统信息的流转;总线还可能是一个JMX,负责将消息路由到目标组件。但无论总线的实现技术是什么,总线的特点就是采用一种松耦合的方式将组件组织起来。这样,总线本身和挂接在总线上的组件就是松耦合的,至于组件挂接到总线的形式,也就是我们之前讨论过的服务和服务适配器要做的事情了。
例如,目前的软件总线有三种可能的实现:直接调用/远程调用/WebService,MOM,以及工作流,根据应用系统的特点可以采用不同的总线实现。例如以调用为主的总线适用于那些流程比较明确的应用,因为流程是硬编码的,变化起来相对麻烦一些。工作流为主的总线适用于流程比较灵活,需要复杂的分支和人为的干预。MOM为主的总线则适用于大型的分布式,或是异构的应用,不同的应用之间以一种松散的方式进行协作。但是无论采取哪一种的总线实现方式,组件和服务是不变的,变化的是服务适配器,MOM的服务适配器和工组流的服务适配器是不同的。MOM的服务适配器主要的工作是将消息中的内容翻译为POJO,并调用服务;而工作流的服务适配器可能就只是一个基于当前工作流状态的调用。这样形成的系统架构就是相对稳定、松散耦合的,不论是组件发生变化,还是总线的技术发生变化,只要服务和总线的规范是稳定的,整体的软件系统就是稳定的。而服务和总线规范才是软件组织的核心竞争力所在,而这也正是软件总线的主要目的。
Patterns and Best Practices for Enterprise Integration (http://www.enterpriseintegrationpatterns.com/)中收集整理了大量有价值的和消息相关的企业集成模式
软件工厂在组件和软件总线的基础上发展,并根据组件和软件总线的技术特点,定义了一系列的管理活动,以提高开发效率。软件工厂是我们定义的软件质量框架的一种实现方式。对于不同的软件组织来说,根据自身的研发特点来定义软件工厂的构成是非常重要的。具体的内容包括管理实践的选择,组件的积累,软件总线的技术实现。在本系列文章中推荐的前两项实践都属于管理实践范畴的内容,而第三项实践则偏重于建立软件工厂的底层支撑框架。
软件工厂的概念代表了一种新的软件开发模式。他的优势在于能够把技术和管理结合起来,提高生产力。
关于作者
林星,致力于研究敏捷理论和优秀的软件设计思想,并将之应用于国内的软件组织。可以通过 iamlinx@21cn.com 和他联系,也可以通过访问 http://www-900.ibm.com/developerWorks/cn/linux/software_engineering/l-frmwk/www.qca.cn 和 http://www-900.ibm.com/developerWorks/cn/linux/software_engineering/l-frmwk/www.aglichina.org 来获得更多的信息。
文章来源于领测软件测试网 https://www.ltesting.net/