我来自物理背景,而不是计算机科学背景,从未在大学课程/组件图等任何课程,我从未发现需要在工作中使用它们.
我不明白的主要问题是,如果代码仍在开发或维护,您如何更新它们?
什么阻止我重构几个方法或类并使类图过时?
您是否必须不断手动更新图表?
我已经看到了从代码中生成UML的工具,这些工具可以让它保持最新我想但是从我看到的情况来看,自动生成的图表似乎不够用.
是否可能在开始时创建项目的UML,然后将其保留在文档文件夹中,并逐渐变得越来越过时?
我在一个规模适中的政府机构工作,所以我们的大多数主要项目属于"企业Java"类别.这对我们有用:
回到你的问题的要点,我不是自动UML < - >代码生成的坚定信徒.通常,有些数据是UML图(注释,关系基数,序列图等)的个人数据,这些数据没有出现在代码中或者很难提取.相反,代码包含不一定在逻辑UML模型中显示的东西(例如行为方法工作逻辑,数据结构和缓存).那么整个问题就是如何将逻辑模型类层次结构映射到数据库表...
总结一下,我建议:
虽然这不是一个通常在 SO 上回答的问题,但以下是我所看到和听到的:
项目的软件开发计划必须定义如何进行设计,以及如果使用 UML,则必须如何对软件进行更新。该计划可以定义 UML 是“一次性”的 - 因此在第一个设计进入代码后它确实被遗忘了。OTOH,严格的后续规则和随后的检查可能需要并保证 UML 设计在错误修复(如果需要)或更广泛的更改期间得到更新。(通常情况下,您甚至可能还必须返回需求并在那里进行更新。)
一种完全不同的方法是从 UML 生成代码 - 这样您就永远不会更改代码。考虑到 UML 的表达能力与 Java 或 C++ 等语言提供的内容和方式来实现各种图的语义之间的潜在差异,无论这是否有效,我都非常希望能用比数据更可靠的数据来回答这个问题。推销员的推销。