UML 草图工具

2004 年 6 月 16 日

我画了很多 UML 图,但我不用 CASE 工具。原因是我对 UmlAsSketch 感兴趣,而不是对所有存储库的东西感兴趣。到目前为止,我通常选择 Visio。虽然 Visio 带有 UML 模板,但我不用内置的模板 - 我更喜欢 Pavel Hruby 的模板。

Visio 对我来说非常有效,它仍然是我的首选。但我承认我有点三心二意。Visio 只能在 Windows 上运行 - 我也使用 Mac 和 Unix,所以如果有一个可以在所有平台上运行的工具(或者实际上是一个通用的数据格式)会很棒。我喜欢与他人合作,所以开源的东西可以让那些没有访问 Visio 的人绘制图表。

我在我的 Mac 上玩过 OmniGraffle,但还不够深入地评估它的功能 - 尽管它确实产生了看起来很漂亮的抗锯齿输出。 UMLet 也是一个看起来很有趣的项目。

然而,我最希望的是用文本指定我的 UML 图。这听起来可能很奇怪 - 毕竟 UML 图是图表,为什么要用文本呢?文本有一些优势。在图表形式中,很多图表布局都很难调整,而用文本方式做起来会容易得多 - 使用图表作为可视化而不是编辑机制。此外,文本格式允许你使用 cvs 和 diff 轻松跟踪随时间推移的变化。

因此,我对 UmlGraph 很感兴趣。我最感兴趣的部分是序列图编辑器,它使用久负盛名的 pic 程序。 此页面 显示了 pic 宏如何创建序列图的文本表示。当然,pic 宏中有一些限制,我可以想象一个更紧凑、更清晰的文本表示。

objects 
  thread, t:thread
  tool, :Toolkit
  peer, p:Peer, unborn

trace 
  found: a1:run(3) -> 
    thread: 
      run() -> 
        tool: 
           callbackLoop() -> self
           create -> peer
           handleExpose() -> 
             peer: 
               return      
           delete -> peer

这只是我脑海中的想法。我不知道它在实践中是否真的有效。无论如何,我打算尝试使用 UmlGraph,看看它是否适合我。pic 程序非常小,如果我想做一些更改,我可以轻松地调整它。

UmlGraph 的类图生成器很好,因为它可以从 Java 源文件生成内容。但是对于仅仅是一个图表语法来说,它看起来很笨拙 - 我希望对类的放置有一些控制。足以说明 Customer 在 Order 的左侧。因此,也许用类似这样的东西来表示 此图表

layout
  row: Controller, EmbeddedAgent, URLStreamHandler, ChannelIterator
  SetTopController below: URLStreamHandler
  PowerManager below: SetTopController

interface URLStreamHander 
  operations 
    OpenConnection()
    parseURL()
    setURL()
    toExternalForm()

class SetTopController
  specializes
    Controller
    EmbeddedAgent
  implements
    URLStreamHandler
  attributes
    authorizationLevel
  operations
    startUp()
    shutDown()
    connect()
  associations
    -> PowerManager

class ChannelIterator
  dependencies
    -> SetTopController keyword:friend

这同样只是我脑海中的想法。重要的是,我很高兴看到有人朝着这个方向努力 - 并希望看到更多。

以下是一些类似的草图工具,人们告诉我: