袁曉桂+吳掬鷗
摘 要: 傳統(tǒng)軟件開發(fā)模式由于其最終生成產(chǎn)品是程序代碼,難以適應(yīng)需求的快速變化,軟件開發(fā)過程中不可避免地出現(xiàn)非標準化與非自動化的問題。為了解決上述問題,在介紹MDA開發(fā)過程的基礎(chǔ)上,探討了平臺無關(guān)模型和平臺相關(guān)模型的定義、映射和轉(zhuǎn)化等,并將MDA開發(fā)方法和傳統(tǒng)軟件開發(fā)方法進行了分析比較。以決策支持系統(tǒng)為例,描述通過MDA進行軟件開發(fā)的過程。結(jié)果顯示,基于MDA的軟件開發(fā)方法能夠由軟件模型指導(dǎo)自動生成軟件成品,降低了系統(tǒng)的開發(fā)成本與設(shè)計效率。
關(guān)鍵詞: 模型驅(qū)動架構(gòu); 平臺相關(guān)模型; 平臺無關(guān)模型; 模型轉(zhuǎn)換
中圖分類號: TN921?34; TP311.5 文獻標識碼: A 文章編號: 1004?373X(2017)14?0052?03
Abstract: Because the final product generated by traditional software development mode is the program code, it is difficult to adapt to the rapid change of the demand, and the non?standardization and non?automation problems are inevitable in the process of software development. In order to solve these problems, the MDA development process is introduced, the definition, mapping and transformation of the platform independent model and platform dependent model are discussed, and the MDA development method and traditional software development methods are analyzed and compared. Taking the decision support system as an example, the process of software development based on MDA is described. The analysis results show that the software development method based on MDA can automatically generate the finished software products by means of software model, which can reduce the development cost and improve design efficiency of the system.
Keywords: MDA; platform dependent model; platform independent model; model transformation
由于傳統(tǒng)的軟件開發(fā)模式其最終生成產(chǎn)品是程序代碼,難以適應(yīng)需求的快速變化。雖然目前部分生產(chǎn)環(huán)節(jié)已經(jīng)有模型可以參與,但模型仍不能應(yīng)用于大規(guī)模的軟件開發(fā)中,因此軟件開發(fā)過程中不可避免地出現(xiàn)非標準化與非自動化的問題。為了解決軟件開發(fā)中存在的這些問題,OMG組織發(fā)布了模型驅(qū)動架構(gòu)(Model Driven Architecture,MDA)[1?4]。本文在介紹MDA開發(fā)過程的基礎(chǔ)上,探討了平臺無關(guān)模型和平臺相關(guān)模型的定義、映射和轉(zhuǎn)化等,并將MDA開發(fā)方法和傳統(tǒng)軟件開發(fā)方法進行了分析比較。
1 MDA體系結(jié)構(gòu)
模型驅(qū)動式軟件開發(fā)是指通過對問題進行分析然后建模、轉(zhuǎn)化和精化模型,最終生成可執(zhí)行代碼的過程。模型驅(qū)動架構(gòu)是一種建立業(yè)務(wù)邏輯抽象模型并自動產(chǎn)生完備的應(yīng)用程序的方法,其核心思想是通過計算無關(guān)模型(Computation Independent Mode,CIM)描述系統(tǒng)的行為與功能,用與使用平臺無關(guān)的建模語言(例如UML)來構(gòu)建在實現(xiàn)時無需關(guān)心所用技術(shù)的平臺無關(guān)模型(Platform Independent Mode,PIM),隨后平臺無關(guān)模型通過一定的轉(zhuǎn)化規(guī)則與輔助工具被轉(zhuǎn)化為平臺相關(guān)模型(Platform Specific Mode,PSM),最后PSM精化生成可執(zhí)行代碼。MDA軟件開發(fā)方法將標準的系統(tǒng)模型放在了驅(qū)動架構(gòu)的核心位置,如圖1所示。MDA通過PIM和PSM將系統(tǒng)說明和實現(xiàn)技術(shù)與平臺獨立開來,確保軟件開發(fā)成果不受需求變化與技術(shù)變遷的影響。
MDA模型組織分為4層結(jié)構(gòu),如圖2所示。下一個層次是上一個層次的應(yīng)用,上一個層次是下一個層次的基礎(chǔ),MOF位于M3層,其是MDA框架中基礎(chǔ)與核心的模型,同時也是M2層所有模型的元模型。M2層為MOF上不同模型所對應(yīng)的模型語言,不同的領(lǐng)域通過M2層能夠獲取與所在領(lǐng)域相匹配的建模語言,為M1層的建模提供了建模符號。M1層是軟件開發(fā)過程中建模人員采用模型語言為企業(yè)應(yīng)用建立的模型描述,PIM,CIM,PSM應(yīng)用模型就位于該層之中。最底層為M0層,即實例層,其將M1層的模型轉(zhuǎn)化為具體的可使用的應(yīng)用程序。
MDA的核心是由OMG制定的一系列標準,元對象設(shè)施(Meta Object Facilit,MOF)、統(tǒng)一建模語言(Unified Modeling Languag,UML)、數(shù)據(jù)倉庫元模型(Common Warehouse Metamodel,CWM)、XML元數(shù)據(jù)交換(XML?based Metadata Interchange,XMI)以及對象約束語言(Object Constraint Language,OCL)[5?8]。這些標準構(gòu)成了一個構(gòu)建模型驅(qū)動架構(gòu)的基準,其不但決定了MDA的核心架構(gòu),并在State?of?art的系統(tǒng)建模中起到了關(guān)鍵性的作用。
2 MDA實現(xiàn)與基于模型驅(qū)動架構(gòu)的軟件開發(fā)
基于MDA的軟件開發(fā)過程可分為[9]:
(1) 模型驅(qū)動軟件開發(fā)過程。此方案中使用的模型為PIM和PSM,利用模型驅(qū)動代碼的產(chǎn)生,具體操作步驟為代碼通過模型產(chǎn)生,接著通過人工的方式進行商業(yè)邏輯代碼的編寫,最后將手工編寫的商業(yè)邏輯代碼進行部署及發(fā)布。
(2) 通過模型驅(qū)動來控制系統(tǒng)運行時的行為。此時軟件模型能夠被一個操作系統(tǒng)運行時通用模型直接執(zhí)行,該過程無需產(chǎn)生具體的軟件代碼,最后部署和發(fā)布的僅是模型,因為模型中已經(jīng)將應(yīng)用程序的各個層面均做出了表達。
基于MDA的軟件開發(fā)包括建模、開發(fā)和發(fā)布三個階段,如圖3所示。
模型階段:創(chuàng)建無關(guān)平臺模型PIM,并以此為核心,ISM和PSM均可通過 PIM自動轉(zhuǎn)換生成。該模型應(yīng)用如XMI的MOF映射方法進行映射。
開發(fā)階段:產(chǎn)生平臺無關(guān)代碼,即MDA工具自動產(chǎn)生和程序員手工編寫客戶端及服務(wù)器端的代碼。MDA中代碼的生成是MDA工程的最終目標,其具體是指PSM到代碼的映射,映射生成 ISM模型。
發(fā)布階段:該階段將諸多內(nèi)容放在一起組成可運行組件,其包括模型、MOF映射、手工編寫的代碼和MDA運行時庫及待發(fā)布的配置信息,最終將組建發(fā)布到運行平臺上。
3 開發(fā)過程比較
雖然基于MDA的軟件開發(fā)過程是一種新型模型驅(qū)動軟件開發(fā)方法,與傳統(tǒng)的軟件開發(fā)方法相比具有以下優(yōu)點:
(1) 模型變換可自動實現(xiàn)。相比較傳統(tǒng)的軟件開發(fā)過程由手工完成模型與模型、模型與代碼之間的變換,基于MDA的軟件開發(fā)過程均是MDA開發(fā)工具自動完成的。
(2) 便于維護,模型與代碼同步。在基于MDA的軟件開發(fā)過程中,模型通過轉(zhuǎn)換即可直接生成可執(zhí)行代碼,無需要其他步驟,從而實現(xiàn)模型與代碼的同步。軟件開發(fā)人員對軟件的維護重點從程序代碼變?yōu)榕c技術(shù)平臺無關(guān)、與業(yè)務(wù)邏輯相關(guān)的平臺無關(guān)模型。
(3) 開發(fā)效率高,軟件可靠性強。MDA模型架構(gòu)對系統(tǒng)的不同層次進行抽象,每一層代表的含義簡單易懂,從而使得系統(tǒng)的整個框架可被軟件開發(fā)人員清晰地了解與掌握,而不必困惑于具體的實現(xiàn)技術(shù)。由于模型通過轉(zhuǎn)換即可直接生成可執(zhí)行代碼,使得開發(fā)過程中減少了編碼環(huán)節(jié),所以若構(gòu)建PIM正確,整個系統(tǒng)的正確性便可得到保證。
(4) 業(yè)務(wù)邏輯模型獨立于技術(shù)實現(xiàn)平臺。PIM模型可根據(jù)技術(shù)平臺的不同,自動生成基于該模型的軟件系統(tǒng),從而實現(xiàn)PIM模型與技術(shù)實驗平臺的獨立。
(5) 模型是程序生成的基礎(chǔ)設(shè)施。在基于MDA的軟件開發(fā)過程中,模型被作為其生命周期中的設(shè)計工作,是程序生成的基礎(chǔ)設(shè)施。模型通過一系列轉(zhuǎn)化最終可自動生成可執(zhí)行代碼。
4 基于MDA的決策支持系統(tǒng)開發(fā)實例
以某鋼鐵企業(yè)中的決策支持系統(tǒng)為例,設(shè)計基于MDA的決策支持系統(tǒng)。
步驟1:描述系統(tǒng)開發(fā)需求,建立CIM。該部分模型可由系統(tǒng)分析文檔來描述,如可以向系統(tǒng)增加新的算法;為了便于管理,可分類算法;可對算法進行查詢與刪除等操作。
步驟2:根據(jù)需求人工抽取PIM,如圖4所示。該部分模型利用UML profile來描述,包含四個類:挖掘算法惟類,通過惟一ID標識算法,每個算法必須屬于某個分類;注冊類,向系統(tǒng)注冊新的算法,并檢測其是否符合系統(tǒng)要求;維護類,對挖掘算法進行查詢與刪除等維護操作;類別類,挖掘算法的分類。
步驟3:生成PSM,實現(xiàn)PIM到PSM的轉(zhuǎn)換。本文應(yīng)用IBM的MTF來定義和執(zhí)行映射規(guī)則,應(yīng)用映射規(guī)則,可將UML模型轉(zhuǎn)化為ecore模型。
步驟4:生成可執(zhí)行代碼。步驟3生成了基于EMF的ecore模型的PSM,接著使用EMF代碼生成的Java 發(fā)射器模板(Java Emitter Templates,JET)工具將ecore模型轉(zhuǎn)化為可執(zhí)行Java代碼。
以上4個步驟詳細介紹了基于MDA的軟件開發(fā)過程。使用MDA開發(fā)方法,模型的建立與轉(zhuǎn)化規(guī)則的制度是其重點,這些模型利用UML profile來描述,通用性強,獨立于技術(shù)平臺,因而在設(shè)計類似系統(tǒng)時可直接使用,大幅降低了系統(tǒng)的開發(fā)成本與設(shè)計效率。
5 結(jié) 論
本文在介紹和分析了MDA 的架構(gòu)和基于其軟件開發(fā)過程的基礎(chǔ)上,將其與傳統(tǒng)軟件設(shè)計方法進行了對比,說明了其在軟件開發(fā)過程中的顯著優(yōu)勢,并在文中最后設(shè)計基于MDA的決策支持系統(tǒng),證明了使用MDA開發(fā)方法設(shè)計的軟件系統(tǒng)獨立于技術(shù)平臺,通用性強、可移植性強,其可通過建模、轉(zhuǎn)化和精化模型,直至最終生成可執(zhí)行代碼,大幅降低了設(shè)計成本且提高了開發(fā)效率。
參考文獻
[1] 趙曉峰.模型驅(qū)動的軟件開發(fā)模式研究[J].信息技術(shù)與信息化,2015(7):190?191.
[2] 李晉,戰(zhàn)德臣,聶蘭順,等.支持模型驅(qū)動式軟件開發(fā)的建模語言框架研究[J].南京大學學報(自然科學版),2010,46(4):464?475.
[3] 夏焱.MDA模式驅(qū)動的應(yīng)用軟件商店研究與實現(xiàn)[D].成都:電子科技大學,2011.
[4] 劉曉宇.基于模型驅(qū)動的軟件開發(fā)方法研究[J].信息系統(tǒng)工程,2012(9):98?99.
[5] MELLOR S J, BALCER M J. Executable UML: a foundation for model?driven architecture [M]. New York: Addison?Wesley, 2002.
[6] Object Management Group. Request for proposal: MOF2.0 query /views / transformations [M]. CA, USA: RFP, 2002.
[7] POOLE J D. Model?driven architecture: vision, standards and emerging technologies [M]. CAT, USA: Hyperion Solutions Corporation, 2001.
[8] APPUKUTTAN Biju, CLARK Tony, REDDY Sreedhar, et al. A model driven approach to model transformations model driven architecture: foundations and applications [M]. New York: Addison?Wesley, 2003.
[9] 張衡.基于模型驅(qū)動的平臺開發(fā)研究與實現(xiàn)[D].長春:長春理工大學,2013.