級別:?初級???王強,?軟件工程師
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?