你如何保持UML图最新?

时间:2014-06-29 07:37:06

标签: java uml

我来自物理背景,而不是计算机科学背景,从未在大学课程/组件图等任何课程,我从未发现需要在工作中使用它们。

我不明白的主要问题是,如果代码仍在开发或维护中,您如何更新它们?

e.g。是什么阻止我重构几个方法或类并使类图过时?

您是否必须不断手动更新图表?

我已经看到了从代码中生成UML的工具,这些工具可以使它保持最新,我想,但从我看到的情况来看,自动生成的图表看起来不够用。

项目的UML是否可能在开始时创建,然后留在文档文件夹中并逐渐变得越来越过时?

4 个答案:

答案 0 :(得分:7)

我在一家规模适中的政府机构工作,所以我们的大部分重大项目都属于企业Java"类别。这对我们有用:

  • Architects使用UML图模拟我们公司数据模型的任何更改和扩展。通常会有一个概念模型类图,加上一些序列图,说明系统的各个部分将如何相互作用,可能还有几个组件图。
  • 我们与业务分析师,DBA和主要开发人员进行了一次演练。这种想法是挑战新模式,并就变化达成一致(在这些会议上有很多"强大的#34讨论)。有了优秀的架构师,变化很小。
  • 高级开发人员创建一个技术规范,通常包括基于体系结构模型的物理数据库ER图。从物理模型中,我们自动生成数据库创建脚本。
  • DBA升级创建脚本(例如,添加表空间和索引空间信息)并创建/扩展数据库。
  • 代码被写入。开发人员可以创建自己的迷你类层次结构(例如,POJO来携带数据)。我们不想在UML中对这些进行建模,因为代码应该是自我记录的,随着代码的发展,变化是不可避免的。
  • 在开发阶段经常会发生变化,尤其是在使用敏捷方法的情况下。如果这些影响企业数据模型,那么UML和ER图将会更新。
  • 在项目结束时,文档会更新以反映" as built"状态。

回到问题的要点,我不是自动化UML的忠实信徒< - >代码生成。通常,有些数据是UML图(注释,关系基数,序列图等)的个人数据,这些数据没有出现在代码中或者很难提取。相反,代码包含不一定在逻辑UML模型中显示的东西(例如行为方法工作逻辑,数据结构和缓存)。然后是整个问题,即如何将逻辑模型类层次结构映射到数据库表...

总结一下,我建议:

  • 预先设计正确。对逻辑模型的更改既昂贵又难以实现。
  • 使用建模工具,该工具将支持来自同一数据源的所有工件。也就是说,最初的UML逻辑模型,数据库ER图和数据库创建SQL DDL。我们使用Enterprise Architect,但是还有很多其他工具可以做到这一点。
  • 使用UML对"大图片进行建模"并忘记它描述详细的编码。一个好的经验法则是,如果对模型的任何更改不仅影响您的团队,则需要UML。 (例如,新的数据库字段可能需要更改数据库,更改Web服务,更改GUI以及更改大型机批处理过程.UML可以用多个团队可以的方式定义数据更改理解)

答案 1 :(得分:2)

虽然这不是通常在SO上回答的问题,但这是我所见所闻:

项目的软件开发计划必须定义设计的完成方式,如果使用UML,则必须如何更新软件。该计划可以定义UML是“一次性” - 因此在第一次设计进入代码后确实被遗忘了。 OTOH,严格的后续规则和随后的检查可能要求并保证在错误修复(如果需要)或更广泛的更改期间更新UML设计。 (通常情况下,您甚至可能需要回到要求并在那里进行更新。)

一种完全不同的方法是从UML生成代码 - 这样你永远不会改变代码。无论这是否有效,考虑到UML的表现力与Java或C ++等语言为实现各种图表的语义提供的内容和方式之间的潜在差异,我非常希望能够回答更可靠的数据而不是推销员的推销。

答案 2 :(得分:0)

至于我的经验,类UML图几乎没用。通用代码经常更改,因此使用UML图会增加太多负担。

可能的例外是:

  • 架构(组件级)图。创建一次,变化很少,对其他人有用
  • 商业模式。如果您的应用程序在复杂模型上运行,那么从UML表示生成类可能是值得的。如果你有许多应用程序在同一个模型上运行,那么这个UML就会变得非常有价值。
  • 大学项目 - 没有评论: - )

答案 3 :(得分:0)

这取决于您的选择,您对团队和利益相关方的一致意见,您的优先级,您的流程和可交付工件的内容以及成本和支付对象。

到目前为止,还没有生产就绪的工具或机器可以完全自动地保持UML文档的最新状态,尽管许多文件很接近,例如, Graphviz + Doxygen to generate UML class diagrams 并且许多人使这项任务更容易,例如Sparx Systems's Enterprise ArchitectRapid Quality Systems's Code Rocket

与任何其他流程一样,UML文档创建/维护是process,需要进行定义,实施,管理和优化(与管理您已经知道的物理实验所需的方式相同)

Agile Modeling - Effective Practices for Modeling and Documentation

有一个专门讨论这个主题的网站

enter image description here