【问题标题】:UML Tool for Moose Perl [closed]Moose Perl 的 UML 工具 [关闭]
【发布时间】:2011-02-09 13:52:44
【问题描述】:

我开始使用 Moose/Perl 并正在寻找一个 UML 工具来创建图表并表示 Moose OO 系统。我已经与 Astah(前 Jude)合作过,但它是为 Java OO 系统设计的。有人可以推荐其他 UML 工具来使用 Moose/Perl 吗?

【问题讨论】:

    标签: perl uml moose


    【解决方案1】:

    我的两分钱:

    我为 Sybase PowerDesigner 编写了一个扩展名(一个 .xom 文件)。这个工具有一个强大的元类编辑器,您可以使用 vbscript 和专有语言 GTL 编写脚本。它还拥有大量可定制的元类和模板。

    我的 PowerDesigner Extension 非常老套,并且包含一些我没有清理的陈旧代码。因此我没有发表任何东西。它对我有用,而且只对我有用。从我的脑海中吸取的一些经验教训:

    • 我想做 UML 建模和代码生成,你也想做吗?

    • Moose 的属性非常重,因此在这方面值得采用 UML 方法。

    • 没有过多使用角色,但我还是尝试将它们映射到接口。

    • 我对如何建模关系不满意。 UML 概念和 moose/perl 概念的许多边缘情况和“阻抗不匹配”。 (顺便说一句,“关联类”的驼鹿等价物是什么?)

    • 原生特征是 Moose 中的一个不错的功能,但我还没有成功创建用于编辑它们的 GUI

    • 我还通过为类型强制设计一个可理解的 GUI 来伤害我的大脑(我经常需要检查 + 强制日期值)

    • 静态属性是 UML 中的一个重要特性,但在 moose 中不太重要。问题是 perl/moose 中没有“静态”关键字,但你必须声明一个“使用 MooseX::ClassAttribute”或任何它被调用的东西,并且每个类只做一次,但在正确的地方(顺序很重要)

    • 生成的代码不可能漂亮地打印出来,所以我通常会立即通过 perltidy 将其发送到“规范”形式,从而使差异和版本控制/提交到 SVN 更容易。

    • 当一个类被生成时,Moose 类的紧凑性消失了,你将拥有 svn 属性、头文件 cmets、大量“use”+“use lib”语句、大量 POD、后面的一些注释行每个带有参数传递文档的子声明,强制页脚(“no moose ....”)-

    • 不幸的是,逆向工程 Perl 代码(从代码更新 UML 模型)是不可能的。因此,在某些时候,我必须停止使用 UML 工具,并开始直接编辑 perl 代码,放弃模型。必须稍后手动重新检查这些更改,这非常耗时且需要小心。

    优点:

    • 生成正确的 POD 记录代码是您通过所有这些 UML 建模获得的主要生产力收益,恕我直言。适合“企业”编程环境。

    • 您可以使用测试用例(或测试用例的存根)自动生成 *.t 文件。需要一些思考来设计智能测试,并避免 Dave Rolsky 在这篇博文中所写的问题:“add(ing) absolutely nothing that isn't already tested by Moose itself

    • 您可以在模型中定义自定义检查,例如“检查所有已声明属性的构建器方法是否存在,如果它们不存在,则创建一个存根,或者(问我要做什么)”

    • 将噩梦般的数据库表轻松映射到 moose 类。 (我必须处理很多无法触及的多列表)。构建自己的图形 ORM-Mapper!

    • 可能还有更多优势

    【讨论】:

    • Moose 中的“关联类”只是一个类。可能有一个代表相关类的人。
    【解决方案2】:

    我还没有看到 Moose 的 UML 工具。建造一个并不难,只是有点劳动密集型。大多数情况下,它需要爬取给定类的元类树,并为每个步骤输出正确的 UML 标记。如果有兴趣构建这样的东西,你可以通过 irc.perl.org 上的#moose 停下来。我相信有人可以帮助您指出正确的方向。

    【讨论】:

    【解决方案3】:

    在寻找“UML Moose perl”时偶然发现了您的问题。

    引发的其他链接之一是一个名为umlclass.pl 的实用程序,看起来很有趣。

    我会在看到它的效果后发布后续跟进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-26
      • 2011-04-14
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      • 2012-12-02
      • 2013-11-27
      相关资源
      最近更新 更多