引言
在任何領(lǐng)域中,語義都非常重要,而在面向服務(wù)的體系結(jié)構(gòu)(Service-oriented architecture,SOA)中更是如此。由于 SOA 涉及多個(gè)團(tuán)隊(duì)和組織,因此就相關(guān)術(shù)語達(dá)成一致至關(guān)重要。本系列將帶著您開始 SOA 之旅,為您定義基礎(chǔ)術(shù)語和主要概念。您將了解 SOA 領(lǐng)域中所使用的各個(gè)詞匯。對(duì)于每個(gè)術(shù)語,將說明其為何對(duì) SOA 重要、其在這種情況下的含義、相關(guān)的標(biāo)準(zhǔn)有哪些以及與其他術(shù)語的區(qū)別如何。
本系列的第 1 部分確定了業(yè)務(wù)焦點(diǎn),并通過定義服務(wù) 和 SOA 等術(shù)語為后續(xù)部分打好了基礎(chǔ)。本文將介紹成功 SOA 采用所必需的軟件工程方法和流程,還說明交付 SOA 解決方案所需的構(gòu)件(如模型和資產(chǎn))。
開發(fā)流程和方法
成功的軟件開發(fā)需要以下因素:
需要得到理解和遵循的原則。
進(jìn)行了正式說明的基于經(jīng)過驗(yàn)證的最佳實(shí)踐的方法和技術(shù)。
可以進(jìn)行定制的流程。
方法內(nèi)容
方法內(nèi)容 描述需要生成什么內(nèi)容、如何執(zhí)行相關(guān)工作以及由誰執(zhí)行。
方法內(nèi)容構(gòu)件包括:
角色 :定義技能和工作產(chǎn)品職責(zé)。軟件架構(gòu)師 就是角色的一個(gè)例子。
工作產(chǎn)品 :任務(wù)的結(jié)果,可以為交付內(nèi)容,也可以不是交付內(nèi)容。服務(wù)模型 就是工作產(chǎn)品的一個(gè)例子。
任務(wù) :特定角色執(zhí)行的步驟序列。任務(wù)使用輸入工作產(chǎn)品來生成或修改輸出工作產(chǎn)品。標(biāo)識(shí)服務(wù) 就是任務(wù)的一個(gè)例子。
指南 :文檔說明。術(shù)語表、模板、示例 和工具使用指導(dǎo)信息 都是指南。
流程
流程 用于將方法內(nèi)容組織到開發(fā)周期中,并指定要完成的工作的順序。要完成的工作的順序獨(dú)立于開發(fā)生命周期模型(如瀑布式或迭代)??梢詫⒘鞒桃暈楣ぷ髁骰蚍纸饨Y(jié)構(gòu)。通過流程,項(xiàng)目經(jīng)理可以確定在項(xiàng)目的每個(gè)階段需要哪些人員以及修改了哪些工作產(chǎn)品。如果熟悉 Rational Unified Process? (RUP),則可以將 RUP 規(guī)程(如分析與設(shè)計(jì)實(shí)現(xiàn))視為方法內(nèi)容,而將 RUP 階段(如細(xì)化和構(gòu)造)視為流程元素。
務(wù)必將方法和流程這兩個(gè)概念加以區(qū)分,并提供框架來支持分別對(duì)其進(jìn)行修改。
Rational Method Composer
IBM Rational? Method Composer (RMC) 是基于 Eclipse 的方法與流程創(chuàng)作平臺(tái),用于集成、定制、代碼化和發(fā)布流程。使用方便而且功能強(qiáng)大的 RMC 提供了一組流程,可以方便地加以使用或自定義,如 Rational Unified Process (RUP)。負(fù)責(zé)維護(hù)流程的項(xiàng)目經(jīng)理、項(xiàng)目管理者以及程序管理員通常會(huì)使用 RMC,該工具可為本部分所描述的概念提供支持。
RMC 中進(jìn)行的工作的輸出是作為 HTML 發(fā)布的流程(通常采用網(wǎng)站的形式)。希望遵循該流程的組織可以隨后使用此流程站點(diǎn)。
軟件流程工程元模型
本部分將討論開發(fā)流程。軟件流程工程元模型(Software Process Engineering Metamodel,SPEM)是正式描述軟件開發(fā)流程的的標(biāo)準(zhǔn)規(guī)范。作為 Object Management Group (OMG) 標(biāo)準(zhǔn),SPEM 是獨(dú)立于供應(yīng)商、方法和框架的。1.1 版于 2005 年 1 月正式發(fā)布,而包含重大更新的 2.0 版目前正在制訂中。
Rational Unified Process
Rational Unified Process (RUP) 基于全球數(shù)千項(xiàng)目所采用的最佳實(shí)踐,是能夠針對(duì)具體項(xiàng)目進(jìn)行方便定制的軟件開發(fā)流程。RUP 包括有關(guān)優(yōu)先級(jí)權(quán)衡、迭代開發(fā)、可視建模、軟件質(zhì)量和團(tuán)隊(duì)協(xié)作的主要原則。RUP 定義規(guī)程(方法內(nèi)容)和階段(流程),如圖 1 中所示。
圖 1. Rational Unified Process (RUP)
Rational Unified Process for Service-Oriented Modeling and Architecture
Rational Unified Process for Service-Oriented Modeling and Architecture (RUP Plug-In for SOMA) 構(gòu)建于 RUP 之上,可提供有關(guān)開發(fā)面向服務(wù)的解決方案的指導(dǎo)。2.4 版(請(qǐng)參見參考資料)提供了組合之前 RUP for SOA 內(nèi)容和 IBM Global Business Services (GBS) SOMA 方法的統(tǒng)一方法。RUP Plug-In for SOMA 為軟件架構(gòu)師和設(shè)計(jì)人員提供了有關(guān)面向服務(wù)的體系結(jié)構(gòu)的分析、體系結(jié)構(gòu)和設(shè)計(jì)的具體指導(dǎo)信息。
提供了專用統(tǒng)一建模語言(Unified Modeling Language,UML)概要,用于建模領(lǐng)域特定的解決方案(包括 SOA),并隨之提供了緊密相關(guān)的專用流程。例如,有支持 RUP Plug-In for SOMA 的 UML 2.0 profile for Software Services。
注意:將在本系列的后續(xù)文章中討論與管理相關(guān)的流程。
IBM 技術(shù)
如本系列的第 1 部分中所述,組件業(yè)務(wù)建模(Component Business Modeling,CBM)可幫助組織對(duì)策略、技術(shù)、操作和投資一致性形成大量新的認(rèn)識(shí)。CBM 支持對(duì)形成差別的業(yè)務(wù)組件進(jìn)行標(biāo)識(shí),還支持對(duì)業(yè)務(wù)流程進(jìn)行分析。
面向服務(wù)的建模與體系結(jié)構(gòu)(Service-Oriented Modeling and Architecture,SOMA)提供了有關(guān) SOA 解決方案的分析和設(shè)計(jì)的指導(dǎo)信息。SOMA 支持對(duì)與業(yè)務(wù)保持一致的服務(wù)進(jìn)行標(biāo)識(shí)、規(guī)范化和執(zhí)行(在設(shè)計(jì)層)。將在稍后詳細(xì)討論此主題。
模型、UML、資產(chǎn)與模式
元數(shù)據(jù)
元數(shù)據(jù)即關(guān)于數(shù)據(jù)的數(shù)據(jù)。例如,關(guān)于所錄制的歌曲的元數(shù)據(jù)可能包括關(guān)于演唱者、專輯、作曲、長(zhǎng)度或質(zhì)量的信息,而數(shù)據(jù)則是音頻記錄本身。
根據(jù)上下文不同,相同的數(shù)據(jù)可能為實(shí)際數(shù)據(jù),也可能為元數(shù)據(jù)。以前面討論的開發(fā)方法和流程為例。在 RMC 中修改開發(fā)方法時(shí),定義要類型化的內(nèi)容(由元數(shù)據(jù)提供支持)。例如,可能會(huì)定義工作產(chǎn)品、任務(wù)和角色的新實(shí)例。在此級(jí)別,工作產(chǎn)品、任務(wù)和角色是元數(shù)據(jù)元素,元數(shù)據(jù)還定義這些類型(角色執(zhí)行的任務(wù))之間的關(guān)系?,F(xiàn)在考慮設(shè)計(jì)人員定義有關(guān)方法的概念時(shí)的情況。假定他們?cè)谑褂?UML 建模工作產(chǎn)品、角色和任務(wù)的概念。在此級(jí)別,工作產(chǎn)品、任務(wù)和角色是實(shí)際的數(shù)據(jù),而 UML 是元數(shù)據(jù)。將稍后在 RMC 中將此數(shù)據(jù)作為元數(shù)據(jù)使用。這樣看來,可以將 UML 視為元-元數(shù)據(jù)!
模型
RUP 將模型定義為系統(tǒng)的抽象表示或模擬,可從特定的角度提供對(duì)系統(tǒng)的完整描述。模型經(jīng)常用于更好地了解系統(tǒng)如何工作,或用于記錄實(shí)際實(shí)現(xiàn)的設(shè)計(jì)決策。模型經(jīng)常由多個(gè)不同類型的部分組成。這些部分作為模型元素進(jìn)行歸類。
模型的目標(biāo)受眾是能夠理解這些模型的人群。例如,系統(tǒng)分析人員和設(shè)計(jì)人員創(chuàng)建和使用分析模型,數(shù)據(jù)庫設(shè)計(jì)人員設(shè)計(jì)和查看數(shù)據(jù)模型。模型可以基于文本和/或圖形。由于建模是在保持嚴(yán)密性和完整性的情況下減少復(fù)雜性(如在較高的抽象級(jí)別進(jìn)行描述),因此最好使用豐富的圖形設(shè)計(jì)符號(hào),例如在 RUM 中描述為可視建模 的統(tǒng)一建模語言 (UML)。模型位于特定的抽象級(jí)別,可以將其轉(zhuǎn)換到更低的級(jí)別抽象。例如,分析模型通常會(huì)轉(zhuǎn)換為設(shè)計(jì)模型。
在本系列的第 1 部分中,我們說明了協(xié)作 SOA 更為重要。例如,您的公司可能會(huì)將詳細(xì)設(shè)計(jì)或?qū)崿F(xiàn)外包給其他公司。進(jìn)行建模時(shí),請(qǐng)牢記要將建模結(jié)果提供給其他人使用。另外,您的 SOA 設(shè)計(jì)和開發(fā)平臺(tái)也應(yīng)該能夠接受模型,并將其轉(zhuǎn)換為其他模型。
自動(dòng)化與轉(zhuǎn)換
SOA 設(shè)計(jì)與開發(fā)平臺(tái)應(yīng)該允許進(jìn)行模型的半自動(dòng)化轉(zhuǎn)換,從而從高抽象級(jí)別轉(zhuǎn)換到低抽象級(jí)別,最終轉(zhuǎn)換為代碼。例如,UML-to-Java? 轉(zhuǎn)換能從 UML 類關(guān)系圖生成 Java 代碼。
基礎(chǔ)框架還應(yīng)該考慮可跟蹤性,該功能實(shí)際上就是回溯到較高的抽象級(jí)別。例如,假定您希望了解需求中的變更對(duì)您的設(shè)計(jì)的影響。應(yīng)該能夠通過在進(jìn)行設(shè)計(jì)決策來支持特定需求時(shí)添加的鏈接(軌跡),以確定在設(shè)計(jì)中對(duì)此需求進(jìn)行了何種處理。然后,在影響分析期間,應(yīng)該能夠看到所有與該特定需求相關(guān)的設(shè)計(jì)決策(通過軌跡或鏈接),應(yīng)該了解此需求中的更改對(duì)您的設(shè)計(jì)的影響。
元模型 是關(guān)于模型的模型。這是特定領(lǐng)域的模型,定義概念并提供用于創(chuàng)建該領(lǐng)域中的模型的構(gòu)建元素。例如,可以將 SPEM 視為流程工程元模型。
Eclipse Modeling Framework
作為開源 Eclipse 項(xiàng)目,Eclipse Modeling Framework (EMF) 包括了一個(gè)模型元模型(建模領(lǐng)域的元模型)。以下是 EMF 網(wǎng)站上提供的定義:
“EMF 是用于基于結(jié)構(gòu)化數(shù)據(jù)模型構(gòu)建工具和其他應(yīng)用程序的建模框架和代碼生成工具。通過采用 XML 元數(shù)據(jù)交換(XML Metadata Interchange,XMI)格式描述的模型規(guī)范,EMF 提供了工具和運(yùn)行時(shí)支持,從而為模型生成一組 Java 類;這包括一組適配器類(支持查看模型和基于命令對(duì)模型進(jìn)行編輯)和一個(gè)基本編輯器。
核心 EMF 框架包括用于描述模型的元模型 (Ecore),并為模型提供運(yùn)行時(shí)支持,包括更改通知、采用缺省 XMI 序列化的保存支持以及用于對(duì) EMF 對(duì)象進(jìn)行常規(guī)操作的非常高效的反射應(yīng)用程序編程接口(Application Programming Interface,API)?!?
統(tǒng)一建模語言 (UML)
“統(tǒng)一建模語言 (UML) 是行業(yè)標(biāo)準(zhǔn)語言,用于指定、可視化、構(gòu)造和記錄軟件系統(tǒng)的構(gòu)件。它簡(jiǎn)化了軟件設(shè)計(jì)的復(fù)雜流程,為構(gòu)造創(chuàng)建“藍(lán)圖”。”來源:Object Management Group (OMG)
UML 的好處在于其具有廣泛的行業(yè)支持。該規(guī)范最初于 1997 年提交給 OMG,擁有很多供應(yīng)商的設(shè)計(jì)與開發(fā)環(huán)境的全面支持,如 IBM Rational Software Modeler (RSM) 或 IBM Rational Software Architect (RSA)。
作為 OMG 標(biāo)準(zhǔn),該規(guī)范的當(dāng)前正式版本為 2.1.1。其中定義了 13 組概念 和歸入兩個(gè)類別的關(guān)系圖類型:
結(jié)構(gòu) ;類、對(duì)象、組件、組合結(jié)構(gòu)、包、部署
行為 :用例、活動(dòng)、狀態(tài)機(jī)、序列、通信、計(jì)時(shí)、交互概述
UML 是一種通用建模語言,其主要優(yōu)勢(shì)之一是能夠使用 UML 概要針對(duì)領(lǐng)域特定的建模工作進(jìn)行擴(kuò)展。
EMF 與 UML 的區(qū)別何在?
EMF 是建模框架(包括元模型),而 UML 是規(guī)范。以 Eclipse UML2 項(xiàng)目為例,該項(xiàng)目是基于 EMF 的 UML 元模型實(shí)現(xiàn),支持為 Eclipse 平臺(tái)開發(fā) UML 建模工具。從這個(gè)角度而言,可以將 EMF 元模型 (Ecore) 視為用于在 Eclipse 平臺(tái)上實(shí)現(xiàn) UML 模型的元模型。
UML 概要
UML 概要為獨(dú)立于領(lǐng)域的 UML 提供了簡(jiǎn)單的擴(kuò)展機(jī)制。概要支持定義領(lǐng)域特定的實(shí)體和規(guī)則。UML 概要能很好地與開發(fā)流程一起使用。例如UML Profile for Business Modeling 支持 Rational Unified Process (RUP) for Business Modeling Plug-In。
概要主要由構(gòu)造型組成。構(gòu)造型定義哪個(gè) UML 類(元類)與其關(guān)聯(lián)、該類上的屬性以及有關(guān)構(gòu)造型元素如何與其他元素關(guān)聯(lián)的約束。例如,在 UML 2.0 Profile for Software Services 中,Service Specification 構(gòu)造型擴(kuò)展 Interface UML 元類。它定義名為 published 的屬性來指示服務(wù)規(guī)范是否已發(fā)布到服務(wù)注冊(cè)中心。最后,其約束之一是,所有 Service Specification 操作都應(yīng)該標(biāo)記為 public。
UML 2.0 Profile for Software Services
UML 2.0 Profile for Software Services 是“允許對(duì)服務(wù)、面向服務(wù)的體系結(jié)構(gòu) (SOA) 和面向服務(wù)的解決方案進(jìn)行建模的 UML 概要。該概要(有時(shí)候稱為服務(wù)概要)已經(jīng)在 IBM Rational Software Architect (RSA) 中實(shí)現(xiàn),已成功在制定復(fù)雜客戶場(chǎng)景的模型方面得到了應(yīng)用,可用于幫助傳遞有關(guān)與開發(fā)面向服務(wù)的解決方案相關(guān)的注意事項(xiàng)?!?
該概要定義 Message、Service Specification 或 Service 之類的構(gòu)造型。它還為這些概念提供可方便區(qū)分的圖形符號(hào)。圖 2 顯示了 UML 關(guān)系圖的一個(gè)示例:保險(xiǎn)領(lǐng)域的消息設(shè)計(jì)模型(在 IBM Rational Software Architect 中)。它將使用服務(wù)概要中的 Message 構(gòu)造型表示為類關(guān)系圖(一種結(jié)構(gòu)關(guān)系圖)。
圖 2. UML 類關(guān)系圖
模型驅(qū)動(dòng)的體系結(jié)構(gòu)
模型驅(qū)動(dòng)的體系結(jié)構(gòu)(Model-Driven Architecture,MDA)為業(yè)務(wù)和技術(shù)提供獨(dú)立的模型,能滿足業(yè)務(wù)和技術(shù)不斷更改的情況下的需要。以下是摘自 OMG MDA 用戶指南的定義:
“OMG 的 MDA 是一種在軟件開發(fā)中使用模型的獨(dú)立于供應(yīng)商的方法。MDA 提供了相應(yīng)的方法,支持提供用于以下方面的工具:
指定獨(dú)立于為其提供支持的平臺(tái)的系統(tǒng)
指定平臺(tái)
為系統(tǒng)選擇特定的平臺(tái)
將系統(tǒng)規(guī)范轉(zhuǎn)換為針對(duì)特定平臺(tái)的規(guī)范
MDA 的主要目標(biāo)是通過從關(guān)注點(diǎn)的體系結(jié)構(gòu)分離來實(shí)現(xiàn)可移植性、互操作性和可重用性?!?
MDA 的核心是系統(tǒng)(現(xiàn)有或以后的系統(tǒng))、平臺(tái)(提供 J2EE 或 Web 服務(wù)等功能)和視角(關(guān)注特定概念的抽象概念)之類的概念。
MDA 定義以下模型:
計(jì)算獨(dú)立模型(Computation-Independent Model,CIM): 用于定義功能的需求的領(lǐng)域模型。
平臺(tái)獨(dú)立模型(Platform-Independent Model,PIM): 獨(dú)立于可以采用其進(jìn)行構(gòu)建的技術(shù)的業(yè)務(wù)功能和行為模型。
平臺(tái)特定模型(Platform-Specific Model,PSM): 將 PIM 的規(guī)范與特定類型的平臺(tái)的使用方式進(jìn)行組合。
MDA 定義了轉(zhuǎn)換,以將系統(tǒng)的模型轉(zhuǎn)換為同一個(gè)系統(tǒng)的另一個(gè)模型(如從 PIM 到 PSM)。將一個(gè)模型轉(zhuǎn)換為另一個(gè)模型的方法使用映射進(jìn)行說明。
MDA 的主要目標(biāo)之一是允許提供設(shè)計(jì)及為其提供支持的開發(fā)工具。
模型驅(qū)動(dòng)的開發(fā)
本部分目前所介紹的內(nèi)容(即模型和轉(zhuǎn)換)形成了模型驅(qū)動(dòng)的開發(fā)(Model-Driven Development,MDD)的基礎(chǔ),該方法有時(shí)候也稱為模型驅(qū)動(dòng)的軟件開發(fā)(Model-Driven Software Development,MDSD),是采用 MDA 作為說明標(biāo)準(zhǔn)的軟件工程方法。模型驅(qū)動(dòng)的開發(fā) (MDD) 是基于模型和轉(zhuǎn)換的軟件開發(fā)方法。MDD 支持采用半自動(dòng)化方式生成代碼,可使用一組模型到模型轉(zhuǎn)換以及模型到代碼轉(zhuǎn)換從高級(jí)業(yè)務(wù)分析模型生成代碼。此功能以一組模型的定義、模型實(shí)例的完整性和轉(zhuǎn)換中使用的不同模型間的元素的映射作為后盾。另外,MDD 支持對(duì)變更的影響進(jìn)行分析。
IBM Rational Software Delivery Platform (SDP) 支持使用 MDD(或其他方法,如業(yè)務(wù)驅(qū)動(dòng)的開發(fā))方法進(jìn)行端到端企業(yè)解決方案的團(tuán)隊(duì)開發(fā)。"業(yè)務(wù)驅(qū)動(dòng)的開發(fā)(Business-Driven Development,BDD)是一種基于角色的集成軟件開發(fā)方法,能使業(yè)務(wù)和 IT 保持一致,可大幅度提高業(yè)務(wù)的性能?!癇DD 也使用模型,關(guān)注的是業(yè)務(wù)和 IT 模型在整個(gè) SOA 生命周期中的協(xié)作”(請(qǐng)參見本系列的第 1 部分)。IBM BDD 方法通過 IBM Software Delivery Platform 支持各種角色,如業(yè)務(wù)分析人員、IT 架構(gòu)師、J2EE 開發(fā)人員或集成開發(fā)人員。
請(qǐng)參見參考資料中提供的 IBM Systems Journal 文章的鏈接,IBM 思想領(lǐng)袖 (thought leader) 在其中深入地討論了模型驅(qū)動(dòng)的軟件開發(fā)方法。
資產(chǎn)
資產(chǎn)或服務(wù)?
資產(chǎn)和服務(wù)在說明、重用潛力和粒度(細(xì)粒度和粗粒度)要求方面具有相同的特征。服務(wù)可以為一種資產(chǎn),可能需要很多資產(chǎn)進(jìn)行表示。服務(wù)資產(chǎn)的有些元素在開發(fā)期間使用較多,如業(yè)務(wù)流程模型或測(cè)試用例,而服務(wù)資產(chǎn)的其他元素更多地應(yīng)用到運(yùn)行時(shí),如 Web 服務(wù)描述語言(Web Services Description Language,WSDL)、XML 模式描述符(XML Schema Descriptor,XSD)或企業(yè)存檔(Enterprise Archive,EAR)。SOA 治理定義指定此類服務(wù)和資產(chǎn)的生命周期的規(guī)則。
資產(chǎn)和模式是 SOA 成功的關(guān)鍵,因?yàn)檫@二者為進(jìn)行重用提供支持。事實(shí)上,采用基于資產(chǎn)的業(yè)務(wù)模型的企業(yè)可獲得巨大的增長(zhǎng)能力。此類企業(yè)不再像傳統(tǒng)的基于人力的業(yè)務(wù)模型中那樣受到其員工的效率或數(shù)量的限制。恰當(dāng)使用資產(chǎn)可以對(duì)軟件投資帶來巨大的變化。不過,采用此模型的任何人都會(huì)告訴您,這并不簡(jiǎn)單,需要恰當(dāng)?shù)闹卫砗突A(chǔ)設(shè)施支持。
對(duì) SOA 而言,創(chuàng)造性可能會(huì)對(duì)效率造成影響。讓架構(gòu)師、設(shè)計(jì)人員和開發(fā)人員完全從頭進(jìn)行每個(gè)新項(xiàng)目是我們所不希望的。類似的需求應(yīng)該能夠得到一致的體系結(jié)構(gòu)和設(shè)計(jì)。資產(chǎn)和模式允許恰當(dāng)?shù)膭?chuàng)造性,使您能夠在可能的情況下重用經(jīng)過驗(yàn)證的解決方案,然后將您的時(shí)間和精力集中在需要全新開發(fā)的內(nèi)容上,如特定于該項(xiàng)目的業(yè)務(wù)邏輯等。
資產(chǎn)是提供上下文中問題的解決方案的構(gòu)件集合。在此上下文中,構(gòu)件可以為任意內(nèi)容,如需求、設(shè)計(jì)模型、實(shí)現(xiàn)代碼或測(cè)試用例等??梢詫?gòu)件視為文件系統(tǒng)上的文件。對(duì)其成功至關(guān)重要的是,資產(chǎn)包括有關(guān)如何使用、自定義和擴(kuò)展資產(chǎn)的說明。有關(guān)資產(chǎn)的構(gòu)成要素的更多信息,請(qǐng)參見可重用資產(chǎn)規(guī)范。
模式
資產(chǎn)或模式?
資產(chǎn)和模式均提供上下文中問題的解決方案。那么,二者的細(xì)微區(qū)別在哪里呢?資產(chǎn)可以包含任意類型的構(gòu)件(如電影),而且還包括模式。模式是一種特殊的資產(chǎn)。資產(chǎn)所倚重的是有關(guān)如何描述和設(shè)計(jì)其結(jié)構(gòu)的標(biāo)準(zhǔn)化模型 (RAS):模型可以使用概要進(jìn)行擴(kuò)展。可以將模式視為其規(guī)范和實(shí)現(xiàn)。
模式是對(duì)給定上下文中重復(fù)出現(xiàn)的問題的解決方案。模式是一種特定類型的可重用資產(chǎn)??梢詫?duì)模式的規(guī)范(問題、上下文、各個(gè)因素和解決方案的說明)與實(shí)現(xiàn)(如 Java Bean)加以區(qū)分。單個(gè)模式規(guī)范可以有很多個(gè)實(shí)現(xiàn)。
根據(jù)其應(yīng)用到的開發(fā)過程的階段不同,模式可歸入不同的類別。例如,IBM 電子商務(wù)模式將模式分為以下幾類:業(yè)務(wù)、集成、組合、應(yīng)用程序和運(yùn)行時(shí)。Gang of Four (GoF) 設(shè)計(jì)模式也非常有名。
使用模式時(shí),可以確保所提供或代碼化的解決方案是正確、有用的,而且經(jīng)過了驗(yàn)證。不過,和任意可重用資產(chǎn)一樣,只有在給出了說明何時(shí)、為何以及如何使用模式的上下文和方法時(shí),才可以加以采用。存在很多模式,而上下文是開始使用的必要條件。例如,電子商務(wù)的模式以流程的形式提供(基于技能和環(huán)境),可幫助您標(biāo)識(shí)處理您的業(yè)務(wù)問題的相關(guān)模式。
最后,模式的目標(biāo)之一是提供一致性,以便最終能因?yàn)樵谠O(shè)計(jì)中使用了模式而基于相同的一組需求得到相同的體系結(jié)構(gòu)。
可重用資產(chǎn)規(guī)范
可重用資產(chǎn)規(guī)范(Reusable Asset Specification,RAS)于 2005 年開始采用,是用于描述可重用軟件資產(chǎn)的結(jié)構(gòu)、內(nèi)容和說明的 OMG 標(biāo)準(zhǔn)。RAS 的目標(biāo)是提供有關(guān)如何以一致的標(biāo)準(zhǔn)方式打包資產(chǎn)的最佳實(shí)踐。按照規(guī)范中的定義,RAS 資產(chǎn)的核心特征包括:
分類 :資產(chǎn)相關(guān)的上下文。
解決方案 :資產(chǎn)中包含的構(gòu)件。
用法 :有關(guān)安裝、使用和自定義資產(chǎn)的規(guī)則。
相關(guān)資產(chǎn) :此資產(chǎn)如何與其他資產(chǎn)相關(guān)。
構(gòu)件的類型可以由其文件名后綴決定,如 .xml、.txt、.doc 或 .java;也可以由其用途決定,如用例模型或分析模型。由于軟件資產(chǎn) 是較為寬泛的術(shù)語,RAS 還提供了用于描述特定資產(chǎn)類型的概要。此概念與 UML 概要相同??梢允褂?UML 概要來擴(kuò)展獨(dú)立于領(lǐng)域的 UML。類似地,可以采用領(lǐng)域特定(如 Web 服務(wù))的 RAS 概要來擴(kuò)展獨(dú)立于領(lǐng)域的 RAS。
RAS 資產(chǎn)的文件擴(kuò)展名為 .ras,打包為 .zip 文件,這意味著其中包含一個(gè)清單,可以使用 WinZip 將其打開。圖 3 摘自 RAS 規(guī)范,說明了核心 RAS 資產(chǎn)的主要部分。
圖 3. 核心 RAS 資產(chǎn)的主要部分
結(jié)束語
本文定義了有關(guān)軟件工程流程和方法的術(shù)語。定義了用于構(gòu)建 SOA 解決方案的軟件構(gòu)件,如模型、資產(chǎn)和模式等。另外還介紹了主要的標(biāo)準(zhǔn),如 SPEM、UML 和 RAS。
后續(xù)文章將定義與分析、設(shè)計(jì)、實(shí)現(xiàn)、運(yùn)行時(shí)和管理相關(guān)的 SOA 術(shù)語。歡迎您繼續(xù)閱讀 developerWorks 上本系列的其他文章!
在任何領(lǐng)域中,語義都非常重要,而在面向服務(wù)的體系結(jié)構(gòu)(Service-oriented architecture,SOA)中更是如此。由于 SOA 涉及多個(gè)團(tuán)隊(duì)和組織,因此就相關(guān)術(shù)語達(dá)成一致至關(guān)重要。本系列將帶著您開始 SOA 之旅,為您定義基礎(chǔ)術(shù)語和主要概念。您將了解 SOA 領(lǐng)域中所使用的各個(gè)詞匯。對(duì)于每個(gè)術(shù)語,將說明其為何對(duì) SOA 重要、其在這種情況下的含義、相關(guān)的標(biāo)準(zhǔn)有哪些以及與其他術(shù)語的區(qū)別如何。
本系列的第 1 部分確定了業(yè)務(wù)焦點(diǎn),并通過定義服務(wù) 和 SOA 等術(shù)語為后續(xù)部分打好了基礎(chǔ)。本文將介紹成功 SOA 采用所必需的軟件工程方法和流程,還說明交付 SOA 解決方案所需的構(gòu)件(如模型和資產(chǎn))。
開發(fā)流程和方法
成功的軟件開發(fā)需要以下因素:
需要得到理解和遵循的原則。
進(jìn)行了正式說明的基于經(jīng)過驗(yàn)證的最佳實(shí)踐的方法和技術(shù)。
可以進(jìn)行定制的流程。
方法內(nèi)容
方法內(nèi)容 描述需要生成什么內(nèi)容、如何執(zhí)行相關(guān)工作以及由誰執(zhí)行。
方法內(nèi)容構(gòu)件包括:
角色 :定義技能和工作產(chǎn)品職責(zé)。軟件架構(gòu)師 就是角色的一個(gè)例子。
工作產(chǎn)品 :任務(wù)的結(jié)果,可以為交付內(nèi)容,也可以不是交付內(nèi)容。服務(wù)模型 就是工作產(chǎn)品的一個(gè)例子。
任務(wù) :特定角色執(zhí)行的步驟序列。任務(wù)使用輸入工作產(chǎn)品來生成或修改輸出工作產(chǎn)品。標(biāo)識(shí)服務(wù) 就是任務(wù)的一個(gè)例子。
指南 :文檔說明。術(shù)語表、模板、示例 和工具使用指導(dǎo)信息 都是指南。
流程
流程 用于將方法內(nèi)容組織到開發(fā)周期中,并指定要完成的工作的順序。要完成的工作的順序獨(dú)立于開發(fā)生命周期模型(如瀑布式或迭代)??梢詫⒘鞒桃暈楣ぷ髁骰蚍纸饨Y(jié)構(gòu)。通過流程,項(xiàng)目經(jīng)理可以確定在項(xiàng)目的每個(gè)階段需要哪些人員以及修改了哪些工作產(chǎn)品。如果熟悉 Rational Unified Process? (RUP),則可以將 RUP 規(guī)程(如分析與設(shè)計(jì)實(shí)現(xiàn))視為方法內(nèi)容,而將 RUP 階段(如細(xì)化和構(gòu)造)視為流程元素。
務(wù)必將方法和流程這兩個(gè)概念加以區(qū)分,并提供框架來支持分別對(duì)其進(jìn)行修改。
Rational Method Composer
IBM Rational? Method Composer (RMC) 是基于 Eclipse 的方法與流程創(chuàng)作平臺(tái),用于集成、定制、代碼化和發(fā)布流程。使用方便而且功能強(qiáng)大的 RMC 提供了一組流程,可以方便地加以使用或自定義,如 Rational Unified Process (RUP)。負(fù)責(zé)維護(hù)流程的項(xiàng)目經(jīng)理、項(xiàng)目管理者以及程序管理員通常會(huì)使用 RMC,該工具可為本部分所描述的概念提供支持。
RMC 中進(jìn)行的工作的輸出是作為 HTML 發(fā)布的流程(通常采用網(wǎng)站的形式)。希望遵循該流程的組織可以隨后使用此流程站點(diǎn)。
軟件流程工程元模型
本部分將討論開發(fā)流程。軟件流程工程元模型(Software Process Engineering Metamodel,SPEM)是正式描述軟件開發(fā)流程的的標(biāo)準(zhǔn)規(guī)范。作為 Object Management Group (OMG) 標(biāo)準(zhǔn),SPEM 是獨(dú)立于供應(yīng)商、方法和框架的。1.1 版于 2005 年 1 月正式發(fā)布,而包含重大更新的 2.0 版目前正在制訂中。
Rational Unified Process
Rational Unified Process (RUP) 基于全球數(shù)千項(xiàng)目所采用的最佳實(shí)踐,是能夠針對(duì)具體項(xiàng)目進(jìn)行方便定制的軟件開發(fā)流程。RUP 包括有關(guān)優(yōu)先級(jí)權(quán)衡、迭代開發(fā)、可視建模、軟件質(zhì)量和團(tuán)隊(duì)協(xié)作的主要原則。RUP 定義規(guī)程(方法內(nèi)容)和階段(流程),如圖 1 中所示。
圖 1. Rational Unified Process (RUP)
Rational Unified Process for Service-Oriented Modeling and Architecture
Rational Unified Process for Service-Oriented Modeling and Architecture (RUP Plug-In for SOMA) 構(gòu)建于 RUP 之上,可提供有關(guān)開發(fā)面向服務(wù)的解決方案的指導(dǎo)。2.4 版(請(qǐng)參見參考資料)提供了組合之前 RUP for SOA 內(nèi)容和 IBM Global Business Services (GBS) SOMA 方法的統(tǒng)一方法。RUP Plug-In for SOMA 為軟件架構(gòu)師和設(shè)計(jì)人員提供了有關(guān)面向服務(wù)的體系結(jié)構(gòu)的分析、體系結(jié)構(gòu)和設(shè)計(jì)的具體指導(dǎo)信息。
提供了專用統(tǒng)一建模語言(Unified Modeling Language,UML)概要,用于建模領(lǐng)域特定的解決方案(包括 SOA),并隨之提供了緊密相關(guān)的專用流程。例如,有支持 RUP Plug-In for SOMA 的 UML 2.0 profile for Software Services。
注意:將在本系列的后續(xù)文章中討論與管理相關(guān)的流程。
IBM 技術(shù)
如本系列的第 1 部分中所述,組件業(yè)務(wù)建模(Component Business Modeling,CBM)可幫助組織對(duì)策略、技術(shù)、操作和投資一致性形成大量新的認(rèn)識(shí)。CBM 支持對(duì)形成差別的業(yè)務(wù)組件進(jìn)行標(biāo)識(shí),還支持對(duì)業(yè)務(wù)流程進(jìn)行分析。
面向服務(wù)的建模與體系結(jié)構(gòu)(Service-Oriented Modeling and Architecture,SOMA)提供了有關(guān) SOA 解決方案的分析和設(shè)計(jì)的指導(dǎo)信息。SOMA 支持對(duì)與業(yè)務(wù)保持一致的服務(wù)進(jìn)行標(biāo)識(shí)、規(guī)范化和執(zhí)行(在設(shè)計(jì)層)。將在稍后詳細(xì)討論此主題。
模型、UML、資產(chǎn)與模式
元數(shù)據(jù)
元數(shù)據(jù)即關(guān)于數(shù)據(jù)的數(shù)據(jù)。例如,關(guān)于所錄制的歌曲的元數(shù)據(jù)可能包括關(guān)于演唱者、專輯、作曲、長(zhǎng)度或質(zhì)量的信息,而數(shù)據(jù)則是音頻記錄本身。
根據(jù)上下文不同,相同的數(shù)據(jù)可能為實(shí)際數(shù)據(jù),也可能為元數(shù)據(jù)。以前面討論的開發(fā)方法和流程為例。在 RMC 中修改開發(fā)方法時(shí),定義要類型化的內(nèi)容(由元數(shù)據(jù)提供支持)。例如,可能會(huì)定義工作產(chǎn)品、任務(wù)和角色的新實(shí)例。在此級(jí)別,工作產(chǎn)品、任務(wù)和角色是元數(shù)據(jù)元素,元數(shù)據(jù)還定義這些類型(角色執(zhí)行的任務(wù))之間的關(guān)系?,F(xiàn)在考慮設(shè)計(jì)人員定義有關(guān)方法的概念時(shí)的情況。假定他們?cè)谑褂?UML 建模工作產(chǎn)品、角色和任務(wù)的概念。在此級(jí)別,工作產(chǎn)品、任務(wù)和角色是實(shí)際的數(shù)據(jù),而 UML 是元數(shù)據(jù)。將稍后在 RMC 中將此數(shù)據(jù)作為元數(shù)據(jù)使用。這樣看來,可以將 UML 視為元-元數(shù)據(jù)!
模型
RUP 將模型定義為系統(tǒng)的抽象表示或模擬,可從特定的角度提供對(duì)系統(tǒng)的完整描述。模型經(jīng)常用于更好地了解系統(tǒng)如何工作,或用于記錄實(shí)際實(shí)現(xiàn)的設(shè)計(jì)決策。模型經(jīng)常由多個(gè)不同類型的部分組成。這些部分作為模型元素進(jìn)行歸類。
模型的目標(biāo)受眾是能夠理解這些模型的人群。例如,系統(tǒng)分析人員和設(shè)計(jì)人員創(chuàng)建和使用分析模型,數(shù)據(jù)庫設(shè)計(jì)人員設(shè)計(jì)和查看數(shù)據(jù)模型。模型可以基于文本和/或圖形。由于建模是在保持嚴(yán)密性和完整性的情況下減少復(fù)雜性(如在較高的抽象級(jí)別進(jìn)行描述),因此最好使用豐富的圖形設(shè)計(jì)符號(hào),例如在 RUM 中描述為可視建模 的統(tǒng)一建模語言 (UML)。模型位于特定的抽象級(jí)別,可以將其轉(zhuǎn)換到更低的級(jí)別抽象。例如,分析模型通常會(huì)轉(zhuǎn)換為設(shè)計(jì)模型。
在本系列的第 1 部分中,我們說明了協(xié)作 SOA 更為重要。例如,您的公司可能會(huì)將詳細(xì)設(shè)計(jì)或?qū)崿F(xiàn)外包給其他公司。進(jìn)行建模時(shí),請(qǐng)牢記要將建模結(jié)果提供給其他人使用。另外,您的 SOA 設(shè)計(jì)和開發(fā)平臺(tái)也應(yīng)該能夠接受模型,并將其轉(zhuǎn)換為其他模型。
自動(dòng)化與轉(zhuǎn)換
SOA 設(shè)計(jì)與開發(fā)平臺(tái)應(yīng)該允許進(jìn)行模型的半自動(dòng)化轉(zhuǎn)換,從而從高抽象級(jí)別轉(zhuǎn)換到低抽象級(jí)別,最終轉(zhuǎn)換為代碼。例如,UML-to-Java? 轉(zhuǎn)換能從 UML 類關(guān)系圖生成 Java 代碼。
基礎(chǔ)框架還應(yīng)該考慮可跟蹤性,該功能實(shí)際上就是回溯到較高的抽象級(jí)別。例如,假定您希望了解需求中的變更對(duì)您的設(shè)計(jì)的影響。應(yīng)該能夠通過在進(jìn)行設(shè)計(jì)決策來支持特定需求時(shí)添加的鏈接(軌跡),以確定在設(shè)計(jì)中對(duì)此需求進(jìn)行了何種處理。然后,在影響分析期間,應(yīng)該能夠看到所有與該特定需求相關(guān)的設(shè)計(jì)決策(通過軌跡或鏈接),應(yīng)該了解此需求中的更改對(duì)您的設(shè)計(jì)的影響。
元模型 是關(guān)于模型的模型。這是特定領(lǐng)域的模型,定義概念并提供用于創(chuàng)建該領(lǐng)域中的模型的構(gòu)建元素。例如,可以將 SPEM 視為流程工程元模型。
Eclipse Modeling Framework
作為開源 Eclipse 項(xiàng)目,Eclipse Modeling Framework (EMF) 包括了一個(gè)模型元模型(建模領(lǐng)域的元模型)。以下是 EMF 網(wǎng)站上提供的定義:
“EMF 是用于基于結(jié)構(gòu)化數(shù)據(jù)模型構(gòu)建工具和其他應(yīng)用程序的建模框架和代碼生成工具。通過采用 XML 元數(shù)據(jù)交換(XML Metadata Interchange,XMI)格式描述的模型規(guī)范,EMF 提供了工具和運(yùn)行時(shí)支持,從而為模型生成一組 Java 類;這包括一組適配器類(支持查看模型和基于命令對(duì)模型進(jìn)行編輯)和一個(gè)基本編輯器。
核心 EMF 框架包括用于描述模型的元模型 (Ecore),并為模型提供運(yùn)行時(shí)支持,包括更改通知、采用缺省 XMI 序列化的保存支持以及用于對(duì) EMF 對(duì)象進(jìn)行常規(guī)操作的非常高效的反射應(yīng)用程序編程接口(Application Programming Interface,API)?!?
統(tǒng)一建模語言 (UML)
“統(tǒng)一建模語言 (UML) 是行業(yè)標(biāo)準(zhǔn)語言,用于指定、可視化、構(gòu)造和記錄軟件系統(tǒng)的構(gòu)件。它簡(jiǎn)化了軟件設(shè)計(jì)的復(fù)雜流程,為構(gòu)造創(chuàng)建“藍(lán)圖”。”來源:Object Management Group (OMG)
UML 的好處在于其具有廣泛的行業(yè)支持。該規(guī)范最初于 1997 年提交給 OMG,擁有很多供應(yīng)商的設(shè)計(jì)與開發(fā)環(huán)境的全面支持,如 IBM Rational Software Modeler (RSM) 或 IBM Rational Software Architect (RSA)。
作為 OMG 標(biāo)準(zhǔn),該規(guī)范的當(dāng)前正式版本為 2.1.1。其中定義了 13 組概念 和歸入兩個(gè)類別的關(guān)系圖類型:
結(jié)構(gòu) ;類、對(duì)象、組件、組合結(jié)構(gòu)、包、部署
行為 :用例、活動(dòng)、狀態(tài)機(jī)、序列、通信、計(jì)時(shí)、交互概述
UML 是一種通用建模語言,其主要優(yōu)勢(shì)之一是能夠使用 UML 概要針對(duì)領(lǐng)域特定的建模工作進(jìn)行擴(kuò)展。
EMF 與 UML 的區(qū)別何在?
EMF 是建模框架(包括元模型),而 UML 是規(guī)范。以 Eclipse UML2 項(xiàng)目為例,該項(xiàng)目是基于 EMF 的 UML 元模型實(shí)現(xiàn),支持為 Eclipse 平臺(tái)開發(fā) UML 建模工具。從這個(gè)角度而言,可以將 EMF 元模型 (Ecore) 視為用于在 Eclipse 平臺(tái)上實(shí)現(xiàn) UML 模型的元模型。
UML 概要
UML 概要為獨(dú)立于領(lǐng)域的 UML 提供了簡(jiǎn)單的擴(kuò)展機(jī)制。概要支持定義領(lǐng)域特定的實(shí)體和規(guī)則。UML 概要能很好地與開發(fā)流程一起使用。例如UML Profile for Business Modeling 支持 Rational Unified Process (RUP) for Business Modeling Plug-In。
概要主要由構(gòu)造型組成。構(gòu)造型定義哪個(gè) UML 類(元類)與其關(guān)聯(lián)、該類上的屬性以及有關(guān)構(gòu)造型元素如何與其他元素關(guān)聯(lián)的約束。例如,在 UML 2.0 Profile for Software Services 中,Service Specification 構(gòu)造型擴(kuò)展 Interface UML 元類。它定義名為 published 的屬性來指示服務(wù)規(guī)范是否已發(fā)布到服務(wù)注冊(cè)中心。最后,其約束之一是,所有 Service Specification 操作都應(yīng)該標(biāo)記為 public。
UML 2.0 Profile for Software Services
UML 2.0 Profile for Software Services 是“允許對(duì)服務(wù)、面向服務(wù)的體系結(jié)構(gòu) (SOA) 和面向服務(wù)的解決方案進(jìn)行建模的 UML 概要。該概要(有時(shí)候稱為服務(wù)概要)已經(jīng)在 IBM Rational Software Architect (RSA) 中實(shí)現(xiàn),已成功在制定復(fù)雜客戶場(chǎng)景的模型方面得到了應(yīng)用,可用于幫助傳遞有關(guān)與開發(fā)面向服務(wù)的解決方案相關(guān)的注意事項(xiàng)?!?
該概要定義 Message、Service Specification 或 Service 之類的構(gòu)造型。它還為這些概念提供可方便區(qū)分的圖形符號(hào)。圖 2 顯示了 UML 關(guān)系圖的一個(gè)示例:保險(xiǎn)領(lǐng)域的消息設(shè)計(jì)模型(在 IBM Rational Software Architect 中)。它將使用服務(wù)概要中的 Message 構(gòu)造型表示為類關(guān)系圖(一種結(jié)構(gòu)關(guān)系圖)。
圖 2. UML 類關(guān)系圖
模型驅(qū)動(dòng)的體系結(jié)構(gòu)
模型驅(qū)動(dòng)的體系結(jié)構(gòu)(Model-Driven Architecture,MDA)為業(yè)務(wù)和技術(shù)提供獨(dú)立的模型,能滿足業(yè)務(wù)和技術(shù)不斷更改的情況下的需要。以下是摘自 OMG MDA 用戶指南的定義:
“OMG 的 MDA 是一種在軟件開發(fā)中使用模型的獨(dú)立于供應(yīng)商的方法。MDA 提供了相應(yīng)的方法,支持提供用于以下方面的工具:
指定獨(dú)立于為其提供支持的平臺(tái)的系統(tǒng)
指定平臺(tái)
為系統(tǒng)選擇特定的平臺(tái)
將系統(tǒng)規(guī)范轉(zhuǎn)換為針對(duì)特定平臺(tái)的規(guī)范
MDA 的主要目標(biāo)是通過從關(guān)注點(diǎn)的體系結(jié)構(gòu)分離來實(shí)現(xiàn)可移植性、互操作性和可重用性?!?
MDA 的核心是系統(tǒng)(現(xiàn)有或以后的系統(tǒng))、平臺(tái)(提供 J2EE 或 Web 服務(wù)等功能)和視角(關(guān)注特定概念的抽象概念)之類的概念。
MDA 定義以下模型:
計(jì)算獨(dú)立模型(Computation-Independent Model,CIM): 用于定義功能的需求的領(lǐng)域模型。
平臺(tái)獨(dú)立模型(Platform-Independent Model,PIM): 獨(dú)立于可以采用其進(jìn)行構(gòu)建的技術(shù)的業(yè)務(wù)功能和行為模型。
平臺(tái)特定模型(Platform-Specific Model,PSM): 將 PIM 的規(guī)范與特定類型的平臺(tái)的使用方式進(jìn)行組合。
MDA 定義了轉(zhuǎn)換,以將系統(tǒng)的模型轉(zhuǎn)換為同一個(gè)系統(tǒng)的另一個(gè)模型(如從 PIM 到 PSM)。將一個(gè)模型轉(zhuǎn)換為另一個(gè)模型的方法使用映射進(jìn)行說明。
MDA 的主要目標(biāo)之一是允許提供設(shè)計(jì)及為其提供支持的開發(fā)工具。
模型驅(qū)動(dòng)的開發(fā)
本部分目前所介紹的內(nèi)容(即模型和轉(zhuǎn)換)形成了模型驅(qū)動(dòng)的開發(fā)(Model-Driven Development,MDD)的基礎(chǔ),該方法有時(shí)候也稱為模型驅(qū)動(dòng)的軟件開發(fā)(Model-Driven Software Development,MDSD),是采用 MDA 作為說明標(biāo)準(zhǔn)的軟件工程方法。模型驅(qū)動(dòng)的開發(fā) (MDD) 是基于模型和轉(zhuǎn)換的軟件開發(fā)方法。MDD 支持采用半自動(dòng)化方式生成代碼,可使用一組模型到模型轉(zhuǎn)換以及模型到代碼轉(zhuǎn)換從高級(jí)業(yè)務(wù)分析模型生成代碼。此功能以一組模型的定義、模型實(shí)例的完整性和轉(zhuǎn)換中使用的不同模型間的元素的映射作為后盾。另外,MDD 支持對(duì)變更的影響進(jìn)行分析。
IBM Rational Software Delivery Platform (SDP) 支持使用 MDD(或其他方法,如業(yè)務(wù)驅(qū)動(dòng)的開發(fā))方法進(jìn)行端到端企業(yè)解決方案的團(tuán)隊(duì)開發(fā)。"業(yè)務(wù)驅(qū)動(dòng)的開發(fā)(Business-Driven Development,BDD)是一種基于角色的集成軟件開發(fā)方法,能使業(yè)務(wù)和 IT 保持一致,可大幅度提高業(yè)務(wù)的性能?!癇DD 也使用模型,關(guān)注的是業(yè)務(wù)和 IT 模型在整個(gè) SOA 生命周期中的協(xié)作”(請(qǐng)參見本系列的第 1 部分)。IBM BDD 方法通過 IBM Software Delivery Platform 支持各種角色,如業(yè)務(wù)分析人員、IT 架構(gòu)師、J2EE 開發(fā)人員或集成開發(fā)人員。
請(qǐng)參見參考資料中提供的 IBM Systems Journal 文章的鏈接,IBM 思想領(lǐng)袖 (thought leader) 在其中深入地討論了模型驅(qū)動(dòng)的軟件開發(fā)方法。
資產(chǎn)
資產(chǎn)或服務(wù)?
資產(chǎn)和服務(wù)在說明、重用潛力和粒度(細(xì)粒度和粗粒度)要求方面具有相同的特征。服務(wù)可以為一種資產(chǎn),可能需要很多資產(chǎn)進(jìn)行表示。服務(wù)資產(chǎn)的有些元素在開發(fā)期間使用較多,如業(yè)務(wù)流程模型或測(cè)試用例,而服務(wù)資產(chǎn)的其他元素更多地應(yīng)用到運(yùn)行時(shí),如 Web 服務(wù)描述語言(Web Services Description Language,WSDL)、XML 模式描述符(XML Schema Descriptor,XSD)或企業(yè)存檔(Enterprise Archive,EAR)。SOA 治理定義指定此類服務(wù)和資產(chǎn)的生命周期的規(guī)則。
資產(chǎn)和模式是 SOA 成功的關(guān)鍵,因?yàn)檫@二者為進(jìn)行重用提供支持。事實(shí)上,采用基于資產(chǎn)的業(yè)務(wù)模型的企業(yè)可獲得巨大的增長(zhǎng)能力。此類企業(yè)不再像傳統(tǒng)的基于人力的業(yè)務(wù)模型中那樣受到其員工的效率或數(shù)量的限制。恰當(dāng)使用資產(chǎn)可以對(duì)軟件投資帶來巨大的變化。不過,采用此模型的任何人都會(huì)告訴您,這并不簡(jiǎn)單,需要恰當(dāng)?shù)闹卫砗突A(chǔ)設(shè)施支持。
對(duì) SOA 而言,創(chuàng)造性可能會(huì)對(duì)效率造成影響。讓架構(gòu)師、設(shè)計(jì)人員和開發(fā)人員完全從頭進(jìn)行每個(gè)新項(xiàng)目是我們所不希望的。類似的需求應(yīng)該能夠得到一致的體系結(jié)構(gòu)和設(shè)計(jì)。資產(chǎn)和模式允許恰當(dāng)?shù)膭?chuàng)造性,使您能夠在可能的情況下重用經(jīng)過驗(yàn)證的解決方案,然后將您的時(shí)間和精力集中在需要全新開發(fā)的內(nèi)容上,如特定于該項(xiàng)目的業(yè)務(wù)邏輯等。
資產(chǎn)是提供上下文中問題的解決方案的構(gòu)件集合。在此上下文中,構(gòu)件可以為任意內(nèi)容,如需求、設(shè)計(jì)模型、實(shí)現(xiàn)代碼或測(cè)試用例等??梢詫?gòu)件視為文件系統(tǒng)上的文件。對(duì)其成功至關(guān)重要的是,資產(chǎn)包括有關(guān)如何使用、自定義和擴(kuò)展資產(chǎn)的說明。有關(guān)資產(chǎn)的構(gòu)成要素的更多信息,請(qǐng)參見可重用資產(chǎn)規(guī)范。
模式
資產(chǎn)或模式?
資產(chǎn)和模式均提供上下文中問題的解決方案。那么,二者的細(xì)微區(qū)別在哪里呢?資產(chǎn)可以包含任意類型的構(gòu)件(如電影),而且還包括模式。模式是一種特殊的資產(chǎn)。資產(chǎn)所倚重的是有關(guān)如何描述和設(shè)計(jì)其結(jié)構(gòu)的標(biāo)準(zhǔn)化模型 (RAS):模型可以使用概要進(jìn)行擴(kuò)展。可以將模式視為其規(guī)范和實(shí)現(xiàn)。
模式是對(duì)給定上下文中重復(fù)出現(xiàn)的問題的解決方案。模式是一種特定類型的可重用資產(chǎn)??梢詫?duì)模式的規(guī)范(問題、上下文、各個(gè)因素和解決方案的說明)與實(shí)現(xiàn)(如 Java Bean)加以區(qū)分。單個(gè)模式規(guī)范可以有很多個(gè)實(shí)現(xiàn)。
根據(jù)其應(yīng)用到的開發(fā)過程的階段不同,模式可歸入不同的類別。例如,IBM 電子商務(wù)模式將模式分為以下幾類:業(yè)務(wù)、集成、組合、應(yīng)用程序和運(yùn)行時(shí)。Gang of Four (GoF) 設(shè)計(jì)模式也非常有名。
使用模式時(shí),可以確保所提供或代碼化的解決方案是正確、有用的,而且經(jīng)過了驗(yàn)證。不過,和任意可重用資產(chǎn)一樣,只有在給出了說明何時(shí)、為何以及如何使用模式的上下文和方法時(shí),才可以加以采用。存在很多模式,而上下文是開始使用的必要條件。例如,電子商務(wù)的模式以流程的形式提供(基于技能和環(huán)境),可幫助您標(biāo)識(shí)處理您的業(yè)務(wù)問題的相關(guān)模式。
最后,模式的目標(biāo)之一是提供一致性,以便最終能因?yàn)樵谠O(shè)計(jì)中使用了模式而基于相同的一組需求得到相同的體系結(jié)構(gòu)。
可重用資產(chǎn)規(guī)范
可重用資產(chǎn)規(guī)范(Reusable Asset Specification,RAS)于 2005 年開始采用,是用于描述可重用軟件資產(chǎn)的結(jié)構(gòu)、內(nèi)容和說明的 OMG 標(biāo)準(zhǔn)。RAS 的目標(biāo)是提供有關(guān)如何以一致的標(biāo)準(zhǔn)方式打包資產(chǎn)的最佳實(shí)踐。按照規(guī)范中的定義,RAS 資產(chǎn)的核心特征包括:
分類 :資產(chǎn)相關(guān)的上下文。
解決方案 :資產(chǎn)中包含的構(gòu)件。
用法 :有關(guān)安裝、使用和自定義資產(chǎn)的規(guī)則。
相關(guān)資產(chǎn) :此資產(chǎn)如何與其他資產(chǎn)相關(guān)。
構(gòu)件的類型可以由其文件名后綴決定,如 .xml、.txt、.doc 或 .java;也可以由其用途決定,如用例模型或分析模型。由于軟件資產(chǎn) 是較為寬泛的術(shù)語,RAS 還提供了用于描述特定資產(chǎn)類型的概要。此概念與 UML 概要相同??梢允褂?UML 概要來擴(kuò)展獨(dú)立于領(lǐng)域的 UML。類似地,可以采用領(lǐng)域特定(如 Web 服務(wù))的 RAS 概要來擴(kuò)展獨(dú)立于領(lǐng)域的 RAS。
RAS 資產(chǎn)的文件擴(kuò)展名為 .ras,打包為 .zip 文件,這意味著其中包含一個(gè)清單,可以使用 WinZip 將其打開。圖 3 摘自 RAS 規(guī)范,說明了核心 RAS 資產(chǎn)的主要部分。
圖 3. 核心 RAS 資產(chǎn)的主要部分
結(jié)束語
本文定義了有關(guān)軟件工程流程和方法的術(shù)語。定義了用于構(gòu)建 SOA 解決方案的軟件構(gòu)件,如模型、資產(chǎn)和模式等。另外還介紹了主要的標(biāo)準(zhǔn),如 SPEM、UML 和 RAS。
后續(xù)文章將定義與分析、設(shè)計(jì)、實(shí)現(xiàn)、運(yùn)行時(shí)和管理相關(guān)的 SOA 術(shù)語。歡迎您繼續(xù)閱讀 developerWorks 上本系列的其他文章!
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

