模型驅動架構

2004 年 2 月 2 日

有些人認為,模型驅動架構 (MDA) 將會是自組譯語言轉移到第一批高級語言以來,軟體開發最大的轉變。其他人則認為,這不過是「活死人 CASE 工具之夜」。我屬於後者,但覺得需要提出一個比花言巧語更具體的說法。

現在對 MDA 所說的大部分內容,都與 80 年代 CASE 工具社群所談論的內容相同。我認為 CASE 工具失敗有許多原因,但其根本原因在於,它們無法提出一個連貫的程式設計環境,讓人們能夠比其他替代方案更有效率地建置一般企業應用程式。當然,CASE 工具可以協助執行特定任務,而且通常有顯著的幫助。我寧願使用圖形化架構設計器來繪製資料庫架構,也不願在 TextPad 中輸入 SQL。但是,在 CASE 環境中,有太多事情不是不可能,就是困難許多。

因此,我的問題是 MDA 是否改變了這一點。UML 是從相當合理的符號中發展而來,這些符號適合用於繪製草圖來傳達設計構想。我大量使用 UmlAsSketch,但是,將 UML 轉換為 MDA 所需的完整解決方案,其所需的正式性和凝聚力要嚴格得多。當然,在 UML 2 中,許多人努力嘗試讓 UML 在運算上完整。但是,這大部分都是在紙上進行,沒有明確的範例和使用 UML 的平台在實際運作中的經驗。即使 UML 在運算上完整,它也必須成為比其他替代方案更有效的軟體開發環境。由於我熟悉 UML 和其他替代方案,我必須說,我沒有看到這一點。

舉個行為邏輯的例子。我認為,繪製循序圖或活動圖,並不如使用現代語言撰寫程式碼好,更不用說更好。我發現即使我必須撰寫比圖表更精確的程式碼時,這也是真的,例如當我想要執行和測試它們時。

即使 UML 形成一個有效的程式設計環境,它仍然需要變得流行。作為一個前 Smalltalker,我非常清楚,即使是最好的語言也不一定能成為主流。

其他對 MDA 的論點是次要的,但也不令人信服。

  • 擁有 OMG 標準堆疊當然是 80 年代 CASE 工具所缺乏的,但我們將會看到人們如何堅持使用它。讓我印象深刻的一件事是,有多少 MDA 愛好者似乎將 UML 視為 UnwantedModelingLanguage
  • MDA 支持者談論平台獨立性,但我已經將其視為 PlatformIndependentMalapropism
  • 我聽說過 MDA 將如何透過允許自動產生模式來簡化開發。但我沒有看到 UML 中可以做的事情與使用良好的程式庫和架構可以做的事情之間的差異。(以及產生模式實作至少遺漏了模式的一半重點。)
  • 許多對 UML 的推廣似乎是基於圖片優於文字的說法。在某些情況下這是真的,但我沒有看到一般情況下有證據表明這一點 - 任何比較過流程圖和偽代碼的人都可以形成自己的結論。

在許多方面,我希望能對此感到錯誤。我真的很想看到軟體開發提升到抽象層級。(更不用說 UML 的成功對我個人來說是好的。)但我沒有看到 UML 提供了這種抽象跳躍 - 沒有它,MDA 將不會成功。

有趣的是,越來越多人希望在沒有 OMG 標準的情況下進行 MDA。我聽說更多關於使用 OMG 的 MDA 堆疊以外的工具進行模型驅動開發。

以下是對 MDA 的一些其他周到的批評

  • 史蒂夫·庫克談到了 Microsoft 對 MDA 的看法 以及模型驅動開發的更廣泛問題。史蒂夫是 UML 的主要貢獻者,也是英國早期 OO 的領導者。
  • 「貝達拉」戴夫湯瑪斯在 OOPSLA 2003 的 MDA 小組中展現了充滿活力的懷疑論,令人嘆為觀止。很遺憾地,我沒有他的表演影片,但較早的 jot 專欄捕捉到他論點的深度。