專家指導 如何在UML序列圖中表示分支
本節向大家介紹一下如何用在UML序列圖中表示分支,引起分支的原因主要有兩個,在這里和大家分享一下,希望對你在以后的學習過程中能有所幫助。下面就讓我們一起來看一下詳細介紹吧。
如何用在UML序列圖中表示分支
考慮引起分支的原因:
1。異常處理,比如接收到錯誤的消息,網絡斷開等
2。復雜的業務流程,比如在訂單處理程序中,對于vip客戶和普通用戶可能分別使用不同的數據,而最后還要統一進入計價和發貨流程
不同的情況下,分支的流程可能很大或很小,很難有完善的辦法來滿足所有的情況。
原始的方法是在UML序列圖中放棄分支,因為引起分支最主要的原因是異常情況,而異常情況的處理一般都很簡單,或者進入標準的處理辦法,這樣就可以在發生異常的地方加個小小的注釋,這樣既不影響整體流程,又保證了不丟失細節信息。然而難于處理的是正常的分支,都要有很復雜的處理,
UML2.0提到了兩種方法來臨時解決分支的概念,一種是在順序圖中產生分支的地方插入一個引用,對于每個分支,分別用一個單獨的序列圖來表示,這種方法要求分支后不再聚合,并且各分支間沒有太多具體關聯。這種方法類似于函數的重用,比如某個分支在很多用例中被用到,可以在各個序列圖中引用它而避免重復。代價則是UML序列圖變得多而繁雜,讓人看起來不能夠一目了然。
對于非常復雜的業務來說,可以采用流程圖和順序圖相互輔助的方法來表達完整的信息,順序圖側重組件交互的時間關系,活動圖側重組件交互的空間關系,流程圖側重控制流程的時間關系,我一直覺得UML中的活動圖和狀態圖過于細節,沒辦法和順序圖很好的結合(也許是功力不夠:))。
再進一步說,在實現真正的MDA之前,采用UML來描述的目的是為了更好的理解業務和實現,而業務和實現是一個立體的景象,空間和時間都是它的一個方面,因此用靜態的順序圖或者流程圖沒辦法同時表示它的時間和空間。我所想到的一個辦法是:在組件圖上用動畫效果演示交互流程,就像圍棋打譜程序中對于參考圖的處理。期待這樣的工具早點出來。
【編輯推薦】