一、参与者:软件的“外部小伙伴”👫
关键字:参与者(Actor)、外部实体、角色抽象
🤝
参与者是 和系统互动的“外部角色”——不是系统里的功能,而是“谁会用这个系统”。比如图书馆系统里的“读者”“管理员”“图书管理员”,都是参与者~
💡 新手类比:
就像奶茶店的“顾客”“店员”——他们不是奶茶店的“桌子椅子”(系统内部),而是“和奶茶店互动的外部角色”。
📌 怎么确定参与者?
从这几个角度想:
– 谁给系统输入信息?(比如读者借书时输入书名)
– 谁接收系统输出?(比如读者拿到借书成功的提示)
– 有没有外部设备 / 系统要连?(比如图书馆系统连“扫码枪”)
二、用例:系统能做的“具体事儿”📝
关键字:用例(Use Case)、系统功能、互动流程
📦
用例是 系统提供的“功能服务”,是“参与者和系统互动的完整流程”。比如图书馆系统里的“借书”“还书”“查询信息”,都是用例~
🌰 课本例子:
“登录”就是一个用例——读者输入账号密码,系统验证后让读者进入,这是一个 完整的互动流程。
⚠️ 注意:
用例不是“系统里的一个按钮”,而是“从开始到结束的完整操作”。比如“修改个人信息”是用例,而“点击修改按钮”只是用例里的一个步骤~
三、用例图里的关系:参与者和用例的“互动规则”🧩
关键字:关联、包含(include)、扩展(extend)、泛化
1. 关联:参与者和用例的“互动连线”🔗
用“直线”连接参与者和用例,表示“这个参与者会用这个用例”。比如“读者”和“借书”之间的连线,就是关联~
2. 包含(include):用例的“必做子任务”📎
如果用例 A 必须 做用例 B 的事情,就用“虚线 +«include»”表示 A 包含 B。比如“借书”必须先“登录”,所以“借书”包含“登录”~
💡 类比:
就像“点奶茶”必须“选饮品”——“点奶茶”包含“选饮品”,不选就没法点。
3. 扩展(extend):用例的“可选附加功能”✨
如果用例 A 有时候 会额外做用例 B 的事情,就用“虚线 +«extend»”表示 B 扩展 A。比如“还书”时如果超时,会触发“超期罚款”,所以“超期罚款”扩展“还书”~
💡 类比:
就像“点奶茶”时可以“加珍珠”——“加珍珠”是“点奶茶”的扩展功能,可选不选。
4. 泛化:参与者 / 用例的“父子关系”👨👦
用“空心箭头”表示“子角色继承父角色的功能”。比如“学生读者”“教师读者”都属于“读者”,所以“学生读者”泛化“读者”~
四、用例粒度:功能的“大小刚刚好”📏
关键字:用例粒度、功能粗细
📌 什么是粒度?
就是用例“写多大”——比如“修改个人信息”是合适的粒度,但“修改用户名”“修改密码”拆得太细,“管理账号”又太粗~
✅ 好粒度的标准:
一个用例是“参与者的一个完整目标”——比如读者的目标是“修改个人信息”,不是“修改用户名”。
总结:用例图是“需求的可视化故事”📖
🎉
用例图就像“画漫画”:参与者是“漫画里的角色”,用例是“角色做的事儿”,关系是“事儿的规则”——画完之后,谁都能看懂这个系统能做啥、谁来用~
要不要我帮你整理一份 用例图绘制的步骤清单,方便你上手画自己的用例图?