Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使UML图保持最新?_Java_Uml - Fatal编程技术网

Java 如何使UML图保持最新?

Java 如何使UML图保持最新?,java,uml,Java,Uml,我有物理背景,而不是计算机科学背景,在大学里从来没有上过任何关于类图/组件图等的课程,我从来没有发现在工作中需要使用它们 我不明白的主要问题是,如果代码仍在开发或维护中,如何使它们保持最新 e、 有什么能阻止我重构几个方法或类并使类图过时 您是否必须不断手动更新图表 我见过从代码生成UML的工具,我想这些工具可以使它保持最新,但从我所看到的,自动生成的图表似乎不够有用 一个项目的UML是否可能在一开始就创建,然后放在文档文件夹中,并逐渐变得越来越过时?虽然这不是一个通常会被回答的问题,但我看到和

我有物理背景,而不是计算机科学背景,在大学里从来没有上过任何关于类图/组件图等的课程,我从来没有发现在工作中需要使用它们

我不明白的主要问题是,如果代码仍在开发或维护中,如何使它们保持最新

e、 有什么能阻止我重构几个方法或类并使类图过时

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

我见过从代码生成UML的工具,我想这些工具可以使它保持最新,但从我所看到的,自动生成的图表似乎不够有用


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

虽然这不是一个通常会被回答的问题,但我看到和听到的是:

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


一种完全不同的方法是从UML生成代码——这样您就永远不会更改代码。不管是这样还是不工作,考虑到UML的表达能力和java语言或C++语言的语言和语义如何实现各种图表的语义,我非常希望回答比销售人员的更可靠的数据。类图通常是无用的。通用代码更改太频繁,因此使用UML图会增加太多负担

可能的例外情况包括:

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

我在一家中等规模的政府机构工作,因此我们的大多数主要项目都属于“企业Java”类别。这就是我们的工作原理:

  • 架构师使用UML图对公司数据模型的任何更改和扩展进行建模。通常会有一个概念模型类图,加上几个说明系统各个部分如何交互的序列图,可能还有几个组件图
  • 我们和业务分析师、DBA和主要开发人员进行了一次演练。这种想法是为了挑战新模型,并就变更达成一致意见(在这些会议上有很多“强有力的”讨论)。有了一个好的架构师,变化是最小的
  • 高级开发人员创建一个技术规范,该规范通常包括基于体系结构模型的物理数据库ER图。从物理模型中,我们自动生成一个数据库创建脚本
  • DBA升级创建脚本(例如添加表空间和索引空间信息)并创建/扩展数据库
  • 代码会被编写出来。开发人员可以创建自己的迷你类层次结构(例如,携带数据的POJO)。我们不需要费心在UML中建模,因为代码应该是自文档化的,随着代码的发展,更改是不可避免的
  • 在开发阶段经常会发生变化,特别是在使用敏捷方法的情况下。如果这些对公司数据模型有影响,那么UML和ER图将被更新
  • 在项目结束时,更新文档以反映“竣工”状态
回到你问题的要点,我不太相信自动UML代码生成。通常,UML图(注释、关系基数、序列图等)中有一些个人数据没有出现在代码中,或者很难提取。相反,代码包含的内容(例如行为方法工作逻辑、数据结构和缓存)不一定显示在逻辑UML模型中。然后是如何将逻辑模型类层次结构映射到数据库表的整个问题

总之,我建议:

  • 提前做好设计。对逻辑模型的更改既昂贵又难以实现
  • 使用一个建模工具,该工具将支持来自同一数据源的所有工件。即,初始UML逻辑模型、数据库ER图和数据库创建SQLDDL。我们使用企业架构师,但还有很多其他工具可以做到这一点
  • 使用UML对“大图”进行建模,而忘记它来描述详细的编码。一个好的经验法则是,如果模型的任何更改影响的不仅仅是您的团队,那么您需要UML。(例如,新的数据库字段可能需要更改数据库、更改web服务、更改GUI和更改大型机批处理过程。UML在以多个团队可以理解的方式定义数据更改方面具有一定的地位)

这取决于您的选择、您与团队和利益相关者的一致意见、您的优先事项、流程及其可交付工件、成本以及谁来支付

到目前为止,还没有生产准备好的工具或机器能够完全自动地保持UML文档的最新状态,尽管许多工具或机器已经接近尾声,例如:。 许多人使这项任务更容易,例如

与任何其他流程一样,UML文档的创建/维护