以扩展用例为包含用例基础——跌倒检测用例图设计合理性问询
跌倒检测UML用例设计的合理性判断
先搞懂包含和扩展用例的本质区别
- 包含关系:基础用例执行时必须触发被包含的用例,属于基础用例的“标配必要步骤”,缺了它基础用例的核心逻辑就不完整。
- 扩展关系:扩展用例是基础用例的“可选附加操作”,只有满足特定条件才会触发,基础用例就算没有它也能独立完成核心功能。
结合跌倒检测场景分析
你的核心用例是detection of fall(跌倒检测),咱们逐个拆解三个子用例的逻辑:
- Alarming(告警):如果跌倒检测的核心目标就是“发现跌倒后触发告警”,那告警就是检测完成后的必要动作,用包含关系没问题;但如果用户可以关闭告警功能,那告警就是可选操作,更适合用扩展关系。
- send SMS(发送短信):一般来说,发短信只是告警的其中一种方式,不是必须的——比如有的场景只触发声光告警,不发短信。这种情况下,发短信不该是跌倒检测的“标配步骤”,更适合作为
Alarming的扩展用例。 - stop SMS(停止短信):这个动作明显是有特定条件才会触发的,比如跌倒者主动解除告警、管理员手动干预,不可能是跌倒检测完成后必须执行的步骤,绝对不该用包含关系,应该作为
send SMS的扩展用例。
结论:当前设计存在不合理性
你图中把三个用例都设为detection of fall的包含关系,意味着只要一检测到跌倒,就必须同时执行告警、发短信、停短信——这完全不符合实际业务逻辑,停短信总不能和发短信同时触发吧?
给你个调整建议:
- 如果告警是必须的:把
Alarming设为detection of fall的包含用例;send SMS设为Alarming的扩展用例;stop SMS设为send SMS的扩展用例。 - 如果告警是可选的:把
Alarming设为detection of fall的扩展用例,再把短信相关用例挂在Alarming下面做扩展。
内容的提问来源于stack exchange,提问作者simsim
相关产品推荐
相关产品推荐

