1. 程式人生 > >如何使用IBM Rational Software Architect實現模型驅動的軟體開發

如何使用IBM Rational Software Architect實現模型驅動的軟體開發

相關文章

基於RSA模型轉換框架的開發http://www.ibm.com/developerworks/cn/rational/r-rsa-transformation/

1 MDA概述

模型驅動架構(MDA)是OMG提出的新的方法學, 是一種新的系統開發方法,它強調整個系統開發過程由對軟體系統的建模行為驅動,完成系統需求分析、架構設計、構建、測試、部署和運維工作。與傳統的UML模型相比,MDA能夠創建出機器可讀和高度抽象的模型,這種模型通過轉換(Transformation)技術可自動轉換為程式碼、測試指令碼、資料庫定義以及各種平臺部署描述。從此,建模語言不僅僅是分析設計語言,更可用作為一種高階程式語言。 MDA通過抽象層次的不同,定義了計算獨立模型(CIM)、平臺獨立模型(PIM)和平臺相關模型(PSM)。計算獨立模型類似於我們常說的業務模型和用例模型,是一個抽象層次較高、獨立於任何實現技術的系統模型,它著眼於操作環境中的系統以及系統需求的描述,而不關心繫統本身的結構和功能實現細節;平臺獨立模型類似於系統分析模型,它處於中間抽象層次,關注系統的整個架構實現,但卻忽略掉與平臺相關的部分。平臺獨立模型可以轉換成多個平臺相關模型;平臺相關模型則與設計模型相像,它把業務獨立模型與具體使用平臺的細節相結合,包含了具體平臺的特定實現技術。軟體開發過程中架構師會跟據系統架構的質量要求,選擇一種或幾種平臺技術具體實現系統。

圖1.1、MDA的模型及其轉換技術
圖1.1、MDA的模型及其轉換技術

不同模型間可以通過模型轉換技術(Model Transformation)實現相互轉化,例如使用模型轉換技術,我們可以將計算獨立模型(CIM)轉化為平臺獨立模型(PIM),平臺獨立模型(PIM)轉化為平臺相關模型(PSM)。由此可見,模型轉化技術是實現MDA的關鍵。模型轉換技術一般包括標記(Markings)和對映(Mapping),對映包含了由一種模型向另一種模型轉化的規約說明,而標記則用來在源模型中加入額外的資訊,用來在轉換時告訴對映如何將源模型中的特定模型元素對映到目標模型。

通過MDA技術的使用,可以有效解決傳統軟體開發過程中的生產效率問題、系統移植問題、互操作問題以及文件和系統後期維護問題,因此它一出現就受到業界的廣泛關注,並且越來越多的工具廠商對其提供支援,我們堅信:它的廣泛應用只是時間問題。

2 在RSA中實現MDA

2.1 RSA概述

IBM Rational Software Architect(RSA)是一套設計與開發工具,它構建在開放的、可擴充套件的Eclipse3.0平臺之上,實現了多項行業最新標準,提供了靈活的外掛擴充套件機制。藉助UML2.0技術,它實現了模型驅動的軟體開發模式,可以幫助開發團隊建立更加強壯的軟體架構。同時,RSA作為IBM Rational業務驅動軟體開發平臺的核心構件,提供了與需求管理工具、測試工具、配置和變更管理工具和專案管理工具的完美整合 ,從而真正實現了企業內部的核心軟體開發流程、開發平臺和軟體生產線。

2.2 使用RSA實現MDA中的模型轉換

IBM在RSA中預設提供了UML到Java、UML到C++、UML到EJB的模型轉化實現,其整個實現架構基於Eclipse 3.0和Eclipse Model Framework(EMF)、UML2、Graphical Editing Framework(GEF)和外掛開發環境(PDE),為模型驅動軟體開發(MDA)的模型轉換方面提供了四個方面的工具支援:

圖2.1、RSA對MDA及其轉換技術的支援架構
圖2.1、RSA對MDA及其轉換技術的支援架構

1) 轉換服務(Transformation Service):支援轉換的交換和發現功能,為其它轉換工具支援提供基礎。

2) 轉換引擎(Transformation Engine):為層次化的轉換源提供遍歷引擎,尤其對UML模型有較好支援

3) 轉換應用的GUI介面支援:使使用者能夠瀏覽、查詢並應用各種轉換。

4) 製作轉換的GUI介面支援:為轉化製作中的建立、打包和維護轉換的各種任務,提供很多自動化支援;

在RSA中,MDA的模型轉換以外掛的形式存在。RSA提供了嚮導(Wizard)功能,指導使用者完成模型轉換框架外掛專案的建立過程,下面舉例說明具體的MDA的模型轉換開發過程:

1) 新建外掛專案:在RSA中選擇"File-> New ->Project…"新建外掛專案,選擇"帶轉換的外掛"模板,它是RSA為構建新的轉換提供的實現機制。

圖2.2、建立帶轉換的外掛專案
圖2.2、建立帶轉換的外掛專案

選擇之後Wizard會自動提示輸入新建轉換源和目標模型型別及相關聯的屬性,併為轉換建立規則定義,如圖四所示:在我們例子裡將建立 ClassRule 和OperationRule;

圖2.3、建立轉換規則
圖2.3、建立轉換規則

2) 基於RSA提供的模型轉換框架,實現具體的模型轉化規則。RSA的模型轉換外掛專案嚮導(Wizard)會自動生成模型轉化框架,如圖五所示:

圖2.4、模型轉換實現框架
圖2.4、模型轉換實現框架

基於這一框架,使用者需要根據具體轉換實現需求,完成ClassRule和OperationRule的具體實現,完成具體的Transformation的轉換邏輯。

3 在RSA中使用Transformation實現模型驅動的軟體開發

我們實現了三個示例轉換Analysis to Design, BM Business to Use Case,BM Use Case to Analysis,並以外掛的方式嵌入倒RSA(如圖3.1)。

圖3.1. 三個示例轉換
圖3.1. 三個示例轉換

以下是使用RSA進行模型驅動開發的步驟:

1.首先建立一個RSA專案及一個簡單的業務模型,也就是CIM;

2.通過BM Business to Use Case轉換,將業務模型(CIM)轉換為用例模型(PIM1);

3.進一步通過BM Use Case to Analysis將上一步驟產生的用例模型(PIM1)轉換為分析模型(PIM2);

4.再將設計模型(PIM2)轉換為設計模型(PSM);

5.最後將設計模型(PSM)轉換為程式碼。

3.1 建立RSA專案及業務模型

首先建立模型專案(圖3.1),然後在此專案裡新增一個業務模型;新增業務模型的方法是選擇空白模型模板,並命名為BusinessModel(圖3.2)。

圖3.1. 建立模型專案
圖3.1. 建立模型專案
圖3.2. 建立業務模型
圖3.2. 建立業務模型

然後,將已經匯入的概要檔案應用到模型專案上去。概要檔案裡面包含了一些已定義好的版型,作為對UML的擴充套件。點選BusinessModel目錄,開啟其屬性,選擇概要檔案->新增概要檔案,選擇Business Modelling Sample Profile(圖3.3)。

圖3.3. 應用概要檔案
圖3.3. 應用概要檔案

在BusinessModel模型下建立SalesPerson類(如圖3.4所示),我們將在之後的轉換中逐步的把SalesPerson類轉成目標模型中相應的元素。

圖3.4. 建立SalesPerson類
圖3.4. 建立SalesPerson類

修改SalesPerson類的版型(Stereotype),具體過程為選擇SalesPerson類,開啟其屬性,選擇版型->新增版型,在彈出的應用版型窗口裡選擇BusinessWorker(來自於Business Modelling)(圖3.5)。

圖3.5. 應用版型
圖3.5. 應用版型

修改SalesPerson的版型後,其圖示也變為相應版型的圖示。接著,給SalesPerson增添兩個方法,processAnOrder()及takeAnOrder()(圖3.6)。到此階段,業務模型已經產生好,通過應用概要模式到模型及版型到類,我們對業務模型進行了精確的定義,有了這樣的精確定義,我們就可以通過轉換(transformation),將業務模型轉換為系統模型。

圖3.6. 增加兩個業務方法
圖3.6. 增加兩個業務方法

3.2 從業務模型(CIM)轉換為用例模型(PIM1)

在轉換之前首先建立目標模型,在這裡為用例模型(圖3.7)。

圖3.7. 建立用例模型
圖3.7. 建立用例模型

建立了目標模型後,我們可以開始轉換的工作。首先點選源模型BusinessModel,選擇工具欄上Modeling選項,再選擇Transform->Configure Transformations(圖3.8)

圖3.8. 配置轉換
圖3.8. 配置轉換

因為是從業務模型轉換到用例模型,在配置轉換視窗選擇BM Business to Use Case,

圖3.9. 選擇BM Business to Use Case轉換
圖3.9. 選擇BM Business to Use Case轉換

點選右下方的New按鈕,新建一個BM Business to Use Case的轉換,並在Target頁面選擇UseCaseModel作為目標模型(圖3.10),

圖3.10. 選擇UseCaseModel作為目標模型
圖3.10. 選擇UseCaseModel作為目標模型

選擇Common頁面,選擇建立源模型到目標模型的追蹤關係,這樣我們在轉換的同時也保持了源模型與目標模型之間的追蹤關係。最後點選RUN,開始執行轉換(圖3.11)。

圖3.11. 建立源模型到目標模型的追蹤關係
圖3.11. 建立源模型到目標模型的追蹤關係

圖3.12顯示了轉換後的用例模型,對應業務模型的SalesPerson和其兩個操作,產生了一個SalesPerson主角及兩個用例processAnOrder和takeAnOrder。圖3.13顯示了轉換自動生成的業務模型和用例模型間的追蹤關係。

圖3.12. 由業務模型產生的用例模型
圖3.12. 由業務模型產生的用例模型
圖3.13. 用例模型與業務模型的追蹤關係
圖3.13. 用例模型與業務模型的追蹤關係

3.3 從用例模型(PIM1)轉換為分析模型(PIM2)

我們進一步將用例模型轉換為分析模型(圖3.14)

圖3.14. 使用BM Use Case to Analysis轉換
圖3.14. 使用BM Use Case to Analysis轉換

經轉換後產生的分析模型如圖3.15所示。可以看到,通過轉換,RSA自動產生了對應用例的分析類和用例實現,並建立用例模型到分析模型間的追蹤關係。

圖3.15. 由用例模型產生的分析模型
圖3.15. 由用例模型產生的分析模型

分析模型與用例模型的追蹤關係(圖3.16)

圖3.16. 分析模型與用例模型的追蹤關係
圖3.16. 分析模型與用例模型的追蹤關係

3.4 從分析模型(PIM2)轉換為設計模型(PSM)

我們進一步通過 IBM Analysis To Design 轉換將分析模型轉換為設計模型(圖3.17)

圖3.17. 使用BM Analysis To Design轉換
圖3.17. 使用BM Analysis To Design轉換

經轉換後產生的設計模型包含設計類,子系統,介面等,如圖3.18所示:

圖3.18. 分析模型轉換為設計模型
圖3.18. 分析模型轉換為設計模型

3.5 設計模型(PSM)轉換為程式碼

最後通過RSA本身提供的UML to EJB轉換,將設計模型轉換為EJB程式碼。

圖3.19. 使用UML到EJB的轉換
圖3.19. 使用UML到EJB的轉換

經轉換後產生的Session Bean,如圖3.20所示。

圖3.20. 使用UML到EJB的轉換生成的Session Bean
圖3.20. 使用UML到EJB的轉換生成的Session Bean

4 小結

Rational Software Architect是IBM Rational新一代的建模工具,它基於Eclipse 3.0, UML2.0及MDA技術,它的推出讓我們擁有了強大的模型驅動開發工具。本文介紹瞭如何通過Rational Software Architect實現模型驅動的軟體開發,包括如何在RSA中建立轉換(transformation)和如何通過這些轉換實現模型到模型、模型到程式碼的轉變。從中我們看到,通過MDA技術,我們提高了開發的效率,如通過轉換能迅速的實現不同模型之間的轉換;同時,我們的業務模型獨立於任何實現技術,提高了系統的可移植性,保留了企業寶貴的資產;另外,在轉換過程中,追蹤關係能同時產生並被保留,簡便了我們後期的維護工作。同時我們看到,模型轉化技術是實現MDA的關鍵。在其後的文章中我們將會就模型轉化技術作進一步的討論。

從最早的程式語言的出現至今,軟體從業人員一直致力於以程式碼為核心的軟體開發方法的進步。模型驅動的軟體開發(MDA)以建模活動為核心,驅動整個軟體系統的開發過程,第一次將整個開發團隊的視角提高到軟體的需求分析和分析設計階段的模型層面,提出模型不僅是文件,更是程式碼的觀點。它的出現,必將推進整個軟體行業的新一輪革命,讓我們拭目以待……