天天看點

連載:面向對象葵花寶典:思想、技巧與實踐(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

繼續閱讀