摘自斯欧信息公司www.china-soa.com专著《面向服务的企业应用架构》

SOA设计层面,我们可以使用规范语言或标准模型来定义描述整个系统的设计过程并生成设计工件。但无论使用何种工具建模方法,SOA的关键在于其架构定义。所以,只有在明确SOA架构的特色及视图的基础上,工具或标准才有帮助作用,否则,很有可能重蹈传统的思维方式,为设计而设计。这是我们强调架构与设计之区别的意义所在。

这里罗列一些通常使用的SOA设计模型机建模方法。系统设计建模一般借助工具进行。61参照IBMRationalSoftwareArchitectRational软件设计)工具的一些主要建模方法。

61常用SOA设计模型类型及建模方法

建模类型

建模方法

描述

适用范围

服务模型

SOMA建模方法

整个过程划分为三个阶段进行:服务甄别,服务规约及服务实现。可以借助RSA(Rational软件架构)工具的SOMA插件,对业务领域,业务流程,业务目标,现有系统的分析来实现服务的分析和设计。本书的业务架构部分主要依据SOMA建模方法。

SOA端到端

BPMN建模

我们一般使用BPMN(BusinessProcessModelingNotation)来可视化表示业务流程,帮助我们分析理解组织部门间业务交互的协同关系。业务流程的编排及具体实施可由BPEL等来完成。

业务应用

SoaML建模

SoaML是OMG指定的服务建模标准。它声称支持SOA中的”A”,即SOA架构部分,可以作为企业级,业务级,或技术级的建模方法,并可以与UML结合使用。实际上,它是一种分析设计模型,而非企业业务架构模型。SoaML主要体现下面一些服务建模内容:

-候选服务,也称作为服务能力(Capabilities):帮助规划确定所需构建的服务

-服务接口:包括操作,以及相关规则,制约因素,期望值等。

-数据结构:包括参数及结果

-原子服务:表示如何将服务组装成复合服务

SoaML包括业务架构,软件架构,及专属平台模式。其中,业务架构元素包括:业务目标,业务流程,服务能力,服务契约,及服务架构。软件架构元素包括:服务接口,消息流,服务编排,服务编制及服务组件。

分析设计

转换模型

通过工具将传统模型作转换伸展,例如,从UML至SOA或SCDL的转换,反向工程的Java至服务的转换,支持设计合约管理协议(DCMP)的转换等。

模型/格式转换

UML模型

用例模型

用例图描述系统的主要功能并且标识系统与外部环境(由参与者表示)之间的交互。这些参与者可以是人、组织、机器或者其他外部系统。用例模型可以用来定义系统的边界。

应用架构设计*

时序交互图

在UML模型中,交互是用来表示一个或多个参与者之间的通信的行为。时序图是一种UML交互图,它对在参与者之间传递的消息(例如,对象和角色)以及控制和条件结构(例如,组合片段)进行建模。可以创建新的时序图,使用源元素来填充现有时序图以及对时序图添加生命线、消息和组合片段。

通讯图

在UML模型中,交互是用来表示一个或多个参与者之间的通信的行为。通信图是一种UML交互图,用来说明参与交互的对象之间的消息流。可以在服务通信图中添加和修改生命线、消息路径和消息。

交互框

在时序图和通信图中,交互框为创建图元素(例如,生命线或消息)和观察行为所在的图提供了上下文或边界。一个框可以表示组合片段(它表示场景构造)和交互的使用情况(表示一个交互中的交互)。可以用来分析服务及服务契约所需建立的关系。

组件关系图

在UML中,组件图显示软件系统的结构,它描述了软件服务或组件及其接口和依赖关系。我们可以使用UML组件图来对SOA软件系统建模。组件图主要用来:1)定义SOA软件系统的可执行和可复用方面,2)通过依赖关系来揭示软件配置问题,3)在进行更改或增强之前显示对软件应用服务的准确描述。

组合结构图(CompositeStructureDiagram)

在UML模型中,组合结构图使用服务或组件、端口和连接器来说明类元和协作的内部结构。可以使用组合结构图来以可视方式说明包含组件的服务以及定义各个服务之间的行为和通信。

部署图

UML部署图可以用来对系统物理布局或拓扑建模。部署图描述运行时处理节点的配置和部署在这些节点上的工件。SOA部署图可以分为两个层面,服务部署及物理部署(参见第三章)。

*UML的设计模型可以同时用作系统架构。在系统架构层面,我们考虑粗粒度的服务或组件;本着20/80原则,强调黑盒子效应。而在应用设计层面,我们全盘细化服务或组件设计,反映出系统的白盒子内容。

上述是SOA设计的常用模型。必须注意的是:SOA不具有单一控制点,所以,SOA设计时,应注重应用架构的特色,及其服务契约的考量,将应用架构融入全方位的架构框架之中,同时使用企业架构模型,例如公开组织的ADM方法及Archimate建模语言,以及业务架构模型,例如CBM模型。顺便提一下,SOA建模方法的终极目标是面向语法的建模体系