2、面向服务的分析和设计概述
本文以下小节将以IBM的SOMA为例,说明面向服务的分析和设计的主要任务和方法。 IBM的SOMA将面向服务的分析和设计分为服务发现、服务规约和服务实现。服务的实现包括服务、组件和服务组装的实现。
为了开始面向服务的分析和设计,如下的输入需要被用在分析和设计的过程中。
(1)业务领域(Business Domain)和业务功能域(Business Function Area)。业务领域和业务功能域的划分勾勒了目标企业的业务结构,它一方面帮助我们从全局的角度来理解目标企业的业务,另一方面也是我们进行组织服务层次结构的重要依据。
(2)业务流程(Business Process)。业务流程,尤其是第一级的业务流程,对企业经营全局至关重要。通常,通过第一级的业务流程可以追溯到企业中最为重要的业务活动,因此第一级业务流程是我们进行服务分析和设计的主要入口点。
(3)业务目标(Business Goal)。组织和业务流程都是为业务目标服务的,为了完成业务目标,组织和业务流程都有可能进行适当的调整。分析业务目标在有些时候可以帮助我们发现一些通过业务流程分析遗漏的服务;与此同时,业务目标也是服务描述中一部分重要的内容。
(4)现有系统(Existing System)。现有系统是目前业务活动和业务流程的写照,通过分析现有系统模块和功能,能够帮助发现服务。与此同时,对于现有系统的分析和理解是进行服务实现设计的重要前提。
在掌握了业务领域划分、业务流程、业务目标和现有系统后,SOMA按照三个阶段来进行服务分析和设计--发现服务、描述服务和服务实现,如图4-3所示。在SOMA三个阶段的分析和设计过程中,分析和设计人员还需要借助于传统方法中的一些素材,如业务环境和业务用例、IT环境、当前应用或组件的模型和设计等,从而完成与现有业务和IT紧密结合的服务规范和服务设计。在运用SOMA的过程中,这三个阶段并不是一次性完成的,一般需要一个迭代的过程。另外,从企业范围而言,分析和确定的服务模型也有一个演化的过程,并逐渐地精化,越来越贴近业务。
图4-3 面向服务的建模和架构(SOMA)概貌图
2.1 服务发现
服务发现是SOMA进行服务分析和设计的第一步。服务发现的主要任务,是确定在一定范围内(通常是企业范围,或若干关键业务流程范围内)可能成为服务的候选者列表。
目前有三种方式发现服务的候选者,它们分别是自上而下的领域分解、自下而上的现有系统分析和中间对齐的业务目标建模。
1.自上而下(领域分解)方式
自上而下的领域分解方式从业务着手进行分析,选择端到端的业务流程进行逐层分解至业务活动,并对其间涉及的业务活动和业务对象进行变化分析。
业务组件模型是业务领域分解的输入之一。业务组件模型是一种业务咨询和转型的工具,它根据业务职责、职责间的关系等因素,将业务细分为业务领域、业务执行层次和业务组件。由于企业内部和外部环境的不同,每个业务组件在成本、投资、竞争力等方面不尽相同,因此,每个业务组件在企业发展的过程中战略职责和演化的路径也是不同的,于是由于角度的不同,就形成了所谓的业务组件的"热点视图"。SOA是一种特别强调业务和IT互动的技术。对于面向服务的分析和设计,业务组件模型提供了进行服务划分的依据,而且这种划分的方法可以平滑地从业务视图细化到服务视图。
端到端的业务流程是业务领域分解的另一个输入。将业务流程分解成子流程或者业务活动,逐级进行,直到每个业务活动都是具备业务含义的最小单元。流程分解得到的业务活动树上的每一个节点,都是服务的候选者,构成了服务候选者组合。业务领域分解可以帮助发现主要的服务候选者,加上自下而上和中间对齐方式发现的新服务候选者,最终会构成一个服务候选者列表。在SOA的方法中,服务是业务组件间的契约,因此将服务候选者划分到业务组件,是服务分析中不可或缺的一步。服务候选者列表经过业务组件的划分,会最终形成层次化的服务目录。
变化分析的目的是将业务领域中易变的部分和稳定的部分区分开来,通过将易变的业务逻辑及相关的业务规则剥离出来,来保证未来的变化不会破坏现有设计,从而提升架构应对变化的能力。变化分析可能会从在未来需求的分析中发现一些新的服务候选者,这些服务候选者需要加入到服务候选者目录中。