尧舜时代,洪水泛滥,肆虐生灵。大禹之父“鲧”奉命治水,以“堙”相挡,九年无功,终被赐死,一朝身殉。大禹继父志,立宏愿,决心根治水患,造福黎民,为求治水良方,不辞千里跋涉,寻至涂山。终以一片坚贞,从涂山酋长蒙处得到秘藏之《水经图》。 十三年治水,胼手胝足,披棘斩荆,亮节感人,终成大业。《尚书》里记载了禹对自己治水的总结:“洪水滔天,浩浩懷山襄陵,下民昏墊。予乘四載,随山刊木,暨益奏庶鮮食。予決九川距四海,浚賦治距川。暨稷播,奏庶艱食鮮食。懋遷有無化居。蒸民乃粒,萬邦作乂。”
鲧虽然也是能力很强的领导者,但是治水时沿用了传统的“堙”的方法,这种方法应对小的水患很有效,也是一直以来治水的思路,但是面对席卷九州的大洪水,“堙”的方法就显示出其弱点--要建造一系列彻底拦住如此汹涌的洪水的堤坝在当时条件下是不现实的,所以鲧的方法就已经决定了他的失败。禹开始就在方法层面下功夫,研究了父亲失败的原因,在“堙”的基础上创新出“导”的治水方法,可以基于当时的条件彻底根治水患,再加上坚强的意志和持续的努力,终于获得了治水的成功。
今天,企业面对的IT环境日益复杂,压力也越来越大,在这种情况下SOA(Service Oriented Architecture,面向服务的架构)耀世而出,SOA作为一种全新的服务理念,给企业带来了希望,它将彼此分离的IT和核心业务融合为一体,已经逐步成为企业信息化的主流发展方向。但当SOA步入实战阶段,人们开始探讨SOA的实现过程的时候,却发现传统的开发理念成为瓶颈,希望通过传统的设计方法实现企业SOA存在多重难以跨越的鸿沟,要让SOA真正为企业所用,就必须在“堙”的基础上寻找新的实现方法--“导”,这也就是我们要讨论的“SOAD”。
SOA催生出的SOAD
SOA导引企业信息化方向
SOA是一个基于特定标准的组织和设计方法,SOA在传统的业务层和技术层之间增加了一个服务层,通过连接能完成特定服务的独立功能实体来实现软件系统架构。它将业务层和技术层之间的信息有效地进行沟通,让企业应用层可以彻底摆脱技术的束缚。将注意力放在服务上,使得应用程序能够集中起来提供更加丰富、更加灵活、目的性更强的商业流程,使得基于SOA的企业应用系统能够更加真实地反映出与业务模型的结合。
SOA 是一种新兴的企业结构形式,可以用于设计下一代企业应用程序。迅速发现新的商机、及时预警商业威胁是现代企业的成败关键,SOA 体系结构形式正是针对这一需求,旨在提供更加灵活的企业业务解决方案,这些业务解决方案可以按需扩展、随需改变。SOA 解决方案由可重用的服务组成,带有定义良好且符合标准的成熟接口系统。SOA 提供了一种机制,通过这种机制,可以集成现有的各种应用程序,不论它们采用哪种平台或语言。SOA的实质就是促进IT与业务的融合,为核心业务提供端到端的服务,并且已经成为现阶段企业信息化的方向所在。
SOAD--SOA的内生基因
面向服务的体系结构(SOA)和 Web 服务的基本观念已经相当普及,并可看作是适于设计现代企业应用程序的体系结构形式。在这种背景下,“什么样的服务才是好的服务”这个基本问题就成为确保成功实现 SOA 的关键。
从概念上讲,SOA 中有三个主要的抽象级别:操作、服务和业务流程,在 SOA 术语中,业务流程包括依据一组业务规则按照有序序列执行的一系列操作。操作的排序、选择和执行称为服务或流程编排。典型的情况是调用已编排好的服务来响应业务事件。从建模的观点来看,由此带来的挑战是如何描述设计良好的操作、服务和流程的抽象特征,以及如何系统地构造它们,此时,我们需要结构化方法或分析设计方法来设计高质量的SOA,但是现有的方法中没有一种能够满足程序设计人员对最新的 SOA 项目的要求,所以产生了将现已经形成的良好实践中的原理组合起来,并且应用从需要中创新的原理来对其加以补充,这个关键方法就是SOAD。
SOAD把已有的设计、分析方法中的原理与许多独特的新原理组合起来,这样得到的交叉学科OOAD 方法使成功地进行 SOA 开发更容易,我们称之为面向服务的分析与设计(Service-Oriented Analysis and Design,SOAD)。SOAD 需要满足下列需求:
- 必须正式地定义流程和表示法
- 必须有结构化的方法来概念化服务
- 必须提供定义良好的品质因素和最佳实践
SOAD 活动还必须回答这样的问题:什么不是好的服务?例如:不可重用的任何东西都不可能成为好的一流 SOA服务。另一个例子就是带有挑战性的非功能要求的嵌入式实时系统,它们不能承受任何 XML 处理开销。必须易于进行端到端建模,并且有全面的工具支持。
集大成的SOAD
传统的开发理念无力支撑SOA的构建
最初的面向服务的体系结构(Service-Oriented Architecture,SOA) 的实践经验表明,诸如面向对象的分析与设计(Object-Oriented Analysis and Design,OOAD)、企业体系结构框架(Enterprise Architecture,EA)和业务流程建模(Business Process Modeling,BPM)这样的现有开发流程和表示法,对于目前出现在 SOA 中的体系结构模式来说,仅仅能够满足一部分要求。
OOAD为具体功能模块的开发给出了精细的描述,却脱离了宏观的业务构架。 OOAD 方法在定义 SOA 方面提供了非常好的起点。虽然许多年来在体系结构层次中应用 OOAD 技术和统一建模语言(Unified Modeling Language,UML)表示法是一个常见的做法,但是 OOAD 还是与像“类”和“单独的对象实例”这样的微观层次的抽象有关。由于每个问题域常常都创建单独的用况模型,因此,应用程序开发项目中企业的大方向在许多情况下变得模糊。此外,由于种种原因,用况模型并不总是与其对等的 BPM 保持同步。
EA根本就不能让表示技术设备的低级构块在宏观层次上互联。 诸如 Treasury 企业体系结构框架(Treasury Enterprise Architecture Framework,TEAF)、 面向特征的领域分析(Feature-Oriented Domain Analysis,FODA)和 Zachman这样的 EA 方法都将城市规划级的观点加在解决方案体系结构之上,但是并没有解决如何找到易于重用、且具有持久性的高质量企业抽象模型的问题。
BPM对繁琐的业务流程进行了合理的抽象,却没有给出从IT上来实施的合理途径。 虽然 BPM 方法(如 BPMI)在功能工作单元之上提供了端到端视图,但是它们通常都没有触及体系结构和实现领域。例如,在像用于 Web 服务的业务流程执行语言(Business Process Execution Language for Web Services,BPEL)这样的语言出现之前,BPM 表示法缺少操作语义。此外,我们还看到了许多流程建模与开发活动彼此分离的情况。
现有的规则中没有一个可以解决如何为 SOA 启用现有的应用程序的问题,大部分情况都采用自顶向下流程。现有的系统通常都存放有大量的重要数据和业务逻辑,并且不能简单地加以替代。概而言之,传统的开发理念只涵盖了支持目前出现在 SOA 中的体系结构模式所需的部分要求,而对于变化的需求却无所适从。
图表 1 BPM、EA 和 OOAD 的位置
SOAD:对传统的融合与发扬
SOAD把已有设计、分析方法中的原理与许多独特的新原理组合起来,这包括前述的EA、BPM和OOAD,吸取每种方法的优点,并加以有机的组合,创造出一种全新的方法。将企业应用程序和 IT 基础设施发展成 SOA 可能是一个大的负担,会影响多个业务线和组织单元。因此,需要应用 EA 框架和参考体系结构(如开放组织体系结构框架(The Open Group Architecture Framework,TOGAF))以及 Zachman,以努力实现单独的解决方案之间体系结构的一致性。
然而,要利用所有现存的 BPM 方法作为 SOAD 的起点,还必须使用流程模型中用于驱动候选服务和它们的操作的附加技术来对其加以补充。此外,SOAD 中的流程建模必须与设计层用况建模保持同步,并且必须给出与 BPEL 有关的问题的答案。
OO 分析是一种非常强大且广受赞誉的方法,同样,SOAD 应该尽可能多地利用 OO 分析技术。要将 OO 分析成功地应用于 SOA 项目,开发者就必须一次分析多个系统。用况模型必须继续扮演重要的角色。然而,SOAD是受业务流程驱动的,而不是用户驱动的,因此,SOAD 需要 BPM 和用况建模活动之间的强链接。
图表 2 SOAD 及其组成部分:OOAD、BPM 和 EA
整合了所有这些方法的优势,成就了SOAD的非凡血统,也为SOA的构建带来了高成功率和新的生机。
在路上的SOAD
SOAD融合了各种传统开发理念,使其优势互补。此外,它按照面向服务(Service-Oriented)范式来完善开发工艺,从而在IT基础架构搭建阶段就植入了SOA的基因,使SOA的开发流程更加可控,提高开发的成功率。今天,SOAD仍然处于快速发展的道路上,众多卓越的商业公司和优秀的技术人才的加盟,使得SOAD的未来充满期待。
Rational:SOAD的最佳演绎者
全生命周期的开发管理、统一建模、清晰的角色定位……这让Rational成为SOAD工艺的最佳演绎者。自2003年年底加入IBM软件的大家庭以来,IBM Rational在吸收IBM软件以整合为导向的先进理念、集成IBM软件其它四大品牌(DB2、WebSphere、Tivoli和Lotus)的部分工具,并发挥其自身在软件开发领域的技术优势的基础上,推出一套功能全面、管理科学的软件开发工具--IBM Rational软件开发平台(IBM Rational Software Development Platform,SDP)。
应该说IBM Rational SDP提供的不只是一种开发工具,更重要的是它带来了一种全新的软件理念:将科学的管理思想融会于工具之中,倡导高品质的软件工艺。在这种背景下,人们先前所奢望的一切场景都得以轻松实现。
并行开发如履平地,迎合软件企业跨地域发展趋势,IBM Rational SDP将不同区域的人们带到同一开发平台上来,并行地完成同一项开发任务。大规模作业井然有序,在应用范围不断扩张的趋势下,软件架构的复杂性也越来越强,成千上万人协同完成一个任务已屡见不鲜,这在IBM Rational SDP中一切井然有序。质量始终在掌控中,周全、严密、自动化的质量控制,使IBM Rational SDP紧握软件质量的命脉。
正如大禹创新出“导”的治水方法,SOAD为企业SOA的实现提供了一种全新的方法论,搭建了业务和 IT 之间的桥梁,全面支持 SOA 项目的分析和设计阶段,以现有的经过实践检验的 OOAD、EA、和 BPM 为基础建立了创新的交叉学科的方法,规划了一个整体的建模规则。SOAD还需要对现有的软件开发方法不断完善和提升,进一步提高企业应用程序开发项目的可用性和适用性,随着时间的推移,还将发展相关的最佳实践,并逐步走向成熟,驯服奔流在企业中的信息狂潮,让“水患”变为“水利”。