简答题

用例的概念

用例(英语:use case),或译使用案例、用况,是软件工程或系统工程中对系统如何反应外界请求的描述,是一种通过用户的使用场景来获取需求的技术。 – baidu baike

每个用例提供了一个或多个场景,该场景说明了系统是如何和最终用户或其它系统互動,也就是谁可以用系统做什么,从而获得一个明确的业务目标。编写用例时要避免使用技术术语,而应该用最终用户或者领域专家的语言。用例一般是由软件开发者和最终用户共同创作的。 – wikipedia

通俗地讲,用例是文本形式的情节描述, 用以说明某参与者使用系统以实现某些目标。

用例和场景的关系?什么是主场景或 happy path?

  • 场景是什么: 场景 (scenario) 是参与者和系统之间的一系列特定的活动和交互,也称为用例实例 (use case instance)。

  • 用例和场景的关系:用例 (use case)就是一组相关的成功和失败场景集合,用来描述参与者如何使用系统来实现其目标。

  • 主场景: 也叫做主成功场景Main Success Scenario或者 理想路径happy path,这是用例最基本的组成部分,它描述了满足涉众关注点的典型成功路径。要注意的是,它通常不包括任何条件或分支,这是为了保持连贯性,并且将所有的条件处理都延迟到扩展部分。这种具有争议的做法更易于理解和扩展。

用例有哪些形式?

用例能够以不同形式化程度或格式进行编写, 主要有以下三种形式:

  • 摘要 Brief : 简洁的一段式概要,通常用于主成功场景。

  • 非正式形式 Casual:非正式的段落格式。用几个段落覆盖不同场景。

  • 详述 Fully :详细编写所有步骤及各种变化,同时具有补充部分,如前置条件和成功保证。

对于复杂业务,为什么编制完整用例非常难?

复杂业务要编写完整用例的困难之处,主要能从以以下几个方面进行分析:

  • 繁杂:复杂业务的场景较多,场景较为复杂。

  • 变化:在前期的考虑中,很难不遗漏一些业务条件和需求,且这些需求条件还可能发生变化。

什么是用例图?

用例图是描述用例、参与者以及它们之间关系的图。

用例图是从用户的角度来描述对信息系统的需求,分析产品的功能和行为。

用例图定义和描述了系统的外部可见行为,是分析、设计直至组装测试的重要依据。

用例图的基本符号与元素?

基本符号

这里给出 UMLET 支持的基本符号

元素

  • 系统(System):图中的大方框,可以是小型软件组件,也可以是完整的应用程序,里面包含外部可见的功能。

  • 参与者(Actor):系统的左侧外的人形图案,表示与系统或程序进行交互的用户、组织或外部系统。

  • 用例(Use Case):系统内的椭圆,外部可用的系统功能,对系统提供的服务进行描述。

  • 关系(relation):用例图中涉及到的关系包括关联、泛化、包含、扩展。

    • 关联(Association):说明了参与者与用例之间的通信,任何一方都可以发送或接受信息,箭头指向的是消息的接收方。
    • 泛化(Inheritance):继承关系。
    • 包含(Include):包含关系用来把一个较复杂用例所表示的功能分解成较小的步骤,箭头指向分解出来的功能用例,旁边需要显式写出该关系为 <>
    • 扩展(Extend):扩展关系是指当前用例功能的延伸,相当于给当前基础样例提供附加的功能。箭头指向原来的基础样例,旁边需要显式写出该关系为 <>

用例图的画法与步骤

  1. 确定参与者,包括:

    • 主要参与者:谁将使用系统的主要功能、谁将需要系统的支持以完成工作等
    • 协作参与者:谁将提供对应的系统功能、谁将维护系统,保证系统处于工作状态等
    • 幕后参与者:谁会对系统产生的结果感兴趣
  2. 识别使用系统的主要参与者(primary actors)/角色(roles)

  3. 识别系统依赖的外部系统

  4. 识别用例

  5. 识别用户级别用例

  6. 识别子功能级别的用例

  7. 建立 Actor 和 Use Cases 之间的关联。

用例图给利益相关人与开发者的价值有哪些?

针对利益相关者

  1. 可以直观看到系统的结果和用户的功能体验,保证系统按照用户的需求进行设计。
  2. 用例能够根据需要对复杂程度和形式化程序进行增减调节,即能够响应用户(利益相关人)提出的需求,而用例图则使得这种调节更加便利,可以通过修改图形间的关系实现。

针对开发者

  1. 用例图是设计者设计过程的结论与参考,设计者与开发者之间的交流工具,开发者开发过程的蓝图。

  2. 用例图使得开发者能够更明确地获得需求,更好地理解需求。

  3. 用例图可以指导开发和测试,同时可以在整个过程中对其他工作流起到指导作用。

建模练习题(用例模型)

绘制用例图

选择2-3个你熟悉的类似业务的在线服务系统(或移动 APP),如定旅馆(携程、去哪儿等)、定电影票、背单词APP等,分别绘制它们用例图。并满足以下要求:

请使用用户的视角,描述用户目标或系统提供的服务 粒度达到子用例级别,并用 include 和 exclude 关联它们 请用色彩标注出你认为创新(区别于竞争对手的)用例或子用例 尽可能识别外部系统和服务

选择一个简单的定电影票 APP 的大致用例图如下

回答下列问题:

  1. 为什么相似系统的用例图是相似的?

  2. 如何利用用例图定位创新思路(业务创新、或技术创新、或商业模式创新)在系统中的作用。

  3. 请使用 SCRUM 方法,选择一个用例图,编制某定旅馆开发的需求(backlog)开发计划表

选择 Asg_RH 的用例图进行如下的开发计划表展示:

ID NAME IMPORTANCE ESTIMATE HOW TO DEMO NOTES
1 查找酒店 90 3 根据输入的信息查找对应酒店 None
2 预定酒店 100 5 填写相关信息之后,进行预定 None
3 修改订单 70 2 修改已经填写的信息 None
4 支付订单 100 4 用户选择支付方式进行支付 可以使用外部 api 来简化实现
5 用户评价 70 2 已经支付后才能评价 可选功能
  1. 项目用例点估算

根据所给的资料,生成的表如下:

用例 业务 计算 原因 UC 比重 原因
1 查找酒店 3 3 一般
2 预定酒店 7 5 一般
3 修改订单 2 2 简单
4 支付订单 2 2 简单
5 用户评价 2 2 简单