天天看点

连载:面向对象葵花宝典:思想、技巧与实践(21) - SSD

用例图是用来描述系统的,而ssd(系统序列图)又是来描述用例的,oh my god,这不是在玩我们么?

连载:面向对象葵花宝典:思想、技巧与实践(21) - SSD

system sequence diagram,缩写为ssd(注意不要与ssd硬盘混淆),中文翻译为“系统顺序图”,主要用于描述某个用例的某个分支场景下,外部参与者与系统的交互过程。简单来说:ssd就是用例的可视化描述。

细心的朋友可能会发现,前面我们在介绍“用例方法”的时候说不需要画图,这里又说ssd是用来描述用例的,这不是互相冲突了么?

事实上并不冲突,原因在于:用例方法分析需求的时候,确实不需要图;但用例方法分析完成后得到的用例,我们可以使用ssd让用例更直观一些。

ssd有几点需要特别注意:

1)ssd不是标准的uml图形:uml只有顺序图、用例图,但是没有一个专门的“系统顺序图”;之所以叫做“系统”顺序图,是因为这个顺序图中只有两类对象:系统、与系统交互的对象;

2)ssd是用来描述某个用例的某个分支,而不是描述系统的结构;

3)画ssd的时候,整个系统被当做一个黑盒,不涉及系统的分解;

4)不需要为每个用例每个分支都画一个ssd,挑出关键的用例和分支即可;

有的朋友可能会有疑问:如何知道哪些用例的哪些分支是关键的呢?

我的答案是:你认为是关键的你就画,你认为不是关键的你就不画;如果你认为所有的用例都很关键,那么所有的用例你都画即可,只要你不怕麻烦或者工作量太大;如果你认为所有的用例都很简单,那么一个都不画也可以。至于你的判断是否正确,主要靠经验积累,当经验不够的时候,也可以求助有经验的人。

以pos机为例,假如我们认为pos机的正常处理流程是关键分支,则对应的ssd如下:

连载:面向对象葵花宝典:思想、技巧与实践(21) - SSD

仔细对照ssd和pos机的用例,我们会发现ssd和用例基本上是对应的,但并不完全对应,例如:

Ø 用例中第1步是“顾客携带选择好的商品到收银台”,但ssd中第1步是开始交易;

Ø 用例中“顾客将钱交给收银员”,但ssd中并没有对应的步骤;

Ø 用例中最后一步是“买单完成,顾客携带商品和小票离开”,但ssd中最后一步是“交易结束”;

为什么会出现这种不对应的情况呢?

主要原因在于:用例是整个业务的流程,而ssd是站在系统的角度来描述系统与外部对象的交互,这就需要我们在画ssd的时候做一些技巧性的处理:

Ø 删除系统无关的业务步骤

例如上述的“顾客将钱交给收银员”,这个步骤和pos机没有关系,因此无需体现,再说了,就算你想体现,你也体现不了;

Ø 将业务语言转换为系统语言

例如用例中是描述“顾客携带选择好的商品到收银台”,但对应系统来说,这就意味了“交易开始”;同样,“买单完成,顾客携带商品和小票离开”意味着“交易结束”。

有的朋友可能会认为,应该在用例分析的时候就应该详细写清楚。例如,“买单完成,顾客携带商品和小票离开,收银员告诉pos机交易结束”。

这种想法本身没错,但问题在于,理想和现实总是有差距的,用例不可能那么完善,甚至有的时候用例可能都存在错误,如果我们自己没有一定的分析和理解能力,完全依赖原始的用例,这样做是不可能设计出优秀的系统的,甚至连合格的系统都可能做不到。

综合上面的分析,我们可以看到,ssd虽然来源于用例,但还需要在用例的基础上稍微加工一下,使得ssd能够更加聚焦于“系统”这个主角。

最后小小吐槽一下:用例图是用来描述系统的,而ssd又是来描述用例的,oh my god,这不是在玩我们么?

================================================ 

转载请注明出处:http://blog.csdn.net/yunhua_lee/article/details/21728601

继续阅读