連載:麵向對象葵花寶典:思想、技巧與實踐(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和POS機的用例,我們會發現SSD和用例基本上是對應的,但並不完全對應,例如:
Ø 用例中第1步是“顧客攜帶選擇好的商品到收銀台”,但SSD中第1步是開始交易;
Ø 用例中“顧客將錢交給收銀員”,但SSD中並沒有對應的步驟;
Ø 用例中最後一步是“買單完成,顧客攜帶商品和小票離開”,但SSD中最後一步是“交易結束”;
為什麼會出現這種不對應的情況呢?
主要原因在於:用例是整個業務的流程,而SSD是站在係統的角度來描述係統與外部對象的交互,這就需要我們在畫SSD的時候做一些技巧性的處理:
Ø 刪除係統無關的業務步驟
例如上述的“顧客將錢交給收銀員”,這個步驟和POS機沒有關係,因此無需體現,再說了,就算你想體現,你也體現不了;
Ø 將業務語言轉換為係統語言
例如用例中是描述“顧客攜帶選擇好的商品到收銀台”,但對應係統來說,這就意味了“交易開始”;同樣,“買單完成,顧客攜帶商品和小票離開”意味著“交易結束”。
有的朋友可能會認為,應該在用例分析的時候就應該詳細寫清楚。例如,“買單完成,顧客攜帶商品和小票離開,收銀員告訴POS機交易結束”。
這種想法本身沒錯,但問題在於,理想和現實總是有差距的,用例不可能那麼完善,甚至有的時候用例可能都存在錯誤,如果我們自己沒有一定的分析和理解能力,完全依賴原始的用例,這樣做是不可能設計出優秀的係統的,甚至連合格的係統都可能做不到。
綜合上麵的分析,我們可以看到,SSD雖然來源於用例,但還需要在用例的基礎上稍微加工一下,使得SSD能夠更加聚焦於“係統”這個主角。
最後小小吐槽一下:用例圖是用來描述係統的,而SSD又是來描述用例的,oh my god,這不是在玩我們麼?
================================================
轉載請注明出處:https://blog.csdn.net/yunhua_lee/article/details/21728601
================================================
最後更新:2017-04-03 12:55:47