我如何在 Uml 用例图中显示工具栏

How do I present in a Uml use-case Diagram a toolbar

我是面向对象设计的新手,我想在一个简单的应用程序上绘制我的第一个 UML 用例图,该应用程序的左上角包含工具栏。工具栏称为文件,当 用户 单击它时,会打开一个下拉菜单,其中包含打开幻灯片、保存幻灯片、制作新幻灯片和退出应用程序的选项。
我的问题是,我用 Use-Case inheritance(Generalization) 做的是否正确?
这是我的图表。

在绘制用例图时,您应该关注的一件事是它的实际含义和绘制它的目的。

用例是指用户在他们的系统中能够做什么...边界内的任何东西都是系统能够做什么或者它可以作为服务提供给用户的东西.

在命名用例时,您应该只使用动词和动作,例如:

1- 登录 | 2- 提交请求 | 3- 更新配置文件描述

你应该避免其中的任何名词。

Use Case Diagram中用例之间存在几种关系,系统的参与者和用例之间存在关系,它们如下:

关联:参与者和用例之间唯一存在的关系;这表示参与者是该用例的发起者,或者是操作该用例的人。

在上面的示例中,用户可以登录并提交投诉。

包括:用例可以包括一个或多个用例。当一个用例包含另一个用例时,这意味着包含的一个或多个用例一直在发生并且是初始用例的一部分。

包括付费,因为用户在注册过程中必须付费,这是必须完成的,这是场景基线路径的一部分。

扩展:当一个用例不是一直在发生,并且是你的替代路径的一部分(Alternative path of the complete scnario for this use case),用例应该扩展到基本用例。

忘记密码扩展到登录用例,因为它不会一直发生,而且它是登录场景替代路径的一部分。

泛化:当存在可以执行和完成用例的多种不同方式时,我们使用泛化。继承用例都应与继承用例属于同一类型。

提交投诉可以通过几种不同的方式完成,在这种情况下,我们需要分离每个用例并从提交投诉用例继承,其中包括支付费用,这表明支付费用是提交的每种类型投诉的一部分。

很抱歉让你失望了,但我必须告诉你,这种做法是完全错误的:

  • 语义的角度来看,use-case specialization意味着Open presentation Check fileSave file 的特殊形式,并且演员可以互换和独立地使用它们。但这不是你的意思:退出演示文稿充其量只是检查文件的一个子部分

  • 目的的角度来看,用例应该代表用户目标。这是问题 space 的一部分,即用户想要实现的目标。它不是解决方案 space 的一部分,即用户将如何实现它。工具栏不是目标:它是用户界面元素。

  • 工程实践的角度来看,用例不应该用于用户界面设计。这不是我自己的说法,而是 UML 的创始人 Jacobson、Booch 和 Rumbaugh 的说法:

    The problem is that the [use-case] descriptions often contain implicit decisions about user-interfaces. Later, when the user interface designers suggest suitable user-interfaces for the use-case , they may be limited by those decisions.
    in The unified software development process, page 164

总而言之,从用户界面开始用例是个坏主意。它把你锁在你自己的设计中而忽略了用户体验。您应该只关注用户需求。无论您是使用 GUI 界面、聊天机器人界面还是基于语音的界面来实现,都可以使用相同的用例。