2009年5月22日 星期五

V17 Sequence Diagram──一次只能表達一種呼叫順序的圖表

雖然Sequence Diagram是UML的一種標準圖,但是由於它只能表示在某種情況(通常是導向正確結果的流程)下的物件互動順序,沒有辦法表示分歧點判斷後的差異,因此我並不喜歡使用這張圖而寧願用Activity Diagram或流程圖來完整地表達。

有位曾共事的同事在討論時喜歡用Sequence Diagram表達物件的關係,無可否認地依序表達物件的合作關係時是非常清楚的,轉換為Collaboration Diagram時也可以立即知道達成功能時所需物件的關聯,然而無法立即由一張圖就知道整個功能的處理流程是十分不便的。

在不想繪製這張圖時,許多IDE工具提供在執行同時產生Sequence Diagram的功能。在IBM RSA 7.0(含)之前的版本是從頭到尾的呼叫流程都擠在一張圖而無法分割,這樣的圖表更是難以看懂其中的設計。不過這麼鉅細靡遺的圖表放到CMMI的設計規格書裡倒是挺適合的──反正許多規格書都只需要填滿指定的章節就好,並沒有人要求內容的正確性與適當性。

我認為Sequence Diagram如果增加branch node與merge node的定義後就會非常理想,但若是在分析設計Method的同時,把每個Activity都一對一對應到一個呼叫的Method的話,Activity Diagram就等同於Sequence Diagram的意義而不需要再重覆製作。而且這張圖表可以藉由程式流程Data Model自動產生出符合該Method層級的流程圖,比較起來反而可以省下更多製作圖表的時間。(若應用swinlane區隔出每一個不同activity所存在的物件,同樣也能夠產生Collaboration Diagram)

對於這種區解原意的應用,應該會有理論擁護者發出不平的聲音。理論難以應用時應該修改理論使之符合實用,而非堅持大師的想法造成無法進行的瓶頸。

沒有留言:

張貼留言