另外一种DSL尝试:UML脚本


yUML提供了一种脚本工具,类似英语的表达方式,可以让不懂计算机和UML的业务专家使用普通英语来表达他们的专家知识。

这也是DSL的一种尝试,目前,DSL尝试有三种主要趋势:
1.使用新的Scala之类语言
2.基于Java的框架如Qi4j
3.基于UML的脚本。


比如英语:A Customer is a User
通过rebol工具可以转换为如下yUML.me脚本
yUML.me:[User]^[Customer]
这样,就输出UML图:

你可以在他们提供的在线绘制UML 输入yUML.me
脚本试验一下。

同样:一个客户有两个地址聚合关系如下表达:
[note: A Customer has 1-2 Address]
[Customer]++1-2[Address]

表达依赖关系,如下:
[note: An Order uses 1 PaymentMethod]
[Order]0..*->1[PaymentMethod]

表达继承关系,如下:
[note: PaymentMethod can be]
[PaymentMethod]^[Credit]
[PaymentMethod]^[Cash]
[PaymentMethod]^[Check]


rebol工具是一个强大的DSL生成工具,可以产生Java C或PHP代码,目前免费下载,我用它按照http://reboltutorial.com/blog/create-rebol-gui/说明输入脚本后,是确实产生一个窗口,感觉它的脚本很类似JavaFX,但是没有JVM那么臃肿支撑,整个大小只有634K。

这些都是成熟的理念和工具了,据说微软和Javafx的都是向rebol学的。

我想知道上面的图是什么工具画的。

用什么工具画不重要,这只是一种类似界面的图形输出。
你可以在下面这个网址自己输入脚本,测试输出UML图形。
http://yuml.me/diagram/scruffy/usecase/draw

也许过去常用的UML工具已经变成网上的云服务了,这就类似微软的桌面Office正在被google等的网上office蚕食一样。

唉,云计算来得太快,我基本上落伍了,天天还抱着dia活着。

这个帖子真的让我感受到了一些新东西。

简单的语法描述描述一些基础的东西,然后就拥有其他的一切。