简答题
用例的概念
用例是软件工程或系统工程中对系统如何反应外界请求的描述,是一种通过用户的使用场景来获取需求的技术。
用例和场景的关系?什么是主场景或 happy path?
系统根据参与者的请求,在不同的条件下,执行某一行为序列。每一个行为序列可称为一个场景。一个用例包含多个场景,场景也可以称为用例的一个实例。
主场景(happy path)描述了满足涉众关注点的典型成功路径。它是典型的、无条件的、理想方式的主成功场景。主场景是用户和系统之间的主要交互,是最常用的实现用户目标的场景。
用例有哪些形式?
摘要:简洁的一段式摘要,通常用于主成功场景。
非正式:非正式的段落格式,用几个段落覆盖不同场景。
详述:详细编写所有步骤与各种变化,同时具有补充部分,如前置条件和成功保证。
对于复杂业务,为什么编制完整用例非常难?
对于复杂业务,其涉及的场景数量会变得很多,而各场景之间的关联使得用例设计变得特别困难。因为用例是各个成功与失败场景的集合,用例的编写需要对这些场景熟悉,并且需要建模知识与注意用户交互的相关细节,但仍无法完整地覆盖实际中可能出现的情况。用例总是不完整的,所以编制完整用例非常难。
什么是用例图?
用例图是一种优秀的系统语境图,它能够展示系统边界,位于边界之外的事物以及系统如何被使用。它可以作为沟通的工具,用以概括系统以及其参与者的行为。
用例图的基本符号与元素?
参与者(Actor):表示的是一个系统用户,即与应用程序进行交互的用户、组织或外部系统。用一个小人表示。
用例(Use Case):表示的是对系统提供的功能、服务的一种描述,用椭圆表示。
用例之间的关系:
- 包含关系(表示可以简单地包含其他用例所具有的行为,并把它所包含的用例行为作为自身行为的一部分。UML中常用带箭头的虚线表示,箭头指向被包含的用例)
- 泛化关系(指的是一个父用例可以被特化形成多个子用例,而父用例和子用例之间的关系就是泛化关系。UML中用空心三角箭头的实线表示,箭头指向父用例)
- 关联关系(表示的是参与者与用例之间的关系。在UML中常用一条直线,或者是一条带箭头的线条来表示,箭头指向信息接收方)
- 扩展/延伸关系(表示在一定条件下,把新的行为加入到已有的用例中,获得的新用例叫做扩展用例,原有的用例叫做基础用例,相当于为基础用例提供一个附加功能。在UML中用带箭头的虚线表示,箭头指向基础用例)
用例图的画法与步骤
定义Subject:Subject是我们正在设计的业务、软件系统、子系统、组件、设备等。定义它是什么类型的系统,它的范围或边界。
定义Actors:Actor是Subject需要服务的用户,它是一个外部实体,可以是设计系统的人类用户,也可以是其他系统或设备。
定义Use Cases:当我们定义正在设计或分析的系统的边界或系统的外部用户时,我们需要定义这些用户能从系统中需要什么。每个用例都指定了主题为actor提供的完整且有用的功能单元。用例应反映用户的需求和目标,并应由Actors发起。
描述用例行为:可用自然语言文本来描述,或使用UML行为图来表示特定行为。
用例图给利益相关人与开发者的价值有哪些?
对于利益相关人:可以直观看到系统的结果和用户的功能体验,保证系统按照用户的需求进行设计;用例能够根据需要对复杂程度和形式化程序进行增减调节,即能够响应用户(利益相关人)提出的需求,而用例图使得这种调节更加便利,可通过修改图形间的关系实现。
对于开发者:用例图是设计者设计过程的结论和参考,设计者与开发者之间的交流工具,开发者开发过程的蓝图;用例图使得开发者能够更明确地获得需求,更好地理解需求;用例图可以指导开发和测试,同时可以在整个过程中对其他工作流起到指导作用。
建模练习题
选择2-3个你熟悉的类似业务的在线服务系统(或移动 APP),如定旅馆(携程、去哪儿等)、定电影票、背单词APP等,分别绘制它们用例图。并满足以下要求:
- 请使用用户的视角,描述用户目标或系统提供的服务
- 粒度达到子用例级别,并用 include 和 exclude 关联它们
- 请用色彩标注出你认为创新(区别于竞争对手的)用例或子用例
- 尽可能识别外部系统和服务
美团外卖:
扇贝单词:
为什么相似系统的用例图是相似的?
因为相似系统的用户人群大致相同,需求大致相同,所以参与者和用例,以及参与者和用例之间的关系都会很相似。
如果是定旅馆业务,请对比 Asg_RH 用例图,简述如何利用不同时代、不同地区产品的用例图,展现、突出创新业务和技术
并非定旅馆业务。但都是同样的迭代过程,综合不同时代、不同地区的产品来挖掘自己的创新业务,力求突出。
如何利用用例图定位创新思路(业务创新、或技术创新、或商业模式创新)在系统中的作用
通过在用例图中使用与其他用例不同的颜色进行标记的方法,能够快速定位到该用例图中的创新点。
请使用 SCRUM 方法,选择一个用例图,编制某定旅馆开发的需求(backlog)开发计划表
ID | Name | Imp | Est | How to demo | Notes |
---|---|---|---|---|---|
1 | 查询酒店 | 50 | 5 | 根据酒店名称、位置等信息进行查询 | 引入外部GPS API |
2 | 筛选酒店 | 30 | 2 | 可根据详细信息进行筛选 | |
3 | 预订酒店 | 60 | 3 | 选择房间、入住时间进行预订 | |
4 | 管理订单 | 30 | 8 | 可以更改或取消订单 | |
5 | 订单支付 | 60 | 8 | 可通过外部api进行支付 | 引入外部支付API |
- 根据任务4,参考 使用用例点估算软件成本,给出项目用例点的估算
用例 | # 事务 | # 计算 | 原因 | UC 权重 |
---|---|---|---|---|
查询酒店 | 3 | 3 | 查询方式多种 | 简单 |
筛选酒店 | 6 | 5 | 及时更新酒店各项信息 | 平均 |
预订酒店 | 3 | 2 | 录入信息创建订单 | 简单 |
管理订单 | 5 | 3 | 修改、取消 | 简单 |
订单支付 | 1 | 1 | 调用外部api | 简单 |