简答题
用例的概念
在软件和系统工程中,用例是一种对系统如何反应外界请求的描述,通常通过用户的使用场景来获取需求。每个用例提供了一个或多个场景,该场景说明了系统是如何和最终用户或其它系统互动,也就是谁可以用系统做什么,从而获得一个明确的业务目标。
用例和场景的关系?什么是主场景或 happy path?
关系:每个用例提供了一个或多个场景。其中场景是指使用场景,用来说明系统可以做什么,系统是如何和用户或其他系统交互的,从而获得一个明确的业务目标。
主场景:也被称为 happy path,每一个用例中都包含一个主场景,主场景对应于系统主要的交互,通常是成功的场景,是最常用的直接地实现用户目标的场景。
用例有哪些形式?
- 简短(高级层次):一段简短的总结,通常是主要成功场景。在早期需求分析期间,快速了解主题和范围。可能只需要几分钟就可以创建。
- 非正式(简便格式):非正式段落格式。涵盖各种场景的多个段落。
- 完全级:所有的步骤和变化都写得很详细,并有支持部分,如前提条件和成功保证。在以简短的格式识别和编写了许多用例之后,然后在第一个需求研讨会期间,详细地编写了一些(例如10%)具有体系结构重要性和高价值的用例。
对于复杂业务,为什么编制完整用例非常难?
复杂的业务本身业务流程就很复杂繁琐,而且涉及到的场景非常多,场景与场景之间也有各种各样的关联,编制完整用例需要建模相关知识和熟悉各个业务流程,还要注意用户交互的细节和相对于的支撑。
什么是用例图?
用例图是指由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图,也是外部用户所能观察到的系统功能的模型图。
用例图的基本符号与元素?
参与者(Actor): 表示的是一个系统用户,也就是与应用程序进行交互的用户、组织或外部系统。
用例(Use Case): 表示的是对系统提供的功能、服务的一种描述。
包含关系(Include): 表示用例可以简单地包含其他用例所具有的行为,并把它所包含的用例行为作为自身行为的一部分。
泛化关系(Generalization): 泛化指的是一个父用例可以被特定化形成多个子用例,而父用例和子用例之间的关系就是泛化关系。
关联关系(Association): 表示的是参与者与用例之间的关系。
扩展/延伸关系(Extend): 表示在一定条件下,把新的行为加入到已有的用例中,获得的新用例叫做扩展用例,原有的用例叫做基础用例,相当于为基础用例提供一个附加功能。
用例图的画法与步骤
对语境建模:
- 识别系统外部的参与者。
- 将类似参与者组织成泛化的结构层次。
- 在需要加深理解的地方,为每个参与者提供一个构造型。
- 将参与者放入到用例图中,并说明参与者与用例之间的通信路径。
对需求建模:
- 识别系统的外部参与者来建立系统的语境
- 考虑每一个参与者期望的行为或需要系统提供的行为。
- 把这些公共的行为命名为用例。
- 确定提供者用例和扩展用例。
- 对这些用例,参与者和它们之间的关系建模。
- 用注释修饰用例
用例图给利益相关人与开发者的价值有哪些?
用例图是由软件需求分析到最终实现的第一步,它描述人们如何使用一个系统。用例视图显示谁是相关的用户、用户希望系统提供什么样的服务,以及用户需要为系统提供的服务,以便使系统的用户更容易理解这些元素的用途,也便于软件开发人员最终实现这些元素。用例图在各种开发活动中被广泛的应用。
建模练习题(用例模型)
选择2-3个你熟悉的类似业务的在线服务系统(或移动 APP),如定旅馆(携程、去哪儿等)、定电影票、背单词APP等,分别绘制它们用例图。并满足以下要求:
请使用用户的视角,描述用户目标或系统提供的服务
粒度达到子用例级别,并用 include 和 exclude 关联它们
请用色彩标注出你认为创新(区别于竞争对手的)用例或子用例
尽可能识别外部系统和服务
然后,回答下列问题:
1.为什么相似的系统的用例图是相似的?
因为相似的系统业务相似,为了使降低用户的学习成本会使用相似的交互方式。
2.如果是定旅馆业务,请对比 Asg_RH 用例图,简述如何利用不同时代、不同地区产品的用例图,展现、突出创新业务和技术?
充分发挥LBS的优势,通过人工智能对用户数据进行分析,再定点投放。
3.如何利用用例图定位创新思路(业务创新、或技术创新、或商业模式创新)在系统中的作用?
在用例图中对创新用例使用某种颜色进行高亮标记。
4.请使用 SCRUM 方法,选择一个用例图,编制某定旅馆开发的需求(backlog)开发计划表
ID | Name | Imp | Est | How to Demo | Notes |
1 | 查找酒店 | 40 | 5 | 输入城市,入住日期,退房日期,房间价格即可搜索到相关酒店 | 通过调用GPS的API来确定用户当前的位置 |
2 | 选择酒店 | 50 | 5 | 通过选择星级,评价,价格等可以进行结果排序。用户选择酒店后,筛选出想要预定的房间类型,填写个人信息并确定无误后即可下单 | 需要合适的算法对筛选结果进行排序,或者增加足够的筛选因素供顾客选择 |
3 | 支付订单 | 30 | 3 | 提供多种支付方式来满足不同类型的人群,包括微信/支付宝支付,银行卡支付,以及到店现金支付 | 通过调用各平台API,接入用户支付借口 |
4 | 评价体验 | 40 | 4 | 促使对自己住过的酒店进行评价,打分,以及让用户可以看到其他人对酒店的评价,帮助用户更好地选择酒店 | 对评论分类,并提取有用的数据,对酒店排序提供更加有效的分析 |
5.根据任务4,参考 使用用例点估算软件成本,给出项目用例点的估算
用例 | 业务 | 计算 | 原因 | UC权重 |
---|---|---|---|---|
1 | 查找酒店 | 4 | 3 | 平均 |
2 | 预定酒店 | 8 | 6 | 困难 |
3 | 支付订单 | 3 | 2 | 简单 |
4 | 评价体验 | 6 | 5 | 平均 |