2010-04-21 153 views
3

简短的问题。你如何将UML图转换成代码?类图是一个很明显的例子,但其他类如活动,用例,序列,状态,包等等呢?将UML转换为代码

回答

3

哇,如果你在开始编码之前就已经拥有了所有这些,这真的很酷;)这意味着某人在为期望的软件建模时做了一份体面的工作!

也就是说,UML的各种图可以或多或少贴近代码。这里是我对它一般来说的感觉:

  • 类图。在大多数情况下,与代码一对一映射。仍然可以在分析过程中使用,以显示不会一对一映射的概念,但这种情况非常罕见。
  • 包装图。在大多数情况下,也可以与代码一对一映射。除了展示实际来源的包装之外,我从未看过它的任何用法。
  • 序列图。在大多数情况下,地图也会相当接近代码。除了顺序图中经常会避免的某些步骤,否则会变得很大。它仍然显示直接或间接呼叫谁。
  • 状态图。这一个更抽象。它显示程序中的元素的各种状态(或程序本身),不能按原样转置;您首先需要决定如何存储/建模状态。例如。在java中显示可能的thread state的状态图并不映射到代码中真正直接可见的内容,但线程有一个状态,如corresponding enum所示。
  • 活动图。显示算法/程序的各个步骤。尽管一些事情可以相当容易地进行转置,例如循环,但其他一些(如并行活动)的实现在代码中可能会有所不同。并行活动最明显的实现是使用线程,但这可能是JMS,具体取决于图的粒度。它仍然不会告诉你每一步的逻辑是什么,所以最终有一些工作需要解释和实施。
  • 用例。这是最重要的一个。它不能被转换,你需要考虑如何实现用例,这个用例可以从很高层次到低层次。没有它的公式。

结论:UML是一种用各种视角描述软件的工具。某些方面可以在代码中轻松转换,其他方面更加抽象,并且可以以各种方式实现,具体取决于图的粒度。

这是设计发展之间的区别:实行的是设计细化到一些真正的可执行文件(代码),这可能需要更多或更少的工作依赖于现有设计的粒度。

这个梦当然是能够生成UML的代码,而反过来,但我们还没有呢!它几乎适用于类图:)

2

我已经使用EclipseUML Omondo进行UML建模,并使用AndroMDA进行代码生成。 您可以使用原型从Class,usecase和State图生成代码。您需要在分类器上添加原型,然后AndroMDA引擎读取原型并生成代码。 看看AndroMDA论坛的更多信息:http://forum.andromda.org/index.php