软件系统分析与设计笔记(四)

Posted by Nino Lau on May 17, 2019

简答题

用例的概念

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

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

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

用例有哪些形式?

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

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

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

什么是用例图?

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

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

  • 椭圆:表示每个用例,是外部可见的系统功能,对系统提供的服务进行描述。

  • 矩形框:表示整个系统。

  • 小人:表示参与者(通常在矩形框外,即在系统外部),是与系统进行交互的用户、组织或外部系统。

  • 连线(无箭头):连接参与者与用例,表明二者之间有交互关系。

  • 箭头:用例之间的关联、包含、拓展、泛化

    关系。

    • 关联(Association):表明参与者与用力之间的通信,任何一方都可以发送或接收信息。箭头由消息发送方指向消息接收方。
  • 包含(Include):包含关系把一个复杂的用例所包含的功能分解成较小的功能用例。箭头由单个复杂用例指向分解出来的功能用例。

    • 拓展(Extend):指用例功能的延伸,相当于为基础用例提供一个附加功能。箭头由附加功能用例指向基础用例。
  • 泛化(Inheritence):继承关系,子用例继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。箭头由子用例指向父用例。

用例图的画法与步骤

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

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

答:

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

建模练习题

猫眼电影 APP

MaoYan

携程 APP

Ctrip

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

答:相似系统的参与者(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

  1. 经典参考书:编写有效用例(中文版、英文版)
  2. https://www.scrum-institute.org/The_Scrum_Product_Backlog.php
  3. www.ecice06.com/CN/article/downloadArticleFile.do?attachType=PDF&id=11259