用于模型驅(qū)動開發(fā)的方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明的實(shí)施例總體上涉及程序開發(fā),并且更具體地,涉及用于模型驅(qū)動開發(fā)的 方法和系統(tǒng)。
【背景技術(shù)】
[0002] 模型驅(qū)動開發(fā)(ModelDrivenDevelopment,Μ孤)是一種高效的程序開發(fā)模式。 例如,可W使用業(yè)務(wù)規(guī)則模型度usinessRuleModel)等各種模型來提供對應(yīng)用或者業(yè)務(wù) 的抽象定義。例如,模型可W定義業(yè)務(wù)的規(guī)則或者邏輯。已知的是,送樣的模型可W被轉(zhuǎn)換 為可執(zhí)行的程序代碼。作為示例,可W通過對EMF巧clipse建??蚣埽┠P瓦M(jìn)行轉(zhuǎn)換生成 化va代碼。通過使用模型及其轉(zhuǎn)換,待開發(fā)應(yīng)用的邏輯和規(guī)則可W與底層程序代碼解禪合, 送有利于提高程序開發(fā)和維護(hù)的靈活性。
[0003] 當(dāng)根據(jù)模型產(chǎn)生程序代碼之后,開發(fā)人員可能根據(jù)需要對程序代碼進(jìn)行更 新。例如,開發(fā)人員可能修改部分程序代碼、添加新的程序代碼,等等。對程序代碼 的某些更新可能是重要的,并且應(yīng)當(dāng)被保留下來。換言之,當(dāng)此后對模型進(jìn)行再轉(zhuǎn)換 巧e-transformation)W生成新的程序代碼時,先前重要的代碼更新應(yīng)當(dāng)被體現(xiàn)在新的程 序代碼中。
[0004] 對于面向?qū)ο蟮腷ject化iented)的編程語言,程序代碼通常W方法(method)為 單位被編寫。在送種情況下,可W使用注釋或者關(guān)鍵字而相對容易地指示需要保留的代碼 部分。W化va語言為例,可W使用注釋"@preserve"來指示需要保留的方法。相應(yīng)地,在 對模型執(zhí)行再轉(zhuǎn)換時,與"?preserve"相關(guān)聯(lián)的方法的代碼片段將被保留在新生成的程序 代碼中。
[0005] 然而,在諸如電力、金融、銀行等眾多領(lǐng)域中,大量的應(yīng)用是使用非面向?qū)ο蟮脑?期編程語言開發(fā)的。例如,用于實(shí)現(xiàn)銀行業(yè)務(wù)的大量應(yīng)用是使用COB化語言、C語言或者其 他面向過程的語言開發(fā)的。對于送些編程語言而言,傳統(tǒng)上無法有效地指示程序代碼中的 哪些片段需要在模型再轉(zhuǎn)換時被保留。由此,在對模型進(jìn)行再轉(zhuǎn)換時,某些更新后的代碼片 段將被丟失。
【發(fā)明內(nèi)容】
[0006] 總體上,本發(fā)明的實(shí)施例提出一種用于模型驅(qū)動開發(fā)的技術(shù)方案。
[0007] 在本發(fā)明的一個方面,提供一種用于模型驅(qū)動開發(fā)的方法。所述方法包括;分析程 序代碼W確定所述程序代碼的語句的執(zhí)行順序,所述程序代碼通過對模型執(zhí)行第一轉(zhuǎn)換而 生成,所述模型包含對所述程序代碼所實(shí)現(xiàn)的業(yè)務(wù)的抽象描述;將所述程序代碼的所述語 句的至少一部分分組為功能塊;基于所述執(zhí)行順序和所述功能塊創(chuàng)建所述程序代碼的可視 化表示;W及基于用戶對所述可視化表示的標(biāo)注,確定所述程序代碼中待保留的代碼片段, 所述代碼片段將被保留在通過對所述模型執(zhí)行第二轉(zhuǎn)換而生成的新程序代碼中,所述第二 轉(zhuǎn)換在所述第一轉(zhuǎn)換之后被執(zhí)行。
[0008] 在本發(fā)明的另一方面,提供一種用于模型驅(qū)動開發(fā)的系統(tǒng)。所述系統(tǒng)包括;語句 順序確定單元,被配置為分析程序代碼W確定所述程序代碼的語句的執(zhí)行順序,所述程序 代碼通過對模型執(zhí)行第一轉(zhuǎn)換而生成,所述模型包含對所述程序代碼所實(shí)現(xiàn)的業(yè)務(wù)的抽象 描述;功能塊分組單元,被配置為將所述程序代碼的所述語句的至少一部分分組為功能塊; 可視化表示創(chuàng)建單元,被配置為基于所述執(zhí)行順序和所述功能塊創(chuàng)建所述程序代碼的可視 化表示;W及代碼片段確定單元,被配置為基于用戶對所述可視化表示的標(biāo)注,確定所述程 序代碼中待保留的代碼片段,所述代碼片段將被保留在通過對所述模型執(zhí)行第二轉(zhuǎn)換而生 成的新程序代碼中,所述第二轉(zhuǎn)換在所述第一轉(zhuǎn)換之后被執(zhí)行。
[0009] 根據(jù)本發(fā)明的實(shí)施例,即便是對于非面向?qū)ο蟮木幊陶Z言,也可W通過可視化的 方式將通過模型轉(zhuǎn)換生成的程序代碼呈現(xiàn)給用戶。W此方式,用戶能夠方便、準(zhǔn)確、有效地 指定代碼中應(yīng)當(dāng)被保留的代碼片段(codesnippet)。送樣,在隨后對模型進(jìn)行的再轉(zhuǎn)換中, 用戶指定的代碼片段可W被完好地保留。本發(fā)明的其他特征和優(yōu)點(diǎn)將通過下文描述而變得 容易理解。
【附圖說明】
[0010] 通過結(jié)合附圖對本發(fā)明示例性實(shí)施方式進(jìn)行更詳細(xì)的描述,本發(fā)明的上述W及其 它目的、特征和優(yōu)勢將變得更加明顯其中:
[0011] 圖1示出了適于用來實(shí)現(xiàn)本發(fā)明實(shí)施例的示例性計算機(jī)系統(tǒng)/服務(wù)器的示意性框 圖;
[0012] 圖2示出了根據(jù)本發(fā)明實(shí)施例的用于模型驅(qū)動開發(fā)的方法的示意性流程圖;
[0013] 圖3示出了本發(fā)明的實(shí)施例可應(yīng)用于其上的WCOB化編程語言編寫的程序代碼的 示意圖;
[0014] 圖4示出了根據(jù)本發(fā)明實(shí)施例的程序代碼的一個圖形化表示的示意圖;
[0015] 圖5示出了根據(jù)本發(fā)明實(shí)施例的程序代碼的另一圖形化表示的示意圖;
[0016] 圖6示出了根據(jù)本發(fā)明實(shí)施例的用于在模型再轉(zhuǎn)換中保留用戶指定的代碼片段 的方法的示意性流程圖;W及
[0017] 圖7示出了根據(jù)本發(fā)明實(shí)施例的用于模型驅(qū)動開發(fā)的系統(tǒng)的示意性框圖。
[001引在附圖中,相同或相似的標(biāo)號被用來表示相同或相似的元素。
【具體實(shí)施方式】
[0019] 下面將參照附圖更詳細(xì)地描述本公開的優(yōu)選實(shí)施方式。雖然附圖中顯示了本公開 的優(yōu)選實(shí)施方式,然而應(yīng)該理解,可WW各種形式實(shí)現(xiàn)本公開而不應(yīng)被送里闡述的實(shí)施方 式所限制。相反,提供送些實(shí)施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的 范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0020] 圖1示出了適于用來實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計算機(jī)系統(tǒng)/服務(wù)器12的方 框圖。圖1顯示的計算機(jī)系統(tǒng)/服務(wù)器12僅僅是一個示例,不應(yīng)對本發(fā)明實(shí)施例的功能和 使用范圍帶來任何限制。
[0021] 如圖1所示,計算機(jī)系統(tǒng)/服務(wù)器12W通用計算設(shè)備的形式表現(xiàn)。計算機(jī)系統(tǒng) /服務(wù)器12的組件可W包括但不限于;一個或者多個處理器或者處理單元16,系統(tǒng)存儲器 28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲器28和處理單元16)的總線18。
[0022] 總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲器總線或者存儲器控制器, 外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉 例來說,送些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC) 總線,增強(qiáng)型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(VESA)局域總線W及外圍組件互連(PCI)總線。
[0023]計算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計算機(jī)系統(tǒng)可讀介質(zhì)。送些介質(zhì)可W是 任何能夠被計算機(jī)系統(tǒng)/服務(wù)器12訪問的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動 的和不可移動的介質(zhì)。
[0024] 系統(tǒng)存儲器28可W包括易失性存儲器形式的計算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存 取存儲器(RAM) 30和/或高速緩存存儲器32。計算機(jī)系統(tǒng)/服務(wù)器12可W進(jìn)一步包括其 它可移動/不可移動的、易失性/非易失性計算機(jī)系統(tǒng)存儲介質(zhì)。僅作為舉例,存儲系統(tǒng)34 可W用于讀寫不可移動的、非易失性磁介質(zhì)(圖1未顯示,通常稱為"硬盤驅(qū)動器")。盡管 圖1中未示出,可W提供用于對可移動非易失性磁盤(例如"軟盤")讀寫的磁盤驅(qū)動器, W及對可移動非易失性光盤(例如CD-ROM,DVD-ROM或者其它光介質(zhì))讀寫的光盤驅(qū)動器。 在送些情況下,每個驅(qū)動器可W通過一個或者多個數(shù)據(jù)介質(zhì)接口與總線18相連。存儲器28 可W包括至少一個程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個)程序模塊,送些程序模 塊被配置W執(zhí)行本發(fā)明各實(shí)施例的功能。
[00巧]具有一組(至少一個)程序模塊42的程序/實(shí)用工具40,可W存儲在例如存儲 器28中,送樣的程序模塊42包括一但不限于一操作系統(tǒng)、一個或者多個應(yīng)用程序、其它程 序模塊W及程序數(shù)據(jù),送些示例中的每一個或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序 模塊42通常執(zhí)行本發(fā)明所描述的實(shí)施例中的功能和/或方法。
[0026]計算機(jī)系統(tǒng)/服務(wù)器12也可W與一個或多個外部設(shè)備14 (例如鍵盤、指向設(shè)備、 顯示器24等)通信,還可與一個或者多個使得用戶能與該計算機(jī)系統(tǒng)/服務(wù)器12交互的 設(shè)備通信,和/或與使得該計算機(jī)系統(tǒng)/服務(wù)器12能與一個或多個其它計算設(shè)備進(jìn)行通信 的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。送種通信可W通過輸入/輸出(I/