MDE為何錯失良機?

openkk 13年前發布 | 12K 次閱讀 MDE

每個月都會有更多關于編程語言的活動,也會有更多人對編程語言感興趣。不管是 JavaScript 和 Python 的興起、Dart 的發布,還是 Objective-C的重生,以及“可執行 UML”說明書的發布,看起來業界已經為新編程語言的到來做好了準備。甚至還有人在為創建新語言 Grace 而努力,它會讓人們更易于講授如何編程。InfoQ 上周參加了 COOMP 研討會,那是 SPLASH 2011 大會的一部分。

研討會的目的是要了解為什么“針對建模和編程的語言正分道揚鑣”。研討會的組織者在介紹中提到:

  • 一方面,有些開發者想要應用面向對象的設計來獲得合適的模型,最終需要面臨同時維護模型和程序的挑戰。并且,由于很多建模語言和編程語言抽象的層次都是相同的,所以使用單獨的建模語言不會帶來太多好處。
  • 另一方面,我們看到很多面向對象的代碼都是由不稱職的開發者編寫的,他們對面向對象的設計和開發規則都不是很理解,這導致編寫出來的代碼非常復雜,而且難以理解和維護,因為在代碼中并沒有很好地反映出應用程序領域的概念和現象。

研討會上,Jean Bezivin 在演講“為什么 MDE 錯失良機”中表達了自己的觀點。他認為,如果我們根據業界采用的程度以及開始進行大型的建模項目多少來評估 MDE 是否成功,那么就會發現 MDE 已經停滯不前了。他并不認為 MDE 已經到了窮途末路:他向我們展示出,盡管面向對象可以追溯到在上世紀六十年代末就發明出來的 SIMULA,但是直到1986年,第一屆 OOPSLA 會議的召開,面向對象才成為主流并被廣泛采用,三年后 Tom Love 才創建出第一個面向對象的殺手級應用程序,當時他用220行面向對象的代碼取代了原來的10,000行代碼。

Jean 提到了 MDE 錯失良機的幾個原因:

  • 一直沒有一個殺手級的應用程序,能夠產生可度量和可再現的證據,來證明 MDE 相比以前的解決方案,至少提供了一種顯著的提升。
  • 有太多的定義和陣營(MDD、MDSD、MDA、MDE、MDSE、MBD……)
  • 對于 MDE 到底是什么大家始終還有疑惑,例如,大家不了解模擬(Simulation)和 MDE 這兩種軟件工程截然不同的分支之間的區別。
  • 我們常會使用 UML 作為建模的基礎,它是一種松散定義的語言,基于業界的共識創建,不具備很好的模塊化原則,而且太大、太復雜、變化過于頻繁……
  • 我們對下面這個問題缺少關注:如果 MDE 是解決方案,那么問題是什么呢?
  • 執行 vs 精確度:精確度并不一定需要通過執行才能夠獲得,而 MDE 的目標不總是要創建可執行的模型。
  • 在編程和建模之間有混淆,二者在90年代可視化編程語言出現的時候開始被混為一談。
  • 人們經常會認為 MDE 增加了復雜度:元模型經常會太大,而且有太多元模型,它們之間的關系和組合都很難于理解。
  • MDE 缺少模塊性,即便在 UML 中引入了包和屬性(profile)也沒有解決這個問題
  • MDE 缺少可移植性:關于模型在時間和空間上的可移植性沒有正式的定論(十年前創建的模型,可能在今天已經不可用了)
  • XMI 是失敗的產品,最終會消亡,它只是導致了 UML 的維護問題
  • 人們始終沒有把平臺模型的想法當回事兒,而 CIM/PIM/PSM 都只在表面上是好主意,實質并非如此
  • MDE 過多關注于代碼的模型,而對數據的模型關注不夠
  • MDE 過多關注于解決方案模型,而對問題模型關注不夠
  • MDE 過多關注于信息系統模型,而對業務模型關注不夠
  • MDE 過多關注于小型系統的建模,而對大型系統關注不夠

Jean 總結說:

MDE 暫時的失敗主要是因為:

  • UML,這是主要問題
  • 混淆了建模和編程語言
  • 沒有對可執行建模的定義和評估
  • 太多陣營

Jean 還認為,我們在過去的20年間學到了很多:

  • 我們從“統一方法”轉到了“統一語言”。
  • MDA 清晰地表述了概念,以及模型的重要性。
  • 在模型圖的幫助下,MDE 成為了分離和整合各種信息系統概念的最佳解決方案。
  • DLS 已經普遍存在
  • MDE 除了應用在軟件工程中之外,還應用在很多其它 IT 領域:數據工程、系統工程、業務工程等。

Jean 提到,移動設備出現之后,應用程序最終用戶的數量正在快速增長,而在未來的幾年間開發者的數量可能無法滿足構建應用程序的需要。

他在結論中認為,在語義網絡(Semantic Web)和更新的編譯技術之間,已經不存在 MDE。而只是保留了軌跡:用于記錄設計圖和文檔的 DSL(基于能夠識別語法和 XML 的技術)和 UML。

他在演講的過程中提出了很重要的問題:有了 JavaScript、Dart 和 GWT 之類的工具,我們是否已經開始在構建這樣的編程語言,你不需要使用它編程,而是要用來生成一種語言?

你是否同意 Jean 的觀點? 你認為軟件工程的前景如何?讓新人們繼續深陷在編程語言中呢?還是即將出現新一代的模型驅動的工程,從而改變我們現在所認知的軟件工程?

查看英文原文:Why did MDE Miss the Boat?
      來自: InfoQ

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!