http://www-106.ibm.com/developerworks/blogs/dw_blog_comments.jspa?blog=317&entry=67637&ca=dgr-jw22MSrejectsUML MS最近推出了software factory和DSL(domain definition language)的概念, 也遭到了很多人的攻擊。 該文出自UML三友之一的Grady. 這裡是文中和根貼裡的一些觀點。 There's no doubt that reuse at the level of design patterns or, even better, vertically-oriented architectural patterns is a Good Thing, but what Microsoft is proposing to do is not exactly like the manufacturing metaphor, and so their use of the term is a bit misleading (although Steve has curiously used the image of a conveyor belt when describing the Microsoft factory process). 毫無疑問, 用design patterns或vertically-oriented architectural patterns 來實現reuse是好事, 但MS打算作的和製造業用的方法確不大一樣。所以software factory這個詞導致一點誤解。 I think factory methods for software are dead wrong, witless, and counter-effective. Organizations that build good software know that software is an R&D activity, not a production activity. Organizations that try to make it into a production activity produce bad software (though potentially lots of it). 我認為工廠方式是絕對錯的、好的軟體企業知道軟體業是R&D 行為, 而不是生產行為。 "A careful look at the specialization mechanisms for UML reveals their limitations. Stereotypes and tagged values allow you to change icons etc, although even simple alterations like decorating a box to show the state of some property isn't within range. You can't change the semantic constraints, or invent new sorts of diagram or new categories of element." 好好看一下UML的spec, 可以看出他的不足。用Stereotypes 和tagged values 你可以改變表徵圖, 甚至一些簡單的變動比如顯示有的屬性的狀態不在範圍內,但你不可以改變semantic constraints, 或發明新的diagram和元素分類。(註: Stereotypes 和tagged values 是用來作UML標記,定義和擴充的) UML only includes certain types of graphical format. If you want your language to include tree-structured diagrams, or tables, or math formulae, or block-structured text, or prose, or if you want hyperlinks - well, I think you'd have a hard time. While our initial offering won't include all those styles, we'd certainly like to support them at some stage in the future UML只包括一定種類的圖形格式, 如果你想你的語言套件括樹結構或表或數學公式。。你就有麻煩了,不過我們最初不會包括所有的格式, 當然我們會在未來支援他們(註: 這是MS的人說的) To produce a software a factory-like stile we need two things which made contemporary engineering posssible: 1) a draft-like language which presents software in a way that makes it easy to validate it; 2) a system of measurement or validation which allows QA person to say immediately that this module passed or failed 要象一個工廠一樣的做軟體, 我們需要兩個東西, 一是一個草稿一樣的語言,他可以用簡單的方法去驗證表達一個軟體, 二是一種驗證的測量方法, QA就可以用他很快判斷出模組的結果。 For building DSL, you will have to design your model and then use it (run time phase). Microsoft will offer a complete suite for building DSL (you can try the beta now!), and will also offer some pre-defined dialects for usage in its tools. I see Microsoft DSL vision more as a "configuration language" building set (see the Microsoft Dynamic System Intitative at http://www.microsoft.com/windowsserversystem/dsi/default.mspx). 要想寫DSL指令碼, 你必須設計你的模組並且用他, MS會提供一些完整的工具, 還有一些定義好的方言。看上去DSL更象一種配置語言。 UML has its range of applicability. UML is well suited for identifying and visualizing the structure and the collaborations of the components in a system. It is also an invaluable aid in the iterative process of discovering and refining requirements. On the other hand, a UML tool may not be the best suited for modeling UI components, or for creating business rules or even writing math formulae UML有他的應用範圍, 他適用於標記和視覺化構件的結構和互動。 他也有很助於需求定義和挖掘的迴圈過程。但UML不是很適用於建模, 或建立商業邏輯和數學公式。 What Microsoft is doing with Domain Specific Languages serves two purposes: First, it addresses a broader spectrum of need than current generation UML tools, by starting a a conceptual architecture level, then moving down through a logical and physical deployment, based on reference architectures. It's the reference architectures which today have higher economic value to an enterprise. Second, DSL's create economic opportunities for ISV's to add value by providing standardized visual components which cannot be seperated from implementation details DSL有兩個用途, 一是他比UML更全面, 從架構概念層開始, 然後一直到軟體的物理和邏輯分發。他基於引用架構, 而是他創造了給軟體商提供了商業機會去提供標準構件。 |