文章目录
- 用例建模 Use case modeling
- 一,什么是用例 What's use case?
- 二,用例和场景 Use case and scenario
- 主场景 Primary scenario or happy path
- 三,用例的形式 Forms of a use case
- 四,对于复杂业务编制完整用例的困难 Difficulties of writing a complete use case for a complex business
- 五,什么是用例图 What's use case diagram?
- 六,用例图的基本符号与元素 Basic symbols and elements of a use case diagram
- 七,用例图的画法与步骤
- 八, 用例图给利益相关人与开发者的价值 Values of use case diagrams for those being beneficial and developer
- 九,建模例子 —— 订旅馆 Use case modeling - Reservation for hotel
- 1,为什么相似系统的用例图是相似的?
- 2,对于定旅馆业务,对比 [Asg_RH](https://sysu-swsad.github.io/swad-guide/material/Asg_RH.pdf) 用例图,如何利用不同时代、不同地区产品的用例图,展现、突出创新业务和技术
- 3,如何利用用例图定位创新思路(业务创新、或技术创新、或商业模式创新)在系统中的作用
- 3,使用 SCRUM 方法,编制一个定旅馆开发的需求(backlog)开发计划表
- 4,参考 [使用用例点估算软件成本](https://www.ibm.com/developerworks/cn/rational/edge/09/mar09/collaris_dekker/index.html)的项目用例点的估算
用例建模 Use case modeling
一,什么是用例 What’s use case?
Use case is a collection of related success and failure scenarios that describe an actor using a system to support a goal.
用例是相关的场景(不管是成功还是失败的)的集合,用来描述一个希望使用这个系统来达成某个目的的参与者。
注意:用例不是流程图(diagram),而是一种文本(text),用例建模是一个撰写文本的过程,一种技巧
And there is nothing object-oriented! 没有任何面向对象的思想在里面
二,用例和场景 Use case and scenario
1,什么是场景 What’s scenario?
Scenario is a specific sequence of actions and interactions(会话) between actors and the system; it is also called a use case instance.
所谓场景,就是参与者和系统的交互过程,由若干行为和会话组成的特定序列构成,也被称为用例的实例。
2,用例和场景的关系 Relationship between use case and scenario
用例事实上就是一系列场景的集合(a collection of scenarios),例如:主场景(primary scenario,也称为基本流),正零路径(plus zero,基本流加上零)或者是其他备选流(alternate scenario,基本流加上其他的信息流)
主场景 Primary scenario or happy path
The primary scenario corresponds to the main system interactions, usually the ‘success’ scenario.
主场景就是最常用的一个业务场景,反映的是用户最为基本的目的,简单的说就是这个系统所实现的基本业务
三,用例的形式 Forms of a use case
- Brief(high level):一段总结,通常是主要的成功场景的建立,只需要几分钟的时间
- Casual(简便格式):不是很正式的形式,并且包括了不同的场景
- Fully:完整的场景建立,完整的步骤以及用例的细节,以及一些可能发生的情况的应对以及如何确保一个成功的场景
四,对于复杂业务编制完整用例的困难 Difficulties of writing a complete use case for a complex business
对于复杂的业务来说,参与者(actor)的相对较多,系统交互也会非常复杂,需要考虑的备选流(alternate scenarios)也非常复杂,这将会是一个非常庞大,场景(scenario)众多的用例,因此对于这样的业务,我们要编制一个完整的用例是非常困难的,因为我们很难做到完整的覆盖所有可能的场景
五,什么是用例图 What’s use case diagram?
用例图(use case diagram)就是所有的参与者(actor)加上一个系统(system),其中系统内定义了和参与者进行交互的一系列接口,即一系列的用例实例(例如一个登陆行为),定义了系统和用户交互的行为,例如,下图就是一个求职系统的用例图,包括还包括了 一个个人履历管理的子系统:
六,用例图的基本符号与元素 Basic symbols and elements of a use case diagram
一个用例图(use case diagram)包含的主要元素:
- system under design (SuD) 系统设计
- goal 目标
- actor 参与者
- primary scenario 主场景
- alternate scenario 备选场景
system under design(SuD)系统设计
可以参考上面给出的银行内部系统的用例图,其中,我们一般用图中那样的一个方框表示一个系统,里面定义了一系列的用户接口
Actor 参与者
任何参与系统交互的角色都是这个用例的参与者(actor),在用例图中一般用这样的一个符号表示:
goal 目标
事实上就是用户使用这个系统的目的,也可以说是主场景的主要内容,例如在一个电话系统中,我们的目标就是:和被呼叫方进行通话。
primary scenario 主场景
主场景就是用户顺利使用系统实现目标的完整过程(success scenarios,是一系列成功场景),同样我们考虑一个电话系统,那么主场景应该是类似这样的:
拨号,系统建立连接,回呼叫音
系统连接完成,取消呼叫音
与被叫方通话
挂机,系统拆线
alternate scenario 备用场景
还是一个电话系统,根据生活常识我们都知道,打电话不是每次都会打通,比如说:占线,对方正在通话,系统忙等,这些就属于这个电话系统用例模型的备用场景,可以看成是主场景这一条path中的支线(alternate path),一个分支情况。
不管是主场景还是备用场景都是一个用例的实例,我们一般用一个椭圆,附上用例名称表示:
七,用例图的画法与步骤
首先是用例之间的关系:
我们以上面的求职系统的用例图为例:
关联 Association
关联就是参与者(actor)和用例的信息流动,我们可以把用例和和参与者连接起来,表示一个关联,你也可以添加箭头表示信息的流动方向:
泛化 Inheritance
泛化一般用于一个功能有多个子功能,或者更加具体的功能的时候,例如:用户,在用户之下可能还有VIP用户和SVIP用户,或者是管理用户,这时,我们用到的就是泛化,由子功能指向父功能。这可以是参与者和参与者之间,也可以是用例和用例之间。
包含 Include
我们通常会把一个复杂的用例功能分解成及部分,这样这若干个部分和这个用例之间的关系就是包含关系,用一个箭头从用例指向着一些部分:
扩展 Extend
如果一个用例的使用依赖于另外一个用例,以另外的一个功能为前提的话,这时就会用到扩展,我们用一个从子用例指向父用例的箭头,然后在上面注上<extend>
。例如“浏览企业招聘职位”,在进行这个行为之前,需要先完成“注册个人会员”的操作,而这个操作需要在“登陆”状态下进行:
通常父用例是抽象的,但是在这里,这三个都是用户可以执行的操作,所以“注册个人会员”和“登陆”都是一个具体的用例。
通过用例之间的关系,参与者和用例以及参与者和参与者之间的关系,我们可以通过系统设计好用例,按照关系进行用例图的绘制
八, 用例图给利益相关人与开发者的价值 Values of use case diagrams for those being beneficial and developer
用例图对于利益相关者来说,他们可以非常直观的了解到自己所要实现的功能是否被很好的体现,开发者是否理解了自己的需求;而对于开发者来说,这不仅是向客户传递自己对需求的理解,也是方便开发者进行系统设计和开发
九,建模例子 —— 订旅馆 Use case modeling - Reservation for hotel
Hotel Reservation Online system use case diagram
另外一个比较类似的是电影票网上购票系统:
1,为什么相似系统的用例图是相似的?
相似系统的用例图一般是相似的,这是因为它们的业务逻辑是相似的,那么用户和系统的交互方式,用例也是相似的,那么用例图自然也是相似的。
2,对于定旅馆业务,对比 Asg_RH 用例图,如何利用不同时代、不同地区产品的用例图,展现、突出创新业务和技术
结合不同时代的业务模式,例如最为简单的:支付模式,在过去可能只能支持银联的闪付,但是现在越来越多的支付方式出现,一个支付模式上的改变就可能是一个创新。此外,思考不同地区产品的侧重点,因为每个地区有其共性,但也必然有其特殊性,如果能够参考共性,把握好地区的特殊性,就能够在业务上实现创新
3,如何利用用例图定位创新思路(业务创新、或技术创新、或商业模式创新)在系统中的作用
我们知道相似的业务会有一个相似的用例图,那么一个创新的思路,比如说一个新的业务模式,应该会产生一个与众不同的用例图,通过比较传统业务的用例图,我们可以发现,新的思路是如何对主场景(primary scenario)或者是备用场景(alternate scenario)产生作用的,哪些业务逻辑发生了变化,那些相关的用例发生了改变。这样我们就可以定位创新思路在系统中的作用。
3,使用 SCRUM 方法,编制一个定旅馆开发的需求(backlog)开发计划表
ID | Title | Est | Iter | Imp |
---|---|---|---|---|
10010 | find hotel | 2 | 1 | 5 |
10011 | find city | 2 | 3 | 5 |
10031 | find on map | 10 | 2 | 3 |
10046 | GIS API learning | 5 | 1 | 3 |
10053 | make order | 3 | 1 | 5 |
4,参考 使用用例点估算软件成本的项目用例点的估算
因为我们只有一个用户(旅馆系统用户),所以我们让参与者权重(Actor Weight)为0。也就是说,这里我们用例点的
ID | Title | Est | Cal | Reason | UC weight |
---|---|---|---|---|---|
10010 | find hotel | 2 | 2 | simple | |
10011 | find city | 2 | 2 | simple | |
10031 | find on map | 10 | 7 | framework | average |
10046 | GIS API learning | 5 | 4 | simple | |
10053 | make order | 3 | 3 | simple |