`
庄表伟
  • 浏览: 1150375 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于DSL、MDA、UML、TDD的一些思考

阅读更多
这是计划中的一篇Blog,原来设想的题目是《MDA与DSL》 ,只是因为和徐昊聊天时产生了一些想法,想谈谈对MDA和DSL的新认识。现在这段时间又出现了很多关于DSL的讨论。

马大叔的两篇:领域专用语言(DSL)、界定DSL
还有在JavaEye的不少相关的讨论:DSL的讨论、规则系统or脚本系统,自然语言,DSL or Java语言、Ruby DSL
还有一篇不错的入门文章:用Ruby 创建领域特定语言(DSL)

因此自己又思考了不少东西。联想到以前说过的两句话:
“框架是弱语言,语言是强框架”
由此我们可以这么定义,DSL就是尽可能写得像语言的框架。

再接着追问,为什么框架还不够,还要发展为DSL呢?初步的看法是:语言是一种更加方便的使用方式。

前段时间徐昊一直在写一篇关于Antlr和DSL的文章,我也不断的看着文章的进展,跟他讨论着。有这么一些想法,还远不成型。

1、 DSL一般来说,是Domain Specific Language的缩写,而我以为,更加实用的,应该是Domain Scripting Language,这种DSL。也就是说,DSL应该足够简单,一根筋,过程化,三分钟学会。否则,太过复杂的DSL,就不会有人喜欢了。

2、DSL的简单,是他的优点、特点、也是他的弱点和局限所在。

3、DSL与MDA最大的区别是,DSL是自底向上简化劳动的实践,而MDA则是企图自顶向下搞定一切的妄想。

4、我当初设计的DJ(Dynamic Java),应该被称之为DML(Domian Modeling Language)——领域建模语言。相对于UML,DML是更加适合的领域建模工具,毕竟,UML受限于OO的思维模式,无法超越。

另外还有一些议论,也附在下面:
UML,是思考工具,不是开发工具。
TDD,是开发手段,不是设计手段。

UML作为开发工具,就会出现MDA那样的书呆子遐想
TDD作为设计工具,就会导致设计惰性与跳不出最初的心理暗示(隐喻)
分享到:
评论
11 楼 庄表伟 2006-09-13  
DRL,是一种业务规则定义的方式。

我是这么想的。
10 楼 tianxinet 2006-09-13  
庄表伟 写道
to:tianxinet

Domain Modeling Language
这个DML,是我自己发明的一个词,看着挺像那个啥的吧 :p
所以,还没有什么介绍。

昨天在跟徐昊聊天,感觉通常所说的DSL,可以再分层三个类别/流派

DML(Domain Modeling Language)
DSL(Domain Scripting Language)
DRL(Domain Rule Language)

觉得怎么样?


DML的缩写是有点象老谁家的那个啥,不过英文缩写本来就容易相同,这样说UML也应该是一种DML了;
Domain Scripting Language也没问题,这个比domain specific language范围小,应该是类似autocad、loadrunner脚本之类的吧。
基于以上理解,觉得都贴切。

DRL是什么意思?Rule是否类似或接近schema或其它的意思?能不能再解释一下
9 楼 庄表伟 2006-09-13  
刚才在Google上搜索了一下Domain Modeling Language,似乎已经有这个缩写了,具体细节,待查。
8 楼 庄表伟 2006-09-13  
to:tianxinet

Domain Modeling Language
这个DML,是我自己发明的一个词,看着挺像那个啥的吧 :p
所以,还没有什么介绍。

昨天在跟徐昊聊天,感觉通常所说的DSL,可以再分层三个类别/流派

DML(Domain Modeling Language)
DSL(Domain Scripting Language)
DRL(Domain Rule Language)

觉得怎么样?
7 楼 cookoo 2006-09-13  
你说的DSL,MDA两个方向不能合在一起么?DSL难道就不能用于Domain modeling么?

P.S. 我个人感觉DML这个缩写通常都指Data Manipulation Language,也就是SQL。SQL其实也是一种DSL。。。
6 楼 runes 2006-09-13  
冉翔 写道
喜欢C/C++的人,如果说是因为他足够强大,我相信。
但是如果是因为足够复杂,那么我不觉得是。

如果有比C/C++强大而且更加简单的语言,那么应该容易让更多人喜欢吖。

要是说有部分人最爱C/C++是因为强大+复杂。
那么应该去鼓捣汇编,机器语言什么的了。
这些比C/C++更强大,并且更复杂吧。

引用
“有些领域不能仅仅依靠DSL来解决。因为那些领域本来就是复杂的。”


相当赞同。计算机世界是一个没有银弹的世界。


asm语义上还是挺简单的,之所以麻烦,只是关注的细节太多,重用性比较差,无法移植。

c++想干的事情太多,语义上很复杂,使用过程中总会让你“惊奇”不断。
5 楼 冉翔 2006-09-13  
喜欢C/C++的人,如果说是因为他足够强大,我相信。
但是如果是因为足够复杂,那么我不觉得是。

如果有比C/C++强大而且更加简单的语言,那么应该容易让更多人喜欢吖。

要是说有部分人最爱C/C++是因为强大+复杂。
那么应该去鼓捣汇编,机器语言什么的了。
这些比C/C++更强大,并且更复杂吧。

引用
“有些领域不能仅仅依靠DSL来解决。因为那些领域本来就是复杂的。”


相当赞同。计算机世界是一个没有银弹的世界。
4 楼 tianxinet 2006-09-13  
DML?哪里有介绍?
说实话我现在处在一个不太喜欢“纯”OO的阶段,尤其是领域建模。
3 楼 庄表伟 2006-09-13  
很多人喜欢C/C++,不是因为它简单,而是因为它足够强大,足够复杂。

DSL不能复杂,也就意味着,有些领域不能仅仅依靠DSL来解决。因为那些领域本来就是复杂的。
2 楼 冉翔 2006-09-13  
1、 DSL一般来说,是Domain Specific Language的缩写,而我以为,更加实用的,应该是Domain Scripting Language,这种DSL。也就是说,DSL应该足够简单,一根筋,过程化,三分钟学会。否则,太过复杂的DSL,就不会有人喜欢了。

//
加上一句:个人认为任何东西,大家都是喜欢简单而不喜欢复杂的,不仅仅对于DSL。


2、DSL的简单,是他的优点、特点、也是他的弱点和局限所在。

//
老大能不能就拿SQL,具体的举个例子来说一下。简单也是弱点和局限所在。不太明白吖:(


and 对庄老大最后一句话也不明白
1 楼 buaawhl 2006-09-13  

DML是更加适合的领域建模工具。
how?

看到一个Eiffel语言,有很丰富的规约。

相关推荐

    UML支撑MDA开发手册

    ### UML支持MDA开发手册知识点解析 #### 一、UML与MDA概述 - **UML(Unified Modeling Language)**: 是一种标准化的建模语言,用于对软件系统的结构和行为进行可视化、详述、构造和文档化。它不仅支持面向对象的...

    MDA/UML业务建模

    MDA(Model Driven Architecture)和UML(Unified Modeling Language)是软件开发中两种重要的建模工具和技术。MDA是一种架构驱动的建模方法,它将业务模型与平台无关模型(PIM)和平台相关模型(PSM)相结合,帮助...

    Model-Driven_Architecture.zip_mda_uml

    **MDA(模型驱动架构)...总之,MDA通过模型驱动的方式,提供了一种标准化、高抽象级别的软件开发框架,旨在解决传统开发方法中的一些痛点。通过深入理解并应用MDA,开发者可以更加高效地管理和构建复杂的软件系统。

    寫給SA的UML&MDA實務手冊

    综上所述,《写给SA的UML&MDA实务手册》是一本针对系统分析师的专业指南,深入浅出地介绍了UML与MDA的基本概念、应用场景及实践技巧,旨在帮助读者掌握软件开发过程中至关重要的建模技术。无论是对于初学者还是有...

    模型驱动软件设计 UML MDA

    7. **工具支持**:了解一些常用的UML建模工具,如IBM Rational Rose、Enterprise Architect等,以及它们在模型驱动开发中的应用。 8. **最佳实践**:学习如何在实际项目中有效地应用模型驱动设计和UML,提高软件...

    写給SA的UML-MDA实务手冊投影片

    《UML-MDA实务手册投影片》是一份专为系统分析师设计的学习资料,涵盖了系统分析的重要概念和技术,特别是UML(统一建模语言)和MDA(模型驱动架构)的应用。通过对这些投影片的深入学习,我们可以掌握如何有效进行...

    MDA Dms转换方法

    MDA是由OMG组织提出的一种软件开发方法,其核心是通过使用统一建模语言(UML)和其他建模工具来促进软件的可重用性和可维护性。相比之下,DSL则是一种专注于解决特定领域问题的语言,如WebML专注于Web应用程序的设计...

    寫給SA的UML/MDA實務手冊-語音備忘器

    而且透過一個開發基金交易平台的案例進行闡述,逐步說明從需求訪談到如何利用UML/MDA,利用一套名為StarUML的開放源碼工具,產出相對應的使用案例圖文、活動圖、類別圖、循序圖和狀態圖。  本書內容兼顧入門及進階...

    MDA白皮书-模型驱动开发和UML 2.0

    《MDA白皮书-模型驱动开发和UML 2.0》深入探讨了模型驱动架构(MDA)和统一建模语言(UML 2.0)在现代软件开发中的核心作用,揭示了这一方法论如何改变软件工程的传统模式,以及其在提升开发效率、增强团队协作和...

    模型驱动--MDA简介

    MDA 的核心技术包括统一建模语言(UML)、元对象设施(MOF)、公共仓库元模型(CWM)和基于 XML 的元数据交换(XML Meta)。 模型驱动的软件开发方法可以带来很多好处,如分离业务功能分析设计的制品与实现技术之间...

    MDA.rar_mda_模型驱动

    总结来说,MDA是一种以模型为中心的软件开发方法,利用UML等建模语言创建平台独立模型,通过模型转换生成平台相关模型,从而实现业务逻辑与技术实现的解耦。这种方法有助于提高开发效率,降低维护成本,特别是在复杂...

    模型驱动MDA学习论文精华

    2. **UML模型**:UML作为MDA的主要建模工具,包括用例图、类图、序列图、状态图等多种图表,用于描述系统的不同方面。理解UML的各个元素及其在MDA中的作用至关重要。 3. **PIM与PSM**:PIM是在高层次上定义系统行为...

    INCA标定软件中的MDA

    MDA,全称Measurement and Diagnostic Application,是INCA软件的一个重要组件,专注于车辆诊断和测量任务。本篇文章将深入探讨INCA中的MDA功能、使用场景以及与INCA版本兼容性的问题。 首先,MDA是INCA软件的核心...

    MDA develop

    ### MDA驱动的多智能体系统开发方法 #### 摘要与背景介绍 随着信息技术的发展,多智能体系统(Multi-Agent Systems, MAS)已成为构建复杂、大规模系统的关键技术之一。MAS的应用范围广泛,包括数字图书馆、虚拟...

    MDA模型驱动架构教程

    Lecture4_MDA2up.pdf可能是一份关于MDA的教程材料,其中可能涵盖了以下主题: 1. MDA概述:解释MDA的概念、目标和主要原则,以及为什么它对于现代软件开发来说是重要的。 2. 模型层次:详细介绍PIM和PSM,它们的...

    MDA说明书来源于OMG

    MDA的成功实施依赖于一系列工具和技术的支持,包括UML(Unified Modeling Language)、MOF(Meta Object Facility)和XMI(XML Metadata Interchange)等。其中,UML是用于创建和理解各种模型的标准建模语言;MOF是...

    MDA Explained: The Practice and Promise of the Model Driven Architecture

    UML作为MDA的重要组成部分,为MDA提供了丰富的图形化表示工具。通过UML,开发者可以更加直观地理解和设计系统架构。此外,UML还支持不同层次的抽象,使得开发者可以从宏观到微观逐步细化模型,从而更好地满足不同...

    UMLMDA, a UML/MDA Generator Framework-开源

    UMLMDA提供了一组Java工具来从ArgoUML,Rational Rose,RSM或XMI中读取UML模型,并使用基于jsp的模板设置生成器以从模型生成代码。 基于此工具,为业务应用程序开发了MDA框架。

Global site tag (gtag.js) - Google Analytics