序列图中的所有对象都应该在类图中设计吗?

sei*_*mal 1 uml class-diagram

我正在为教育网站制作序列和类图,序列图中的所有对象都应该是类图中的一个类吗?

例如,在注册过程的序列图中,我需要一个名为“Data Base”的对象,它需要保存用户信息,“Date base”应该是类图中的一个类吗?它的功能是什么?它只是加载和保存吗?

Ted*_*ein 5

我认为这取决于您的 UML 模型的形式、抽象和目的的级别。

Martin Fowler将 UML 称为 Sketch,将 UML 称为蓝图,将 UML 称为编程语言。

该术语得到了一些很好的使用。我认为“UML as Sketch”已经成为一种流行的模式,其目标是人与人之间就系统设计进行交流;不一定是正式的工程规范(即蓝图),也不适合作为代码生成器(即编程语言)的输入。

如果你想在 Sketch 模式下使用 UML,这是完全有效的,那么序列图不需要只使用在你的类图中定义的类。事实上,序列图中的一些对象/生命线根本不是类实例:

  • 他们可能是用例图中定义的“参与者”(或不是)。演员通常是人,因此被表示为简笔画。“最终用户”是包含在序列图中的常见角色。这里有很多例子
  • 它们可能是未在您的类模型中定义的外部系统,例如数据库。您的系统可能有一个或一组类来抽象数据库,即“数据访问层”或 DAL。但话说回来,您的系统可能没有 DAL;即使是这样,您可能仍然希望序列图显示 DAL 和实际数据库之间跨边界的交互。

使用 UML 作为草图,由外部参与者或系统组件实现的方法实际上取决于您。您可以将数据库查询显示为execute query或更具体的内容,例如实际的 SQL 语句。图表的“正确性”在于它能够以正确的细节和形式与观众进行有效沟通。