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

简介:

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


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

 

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

 

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

 

SSD有几点需要特别注意:

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

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

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

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

 

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

 

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

 

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

 用例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
================================================ 


相关文章
|
2月前
|
设计模式 算法 开发者
探索编程语言中的设计模式:从理论到实践
设计模式,这一编程世界中的灯塔,为无数开发者照亮了复杂问题解决的道路。本文将深入探讨设计模式在编程实践中的运用,以代码示例揭示其背后的智慧。无论你是初学者还是资深开发者,都能在这里找到启发和共鸣。让我们一起领略设计模式的魅力,开启编程世界的新篇章!
面向对象-抽象性思想(知识整理)
面向对象-抽象性思想(知识整理)
|
数据库 测试技术 存储
机房收费重构——关于面向对象和分层的纠结
      机房收费系统的重构已经开始很久了,最近两天才感到有了一点儿头绪。       对这次重构,刚开始计划的是先做数据库,然后优化下,列出每个窗体对表的访问关系,抽出常用的访问作为存储过程,然后把访问数据库的常用方法封装成SqlHelper.这部分就是数据库的部分。
932 0