2010-06-22 26 views
7

我目前面臨的情況是,作爲測試驅動開發的倡導者,我必須與模型驅動軟件開發(MDSD)/模型驅動架構(MDA)的倡導者競爭。真實世界應用程序是否有MDSD/MDA成功案例?

在我看來,代碼生成在我的工具箱中是一個有價值的工具,我需要時大量使用模板和自動化。當我認爲這有助於理解內部工作或討論白板上的架構時,我還使用UML創建圖表。然而,我強烈懷疑通過UML創建軟件(創建狀態圖和序列圖來創建工作代碼,不僅是代碼的框架)對多層應用程序(數據庫層,業務/域層和Gui,甚至可能是分佈式)更有效。在我看來,當涉及到MDSD時,CASE工具突然不僅僅是一種工具,而且是滿足的一件事情:正如我所看到的,一方面,MDSDevelopers從UML給出的更高抽象中獲益,但在同時他們正在努力修改代碼生成器/模板/引擎以滿足他們的需求,如果在工具箱(VisualStudio,Eclipse,...)中使用其他工具,可能會輕鬆實現(並測試)它們。

所有這些讓我想知道是否有成功的故事(因爲產品是及時推出的,在有限的時間內,只有很少的錯誤,並且稍後會重用部分軟件)世界上的應用程序,fullfills這個creteria和使用嚴格的模型驅動的辦法已經制定:

  • 它無關的對象管理組織(OMG),或與有關MDSD/MDA/SOA/
  • 顧問
  • 該應用程序與業務流程建模無關並且不是CASE工具本身
  • 該應用程序被最終用戶積極使用
  • 它至少有三層,包括超出顯示原始表值的用戶界面,並且不是常見的MDA/MDSD示例之一(「如何建模咖啡機,交通燈,洗碗機「)。
+0

您是否接受否作爲有效答案? – 2012-01-23 16:03:07

回答

3

上使用MDSD的一個微小的,但仍然有用的證詞已經公佈的模型驅動軟件網絡上:

http://www.modeldrivensoftware.net/profiles/blogs/viva-mdd-follow-up-building-a?xg_source=activity

它正在開發一個比較小的應用程序,但仍然是一個不錯的行動中的MDSD示例。

Metacase的網站上列出了更多的成功案例(http://www.metacase.com/cases/index.html)。 Metacase銷售MetaEdit +,它實現了DSM(特定領域建模)。 DSM只是一種MDSD形式。

我也在開發ABSE(基於Atom的軟件工程),這是另一種形式的MDSD,非常接近DSM。 ABSE概述於http://www.abse.info

+0

+1感謝您的回答。也許你知道這個項目的更多細節。例如。涉及多少人,完成第一個版本需要多長時間,模型中是否還有要求,使用了什麼樣的圖/ UML(例如涉及創建行爲代碼的狀態圖?)? – tobsen 2010-06-27 11:29:46

+0

@tobsen我沒有這方面的信息,但你可以直接向論壇上的Peter Adriaenssens詢問... – 2010-06-30 09:02:52

+0

@RuiCurado你的答案中的第一個鏈接已損壞。你能通過提供更新的鏈接來修復它嗎? (你的第二個鏈接工作得很好:) – xmojmr 2014-07-30 15:16:24

2

您還可以查看以前代碼生成會議的幻燈片。這些談話中有幾個來自成功的案例研究,例如http://www.codegeneration.net/cg2009/slides.php

+0

感謝您的鏈接,我一定會看看。然而,我只是搜索了一些名稱/公司,我試過的所有公司都回到了參與創建MDSD-Tools的公司。我真的需要獨立的證據證明,除了帶有MDSD的嵌入式軟件之外,構建真實應用程序是可能的。也許你可以指出一個滿足這個要求的談話? – tobsen 2010-06-30 21:09:52

+1

福音代碼生成:2008年增量採用案例研究(Brooke Hamilton)PDF(3.00 Mb)。http://www.codegeneration.net/conference/sessions/slides/bernier.pdf IIRC這是來自金融領域。同一年的「放在一起」談話也來自金融領域IIRC。 另請參閱http://www.slideshare.net/HeikoB/mastering-differentiated-mdsd-requirements-at-deutsche-boerse-ag from Code Generation 2009. FWIW並非所有人都使用UML。 Google的「特定領域語言」或「特定領域建模 - 用於替代方法」。 – 2010-07-01 20:17:46

3

我在使用4個通過CAN連接的處理器的嵌入式系統項目上使用MDA和代碼生成。我們有超過20個運動軸和許多傳感器。由於機械部件經過評估和修改,該系統非常堅固且可維護。

我們在模型和生成代碼中工作,以便模型始終保持最新狀態。我們進行了仔細的域分析,以實現主題隔離。電機控制需要非常高的性能,因此沒有建模或生成。我們的網絡驅動程序也是手動編碼的,我們編寫的接口允許網橋服務根據需要將事件發送到系統中任何位置的任何服務(儘管這是嚴格控制的,以便儘量減少處理器間的依賴關係)。

使用該方法需要一點紀律,但有工作模式是偉大的,因爲他們可以通過非軟件類型進行審查。

模型的版本控制和差異化是一個挑戰,但我們有一個小的本地化團隊,所以我們能夠避免合併問題。

Pathfinder Solutions(我們的工具供應商)的優秀人員可以幫助指導您完成項目。

+1

感謝您的回答,但至少有三層,包括用戶界面?從你的描述看來,你爲它創造了一些機器人/嵌入式軟件?!聽起來很有趣! – tobsen 2010-06-30 21:22:48

+0

它有一個用戶界面,但是在UI的建模方面沒有太多好處,因爲它們通常不是基於狀態的。像Sparx的Enterprise Architect這樣的工具非常擅長捕獲簡單的類結構,比如UI可能會用到的結構。我的同事也將它用於代碼生成,但我從來沒有。 – Bruce 2010-07-01 01:49:50

1

我正在開發遺留現代化項目之一,並使用名爲Bluage的MDA工具。它爲一個大的醫療保健組織和它的生產,所以我可以說它的成功。在遺留現代化的情況下,MDA更好,因爲它可以從pacbase等某些技術中產生KDM模型,這些技術將不再受支持。

1

我在一個MDSD系統上工作,該系統在Google Closure中生成管理員風格的網絡應用程序。我相信你的問題很有說服力。太複雜,你的MDSD系統太難用了。太簡單了,你不會生成在現實世界中有用的應用程序。 MDSD的真正亮點在於節省開發人員時間,輸入大量管道代碼,但MDSD如何在多個版本中保持有效?要求可以在很多方面進行。這是真正的挑戰。我最近在那個項目上寫了我的MDSD lessons learned的博客。