用例建模-绘制用例图
课程网页
https://sysu-swsad.github.io/swad-guide/06-usecase-modeling
问题
- 简答题
- 用例的概念
- 用例和场景的关系?什么是主场景或happy path?
- 用例有哪些形式?
- 对于复杂业务,为什么编制完整用例非常难?
- 什么是用例图?
- 用例图的基本符号与元素?
- 用例图的画法与步骤
- 用例图给利益相关人与开发者的价值有哪些?
- 建模练习题
- 选择2-3个你熟悉的类似业务的在线服务系统(或移动 APP),如定旅馆(携程、去哪儿等)、定电影票、背单词APP等,分别绘制它们用例图。并满足以下要求:
- 请使用用户的视角,描述用户目标或系统提供的服务
- 粒度达到子用例级别,并用 include 和 exclude 关联它们
- 请用色彩标注出你认为创新(区别于竞争对手的)用例或子用例
- 尽可能识别外部系统和服务
- 然后,回答下列问题:
- 为什么相似系统的用例图是相似的?
- 如果是定旅馆业务,请对比 Asg_RH 用例图,简述如何利用不同时代、不同地区产品的用例图,展现、突出创新业务和技术
- 如何利用用例图定位创新思路(业务创新、或技术创新、或商业模式创新)在系统中的作用
- 请使用 SCRUM 方法,选择一个用例图,编制某定旅馆开发的需求(backlog)开发计划表
- 根据任务4,参考 使用用例点估算软件成本,给出项目用例点的估算
- 选择2-3个你熟悉的类似业务的在线服务系统(或移动 APP),如定旅馆(携程、去哪儿等)、定电影票、背单词APP等,分别绘制它们用例图。并满足以下要求:
Answer
简答题
用例的概念
答:
- 定义:用例是一组相关的成功和失败场景集合,用来描述参与者如何使用系统来实现目标。用例就是需求,主要是说明系统如何工作的功能性或行为性需求。
- 用例与用例模型:用例是文本文档,而不是图形;用例建模主要是编写文本的活动,而不是制图。用例不是面向对象的,因此编写用例时不会进行OO分析。用例是经典OOA/D的关键需求输入。
- 动机:用例是一种优秀的方法,使领域专家或需求提供者自己编写(或参与编写)用例成为可能,并使这项工作难度降低。同时它还强调了用户的目标和观点。用例的优越性在于,能够根据需要对复杂程度和形式化成都进行增减调节。
用例和场景的关系?什么是主场景或happy path?
答:
- 场景:场景是参与者和系统之间的一系列特定的活动和交互,也成为用例失利。场景是使用系统的一个特定情节或用例的一条执行路径。
- 用例和场景的关系:一个用例代表了场景的集合,包含主场景和一些可选场景。
- 主场景:主场景是主要系统交互,通常是成功的场景,它能够直接地实现用户目标的流程。可选场景是一些不常使用的交互动作或者是异常。
用例有哪些形式?
答:
- **Breif(high level)**:是一段关于主要的成功场景的简练的介绍。
- Casual(简便格式):是多个非正式的段落,包含多个场景。
- Fully:包含所有步骤和变化的详细说明,并有支持的部分,如前提条件和成功的保证。
对于复杂业务,为什么编制完整用例非常难?
答:对于复杂的业务,很难把所有的目标、故事、场景遵循一定的顺序罗列出来。如果列举的场景不够全面,那么用例的完整性就难以保证。除此之外,用例建模虽然给出了一种可操作的流程步骤,但是具体的操作以及如何书写用例是依赖于书写者的。所以用例本身并不能保证自身的完整性。
什么是用例图?
答:用例图是指由参与者、用例,边界以及它们之间的关系构成的用于描述系统功能的视图。用例图是外部用户(参与者)所能观察到的系统功能的模型图。用例图是系统的蓝图,呈现了一些参与者、用例以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。
用例图的基本符号与元素?
- 椭圆:表示每个用例,是外部可见的系统功能,对系统提供的服务进行描述。
- 矩形框:表示整个系统。
- 小人:表示参与者(通常在矩形框外,即在系统外部),是与系统进行交互的用户、组织或外部系统。
- 连线(无箭头):连接参与者与用例,表明二者之间有交互关系。
- 箭头:用例之间的关联、包含、拓展、泛化关系。
- 关联(Association):表明参与者与用力之间的通信,任何一方都可以发送或接收信息。箭头由消息发送方指向消息接收方。
- 包含(Include):包含关系把一个复杂的用例所包含的功能分解成较小的功能用例。箭头由单个复杂用例指向分解出来的功能用例。
- 拓展(Extend):指用例功能的延伸,相当于为基础用例提供一个附加功能。箭头由附加功能用例指向基础用例。
- 泛化(Inheritence):继承关系,子用例继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。箭头由子用例指向父用例。
用例图的画法与步骤
- 确定参与者,包括以下:
- 主要参与者:具有用户目标,并通过使用SuD的服务完成。它是使用系统的主要功能的主体,需要系统的支持以完成工作。
- 协助参与者:为SuD提供服务。提供系统的主要功能的主体,维护系统的主体,保证系统正常工作的主体。
- 幕后参与者:在用例行为中具有影响或利益,但不是主要或协助参与者。它对系统产生的结果感兴趣。
- 确定子系统的边界
- 绘制用例
- 使用参与者自身能够易于理解的名称对用例进行命名。不要使用与代码有关的名称,以免引起歧义。
- 从主要的交互事务入手,再到较小的事务。
- 将每个用例放入支持它的系统或主要子系统中。
- 可以在系统的边界外绘制用例,这表明系统不支持该用例。
- 将参与者与用例相连
- 使用关联、包含、拓展、泛化等关系结构化用例。
用例图给利益相关人与开发者的价值有哪些
答:
- 对于客户来说,通过用例图客户可以直观地看到系统的结果和用户的功能体验,能够根据需要对复杂程度和形式化程序进行增删调节(通过修改图形间的关系来实现)
- 对于软件开发者来说,用例图是设计者设计过程的结论,是设计者与开发者之间的交流工具。用例图很好地细化了用户的需求,使得开发人员更好地理解需求。同时用例图可以指导开发和测试。
建模练习题
猫眼电影APP
影店APP
为什么相似系统的用例图是相似的
答:因为相似系统的用户需求是相类似的,比如电影订票,用户主要就是选电影、选地点、选价格、选日期、选场次,用户相似的需求就决定了系统的相似程度。
如果是定旅馆业务,请对比 Asg_RH 用例图,简述如何利用不同时代、不同地区产品的用例图,展现、突出创新业务和技术
答:该用例图不是订旅馆业务,无法比较。
如何利用用例图定位创新思路(业务创新、或技术创新、或商业模式创新)在系统中的作用
答:用例图表示了用户在使用该系统的时候用到的功能,是一条路径。我们可以在这条路径上根据地区特色,结合时代的技术去进行创新。比如以订电影票为例,可以在用户购票的时候向其推荐附近的餐饮或购物商店,增加收益。
请使用 SCRUM 方法,选择一个用例图,编制某订旅馆开发的需求(backlog)开发计划表
订酒店:
ID | Title | Imp | Est | How to demo | Notes |
---|---|---|---|---|---|
1 | find hotel | 50 | 40 | 根据位置、日期价格等信息选择酒店 | 需要GPS服务,关键词联想服务。 |
2 | make reservation | 70 | 50 | 在列表中选择酒店后显示详情,需要确认酒店、房间类型等 | |
3 | manage basket | 30 | 20 | 管理购物车,可以添加、删除、收藏等功能 | |
4 | pay | 40 | 20 | 用户确认预定后进行支付,支持多个平台的支付 | 需要各支付平台 |
5 | login | 20 | 20 | 可以使用基本的手机账户进行注册登录,也可以使用人脸识别 | 需要人脸识别的平台、手机短信发送平台 |
根据任务4,给出项目用例点的估算
用例 | #事务 | #计算 | 原因 | UC权重 |
---|---|---|---|---|
1find hotel | 2 | 5 | 需要根据条件筛选 | 10 |
2 make reservation | 5 | 6 | 10 | |
3 manage basket | 3 | 3 | 5 | |
4 pay | 3 | 3 | 5 | |
5 login | 3 | 2 | 用到了人脸识别 | 5 |