Halo

A magic place for coding

0%

系统分析与设计作业 4

用例建模 - 绘制用例图

课程网页

https://sysu-swsad.github.io/swad-guide/06-usecase-modeling

问题

  1. [简答题](# 简答题)
    • 用例的概念
    • 用例和场景的关系?什么是主场景或 happy path?
    • 用例有哪些形式?
    • 对于复杂业务,为什么编制完整用例非常难?
    • 什么是用例图?
    • 用例图的基本符号与元素?
    • 用例图的画法与步骤
    • 用例图给利益相关人与开发者的价值有哪些?
  2. [建模练习题](# 建模练习题)
    • 选择 2-3 个你熟悉的类似业务的在线服务系统(或移动 APP),如定旅馆(携程、去哪儿等)、定电影票、背单词 APP 等,分别绘制它们用例图。并满足以下要求:
      • 请使用用户的视角,描述用户目标或系统提供的服务
      • 粒度达到子用例级别,并用 include 和 exclude 关联它们
      • 请用色彩标注出你认为创新(区别于竞争对手的)用例或子用例
      • 尽可能识别外部系统和服务
    • 然后,回答下列问题:
      • 为什么相似系统的用例图是相似的?
      • 如果是定旅馆业务,请对比 Asg_RH 用例图,简述如何利用不同时代、不同地区产品的用例图,展现、突出创新业务和技术
      • 如何利用用例图定位创新思路(业务创新、或技术创新、或商业模式创新)在系统中的作用
      • 请使用 SCRUM 方法,选择一个用例图,编制某定旅馆开发的需求(backlog)开发计划表
      • 根据任务 4,参考 使用用例点估算软件成本,给出项目用例点的估算

Answer

简答题

用例的概念

答:

  • ** 定义 **:用例是一组相关的成功和失败场景集合,用来描述参与者如何使用系统来实现目标。用例就是需求,主要是说明系统如何工作的功能性或行为性需求。
  • ** 用例与用例模型 **:用例是文本文档,而不是图形;用例建模主要是编写文本的活动,而不是制图。用例不是面向对象的,因此编写用例时不会进行 OO 分析。用例是经典 OOA/D 的关键需求输入。
  • ** 动机 **:用例是一种优秀的方法,使领域专家或需求提供者自己编写(或参与编写)用例成为可能,并使这项工作难度降低。同时它还 ** 强调了用户的目标和观点 **。用例的 ** 优越性 ** 在于,能够根据需要对复杂程度和形式化成都进行增减调节。

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

答:

  • ** 场景 **:场景是参与者和系统之间的一系列特定的活动和交互,也成为 ** 用例失利 **。场景是使用系统的一个特定情节或用例的一条执行路径。
  • ** 用例和场景的关系 **:一个用例代表了场景的集合,包含主场景和一些可选场景。
  • ** 主场景 **:主场景是主要系统交互,通常是 ** 成功 ** 的场景,它能够直接地实现用户目标的流程。可选场景是一些不常使用的交互动作或者是异常。

用例有哪些形式?

答:

  • **Breif (high level)**:是一段关于主要的成功场景的简练的介绍。
  • Casual(简便格式):是多个非正式的段落,包含多个场景。
  • Fully:包含所有步骤和变化的详细说明,并有支持的部分,如前提条件和成功的保证。

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

答:对于复杂的业务,很难把所有的目标、故事、场景遵循一定的顺序罗列出来。如果列举的场景不够全面,那么用例的完整性就难以保证。除此之外,用例建模虽然给出了一种可操作的流程步骤,但是具体的操作以及如何书写用例是依赖于书写者的。所以用例本身并不能保证自身的完整性。

什么是用例图?

答:用例图是指由参与者、用例,边界以及它们之间的关系构成的用于描述系统功能的视图。用例图是外部用户(参与者)所能观察到的系统功能的模型图。用例图是系统的蓝图,呈现了一些参与者、用例以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。

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

  • 椭圆:表示每个用例,是外部可见的系统功能,对系统提供的服务进行描述。
  • 矩形框:表示整个系统。
  • 小人:表示参与者(通常在矩形框外,即在系统外部),是与系统进行交互的用户、组织或外部系统。
  • 连线(无箭头):连接参与者与用例,表明二者之间有交互关系。
  • 箭头:用例之间的 ** 关联 包含 拓展 泛化 ** 关系。
    • 关联(Association):表明参与者与用力之间的通信,任何一方都可以发送或接收信息。箭头由消息发送方指向消息接收方。
    • 包含(Include):包含关系把一个复杂的用例所包含的功能分解成较小的功能用例。箭头由单个复杂用例指向分解出来的功能用例。
    • 拓展(Extend):指用例功能的延伸,相当于为基础用例提供一个附加功能。箭头由附加功能用例指向基础用例。
    • 泛化(Inheritence):继承关系,子用例继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。箭头由子用例指向父用例。

用例图的画法与步骤

  1. 确定参与者,包括以下:
    • 主要参与者:具有用户目标,并通过使用 SuD 的服务完成。它是使用系统的主要功能的主体,需要系统的支持以完成工作。
    • 协助参与者:为 SuD 提供服务。提供系统的主要功能的主体,维护系统的主体,保证系统正常工作的主体。
    • 幕后参与者:在用例行为中具有影响或利益,但不是主要或协助参与者。它对系统产生的结果感兴趣。
  2. 确定子系统的边界
  3. 绘制用例
    • 使用参与者自身能够易于理解的名称对用例进行命名。不要使用与代码有关的名称,以免引起歧义。
    • 从主要的交互事务入手,再到较小的事务。
    • 将每个用例放入支持它的系统或主要子系统中。
    • 可以在系统的边界外绘制用例,这表明系统不支持该用例。
  4. 将参与者与用例相连
  5. 使用关联、包含、拓展、泛化等关系结构化用例。

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

答:

  • 对于客户来说,通过用例图客户可以直观地看到系统的结果和用户的功能体验,能够根据需要对复杂程度和形式化程序进行增删调节(通过修改图形间的关系来实现)
  • 对于软件开发者来说,用例图是设计者设计过程的结论,是设计者与开发者之间的交流工具。用例图很好地细化了用户的需求,使得开发人员更好地理解需求。同时用例图可以指导开发和测试。

建模练习题

  1. 猫眼电影 APP

    CatEye

  2. 影店 APP

    Yingdian

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

答:因为相似系统的用户需求是相类似的,比如电影订票,用户主要就是选电影、选地点、选价格、选日期、选场次,用户相似的需求就决定了系统的相似程度。

如果是定旅馆业务,请对比 Asg_RH 用例图,简述如何利用不同时代、不同地区产品的用例图,展现、突出创新业务和技术

答:该用例图不是订旅馆业务,无法比较。

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

答:用例图表示了用户在使用该系统的时候用到的功能,是一条路径。我们可以在这条路径上根据地区特色,结合时代的技术去进行创新。比如以订电影票为例,可以在用户购票的时候向其推荐附近的餐饮或购物商店,增加收益。

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

订酒店:

Hotel

ID Title Imp Est How to demo Notes
1 find hotel 50 40 根据位置、日期价格等信息选择酒店 需要 GPS 服务,关键词联想服务。
2 make reservation 70 50 在列表中选择酒店后显示详情,需要确认酒店、房间类型等
3 manage basket 30 20 管理购物车,可以添加、删除、收藏等功能
4 pay 40 20 用户确认预定后进行支付,支持多个平台的支付 需要各支付平台
5 login 20 20 可以使用基本的手机账户进行注册登录,也可以使用人脸识别 需要人脸识别的平台、手机短信发送平台

根据任务 4,给出项目用例点的估算

用例 #事务 #计算 原因 UC 权重
1find hotel 2 5 需要根据条件筛选 10
2 make reservation 5 6 10
3 manage basket 3 3 5
4 pay 3 3 5
5 login 3 2 用到了人脸识别 5

Reference

  1. https://www.cnblogs.com/zhoujg/archive/2009/07/19/1526707.html
  2. https://www.scrum-institute.org/The_Scrum_Product_Backlog.php
  3. https://www.ibm.com/developerworks/cn/rational/edge/09/mar09/collaris_dekker/index.html

Welcome to my other publishing channels