面向服务的分析与设计原理 软件测试方法
关键字:面向服务 分析 设计原理 Olaf Zimmermann (ozimmer@de.ibm.com) , 高级 IT 架构师, IBM
Pal Krogdahl (pal.krogdahl@se.ibm.com) , 解决方案架构师, IBM
Clive Gee (clive@us.ibm.com) , 高级解决方案架构师, IBM
2004 年 6 月
最初的面向服务的体系结构(Service-Oriented Architecture,SOA) 的实现项目的经验表明,诸如面向对象的分析与设计(Object-Oriented Analysis and Design,OOAD)、企业体系结构(Enterprise Architecture,EA)框架和业务流程建模(Business Process Modeling,BPM)这样的现有开发流程和表示法仅仅涵盖了支持目前出现在 SOA 中的体系结构模式所需的部分要求。
在 Info World 最近的访谈(请参见参考资料)中,Grady Booch 宣称“像对问题的良好抽象和良好的分离这样的工程基础决不会过时”,不过,他也指出“还是有现实的机会提升抽象的级别。过去的经验表明,必须将抽象的级别提升到公司处理的业务领域,从而将整个企业 IT 前景都纳入考虑的范畴。
正如 Mark Colan 在文章“面向服务的体系结构扩展 Web 服务的前景,第 1 部分”中介绍的,SOA 是一种新兴的企业结构形式,可以用于设计下一代企业应用程序。SOA 方法在有力地加强已经制定的良好通用软件体系结构原则(如信息隐藏、模块化和问题分离)的同时,还增添了一些其他的主题,例如服务编排、服务库和服务总线中间件模式。
需要结构化方法或分析与设计方法来设计高质量的 SOA。因为现有的方法中没有一种能够满足程序设计人员对最新的 SOA 项目的要求,所以他们建议将已经形成的良好实践(如 OOAD、EA 和 BPM)中的原理组合起来,并且使用根据需要创新的原理来对其加以补充。
引言
面向服务的体系结构(SOA)和 Web 服务的基本观念是成为我们日常语言的一部分,并可看作是适于设计现代企业应用程序的体系结构形式。在这种背景下,什么构成好的服务这个基本问题就成为确保成功实现 SOA 的关键。
像面向对象的分析与设计(Object-Oriented Analysis and Design,OOAD)、企业体系结构(Enterprise Architecture,EA)框架和业务流程建模(Business Process Modeling,BPM)这样的现有建模规则为我们提供了高质量的实践,可以长期帮助标识和定义体系结构内的适当抽象。然而经验表明,这些实践各自单独应用时达不到要求。
在本文中,我们将研究 OOAD、EA 和 BPM 中的适当原理。我们还将推动对混合方法的需求,这种方法把所有这些规则中的原理与许多独特的新原理组合起来。这样得到的交叉学科 OOAD 方法使成功地进行 SOA 开发更容易,我们称之为面向服务的分析与设计(Service-Oriented Analysis and Design,SOAD),它还有待正式定义。我们还只是刚刚跨入 SOAD 的殿堂。
面向服务的概念
在发现新的商机或威胁的预期下,SOA 体系结构形式旨在提供企业业务解决方案,这些业务解决方案可以按需扩展或改变。SOA 解决方案由可重用的服务组成,带有定义良好且符合标准的已发布接口。SOA 提供了一种机制,通过这种机制,可以集成现有的遗留应用程序,而不管它们的平台或语言。
从概念上讲,SOA 中有三个主要的抽象级别:
操作:代表单个逻辑工作单元(LUW)的事务。执行操作通常会导致读、写或修改一个或多个持久性数据。SOA 操作可以直接与面向对象 (OO) 的方法相比。它们都有特定的结构化接口,并且返回结构化的响应。完全同方法一样,特定操作的执行可能涉及调用附加的操作。
服务:代表操作的逻辑分组。例如,如果我们将 CustomerProfiling 视为服务,则按照电话号码查找客户、按照名称和邮政编码列出顾客和保存新客户的数据就代表相关的操作。
业务流程:为实现特定业务目标而执行的一组长期运行的动作或活动。业务流程通常包括多个业务调用。业务流程的例子有:接纳新员工、出售产品或服务和完成订单。
在 SOA 术语中,业务流程包括依据一组业务规则按照有序序列执行的一系列操作。操作的排序、选择和执行称为服务或流程编排。典型的情况是调用已编排服务来响应业务事件。