我有一个 Instant Messenger 的简单用例图,这是其中的一部分
- 如果用户想发送消息,会显示聊天窗口,是“包含”还是“扩展”?
- 如果用户接收消息,聊天将在用户阅读消息之前显示,那么它是“包含”吗?
Include 和 extend 都可以用来表达相同的东西,但语义有些不同,因为您使用的是 EA,所以有一种简单的选择方法:扩展点。
用例扩展点与源代码中的模板参数非常相似:它表明在更通用的实体中,您事先已决定以某种方式使其可扩展。包含关系没有等效的语义。
如果用例具有扩展点,EA 允许您选择扩展用例扩展的点。如果您发现自己难以定义扩展点或在它们之间进行选择,那么使用包含关系可能是一个更好的主意。如果您根本没有定义任何扩展点,我认为没有理由首先使用扩展。
因此,在您的示例中,“发送消息”和“接收消息”都应包含“显示聊天窗口”。但是,您以错误的方式绘制了连接器。
关于包含和扩展之间的确切区别,有很多讨论,并且有很多不同的意见。关于这个主题的最好的文章之一是:挖掘扩展用例
在一个有很多分析师的团队中,通常建议采取务实的方法并只使用包括。这避免了很多混乱和讨论。我仍在等待单独包含无法解决的案例。