简答题
-
用例的概念
用例是一系列相关的成功和失败场景的集合,这些场景描述了一个参与者使用一个系统来支持一个目标。用例是功能或行为需求,指示系统将做什么。就FURPS+需求类型而言,它们强调“F”,但也可以用于其他类型。 -
用例和场景的关系?什么是主场景或 happy path?
用例表示一组场景:主场景,加上零个或多个可选场景。
主场景对应于主要的系统交互,通常是“成功”场景。是最常用的,直接地实现用户目标的故事。 -
用例有哪些形式?
- 简洁模式(Brief (high level))
简短的一段概要,通常是成功的主场景。
在早期的需求分析中,快速了解主题和范围。可能只需要几分钟来创建。 - 简便格式(Casual)
非正式的段落格式。包含多种场景的多个段落。 - 详细描述(Fully)
所有的步骤和变化都写得很详细,并有补充部分,如先决条件和成功的保证。
在以一种简短的格式确定并编写了许多用例之后,在第一个需求研讨会期间,会详细地编写一些(例如10%)具有体系结构重要性和高价值的用例。
- 对于复杂业务,为什么编制完整用例非常难?
复杂业务的需求多,导致扩展部分较多,即除了主成功场景外的其他场景或分支,包括成功和失败路径。用例的格式导致编制复杂业务的完整用例非常难,因为这需要花费大量的时间编写,而且这些用例没有增加或增加很少的价值,并会导致大量的返工。 - 什么是用例图?
用例图是系统上下文的绝佳图景,它能显示用例和参与者的名称及其关系,给出了一个很好的系统及其环境的上下文图。
a.它是一个很好的上下文图
b.显示系统的边界,它外面的东西,以及如何使用它。
c.它作为一种沟通工具,总结了系统及其参与者的行为。 - 用例图的基本符号与元素?
- 参与者Actor
表示一个系统的用户,即与应用程序或系统进行交互的用户、组织或者外部系统。参与者用一个小人表示。
参与者包括三类:系统用户;其他系统。在当前项目范围之外,需要建立与其他系统的接口;一些可以运行的进程 - 用例Use Case
外部可见的系统功能,表示对系统提供功能、服务的描述。用例用一个椭圆表示。
- 用例之间的关系:
关联Association表示参与者与用例之间的关系。关联关系用一条直线表示,由参与者指向用例。
泛化Inheritance,可以理解为继承关系,父用例可以特化为若干个子用例。子用例与父用例相似,但表现更为特别的行为。子用例继承父用例的所有结构、行为以及用例关系。父用例与子用例之间的关系极为泛化关系。泛化关系用带箭头的直线表示,箭头指向父用例。
包含Include,较复杂的用例可以被分解为较小的用例,即该用例可以包含其他用例所具有的行为。包含关系使用带箭头的虚线表示,箭头指向被包含的用例。
扩展Extend表示用例功能的延伸。把新的行为加入到基础的用例上,使得基础用例能够获得新的行为并能够提供新的附加功能。扩展关系使用带箭头的虚线表示,箭头指向基础用例。
- 系统边界system scope
确定系统的范围,边界是一个方框,用例在边界内,参与者在边界外
- Neighboursystem框
表示用例依赖的外部系统、服务、设备
- 用例图的画法与步骤
a. 确定研讨的系统
- 使用用例图 System框 表示一个待研究的系统
- 正确命名系统或子系统,例如 Reserve Hotel。
- 千万不要将研究的系统的名称起的太泛,如“网上商店”。正确的姿势是“网上书店”,以避免业务空泛问题
b.识别 Actors
- 识别使用系统的主要参与者(primary actors)/角色(roles)
1 使用用例图 actor符号 表示,通常放在系统的左边
2 企业应用可以通过企业组织架构,业务角色与职责识别
3 互联网应用则必须通过市场分析,确定受众范围
4 千万不要用“用户”代表系统使用者,以避免过于通用导致缺乏用户体验。例如,你的系统服务对象是程序员,但你必须明白 c/c++ 程序员、java 程序员、 PHP 程序员之间的相同与不同
- 识别系统依赖的外部系统
使用用例图 Neighboursystem框 表示用例依赖的外部系统、服务、设备,并使用构造型(Stereotype)识别
- << system >> 例如:Account System(财务系统),教务系统
- << service >> 例如:第三方身份认证、地理信息服务、短信服务等第三方在线服务
- << device >> 或 << sensor >> 例如:GPS 等等
要将一些专业功能赋予专业系统。对于 Reserve Hotel 系统,除了订单配送、支付、销售账单由其他专业系统完成外,房源管理都应由独立系统完成,以确保系统的简洁与专业。大而全的软件是软件失败的主要因素之一要将一些专业功能赋予专业系统。对于 Reserve Hotel 系统,除了订单配送、支付、销售账单由其他专业系统完成外,房源管理都应由独立系统完成,以确保系统的简洁与专业。大而全的软件是软件失败的主要因素之一
c.识别用例(服务)
识别用户级别用例(user goal level)
- 以主要参与者目标驱动
- 收集主要参与者的业务事件
- 必须满足以下准则
boss test
EBP test
Size Test- manage 用例。特指管理一些事物的 CRUD 操作,例如管理文件、管理用户等
识别子功能级别的用例(sub function level)
- 子用例特征
业务复用。例如:现金支付
复杂业务分解。将业务分解为若干步,便于交互设计与迭代实现
强调技术或业务创新。例如:“识别人脸”,尽管从用户角度是单步操作,但背后涉及技术解决方案是比较复杂的- 正确使用用例与子用例之间的关系
<< include>> 表示子用例是父用例的一部分,通常强调离开这个特性,父用例无法达成目标或失去意义!
<< extend>> 表示子用例是父用例的可选场景或技术特征。
<< include>> 箭头指向子用例;<< extend>> 箭头指向父用例。箭头表示的依赖关系!
d. 建立 Actor 和 Use Cases 之间的关联
- 请使用 无方向连线,表示两间之间是双向交互的协议
- 用例图给利益相关人与开发者的价值有哪些?
利益相关人:
-
用例图可以直观看清系统的结果以及用户的功能体验,提供了系统使用和行为的摘要视图,保证系统能够按照用户的需求进行设计,并且便于与利益相关人进行沟通,及时对系统功能进一步完善。
-
用例图能够根据业务场景的复杂程度和形式化程序进行增减调节,能够相应利益相关人提出的需求。通过用例图进行系统功能的增减以及修改更加便利。
-
用例图使得系统能够注重其参与者的用户体验。
开发者:
-
用例图能够为开发者提供参考,使得设计的过程更加清晰明确。同时用例图也是系统的蓝图,是开发过程的蓝图。
-
用例图能够更明确客户的需求,使得开发者能够更好理解客户需求,相应客户的需求。
-
用例图能够明确系统的范围以及其提供功能的情况、与外部系统之间的关系,便于开发者进行系统的实现。
-
用例图便于评估其项目工作量,能够知道设计、开发以及测试,便于管理者明确其项目开发的迭代周期,能够在软件开发过程中起到很好的规划作用。
建模练习题(用例模型)
选择2-3个你熟悉的类似业务的在线服务系统(或移动 APP),如定旅馆(携程、去哪儿等)、定电影票、背单词APP等,分别绘制它们用例图。并满足以下要求:
- 请使用用户的视角,描述用户目标或系统提供的服务
- 粒度达到子用例级别,并用 include 和 exclude 关联它们
- 请用色彩标注出你认为创新(区别于竞争对手的)用例或子用例
- 尽可能识别外部系统和服务
扇贝单词app:
红宝书词汇app
然后,回答下列问题:
- 为什么相似系统的用例图是相似的?
因为相似的系统,其目标人群和提供的功能时相似的,也就是说 actor 和 scenery 类似,所以 use case 也类似,最终的用例图也是类似的。 - 如果是定旅馆业务,请对比 Asg_RH 用例图,简述如何利用不同时代、不同地区产品的用例图,展现、突出创新业务和技术
可以对当前流行产品和目标用户进行调研,然后结合旧用例图,进行符合产品市场的改进,如在 ASG_RH 付款时需要 check out,但我们现在电子支付十分方便,可以更改为链接电子支付。 - 如何利用用例图定位创新思路(业务创新、或技术创新、或商业模式创新)在系统中的作用
在项目早期,通过对比当前用例图和其它类似产品的用例图,提炼类似产品的先进业务,技术和商业模式,改进当前用例图,对于别人产品用例图中不足的地方,如缺少的业务和落后的技术,进行创新。同时,从用户的角度进行考虑,发掘用户需求。 - 请使用 SCRUM 方法,选择一个用例图,编制某定旅馆开发的需求(backlog)开发计划表
ID | Name | Imp | Est | How to demo | Notes |
---|---|---|---|---|---|
1 | 注册 | 10 | 3 | 输入手机号和密码,点击获取短信验证码按钮并正确填写收到的验证码,注册成功 | 需要短信服务 |
2 | 登录 | 10 | 3 | 输入正确的手机号和密码,可以登录程序 | |
3 | 查询酒店 | 50 | 14 | 选择位置,日期,酒店特征和价格区间,返回符合条件的酒店 | 需要GPS服务支持 |
4 | 预定酒店 | 70 | 14 | 选择酒店列表中的酒店,跳转到相应酒店页,选择入住日期和退房日期以及房型后生成订单,跳转到订单管理页 | |
5 | 订单管理 | 40 | 7 | 显示订单的详情,包括酒店名,入住和退房日期以及房型,同时可以选择酒店的其他服务(餐饮,保险和酒店设施服务),确认完毕跳转到付款页 | |
6 | 支付 | 40 | 5 | 选择付款方式(微信支付,支付宝支付或银行卡)并完成支付后,发送短信到手机提示付款成功 | 需要短信服务 |
- 根据任务4,参考使用用例点估算软件成本,给出项目用例点的估算
用例 | #事务 | #计算 | 原因 | UC权重 |
---|---|---|---|---|
1注册 | 3 | 2 | 短信服务框架 | 5 |
2登录 | 2 | 2 | 5 | |
3查询酒店 | 4 | 3 | GPS API | 10 |
4 预定酒店 | 3 | 3 | 5 | |
5订单管理 | 2 | 2 | 5 | |
6 支付 | 2 | 1 | 短信服务框架 | 5 |