1. 程式人生 > >連載:面向物件葵花寶典:思想、技巧與實踐(21)

連載:面向物件葵花寶典:思想、技巧與實踐(21)

用例圖是用來描述系統的,而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
================================================