数据库是序列图中的控制器还是边界?

Is database a controller or boundary in a sequence diagram?

我在识别数据库是序列图中的控制器还是边界(视图)时遇到问题。 我为 'call queueing' 绘制了以下序列图。这是正确的吗?

简而言之

数据库将是控件的一部分。但是,该控件用于高级 use-case logic/coordination 而数据库是该控件的 low-level 实现。在同一张图上混合不同层次的抽象不一定有帮助。

参数

Entity Control Boundary 分解基于用例模型。

如果数据库系统是一个参与者,那么与外部数据库相关的对象就是一个边界。但这会产生误导:数据库系统是系统的实现细节。即使数据库在多个应用程序之间共享,如果没有使用其内容的应用程序,它也不是一个有任何用处的自治系统。所以:不是边界

如果数据库不是演员,那么它就是您“系统”的一个组件(系统由应用程序和数据库组成)。它不能是边界(见上文)。它也不能是实体,因为用户不关心数据库。结果只能是一个控件.

控件更适用于 use-case 逻辑(实现用例,并协调实体和边界)。所以数据库最多是控件的一部分(但控件构造型是正确的)。

此外,一些架构模式(例如“active recored”)会在实体级别使用数据库。如果它真的是一个实体(用户不关心)或者它是否仍然是一个被驱逐的控制,那么它是模棱两可的。实际上,在确定之前,您需要知道在设计中要采用何种方法来管理持久对象。

我个人建议不要混合抽象级别,因为这会使图表更难理解且用处不大。