问题描述
我有这个简单的图,它不遵循任何类型的 UML 图。它的目标是展示我们解决方案的所有部分,以及它们之间的关系。
在图片中:网络爬虫抓取一些网站中的数据并将其存储在数据库中。 Web 应用程序接收过滤器选项并使用 Rest API 实现它,该 API 返回一些要以 xlsx 和 csv 格式导出的数据。 API 使用由网络抓取工具填充的数据库。
我需要使用 UML 用上面突出显示的过程制作一个新图表。我有一个使用包图的建议,所以我做了这个版本:
编辑:在图像中:字体 -> Web Scraper -> 数据库 -> Api(过滤器(过滤器类型)) -> 前端(结果,搜索选项) -> 用户>
这是制作包装图的正确方法吗?我找不到此案例的类似示例或具体规则。
解决方法
包是否是满足您需求的正确建模工具?
Packages 是命名空间,旨在构建模型。因此,包图并不表示具有数据流(动态行为)的过程。包之间的关系是命名空间关系,例如 «imports» 和 «merges» 以及依赖项。
您的包图肯定显示了使用嵌套包对您的设计进行的一些有效分解。但您通常不会代表用户 (usario) 或来自数据库 (Banco de dados) 的数据流 (dados)。
UML 中有哪些更好的替代方案?
你的初始图表显示在一张图片中,使用了一些流程图符号,非常不同的东西:
- 对象的概念类,例如字体、过滤器或文件
- Web 抓取工具、数据库、前端、后端等组件
- 对象流,例如为后端查询的数据库提供数据的网络爬虫,或者前端提供过滤器和提供数据的后端之间的交互。
如果您想在 UML 中表示这一点,您需要澄清重点,因为 UML 需要一定的精度,因为它将结构和行为分开。答案取决于您要显示的内容:
- 流程和数据流?使用 activity diagram(行为)。这非常适合展示从源头到最终结果的流程,但不那么容易展示所涉及的系统部分。
- 组件之间的关系?使用 component diagram(结构)。这非常适合识别组件、它们是如何嵌套的以及它们的接口是如何连接的。但它没有显示所有这些发生的顺序。
- 组件之间的交互?使用 communication or sequence diagrams(行为)。在这里,您可以看到组件按什么顺序交换的内容,但不太清楚组件的结构。
自发地,我会选择组件,因为我觉得这在您的原始图表中占主导地位。但最后,您可能会使用不同的图表来显示不同的方面。
其他选择
如果您正在寻找一个单一的图表来结合原始图表的不同想法,而不是 UML,您可以考虑使用 C4 model 图表。
它不如 UML 精确,但对于传达系统架构的大图非常方便。 paticula 中的 C4 上下文图和 C4 容器图可以显示系统的主要组件,以及它们之间的一些高级关系(包括数据流)。
好消息是 C4 依赖 UML 来对已识别组件进行更详细的设计。