Modeling…

最近 Model-Driven Development (MDD) 成為熱門話題. 在VSTS裏的Visual Studio Team Edition for Software Architects就提供了Microsoft對MDD的solution和工具. 而這些工具背後的概念皆包含於Microsoft一個新的initiative: Software Factories.Software Factories 的概念裏, 各種models不只是用於分析(analysis)和設計(design), 並且可以支援分布在整個software life cycle.

Microsoft在VSTS裏的modeling language是採用 Domain Specific Languages (DSLs). DSLs對軟體開發人員來說其實並不陌生, 例如XSD就是為了定義XML文件結構的一種DSL. DSLs因為被定義在特定領域中使用, 因此一個好的DSL在做 Modeling, 由其在 Generate code這方面會特別有效率, 同時, 也方便各domain中的使用者利用這樣的語言來做Model.

舉例來說, 應用VSTS裏的設計工具, 可以用圖形化的方式來Modeling 實際的datacenter硬體設定, 及軟體架構的各種設定, 並validate軟硬體之間設定值不相符合的地方, 並具可以自動地從modeling的圖形產生程式碼, 而任何程式碼的改變也會反應在圖形化的架構圖裏. 這就好比在蓋房子時, 先繪製(modeling)管路設計圖和結構設計圖, 並在真正交由工人實做時事先validate不相符合的地方避免實際建造時的困難, 一切沒問題後, 建築工人即按照建築師給的設計圖(model)來實作. 而一個好的MDD的工具, 應該能把model和code同步化(synchronize), 不但能做code generation, 不論是model或code的改變都能同步反應在另一方. 個人認為Microsoft應用DSLs來設計MDD的工具, 是很有效率的做法.

最後, 補充說明一點, Microsoft 並不排除或拒絕採用UML, 個人認為, DSL 和UML其實是不相衝突的. 有關VSTS在modeling方面的策略和常見的問題可以參考下列網址:

https://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/vstsmodel.asp