【问题标题】:UML package diagram for relationship between systems系统间关系的UML包图
【发布时间】:2021-07-25 10:17:52
【问题描述】:

我有这个简单的图表,它不遵循任何类型的 UML 图。它的目标是展示我们解决方案的所有部分,以及它们之间的关系。

图中:网络爬虫抓取一些网站的数据,并存储在数据库中。 Web 应用程序接收过滤器选项并使用 Rest API 实现它,该 API 返回一些要以 xlsx 和 csv 格式导出的数据。 API 使用由网络抓取工具填充的数据库。

我需要使用 UML 用上面突出显示的过程制作一个新图表。我有一个使用包图的建议,所以我做了这个版本:

编辑:在图片中:字体 -> Web Scraper -> 数据库 -> Api(Filters(过滤器类型)) -> Front end (results, search options) -> User

这是制作封装图的正确方法吗?我找不到此案例的类似示例或特定规则。

【问题讨论】:

  • 看起来还不错。我无法说出语义正确性。

标签: uml diagram package-diagram


【解决方案1】:

包是满足您需求的正确建模工具吗?

Packages 是命名空间,旨在构建模型。因此,包图并不代表具有数据流(动态行为)的过程。包之间的关系是命名空间关系,例如«imports»和«merges»以及依赖关系。

您的包图肯定显示了您的设计与嵌套包的一些有效分解。但您通常不会代表用户 (usario),或来自数据库 (Banco de dados) 的数据流 (dados)。

UML 中有哪些更好的替代方案?

您的初始图表显示在一张图片中,使用一些流程图符号,非常不同的东西:

  • 对象的概念类,例如字体、过滤器或文件
  • 网络爬虫、数据库、前端、后端等组件
  • 对象流,例如为后端查询的数据库提供数据的网络爬虫,或前端供应过滤器与提供数据的后端之间的交互。

如果您想在 UML 中表示这一点,您需要明确重点,因为 UML 需要一定的精度,因为它将结构和行为分开。答案取决于您要展示的内容:

  • 流程和数据流?使用activity diagram(行为)。这非常适合展示从源头到最终结果的流程,但并不那么容易展示所涉及的系统部分。
  • 组件之间的关系?使用component diagram(结构)。这非常适合识别组件、它们如何嵌套以及它们的接口如何连接。但它没有显示所有这些发生的顺序。
  • 组件之间的交互?使用communication or sequence diagrams(行为)。在这里,您可以看到组件交换的顺序是什么,但组件的结构并不那么清楚。

我会自然而然地选择组件,因为我觉得这在您的原始图表中占主导地位。但最终,您可能会使用不同的图表来显示不同的方面。

其他选择

如果您正在寻找一个单一的图表来结合原始图表的不同想法,或者 UML,您可以考虑C4 model diagrams。

它不如 UML 精确,但对于传达系统架构的大图非常方便。 paticula 中的 C4 上下文图和 C4 容器图可以展示系统的主要组件,以及它们之间的一些高级关系(包括数据流)。

好消息是 C4 依赖 UML 对已识别组件进行更详细的设计。

【讨论】:

  • 你说的是真的。虽然问题(标题)只是询问系统之间的关系。与任何流程无关。
  • @qwerty_so 是的,系统之间的关系可以是结构性的,这在包图中以某种方式显示。但是打包图并不能准确地显示系统/组件之间的动态关系,特别是数据和过滤器的交换,不能用包之间的依赖关系来建模。它可以通过显示包中的组件及其接口来建模。这就是我的观点:最初的非 UML 图中显示的系统之间的关系涵盖了 UML 中不同类型的关系,并且一张图并不能涵盖所有内容;-)
  • 按照您的建议,我最终使用了 C4 图,在以后的工作中,我可能会使用多个 UML 图。您的回答对我理解用途等有很大帮助。谢谢!。
  • @WilianeSouza 感谢您的反馈。我很高兴它有帮助!
猜你喜欢
  • 2014-06-11
  • 2014-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多