我正在阅读使用 Sparx Enterprise Architect 生成的系统需求文档。所有需求都映射到特定的用例。
“高可用性”的一些非功能性需求被映射到一个名为“提供高可用性”的用例,标记为<<non-functional>>
. 我对所有这一切都相当陌生,并且正在努力确定用例不起作用是否有意义 - 因此是这个问题。
如果答案是肯定的,那就太好了——但如果不是,我很想知道人们对这些需求应该如何映射到用例(如果有的话)的看法。
我正在阅读使用 Sparx Enterprise Architect 生成的系统需求文档。所有需求都映射到特定的用例。
“高可用性”的一些非功能性需求被映射到一个名为“提供高可用性”的用例,标记为<<non-functional>>
. 我对所有这一切都相当陌生,并且正在努力确定用例不起作用是否有意义 - 因此是这个问题。
如果答案是肯定的,那就太好了——但如果不是,我很想知道人们对这些需求应该如何映射到用例(如果有的话)的看法。
一些“高可用性”的非功能性需求映射到一个名为“提供高可用性”的用例,标记为 <>。
俗话说,“如果你只有一把锤子,每个问题看起来都像钉子”。存在用例来识别系统为其用户提供的价值。因此,它们旨在描述功能性事物:系统所做的事情。
所以我通常不建议以这种方式捕获非功能性。但是:这并不是说它们不能在用例中被捕获。在功能用例中指定它们的非功能需求可能非常有用。例如:
Use Case: Submit Order
{...functional description...}
Availability: 9-5 mon-fri
Volumes: 5000 peak per day
...
这将非功能性需求直接与其支持的功能联系在一起。这是有道理的——因为非功能性没有功能就没有目的或上下文。
当然,您会发现许多用例共享相同的非功能性。你不想重复,所以需要找到一种方法来分解。我更喜欢在单独的文档中这样做。
但是没有法律禁止在“用例”中捕获。虽然它违反了理论,但在实践中这样做是有原因的:例如,建模工具的限制(不能将 UC 链接到文档)和/或希望将所有内容保存在一个地方。
从根本上说,它归结为理论和实践。理论上,不存在非功能用例。在实践中,创建一个 UC 来保存非功能性可能是有意义的。只要每个人都明白它实际上只是一个方便的容器,而不是一个真正的功能,我就不会为此烦恼。
hth。