国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于MDA的領(lǐng)域元建模開發(fā)方法

2023-05-30 01:27劉磊周業(yè)林楊小兵
計算機(jī)與網(wǎng)絡(luò) 2023年1期
關(guān)鍵詞:代碼生成

劉磊 周業(yè)林 楊小兵

摘要:模型驅(qū)動架構(gòu)(Model Driven Architecture,MDA)是一種先進(jìn)、系統(tǒng)、高效的軟件開發(fā)方法。然而掌握MDA模型轉(zhuǎn)換和實現(xiàn)完整代碼生成,具有一定的難度。在研究元建模技術(shù)的基礎(chǔ)上,對領(lǐng)域建模語言(Domain Specific Language,DSL)與元建模相結(jié)合的開發(fā)方法進(jìn)行了探索,該方法基于MDA以模型為中心的思想,能快速通過模型轉(zhuǎn)換實現(xiàn)完整代碼的生成,易用性提高。結(jié)合Web應(yīng)用系統(tǒng)這個領(lǐng)域,利用領(lǐng)域型元建模工具M(jìn)etaEdit+,以學(xué)生健康信息收集系統(tǒng)的開發(fā)為例,驗證了領(lǐng)域元建模開發(fā)方式在解決領(lǐng)域問題上的可行性。

關(guān)鍵詞:模型驅(qū)動;模型轉(zhuǎn)化;代碼生成;領(lǐng)域語言;元建模;建模工具

中圖分類號:TP31文獻(xiàn)標(biāo)志碼:A文章編號:1008-1739(2023)01-54-5

0引言

當(dāng)今社會,人們的工作生活更加依賴各類信息系統(tǒng)提供的便利化管理和服務(wù),各行業(yè)軟件開發(fā)需求大量增長。傳統(tǒng)的開發(fā)方式以編寫代碼為核心,存在文檔和代碼容易脫節(jié)、系統(tǒng)平臺轉(zhuǎn)換麻煩以及投入人力、物力高的問題。2001年,國際對象管理組織提出了模型驅(qū)動架構(gòu)(Model Driven Architecture, MDA)的方法[1],以模型為中心,通過模型轉(zhuǎn)換,自動生成程序代碼,這樣的方式可以有效地解決傳統(tǒng)開發(fā)方式存在的文檔和代碼不能統(tǒng)一的問題。然而隨著時間的推移,MDA的開發(fā)方式并沒有大規(guī)模得到應(yīng)用和推廣。而以建立建模語言的元建模技術(shù)卻正在逐漸興起,元建模技術(shù)是一種輕量化的MDA,在元建模工具的支持下,能高效地實現(xiàn)形式化建模和完整的代碼轉(zhuǎn)化。針對不同的問題領(lǐng)域,領(lǐng)域建模語言與元建模技術(shù)相結(jié)合可以更好地針對問題本身,解決問題,滿足用戶的需求,并實現(xiàn)代碼自動生成。

1 MDA面臨的問題

MDA沒有廣泛地推廣和應(yīng)用,綜合分析主要有2方面原因:一是模型轉(zhuǎn)換復(fù)雜,不易于掌握和使用。模型轉(zhuǎn)換是MDA開發(fā)方法的核心。模型轉(zhuǎn)換是通過模型轉(zhuǎn)換工具,按照定義的轉(zhuǎn)換規(guī)則,將源模型轉(zhuǎn)換成為目標(biāo)模型的過程。隨著模型轉(zhuǎn)換開發(fā)工具的推出和改進(jìn),模型轉(zhuǎn)換逐漸得到了應(yīng)用。然而,模型轉(zhuǎn)換并不像人們想象的那樣容易。模型之間的轉(zhuǎn)換就分好幾種類型,包括PIMtoPIM,PIMtoPSM,PSMtoPSM,PSMtoPIM和PSMtoCode等,其中模型轉(zhuǎn)換的技術(shù)也有很多種,很抽象,采用的技術(shù)路線不容易理解,比如:QVT轉(zhuǎn)換方法、基于圖文法的轉(zhuǎn)換和基于結(jié)構(gòu)的轉(zhuǎn)換等[2],一般的開發(fā)人員很難掌握。二是支持MDA的工具軟件還不完善。MDA中最常用的建模工具UML,體系龐大復(fù)雜,支持UML的MDA工具有Rational Rose,Enterprise Architect,IBM Rational Software Architec,Powerdesigner,Trufun等,只能生成部分代碼或是程序框架[3],常規(guī)的操作都被包含在實體模型中,但是對于業(yè)務(wù)邏輯的操作,只產(chǎn)生空的方法體[4],與生成完整應(yīng)用系統(tǒng)還有相當(dāng)?shù)牟罹?,這也制約了MDA真正投入到日常的軟件開發(fā)過程,國產(chǎn)支持MDA的工具軟件更是寥寥無幾。

2元建模基礎(chǔ)

要理解元建模首先要了解元模型。模型是對現(xiàn)實世界事物的一種抽象和概括,元模型是定義模型的模型,它是對模型的構(gòu)成進(jìn)行更高層次的抽象,元模型的構(gòu)成還可以繼續(xù)抽象,抽象形成的模型稱為元元模型,從理論上說,抽象還可以繼續(xù)延伸深化,但抽象到了一定的層次已經(jīng)可以解決建模的問題了,過度的深入沒有太大的現(xiàn)實意義。OMG專門為模型的實現(xiàn)和抽象制定了核心標(biāo)準(zhǔn)即元對象機(jī)制(Meta-Object Facility,MOF)[5],其結(jié)構(gòu)如圖1所示。

MOF是一個4層模型,從下到上是逐漸抽象的過程是逐漸實現(xiàn)的過程,也是模型轉(zhuǎn)換的過程。M0層的對象是M1層對象的實例,M1層對象是M2層對象的實例,M2層對象是M3層對象的實例,這里的實例是相對于上一層模型而言,并不完全都是實現(xiàn),只有M0層是具體的事物。MOF位于M3層,是最高層次的抽象,MOF可以自己構(gòu)造自己,自己描述自己。常見的用UML建立的模型屬于M1層,UML的元模型屬于M2層。同樣,用DSL建立的模型屬于M1層,而DSL元模型屬于M2層。本文研究的元建模是指處于M2層的DSL元模型。

3元建模技術(shù)

元建模指的是建立一種帶語義描述建模語言的元模型[5],需要有支持相關(guān)建模語言的工具。通過這個工具來設(shè)計、呈現(xiàn)這個元模型。

3.1建模語言

軟件開發(fā)是為了解決問題,問題是有領(lǐng)域的,因此,軟件開發(fā)也面臨問題領(lǐng)域。對于建模語言來說,相應(yīng)可以按照適用范圍,分為通用語言(General Purpose Language,GPL)和領(lǐng)域語言(Domain Specific Language,DSL)。GPL常見的有UML,C和Python等語言,優(yōu)點是適用面廣,缺點是太通用、不聚焦,不能很好地表達(dá)一些具體問題。UML作為一種通用建模語言,支持其建模的工具是最多的,然而UML過于通用和復(fù)雜,從UML模型生成完整的應(yīng)用系統(tǒng)是很困難的,其包含大部分抽象概念,不是來自于問題域的抽象,導(dǎo)致UML中描述的模型與問題域存在一定的差異。DSL常見的有HTML,SQL和MERL等,優(yōu)點在于貼近問題域,對于領(lǐng)域設(shè)計人員而言,領(lǐng)域建模語言學(xué)習(xí)起來更容易,從領(lǐng)域模型生成程序相對容易。根據(jù)資料顯示,基于元建模的領(lǐng)域建模要比基于UML的效率高出10倍[5]。元建模開發(fā)示意如圖2所示。

3.2建模工具

元建模除了建模的理論,還需要有強(qiáng)大的工具軟件來整合配置元元模型、模型,并實現(xiàn)模型到相關(guān)平臺代碼的自動生成。因此元建模工具是非常關(guān)鍵的?,F(xiàn)在出現(xiàn)了不少元建模工具,常見的有GME,EMF,Visual Studio DSL,GMF和MetaEdit+等。EMF是Eclipse的一項全新的建模框架,該框架允許代碼自動生成,支持模型和元數(shù)據(jù)管理,可高效完成模型轉(zhuǎn)換,生成的模型可轉(zhuǎn)換為Java代碼,在現(xiàn)有工具中具有強(qiáng)大的生命力[6]。Visual Studio DSL是Windows平臺下的圖形化工具,包括元建模環(huán)境和代碼生成,除了提供模型與圖形之間的支持,還提供了對模型的驗證、規(guī)則和事務(wù)的支持[7]。GME是美國范德比特大學(xué)研發(fā)的一款元建模工具,其元模型是建立在UML基礎(chǔ)上,并利用關(guān)系數(shù)據(jù)庫來存儲[8]。GMF提供了圖形化的開發(fā)環(huán)境和基本的框架,設(shè)計人員可在圖形環(huán)境中定制自己的領(lǐng)域模型,并自動生成代碼框架[9]。MetaEdit+具有專屬的元建模語言和生成器定義語言,不需要依賴UML的模型,具有靈活的DSL定義功能,不需要手工編寫代碼,代碼生成器具備強(qiáng)有力的代碼生成功能[10]。MetaEdit+可以快速設(shè)計建模語言而且成本低廉,適用于信息系統(tǒng)的開發(fā),工具的幫助文檔內(nèi)容十分友好,方便進(jìn)行學(xué)習(xí)和使用。

3.3建模框架

元建??蚣苁窃5拈_發(fā)的模式和架構(gòu),發(fā)展到現(xiàn)在,元建模框架結(jié)構(gòu)主要有2種類型[11]:

①基于通用建模工具的元建模

這是最常用的一種架構(gòu),以通用建模工具為核心。開發(fā)人員使用通用建模工具建立某個領(lǐng)域的元模型;用元模型來對通用建模工具做配置,使通用建模工具成為支持該元模型的建模工具,通過配置過的建模工具來生成應(yīng)用的源代碼。其優(yōu)點是支持多種元模型進(jìn)行配置,從而支持多種建模語言。這類元建模工具有MetaEdit+,GME等。

②基于專用建模工具的元建模

定制生成一個專用的建模工具,通過這個建模工具來生成應(yīng)用的源代碼。這種建模方式的優(yōu)點是建模工具是定制、對建模的支持更好,缺點是使用難度較大,采用這種架構(gòu)的元建模工具主要有EMF和GMF。

通過元建模工具及架構(gòu)的比較,由于MetaEdit+具有功能全面、適用于信息系統(tǒng)開發(fā),使用相對容易,且有良好的文檔支持、能快速建模的特點,因此,選擇MetaEdit+作為研究領(lǐng)域元建模開發(fā)的建模工具。

4元建模開發(fā)實例

為了領(lǐng)域建模語言+元建模能實現(xiàn)基于MDA的元建模架構(gòu)開發(fā),并最終生成系統(tǒng)代碼,將通過一個簡單的學(xué)生健康收集系統(tǒng)“InfoCollecting”開發(fā)過程進(jìn)行驗證。近2年來,加強(qiáng)新冠肺炎防控,保護(hù)人民群眾生命安全成了日常的一件重大事情。對于學(xué)校來說,校園疫情防控壓力很大,除了定期開展核酸檢測篩查以外,還必須加強(qiáng)學(xué)生日常健康申報管理,“InfoCollecting”系統(tǒng)就是以此為背景設(shè)計。系統(tǒng)有2類活動參與者,并且他們對系統(tǒng)具有以下幾種操作。

①學(xué)生(注冊系統(tǒng)、登錄系統(tǒng)、健康登記、查詢登記信息、修改密碼和退出系統(tǒng))。

②管理員(登錄系統(tǒng)、更改密碼、查詢登記信息、管理登記信息和退出系統(tǒng))。

4.1系統(tǒng)設(shè)計模式

InfoCollecting系統(tǒng)主要考慮采用B/S結(jié)構(gòu),系統(tǒng)設(shè)計模式使用Model-View-Controller,Model層代表業(yè)務(wù)邏輯層最終通過JavaBeans來實現(xiàn),讀寫數(shù)據(jù)庫,View層代表交互界面層最終通過JSP來生成、提交和響應(yīng)用戶請求,Controller層代表控制器層,負(fù)責(zé)View層和Model層之間的銜接。

4.2MetaEdit+元建模的主要步驟

MetaEdit+以GOPPRR作為元建模語言,主要包含6種元素,分別是Graph(圖)、Object(對象)、Property(屬性)、Por(端口)、Relationship(聯(lián)系)和Role(角色)[11]。Graph指一種由對象及其聯(lián)系組成的圖形;Object指一種事物,用一種圖形符號來表示;Property指其他5種元素所具有的特點描述;Port指角色連接對象的一個特定位置;Relationship指對象之間的連接關(guān)系;Role定義了對象如何參與到一個聯(lián)系中,如圖3所示。

MetaEdit+元建模的主要步驟如下:

步驟1利用GOPPRR元元模型,設(shè)計系統(tǒng)元模型

元模型的建立是將應(yīng)用系統(tǒng)涉及的對象領(lǐng)域概念、數(shù)據(jù)庫概念的內(nèi)容及它們之間關(guān)聯(lián)抽象成為Objects,Relationships,Roles,Property和Port等元元模型,在通過這些元元模型來描述應(yīng)用系統(tǒng),建立Graph圖形元模型。在MetaEdit+中使用Graph Tool工具來建立圖形元模型。圖4給出了“InfoCollecting”部分的系統(tǒng)元模型。Graph Tool可以根據(jù)抽象的模型元素創(chuàng)建圖所需的各種對象、聯(lián)系、角色以及其之間的綁定關(guān)系,圖形還可以包含子圖形和各種約束條件。

猜你喜歡
代碼生成
α-β濾波基于SCADE Suite的開發(fā)
Lustre語言可信代碼生成器研究進(jìn)展
電腦知識與技術(shù)(2020年4期)2020-04-14
一種基于模型和模板融合的自動代碼生成方法
代碼生成技術(shù)在數(shù)據(jù)序列化方面的應(yīng)用
基于SSH框架的JavaEE項目代碼生成工具的研究與實現(xiàn)
基于Web應(yīng)用界面的代碼自動生成軟件設(shè)計
代碼生成技術(shù)在軟件開發(fā)中的應(yīng)用
基于Simulink的模型調(diào)度系統(tǒng)設(shè)計及應(yīng)用
基于XML的代碼自動生成工具