Architecture 保持类图和代码同步

Architecture 保持类图和代码同步,architecture,uml,class-diagram,Architecture,Uml,Class Diagram,我试图在编写代码之前设计我的应用程序。我已经创建了所有要使用的类的类图,然后使用它们生成代码 当我想更改某个类的方法或添加新方法时,就会出现问题。我应该做两次:一次在类图中,一次在源代码中。在进行了几次这种演变之后,我的类图很容易就过时了 有没有办法避免这种情况?我可以更新活动图中已有的代码吗 提前感谢你回答你的问题,我觉得有必要考虑UML的使用方式。 在本文中,Martin Fowler考虑了三种使用UML的方法: 素描 蓝图 可执行UML 1。草图 UML的草图使用方便了程序的编写,是Fow

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

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

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


提前感谢你回答你的问题,我觉得有必要考虑UML的使用方式。 在本文中,Martin Fowler考虑了三种使用UML的方法:

  • 素描
  • 蓝图
  • 可执行UML
  • 1。草图

    UML的草图使用方便了程序的编写,是Fowler的一个实践。一般来说,这适合于对现有计划进行综合感知

    2。蓝图

    蓝图在某种程度上是语言的学术用途。主要的问题是在软件进化中:必须用代码重新访问模型,以免成为遗留问题

    3。可执行UML

    可执行UML是语言的一种极端实践,在这种实践中它成为程序的主要表达方式。在这种情况下,程序通常从包含所有软件信息的初始UML模型生成。源代码只是软件的一种过渡形式。软件随着模型而发展,代码再次生成。只有对软件进行完整的UML建模,这才可能实现。简单地说,这是UML的一个根本用法

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

    UML作为修改源代码的接口

    然而,我理解您在寻找什么:应该有另一种(第四种)使用UML的方法,作为修改源代码的接口。有几种解决方案,但没有一种是真正方便的,以下是我确定的方案:

    • 是Buffalo大学的Eclipse插件,它使用自己的类图编辑器
    • 是微软的一个研究项目,不是UML而是有趣的,一篇文章在
    • 是一个非常轻的IDE,包括一个修改源代码的类图编辑器
    • 这是一个个人项目
    这里有几句关于你的话。其目的是将重构函数链接到图表编辑器。它在类图编辑器中正常工作。我的目标是将其扩展到活动图。不幸的是,UML2工具从那时起就成了传统。咖啡并没有死,但已经快死了。我已经将核心UML2函数与UML2Tools编辑器分开。我的意图在项目现场有详细说明。然而,我在业余时间从事这项工作,我还有其他职业

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

    结论


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

    对于其他人来说,“我太懒了”并没有太大的激励作用。你为什么认为有人会/应该帮助那个懒家伙?提示:在
    [uml]
    中搜索“反向工程”,通过您使用的编程语言过滤标记的旧问题实际上,在编程中,这是一种非常糟糕的做法,要做两次相同的事情,所以我希望人们能够理解。不过,谢谢你的提示。我会检查的。我没有质疑编程中的代码重用。我质疑你自己的研究成果(如中所示)。优化和珍惜你的资源(生命、时间),但不要懒惰,也不要要求别人做你的工作。如果不指定语言并显示您正在讨论的一些代码和图表,这个问题就太宽泛和抽象了。也谢谢你的回复,也许我需要改变我的方法。这取决于你,UML和代码之间的关系并不明显。在我看来,UML工具应该更倾向于一个更适合日常开发的草图。很少有组织接受蓝图模式,也很少有狂热者关注可执行UML。其结果是UML在企业开发中的使用不当。请让我知道你将如何管理你的模型。。。