导读:
在任何领域中,语义都非常重要,而在SOA中更是如此。由于 SOA涉及多个团队和组织,因此就相关术语达成一致至关重要。
在任何领域中,语义都非常重要,而在SOA中更是如此。由于 SOA涉及多个团队和组织,因此就相关术语达成一致至关重要。本系列将带着您开始SOA之旅,为您定义各种基础术语和它们背后的重要概念。您将了解
SOA领域中需要理解并用于沟通的各个词汇。对于每个术语,将说明它在 SOA领域中有何重要性、在这种情况下的含义、相关的标准有哪些以及与其他术语的区别如何。
在文中,您将探索各种术语和技术,它们有的与在高抽象级别(分析)下设计 SOA有关,另一些则涉及如何推进到较低的抽象级别(设计),后一种级别的下面紧接着代码级。
关于组织方式的说明
以下列出的术语并不是按照字母顺序排列的,同时也未按照其重要性进行排列。相反,我们将按照构建块的方式对其进行组织。本文是以服务概念为基础的,为了定义其他术语,它们对与特定原则有关的概念进行分组,如本文中的分析
和设计。
分析和设计
分析和设计的内容包括若干活动,通过这些活动,可根据功能和非功能需求集来指定初始的 IT 体系结构。其他一些活动也可作为分析和设计的基础,这些活动对初始的体系结构加以细化,使抽象级别由分析级进入设计级,这一细化程度足以让开发人员生成和编写出实现代码。
SOA分析和设计也可以指以下术语中的一个或多个:
服务建模
面向服务的分析和设计
面向服务的建模和体系结构 (SOMA)
Rational Unified Process for Service-Oriented Modeling and Architecture
(RUP SOMA)
分析会在较高的(概念级)抽象级别上对将要构建的系统进行描述。分析的输入是一组需求和现有的资产(或是应用程序或系统)。输出则是对需要构建的各个方面的描述。分析对
SOA来说是至关重要的,因为通过分析,可以在服务标识期间使 IT 与业务保持一致。分析结果将作为输入在设计中使用。
设计会描述将要构建的系统,更重要的是,它还会对如何构建加以描述。
在下列各部分中将描述相关任务,为您介绍面向服务的分析和设计的相关术语。
注意:术语标识 和规范 适用于基于组件的开发中,而术语规范 和实现 则是由通用建模语言 (Unified Modeling Language,
UML) 定义的。这三个术语构成了 RUP SOMA 的核心活动(术语的含义未变)。
服务标识
服务标识 是核心的面向服务的分析活动。服务标识的目的是将各个分组的概念化服务及其操作标识出来。
这些经过标识的服务对于业务而言是有意义的,业务需要这些服务。事实上,业务分析师会帮助软件架构师进行这项工作。下一部分将介绍服务设计原则,您会了解到对服务逻辑分组的需求、对服务及其操作的业务命名的需求。这些都是在服务标识期间决定的,其间使用了多种技术,RUP
SOMA 中描述的那些技术也包括在内。
我们来深入了解一下:
自顶向下方法
业务体系结构工作从一组业务目标开始,标识出一个或多个应予关注的业务流程,这在 SOA中是非常典型的。通过业务建模工作,可能会出现已经过设计的业务流程(即未来的流程),对于正在设计中的系统,它们可以被视为功能性的需求。
自顶向下方法旨在分解业务元素(主要是业务流程和用例),然后将它们细化为适合服务的粒度。在使用自顶向下方法的过程中,您通常要在业务任务中标识出各种服务操作。这种做法的好处在于,您可以确保标识的服务与业务保持一致。
自底向上方法
自底向上方法旨在分析现有的 IT 资产(如遗留的应用程序和系统),找出可以作为服务公开的功能,以便重用它们。
重用是 SOA的一个重要组成部分,对于 SOA的成功是极为关键的。您可能知道,遗留应用程序(即已经部署的应用程序)是您的公司最宝贵的资产,应该加以利用。例如,自底向上方法将分析现有的信息管理系统
(IMS) 事务或 COBOL 程序。
对于自底向上的分析,有一句忠告:您必须谨慎从事,不要盲目地公开现有的 IT 功能。例如,用于创建、读取、更新、删除 (CRUD)
数据的各项服务的粒度可能太小,无法与业务保持一致。
大多数体系结构工作是在分析和设计的工作流中、在项目的细化阶段执行的。
面向服务的分析和设计利用了分析和设计原则(如面向对象的开发或基于组件的开发中的原则)。例如,您也许还记得所谓的面向对象的分析和设计
(OOAD)。不过,必须注意的是,SOA的工作重点始终在于服务(而不是对象或组件)。
注意:分析级模型常会发展为设计级模型,所以对于分析和设计而言只有一套 RUP 原则。
面向服务的分析和设计工作的主要输出是一个服务模型(即先前所说的服务规范)和一个设计模型,服务模型记录了面向服务的系统中所有重要的体系结构部件,而设计模型则进一步阐述了服务模型应如何实现的细节。这两个模型对
SOA设计进行了全面说明,开发者可以据此明白无误地执行这一实现。
|