2013-03-29 39 views
0

在Eclipse建模框架(EMF)中,有ecore文件來定義模型。從這個模型代碼(和其他東西)可以生成。該生成步驟由「EMF發生器模型」描述。現在我的問題是,爲什麼這個文件被稱爲「模型」而不是「配置」或類似的東西。在我看來,它並沒有模擬任何東西,但它描述了一個生成步驟...爲什麼叫做「EMF Generator _Model_」?

回答

3

雖然其他的答案是完全正確的,有一個「模式」和「配置」之間的一個額外的差異。所有EMF模型(包括此生成器模型)都可以通過每個已有的EMF工具(因爲它們都使用相同的元模型)進行修改,轉換等。

這與配置只有在知道配置序列化的確切格式時才能被另一個工具讀取的情況相比有很大的不同。所以你可以創建一個生成器模型的UML圖,你可以在基於模型的圖形編輯器中使用它,你可以使用模型到模型轉換插件來轉換它,你可以把它放到EMFstore中,...沒有任何這些工具已經專門爲準備了模型。

2

其實genmodel以及ecore文件也是技術上說EMF模型。所以這就是所謂的這種方式並不令人意外。

事實上,你必須明白,EMF允許描述任何類型的結構化信息。所以它可以用來描述你自己的語義以及描述代碼生成配置,甚至描述自己(ecore)。

3

EMF的當前實現是使用bootstrapping方法創建的。 首先,描述存儲在ecore和genmodel中的數據的模型是手動編寫的。只要EMF足夠穩定,就可以用EMF本身對其進行建模和生成。這意味着,ecore和genmodel在每種方式都是EMF模型。

這與開發新編程語言的編譯器數量類似。最初的實現必須用第二種語言編寫,但只要編譯器完成,您就可以使用新語言編寫新的實現,添加功能,然後使用以前版本編譯器的二進制文件創建下一個。

從EMF的創造者,埃德Merks:

畢竟,EMF的發電機模型同時生成Ecore模型和它本身,所以我們實際上並不在一個位置,我們刪除生成的代碼。我們需要它來引導環境。這是棘手的問題。 http://ed-merks.blogspot.de/2008/10/hand-written-and-generated-code-never.html

+0

感謝您的報價,有趣的見解! – parasietje