MDA Notes

MDA Notes

上一篇: BPEL Notes 不小心发在了文章里面,才知道首页看不到。。。,请大家注意。
~~~~~~~~~~~~~~~~~~
1.MDA
是什么
模型驱动的框架。简单来说就是由原来编程序改成编模型。看起来好像是 4GL 甚至 5GL 的样子。不过区别还是很大的,一个是语言,一个是模型。

 

2.MDA 和现有的编程语言的关系

没关系而又有关系。没关系是因为 MDA 不与任何一种编程语言邦定。有关系是因为 MDA 最后生成的还是具体编程语言的代码。

 

3.MDA 的流派

转自 Steve Cook

1. The UML PIM camp: MDA involves the use of UML to build Platform Independent Models (PIMs) which are transformed into Platform Specific Models (PSMs) from which code is generated.

2. The MOF camp: MDA does not involve the use of UML, but instead the crucial technology is MOF, and the definition of modelling languages and language transformations using MOF.

3. The Executable UML camp: MDA involves building a UML compiler, making it a first class programming language.

4. MDD Model Driven Development

个人觉得:

最好理解的是第一种,直接用 UML 描述 PIM, 然后转换为 PSM ,然后再转成代码,这当中的每一个转换都会用到很多已有的 Pattern 或者说技术细节。

从建模方面来讲最灵活和能力最强大的是第二种,同时也是最不好理解的。就像高等代数谁都能用,但是要从代数的基础理论推导出高等代数的体系就不是人人都能干的了。 MOF 的抽象层次脱离了实际的世界,不过这也是它能够灵活和强大的基础。

最不现实奖颁发给第三种方法,可执行的 UML UML 在设计之初就没想过要可执行的东西。现在 UML 里面最像可执行代码的就是 OCL ,不过老早之前 Rule-based 系统就已经出现,而且向我们证明了这种系统只适合特定的需求和环境。那么我们能否扩充UML的动作语义来实现执行呢?简单的情况是可以的,比如算法的描述即程序流程的描述,动作图或者状态图可以很好的描述这种情况。但是数据库连接呢? UML 是否要扩展到连关系型数据库连接都要用个 notation 的程度?那么 UML 就不是建模语言,而是图形化类库了。

第四种我不甚了解,不敢妄加评论。

 

4.MDA 的工具

基本上现在的 UML 建模工具都或多或少支持 MDA 的功能。如:

Rational Software Architect

Enterprise Architect

Together

还有很多专门的 MDA 工具,如:

acceleo

GMT

AndroMDA

 

5.RSA 里面的 MDA

这两天一直在看红皮书 Patterns: Model-Driven Development Using IBM Rational Software Architect 。郁闷的事情是我手上的 RSA 6.0.0.0 ,而需要的版本是 6.0.0.1 而且升级要 1G 多。。。。只能纸上谈兵一下了。

个人感觉:最重要的就是 transformation RSA 里面是采用扩展 profiling 的方式来实现 MDA 的。因此首先要做的就是建立商务领域内的 profile 。之后写一些 transformation 插件来将用这些 profile 描述的需求转化为 PIM ,之后再利用现有的(或者有需要的话自己扩展的) UML to XXX 插件来转化为 PSM 和代码。这个方式理解起来比较简单,但是需要大量的领域 specific 并且设计良好的 Profile 和转换器来支撑整个系统。

另一方面, transformation 插件是以 eclipse 插件的形式存在的,利用了 eclipse 本身良好的插件系统。有点自己开发工具自己用的感觉:)不过在我的机器上真的很慢。。。

你可能感兴趣的:(MDA Notes)