保持类图和代码同步

时间:2015-01-09 21:15:01

标签: architecture uml class-diagram

我在编写代码之前尝试设计我的应用程序。我已经创建了将要使用的所有类的类图,然后使用Astah从它们生成代码。

当我想要更改某个类的方法或添加新类时,会出现问题。我应该这样做两次:一次在类图中,一次在源代码中。这种演变正在进行中,我的班级图很容易过时。

有没有办法避免这种情况?我可以从活动图中更新现有代码吗?

提前谢谢

1 个答案:

答案 0 :(得分:0)

为了回答你的问题,在我看来,考虑UML的使用方式似乎是恰当的。

UML distilled中,Martin Fowler考虑了三种使用UML的方法:

  1. 草图
  2. 蓝图
  3. 可执行UML
  4. <强> 1。草图

    UML的草图使用对refactoring程序很方便,Fowler的练习是seriously interested in。一般来说,这适用于对现有程序的综合感知。

    <强> 2。蓝图

    蓝图在某种程度上是语言的学术用途。主要问题在于软件演化:必须重新审视模型,使代码不再成为遗产。

    第3。可执行的UML

    可执行UML是一种语言的极端实践,它成为程序表达的主要方式。在该上下文中,程序通常从包含所有软件信息的初始UML模型生成。源代码只是软件的过渡形式。软件随着模型而演变,再次生成代码。只有对软件进行完整的UML建模,才有可能实现这一点。简而言之,这是对UML的一种激进用法。

    我认为这三种使用UML的方法之间的区别是关于UML的一般用法的相关考虑。

    UML作为源代码修改的界面

    但是我明白你在寻找什么:应该有另一种(第四种)使用UML的方式,作为源代码修改的接口。存在一些解决方案,但没有一个真正方便,这是我确定的举措:

    • Green UML是布法罗大学的Eclipse插件,它使用自己的类图编辑器
    • Code Canvas是Microsoft的一个研究项目,不是UML,但很有趣,the ACM communications
    • 中有一篇文章
    • BlueJ是一个非常轻巧的IDE,包括修改源代码的类图编辑器
    • Coffea UML是个人项目

    这里有关于Coffea的几句话。其目的是将Eclipse JDT重构函数链接到Eclipse UML2Tools图编辑器。它与类图编辑器一起正常工作。我的目标是将其扩展到活动图。不幸的是,UML2Tools从此成为了遗产。 Coffea 并没有死,但差不多。我将核心UML2函数与UML2Tools编辑器分开。我的意图在项目网站上有详细说明。但是我在业余时间工作,我还有其他职业。

    UML可以用作源代码修改的接口,当且仅当修改仅在一个方面(例如行为或结构)时。在Executable UML范围之外拥有全面的软件版本是不可能的。为此目的而设想的编辑器将是多个图表的组合,这将是非常复杂的。这样的编辑器应该接近Fowler描述的草图模式。

    <强>结论

    不幸的是,我认为UML作为源代码修改的接口目前是理论上的东西。主要的挑战是将修改与初始UML模型(您的案例)集成。鉴于UML工具的多样性,我认为Fowler对UML的使用是唯一严肃的解决方案。您似乎只能将Astah用于可执行UML。我甚至不确定该工具是否提供了所有这些功能。