【发布时间】:2014-12-16 23:20:01
【问题描述】:
我有一套现有的 SOA 连接应用程序(JavaEE、PHP 和 .Net 的混合),我需要为其提供整体部署模型或架构图。
我找到了一个 UML diagram for J2EE Application Deployment 的示例,它很有吸引力,因为它的详细程度(应用程序、容器、某些组件表现形式)刚好满足我当前的图表需求。
我什至可以使用同一作者的Application Clustering Example 之类的东西来汇总更高级别的内容。
我相信我可以直接进入组件级别甚至工件级别并从那里构建我的图表。
但是,我还设计了特定的 Java 组件,并希望在当前的“架构”练习完成后开始向开发团队提供整体类图。我希望这涉及对 Java 代码进行逆向工程并从那里开始。
我的问题是:满足当前部署和未来组件建模需求的最佳策略是什么?
我可以期望稍后用逆向工程组件回填我现在创建的当前工件(例如 WAR 或 JAR 文件)吗?
我现在是否应该进行逆向工程,从“自下而上”创建工件,忽略大部分组件,然后在需要进行组件建模时更新逆向工程代码?我仍然需要 .Net 和 PHP 部分的逻辑(即不受代码支持)组件,因为它们不是我的域。
我是否应该使我的部署工件(通过不同的 EA 项目或同一项目中的断开模型)与我的组件分开,如果/当代码更改时需要“手动”更新部署图/工件?
我刚刚开始使用 Sparx EA(在从 RSA 迁移之后),我会欣赏任何比我有更多 EA 经验的人的观点......以及对我上面的描述提出的任何反模式危险信号的反馈.
【问题讨论】:
-
只是一些注释:1) 建议你点击路径
menu Help → Open Example Model → UML Modeling → UML Modeling : UML 2.0 Diagrams → Deployment → Server Configurations → Web Server,2)考虑使用@987654327创建的结构@ 当您同时检查组件和部署模型时,3) 部署图不会在您的代码(类图)更改时更改。这是不同的细节层次 -
了解前两个。会尝试。对于 (3)... 在 Java 中,代码编译成
.class文件,这些文件被打包到作为部署工件的 JAR 和/或 WAR 文件中。那么,为了防止部署模型发生变化,您是否建议在 JAR/WAR 与其包含的类之间存在“差距”?如果是这样,这是否意味着部署图与组件级别一样详细,并且这些组件永远不会被建模为起源于特定类? -
好点,实际上我不知道在你的情况下会有多大的“差距”。我这样想:部署图是让管理员知道哪些文件被复制/安装在哪里。它在应用程序生命周期中不会经常更改。包图可能会随着主要版本的变化而变化。另一方面,类的数量和它们的依赖关系经常变化,例如在重构期间。中间的组件图的位置是什么是一个悬而未决的问题→agilemodeling.com/style←可能有一些有用的指导方针
-
是的,目标受众不同。我想这是可追溯性的古老问题#sigh。 FWIW,使用
Model Wizard并按照您的建议选择类、组件和部署,这三个模型之间没有任何联系。 -
向导为您提供了一个“文件夹”结构来存储您的“文件”,从而为您提供工件分离(您的问题)。您现在可以使用拖放和链接在另一个模型中引用(重用)工件。例如您可以在一个模型中定义一个类,然后将其拖放到完全不同的模型中的图表中,同时隐藏属性详细信息。这就是我的笔记的全部内容。您可以在 sparxsystems.com/resources/demos 和 sparxsystems.com/resources/webinar/webinar-series.html 上找到其他一些“最佳实践”(也许它会回答“刚刚开始”)
标签: deployment uml enterprise-architect componentmodel