级别: 初级 王强, 软件工程师
2003 年 8 月 01 日
商业流程执行语言BPEL4WS(Business Process Execution Language For Web Services)是专为整合Web Services而制定的一项规范标准。它从本质上来说是IBM的WSFL和Microsoft的XLANG的结合物,目前已经成为业界标准。WSFL 支持图形化的流程,而XLANG在结构化构造方面有独到的方法,而BPEL4WS正是吸取了两者的优点,同时摒弃了一些复杂繁琐的部分,形成了一种较为自然的描述商业活动的抽象高级语言。
在本文的前两篇文章中(商业流程开发新纪元——BPEL4WS语言介绍, 第1部分:特点介绍及使用技巧提示 第2部分:如何有针对性的利用RUP来规范BPEL4WS系统开发流程),已经向读者介绍了BPEL4WS语言的主要特点,BPEL4WS主要元素使用技巧以及利用外部Web服务的一些技巧,在软件过程方面着重介绍了在利用BPEL4WS语言进行系统开发时如何合理利用现有成熟软件过程RUP(Rational Unified Process)进行有针对性的系统开发。在本文中将继续向读者介绍在我们的实际开发过程中如何合理利用UML(Unified Modeling Language)对BPEL4WS系统进行建模活动,由于篇幅限制,我将有关利用UML对BPEL4WS系统建模的介绍分为了三部分,本文是第一部分,在接下来的两篇文章中会介绍UML核心架构的使用问题并会给出一个简化的建模实例。 由于水平有限,在文章中不免会有错误和不足的地方,欢迎大家批评指正,在此仅希望大家在阅读完本文的内容后会对如何利用UML对BPEL4WS系统建模有一个概念上的理解,也希望能对您的工作有所帮助。
引言
本文主要介绍的有2个方面的内容;
为什么要利用UML对BPEL4WS系统进行建模。
用UML来构架BPEL4WS系统的体系结构。
(注:对于BPEL4WS的基本语法介绍以及UML的详细语言规范由于篇幅原因并没有包括在本文中,读者可以参阅附录中的相关资料介绍;在文中出现的"BPEL4WS系统"与"用BPEL4WS语言开发的商业系统"同义)
回页首
正文
<一>为什么要利用UML对BPEL4WS系统进行建模
一切事情都是有因有果的,为了更好的学习如何对BPEL4WS系统建模,还是在一开始先让我们来看看我们之所以要利用UML对BPEL4WS系统进行建模的原因是什么,也就是看看用UML对BPEL4WS系统建模的重要性在哪里。
为什么要对BPEL4WS系统建模
建模是开发优秀软件的所有活动中的核心部分,其目的是把所要设计的结构和系统的行为沟通起来,并对系统的体系结构进行可视化和控制。我们对一个正在构建的BPEL4WS系统建模是为了能更好地理解它,而且对BPEL4WS系统建模还有可能为我们提供简化系统和复用组件的机会,同时我们为BPEL4WS系统建模可以更好的管理系统中潜在的风险。不成功的软件项目失败的原因各不相同,而所有成功的项目的成功原因在很多方面都是相似的。任何一个成功的软件组织有很多成功的因素,其中共同的一点就是对建模的采用。BPEL4WS系统模型是对现实商业流程的简化,BPEL4WS系统模型为我们提供了整个系统运作的蓝图。在BPEL4WS系统模型中既应该包括详细的计划,也应该包括从很高的抽象层次考虑系统的总体计划。通常来说,一个好的模型应包括那些与系统有紧密关系的主要元素,而忽略那些教松散的次要元素。每个BPEL4WS系统都可以从不同的方面用不同的模型来描述,而且每个模型都是一个在语义上闭合的系统抽象。我们所建立的模型应该既可以体现出BPEL4WS系统的结构性,强调整个系统的组织特性;同时也应该可以体现出BPEL4WS系统的行为性,即强调系统的动态方面。
也许有的开发者会问,BPEL4WS使用起来并不复杂,而且也没有复杂的数据结构和数据处理,那么我们为什么还要对BPEL4WS系统建模呢?BPEL4WS本身确实不是很复杂,但复杂的是千变万化的商业流程和商业行为,复杂的是分布在Internet上的大量的Web服务以及它们所提供的接口,我们对BPEL4WS系统建模是为了能够更好地理解我们正在开发的系统。我们通过对BPEL4WS系统建模,至少要达到以下四个目的:
建造的模型可以帮助我们按照实际情况或按照我们所需要的细化程度对系统进行可视化。
建造的模型可以详细的说明整个BPEL4WS系统的静态结构和动态行为。
建造的模型可以给出一个能指导我们构造BPEL4WS系统的模板。
建造的模型要能对我们在开发过程中做出的决策进行文档化。
可以明确地讲,由于现在的商业系统变得越来越大、流程也越来越复杂,建模的重要性也相应的就越变越大,因为我们不能仅凭想象来完整地理解一个十分复杂的商业流程系统,所以我们要通过对它建模来使我们更好的了解它。
为什么选用UML作为BPEL4WS系统的建模语言
UML(Unified Modeling Language)即统一建模语言,是一种绘制软件蓝图的标准语言,它可以贯穿于软件开发的每一个阶段。虽然UML和RUP都是Rational公司的产品,但实际上UML是独立于具体的过程的,也就是说我们也可以采用其他的软件过程,但由于UML和RUP在某些概念方面是相同的(关于结合RUP的一些内容,在上一篇文章中有所介绍),所以结合RUP使用UML对系统建模可以达到事半功倍的效果。正像UML的一位创始人说的那样:"在未来的5年内,UML与RUP将变成每一个软件开发人员都应了解和掌握的技术",所以我认为不论你使不使用它们,你都应该了解他们,因为它们是无数前辈的经验总结,站在巨人的肩膀上成长进步又何乐而不为呢。对于我们来说最重要的是当我们利用UML对BPEL4WS系统建模时,我们可以很好的描述出BPEL4WS系统的静态特性和动态特性,而且还可以体现出BPEL4WS系统本身所具有的一些特点,这正是我们所需要的。
对于软件系统,有几种建模的方法。最普通的两种方法是从算法的角度建模和从面向对象的角度建模。传统的软件开发往往是从算法的角度进行建模,所有的软件都用过程或函数作为其主要构造块。这种观点导致开发人员把精力集中在控制流程和对大的算法进行分解上。除了用这种方法建立的模型是脆弱的之外,采用这种方法没有其他本质上的害处。但当需求发生变化以及系统增长时,用这种方法建造的系统就会变得难以维护。现代的软件开发采用面向对象的角度进行建模,所有软件系统都用对象或类作为其主要构造块,而且当前的大多数程序语言、操作系统和工具在一定的方式上都是面向对象的。所以我们可以肯定地说,面向对象方法是软件开发方法的主流部分,其原因很简单,因为事实已经证明,它适合于在各种问题域中建造各种规模程度和复杂度的系统,这也就是说我们也可以采用面向对象方法来对BPEL4WS系统进行设计和开发。其实这是显而易见的,因为整个BPEL4WS系统从本质上来说完全是基于面向对象技术和组件技术的。目前业界中最好最完备的面向对象建模语言就是UML(Unified Modeling Language)了,我们利用UML可以对要构建的系统进行可视化、详述、构造和文档化,而这几个方面也正是对BPEL4WS系统建模的主要目的。所以自然而然的,UML就成为了我们最佳的选择。
学习用UML建模要注意什么
整个UML语言规范是相当复杂的,所以我们学习时一定不能贪多贪快,要一边学习一边理解,要结合着UML的特点和构成结构来学习。
首先我们要知道,虽然我们在系统开发的过程中要使用UML,但是UML是独立于过程的,我们最好把它用于以用况为驱动,以体系结构为中心,迭代及增量的过程中,这样才能最大程度的发挥出它的特长。我们在整个系统的开发过程中,UML可以完成的工作包括:可视化;详述;构造;文档化,而这些工作正是任何一个系统开发过程中(当然包括BPEL4WS系统)最重要的工作,所以我们可以把UML用于复杂的软件密集型系统。
其次,我们在学习时要牢记构成整个UML的三个要素:
UML的基本构造块。
支配这些构造块如何放置在一起的规则。
运用于整个语言的一些公共机制。
只有完全掌握了每个UML元素的用法和特点,才能在对BPEL4WS系统建模的过程中做到心中有数,临阵不慌。
<二>用UML来构架BPEL4WS系统的体系结构。
系统体系结构或许是最重要的制品,它可以驾驭我们不同的观点,并且在整个项目的生命周期内控制对系统的迭代和增量式开发。随着软件过程的不断发展,体系结构这个名词已经变得越来越流行起来,那么到底什么是体系结构呢?总的来说,我们可以把体系结构描述成是一组有关下述内容的重要决策:
整个软件系统的组织;
对组成系统的结构元素及其所提供的接口的选择;
由各个系统元素间协作所描述的行为;
将系统结构和各个系统元素组合到各个子系统中;
指导整个组织的体系结构风格,静态和动态系统元素及其它们之间的接口、协作和组成。
(注:软件体系结构不仅关心结构和行为,而且还关心用法、功能、性能、弹性、复用、可理解性、经济技术约束及其折衷,甚至还要涉及到审美的考虑)
在我们对一个复杂的系统建模时,最好用5个互连的视图来描述这个系统的体系结构。每一个视图是在一个特定的方面对系统的组织和结构进行的投影,针对不同的系统,每个视图的重要性是不同的。比如说对于一般的MIS系统来说,用况视图和设计视图是最重要的部分,相比之下,其它视图如实现视图和实施视图就显得不是至关重要的了;而对于BPEL4WS系统来说,除了用况视图和设计视图很重要外,实现视图和实施视图对于整个BPEL4WS系统建模来说是十分十分重要的,这是由于BPEL4WS系统对存在于Internet上的Web服务的依赖性所造成的,只有构建好完整详细的实现视图和实施视图,我们才能在最大的程度上保证整个BPEL4WS系统建模的完整性和可靠性,才能最大程度的减少潜在的风险。
下面简要介绍一下这5种视图的特点:
用况视图(Use case view):--〉包含用况
用况视图实际上并没有描述软件系统的组织,而是描述了形成系统体系结构的动力。对BPEL4WS系统建模时,整个用况视图的静态方面由用况图表现;动态方面由交互图、状态图和活动图表现。对于BPEL4WS系统来说,一个完备的用况视图可以在最大程度上体现出商业用户的需求,而且可以为系统开发后期的review和测试活动提供很好的参考,也是测试用例编写的基础。
设计视图(Design view):--〉包含类、接口、协作
这种视图主要支持系统的功能需求,即系统提供给最终用户的服务。对BPEL4WS系统建模时,整个设计视图的静态方面由类图和对象图表现;动态方面由交互图、状态图和活动图表现。对于任何系统的建模活动来说,评价建模水平的标准归根结底还是主要由设计视图体现的,这是因为开发人员正是利用这个视图来完成所有的用户功能需求,而用户所关心的恰恰就是所建立的系统是否能满足用户的所有功能需求。
进程视图(Process view):--〉包含形成系统并发与同步机制的线程和进程。
进程视图主要是针对系统的性能、可伸缩性和系统的吞吐量。对BPEL4WS系统建模时,整个进程视图的静态和动态方面的表现与设计视图基本相同,但进程视图注重于描述线程和进程的主动类,而在BPEL4WS系统中最重要的主动类就是流程本身了(整个流程本身被抽象成主动类),所以对于流程本身的描述,包括流程进程的并发和同步机制等内容,都要在进程视图中很好的体现出来。
实现视图(Implementation):--〉包含用于装配与发布物理系统的构件和文件。
在BPEL4WS系统中,整个实现视图的静态方面由构件图表现;动态方面由交互图、状态图和活动图表现。在构建实施视图时要多注意构件图的构建,要利用构建图来体现出BPEL4WS系统所独有的特点。(具体对构件图建模的介绍在下一篇文章中)
实施视图(Deployment view):--〉包含了形成系统拓扑结构的节点。
在BPEL4WS系统中,我们利用实施视图来描述对组成整个物理系统的部件的分布、交付和安装。整个实施视图的静态方面由实施图表现;动态方面由交互图、状态图和活动图表现。任何一个系统最终都是要交付用户使用的,而实施视图正是系统交付使用的基础,而且BPEL4WS系统在系统发布上的特点正是由实施图来体现的。(具体对实施图建模的介绍在下一篇文章中)
以上这5种视图每一种都可以单独使用,也可以互相作用,互相交互。在BPEL4WS系统中,我们一定要把体系结构作为一个重要的建模制品,并且要使UML注重于对整个BPEL4WS系统体系结构的不同视图进行建模。
回页首
给开发者的建议
UML不仅是一种建模语言,它还包含了面向对象技术、组件技术等许多先进的软件开发技术和思想。在国外的软件公司UML基本成为了软件工程师必备的知识,也许你的工作暂时用不到UML,但了解和掌握UML对于提高一个软件开发人员的技术水平来说是颇有裨益的。国内许多公司由于公司规模以及其他一些现实的情况,不能很好的推广UML技术,往往只使用UML中的一小部分功能。很多公司在项目初期设计的时候还可以利用UML来进行设计,但往往到了项目结尾阶段就完全抛开了UML,又恢复到了以前较无序的开发状态,特别是测试用例的编写变得很不完善,直接后果就是降低了用户满意度,这是我们最不愿意看到的结果。国内软件业确实有自身的难处,但我们应该看到中国的软件行业正处于高速的发展过程中,作为一名软件开发人员,越早掌握一些新技术、新思想,不仅提高了自身的竞争力,同时对于整个国内的软件发展也贡献了自己的力量。在未来的5到10年内,中国极有可能会成为世界上最大的软件外包市场,日本、美国、欧洲的软件外包工程都会大量的发到国内,到那个时候,决定一个国内公司是否可以竞标到项目的标准除了规模以外,就只有管理和技术了,恐怕现在还很盛行的“关系”机制到时就吃不开了。总而言之,作为一名软件开发人员,一定要为自己树立较高的目标并对自己严格要求,要不断提高自身的价值,只有这样我们才能在越来越激烈的竞争中处于不败之地。
回页首
结束语
在本文中向读者简要介绍了有关利用BPEL4WS语言进行系统开发时如何利用UML(Unified Modeling Language)进行系统建模的概要介绍。在下一篇文章中,我将会介绍如何有针对性的利用UML核心架构对BPEL4WS系统进行建模的问题,UML的基础就是它的核心架构,掌握和熟练应用核心架构是重要且必要的,希望下一篇文章会对大家学习和掌握UML建模起到一定的帮助作用。
在本篇文章中,如有任何错误或者不够完善的地方请您与我联系,我的邮箱地址是:
国内邮箱: wq7961@263.net公司邮箱: wang.qiang@fujixerox.co.jp(如果用中文的话,最好发到国内信箱,谢谢)
十分期望收到您的反馈意见。
另外,由于我目前正在从事BPEL4WS语言的集成开发环境的设计和开发,如果您对这方面有什么好的建议也可以直接来信和我联系,谢谢。
回页首
参考资料
BPEL4WS语言规范 v.1.1
http://www.ibm.com/developerworks/library/ws-bpel/
UML(Unified Modeling Language)语言规范 v.1.5
http://www.omg.org/technology/documents/formal/uml.htm
RUP(Rational Unified Process)语言规范
http://www.rational.com/products/rup/index.jsp
posted on 2006-09-10 16:22
matthew 阅读(353)
评论(0) 编辑 收藏 所属分类:
Web Services and SOA