小背景
我不熟悉编写用例并表示它们的场景。我正在处理一个复杂的系统。在分析系统的第一步中,我创建了一个用例图,其中每个用例代表系统的不同目标或价值。我已尽力保持用例独立。所有这些用例都需要系统的初始化和激活,所以我决定取出这个通用部分,并使用包含关系将其链接到主要用例。我了解仅在必要时才需要使用包含和扩展关系。现在我正在研究为每个用例定义场景,然后根据场景开发用户故事和需求。
主要问题
用例非常复杂,分析它的最简单方法似乎是将其映射到一系列步骤/活动中,其中每个活动包含多个场景,并且每个场景都使用序列图表示。我了解活动不能是使用包含关系与主要用例相关的用例;但是有活动的序列图似乎也是错误的。
什么是表示主流程的每个步骤都很复杂并且可以在参与者和系统之间进行多次交互以及具有可能导致该步骤中的序列终止或用户的可能性的错误场景的用例的最佳方式取消/中止序列?我附上了“初始化”用例的活动图的简化版本。正如我所提到的,每个活动都可以有很多场景。例如
- “执行自检”有很多步骤,每一步都可能导致失败,从而终止序列并提醒用户(通过 HMI)。然后用户可以终止初始化或重试。
- “验证系统配置”包括获取参考配置版本并将其与系统配置进行比较的步骤,然后在必要时下载新的配置文件,然后更新系统配置。每个步骤都可能失败,从而导致向用户发送某种消息并终止序列。在某些情况下,用户应该能够跳过失败的步骤并继续进行而不进行该活动。图中的所有其他活动也是如此;许多带有例外或替代路径的步骤。
我可以将这些映射到“初始化”用例的一个序列图上吗?我试图将所有这些放在一个序列图上的尝试失败了。我尝试将所有这些交互放在带有泳道的活动图上,但事情变得如此复杂,以至于利益相关者很难理解正在发生的事情。
也许我试图在系统级别放置太多细节。我是否应该将所有这些临时步骤和交互留给较低级别的设计?我应该创建一个用例层次结构并降低复杂性吗?我很困惑。:( 处理这种复杂程度的最佳方法是什么?你能提供一些很好的例子吗?