1.2 用例的内容
6 i$ R/ F6 l' A/ l7 p8 ?) w R用例图使我们对系统的功能有了一个整体的认知,我们可以知道有哪些参与者会与系统发生交互,每一个参与者需要系统为它提供什么样的服务。用例描述的是参与者与系统之间的对话,但是这个对话的细节并没有在用例图中表述出来,针对每一个用例我们可以用事件流来描述这一对话的细节内容。如在ATM系统中的“提款”用例可以用事件流表述如下:# y! S! F: ]; J: t
提款-基本事件流1 r1 Z7 |0 h- @% S% F, g' V
1. 用户插入信用卡, A" j! i2 Y9 r. H. E
2. 输入密码
0 k3 J9 {. z( u0 ]; D3. 输入提款金额
. N3 q" | a5 p4. 提取现金
" r9 s* q: o2 H& p6 i* q5. 退出系统,取回信用卡0 E# M+ |, f: g0 ]* l# _$ z# p W
但是这只描述了提款用例中最顺利的一种情况,作为一个实用的系统,我们还必须考虑可能发生的各种其他情况,如信用卡无效、输入密码错、用户帐号中的现金余额不够等,所有这些可能发生的各种情况(包括正常的和异常的)被称之为用例的场景(Scenario),场景也被称作是用例的实例(Instance)。在用例的各种场景中,最常见的场景是用基本流(Basic Flow)来描述的,其他的场景则是用备选流(Alternative Flow)来描述。对于ATM系统中的“提款”用例,我们可以得到如下一些备选流:
% ?' b L; B: z9 u2 Z4 F提款-备选事件流
x' l N; z a" H0 R) O# y备选流一:用户可以在基本流中的任何一步选择退出,转至基本流步骤5。
3 k+ A9 S. k; h7 L备选流二:在基本流步骤1中,用户插入无效信用卡,系统显示错误并退出信用卡,用例结束。5 M2 V1 C. \+ u3 R w, ]( x
备选流三:在基本流步骤2中,用户输入错误密码,系统显示错误并提示用户重新输入密码,重新回到基本流步骤2;三次输入密码错误后,信用卡被系统没收,用例结束。
# P! Q) w+ H$ K/ j! G+ r, ?…
: L& f1 H3 u: b通过基本流与备选流的组合,就可以将用例所有可能发生的各种场景全部描述清楚。我们在描述用例的事件流的时候,就是要尽可能地将所有可能的场景都描述出来,以保证需求的完备性。. r/ R. Y5 r$ {7 D( a- ?# h! a
1.3 用例方法的优点
! k. u6 W5 r! `( ]; C用例方法完全是站在用户的角度上(从系统的外部)来描述系统的功能的。在用例方法中,我们把被定义系统看作是一个黑箱,我们并不关心系统内部是如何完成它所提供的功能的。用例方法首先描述了被定义系统有哪些外部使用者(抽象成为Actor),这些使用者与被定义系统发生交互;针对每一参与者,用例方法又描述了系统为这些参与者提供了什么样的服务(抽象成为Use Case),或者说系统是如何被这些参与者使用的。所以从用例图中,我们可以得到对于被定义系统的一个总体印象。 |