简答题
用例的概念
- 定义:用例是一组相关的成功和失败场景集合,用来描述参与者如何使用系统来实现目标。用例就是需求,主要是说明系统如何工作的功能性或行为性需求。
- 用例与用例模型:用例是文本文档,而不是图形;用例建模主要是编写文本的活动,而不是制图。用例不是面向对象的,因此编写用例时不会进行OO分析。用例是经典OOA/D的关键需求输入。
- 动机:用例是一种优秀的方法,使领域专家或需求提供者自己编写(或参与编写)用例成为可能,并使这项工作难度降低。同时它还强调了用户的目标和观点。用例的优越性在于,能够根据需要对复杂程度和形式化成都进行增减调节。
用例和场景的关系?什么是主场景或happy path?
- 场景:场景是参与者和系统之间的一系列特定的活动和交互,也成为用例失利。场景是使用系统的一个特定情节或用例的一条执行路径。
- 用例和场景的关系:一个用例代表了场景的集合,包含主场景和一些可选场景。
- 主场景:主场景是主要系统交互,通常是成功的场景,它能够直接地实现用户目标的流程。可选场景是一些不常使用的交互动作或者是异常。
用例有哪些形式?
- Breif(high level):是一段关于主要的成功场景的简练的介绍。
- Casual(简便格式):是多个非正式的段落,包含多个场景。
- Fully:包含所有步骤和变化的详细说明,并有支持的部分,如前提条件和成功的保证。
对于复杂业务,为什么编制完整用例非常难?
答:对于复杂的业务,很难把所有的目标、故事、场景遵循一定的顺序罗列出来。如果列举的场景不够全面,那么用例的完整性就难以保证。除此之外,用例建模虽然给出了一种可操作的流程步骤,但是具体的操作以及如何书写用例是依赖于书写者的。所以用例本身并不能保证自身的完整性。
什么是用例图?
答:用例图是指由参与者、用例,边界以及它们之间的关系构成的用于描述系统功能的视图。用例图是外部用户(参与者)所能观察到的系统功能的模型图。用例图是系统的蓝图,呈现了一些参与者、用例以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。
用例图的基本符号与元素?
-
椭圆:表示每个用例,是外部可见的系统功能,对系统提供的服务进行描述。
-
矩形框:表示整个系统。
-
小人:表示参与者(通常在矩形框外,即在系统外部),是与系统进行交互的用户、组织或外部系统。
-
连线(无箭头):连接参与者与用例,表明二者之间有交互关系。
-
箭头:用例之间的关联、包含、拓展、泛化
关系。
- 关联(Association):表明参与者与用力之间的通信,任何一方都可以发送或接收信息。箭头由消息发送方指向消息接收方。
-
包含(Include):包含关系把一个复杂的用例所包含的功能分解成较小的功能用例。箭头由单个复杂用例指向分解出来的功能用例。
- 拓展(Extend):指用例功能的延伸,相当于为基础用例提供一个附加功能。箭头由附加功能用例指向基础用例。
-
泛化(Inheritence):继承关系,子用例继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。箭头由子用例指向父用例。
用例图的画法与步骤
- 确定参与者,包括以下:
- 主要参与者:具有用户目标,并通过使用SuD的服务完成。它是使用系统的主要功能的主体,需要系统的支持以完成工作。
- 协助参与者:为SuD提供服务。提供系统的主要功能的主体,维护系统的主体,保证系统正常工作的主体。
- 幕后参与者:在用例行为中具有影响或利益,但不是主要或协助参与者。它对系统产生的结果感兴趣。
- 确定子系统的边界
- 绘制用例
- 使用参与者自身能够易于理解的名称对用例进行命名。不要使用与代码有关的名称,以免引起歧义。
- 从主要的交互事务入手,再到较小的事务。
- 将每个用例放入支持它的系统或主要子系统中。
- 可以在系统的边界外绘制用例,这表明系统不支持该用例。
- 将参与者与用例相连
- 使用关联、包含、拓展、泛化等关系结构化用例。
用例图给利益相关人与开发者的价值有哪些
答:
- 对于客户来说,通过用例图客户可以直观地看到系统的结果和用户的功能体验,能够根据需要对复杂程度和形式化程序进行增删调节(通过修改图形间的关系来实现)
- 对于软件开发者来说,用例图是设计者设计过程的结论,是设计者与开发者之间的交流工具。用例图很好地细化了用户的需求,使得开发人员更好地理解需求。同时用例图可以指导开发和测试。
建模练习题
猫眼电影 APP
携程 APP
为什么相似系统的用例图是相似的
答:相似系统的参与者(Actor)、用例(Use Case)、边界以及它们之间的关系相似,所以它们构成的用例图也相似。
如果是定旅馆业务,请对比 Asg_RH 用例图,简述如何利用不同时代、不同地区产品的用例图,展现、突出创新业务和技术
答:不同时代、不同地区用户习惯、需求、法规、外部系统和服务不同,使业务和技术有差异,用例图就会存在差别,用色彩标注它们,就可以展现出创新之处。
如何利用用例图定位创新思路(业务创新、或技术创新、或商业模式创新)在系统中的作用
答:用例图表示了用户在使用该系统的时候用到的功能,是一条路径。我们可以在这条路径上根据地区特色,结合时代的技术去进行创新。比如以订电影票为例,可以在用户购票的时候向其推荐附近的餐饮或购物商店,增加收益。
请使用 SCRUM 方法,选择一个用例图,编制某订旅馆开发的需求(backlog)开发计划表
ID | Name | Imp | Est | How to demo |
---|---|---|---|---|
1 | find hotel by location | 8 | 1 | input the hotel name to determine hotel |
2 | find hotel on map | 3 | 1 | slide on map to determine hotel |
3 | make reservation | 7 | 4 | determine hotel, room type, time and then confirm |
4 | pay reservation | 7 | 3 | payment supported by third party system |
5 | modify reservation | 5 | 2 | modify reservation and hotel make approval |
6 | comment hotel | 4 | 2 | traveler rate and comment |
使用用例点估算软件成本
$UAW =1×3(Complex)=3 $
$UUCW=5×5(Simple)+1×10(Average)=35$
$ UUCP=UAW+UUCW=38$
$ TCF=0.6+(0.01×15)=0.75$
$ ECF=1.4+(-0.03×16.5)=0.905$
$UCP=TCF×ECF×UUCP=25.7925 (26)$
UCP发明人建议:每UCP为16人~30人,均值为20人时,对一个规模为26个UCP的项目,所需要的开发工作量为$Effort=UCP×Productivity=26×20=520$人时,为13人/周。
Reference
- 经典参考书:编写有效用例(中文版、英文版)
- https://www.scrum-institute.org/The_Scrum_Product_Backlog.php
- www.ecice06.com/CN/article/downloadArticleFile.do?attachType=PDF&id=11259