AndroMDA 3 0 開源的MDA方案

2021-04-13 14:24:47 字數 2637 閱讀 5764

2023年01月31日 13:11:00

第2版:2005.6.22 --修改優缺點比較部分

因為有些ide不支援,一直沒有完整留意uml的擴充套件機制,所以也就以為uml不很適合做mda。比如生成hibernate的hbm檔案,一些屬性的輔助屬性比如lazy-load,應該放在class圖的**呢?

最近andromda在tss上發廣告,介紹說andromda 3.0出來了。就連過去看了一下。原來除了stereotype,uml另有tagged value的機制, 可以把一些屬性附在類的方法和屬性上。

總的來說,andromda的結構應該說比較開放和實際的:

1.andromda使用過程

1.程式設計師通過poseidon or magicdraw 繪製uml圖並匯出xmi 或者使用 schema2xmi工具從資料庫生成xmi

在繪製的過程中需要加入andromda所需的stereotype和table tag,column tag等。

magicdraw似乎比較難看,而poseidon還提供andromda的plug-in,什麼功能還沒細看。

2.使用者通過ant執行andromda

ant指令碼除了指明xmi檔案外,另乙個很重要的節點就是

節點,指明了hibernate,spring所需的一切專案級資料比如生成目錄,資料來源名稱等。

3.andrommda解釋xmi為相對高層的概念,然後呼叫cartridge的velocity語法模板的生成目標**檔案。

目前提供ejb,hibernate,spring等幾個cartridge。

如果要擴充套件cartridge,只需要按照文件所教的方法,從內到外進行各種層次的增加,修改和替換。

2.五個核心部件

核心部件的設計代表了andromda擴充套件的野心

1.template engines

目前使用velocity作為模板語言,支援向其他語言的擴充套件。

2.metafascade

提供乙個高層的meta-data訪問api, 支援uml1.3、1.4、2.0等等語法的mof model並可自行擴充套件。

3 repositories

支援從xmi檔案中讀取mof model,支援其他格式的擴充套件。

4.cartridge

通過metafascade讀取元模型,通過模板生成**的核心。andromda自帶了spring,hibernate等cartridge,也可自行擴充套件。

5.translation-libraries

把平台無關**翻譯成平台相關**。比如hibernate的get***()方法的hsql語句,用者可以選擇用tagged value寫在模型裡,也可以選擇寫成平台無關的ocl查詢語言,然後用query-translation把它翻譯成hibernate hsql,日後也可次翻譯成ejb的eql。

目前有query和valiations兩個library,亦可自行擴充套件。

3.andromda的意義

andromda帶出的最重要的資訊是,相對標準的,開源的mda方案開始可用了,無數程式設計師不懈的**自動生成的分散努力,有望納入乙個比較統一的框架內進行。

對比自己的簡易版mda方案:

優點:

1.模型的編寫與維護

好處第一是, 以前的模型是自己制定的xml標準,現在是標準的uml語言,誰不想自己的東西標準化一點,誰不想被招安阿。

第二是模型可以使用圖形化的工具維護模型了。

2.**的生成

大家使用velocity系的template engine,只不過它有現成的cartridge,估計還會不斷增加,眾人拾柴,比自己孤軍奮戰,一些大點的模板根本沒法寫(從經濟學角度)好多了。

缺點:

1.omg uml真的是最好的模型語言嗎?

martin fowler也不贊成基於omg uml的mda,說uml用來作為描述溝通是乙個好工具,但作為形式化的模型描述語言就未必那麼好用。甚至時序圖之類的圖在描述也不見得設計得有多好,至少不見得比流程圖,偽**容易讀。

所以,大家都喜歡mdd,但未必喜歡基於omg uml的mda。

2. uml是徹底的圖形語言,xmi很難直接文字編輯器

只能使用圖形化工具維護模型了,沒有了以前xml檔案的文本級的簡單。

即使不想再討論圖形好還是文字好,但我還是喜歡兩者結合得比較好的方式,uml裡暫時還沒有結合得很好。

3. andromda居然完全靠ant,沒有ide工具

好歹也該寫個eclipse外掛程式啊

4.怎麼現在大部分的**生成模板都只是基於class類圖的

其他圖的應用呢,show me a sample please。

醫療專案 開源 我最終在開源醫療領域工作的方式

醫療專案 開源 到我23歲時,我已經是一名資深軟體開發人員,並且是兩個可愛女孩的父親。我已經通過建立以鮮為人知,如今已被人們遺忘的4gl編寫的醫療實踐管理系統來設計,編寫和管理其他開發人員。在此過程中,我學到的並不是讓自己陷入無法在可能會流行的任何作業系統 os 硬體組合上執行的產品上。當ibm發布...

開源Cortex M模擬器QEMU的使用方法

qemu是開源 跨平台 支援多種目標架構的模擬器,包括cortex m架構。開源cortex m模擬器qemu支援兩款開發板,分別為stellaris lm3s811evb和stellaris lm3s6965evb。原文 mingdu.zhengatgmaildotcom 這裡給出ubuntu下的...

as下Gradle 3 0依賴ar包的幾種方式

as下gradle 3.0依賴ar包的幾種方式 v2.0 v3.0 說明compile api這種是我們最常用的方式,使用該方式依賴的庫將會參與編譯和打包。provided compileonly 只在編譯時有效,不會參與打包,可以在自己的moudle中使用該方式依賴。比如com.android.s...