解析使用Visio繪制UML序列圖六大技巧
本文和大家重點討論一下UML序列圖繪制技巧, 主要從六個方面向大家介紹,相信通過本文的學(xué)習你對繪制UML序列圖的方法有一定的認識。
UML序列圖繪制技巧
請嘗試本文所介紹的技巧來創(chuàng)建有效的UML序列圖。本文改編自TheObjectPrimer2ndEdition的第6章。
有一些方法可以幫助您提高UML序列圖的質(zhì)量和效力。它們包括:
◆和主題問題專家一起驗證決策
◆使解決方案盡量簡單
◆為繪制消息和返回值選擇一種一致而有效的風格
◆將UML序列圖分層
◆遵循一致的邏輯風格
◆牢記UML序列圖是動態(tài)的
驗證決策
在開發(fā)圖1序列圖的過程中,我做了一些對其它模型可能有潛在影響的決策。例如,在對第10步建模時,假設(shè)(大致上是個設(shè)計決策)費用顯示屏幕同時也處理學(xué)生對費用是否可接受所進行的驗證。該決策應(yīng)該由用戶界面原型反映出來,并由主題問題專家(SME)進行驗證。您應(yīng)該和SME(特別是那些對于如何開發(fā)類似模型有著深刻見解的富有經(jīng)驗的人)一起執(zhí)行序列圖的繪制工作。
保持簡單
在對第2和第3步建模時,我忽然意識到學(xué)生可能應(yīng)該使用口令進入系統(tǒng)。在向SME提出了這個概念后發(fā)覺我錯了:姓名和學(xué)號組合對于我們的目的來說已經(jīng)足夠唯一,并且學(xué)校也不希望增加復(fù)雜的口令管理。這是個很有意思的決策,因為這是學(xué)校的一個運作策略,所以可以作為一條商業(yè)規(guī)則記載到增補規(guī)范中。通過與SME一起檢驗這個想法,而不是假定我比他們知道得更多,我避免了“鍍金”的機會,因而減少了我們小組開發(fā)這一系統(tǒng)所需的工作。
繪制消息和返回值
我更喜歡從左至右地繪制消息,從右至左地繪制返回值,盡管這樣對于復(fù)雜的對象/類來說不總是非常合適。我將消息上的標簽和返回值對齊到離箭頭最近的位置。我不喜歡在序列圖上標出返回值,為的是使圖盡可能地簡化。不過,始終標出返回值也同樣有效,特別是在UML序列圖用于設(shè)計而不是分析目的時。(我希望我的分析圖盡量簡單,而設(shè)計圖盡量全面。)在分析期間,我的目標是理解邏輯和確保邏輯的正確性。而在設(shè)計期間,則要賦予消息精確的細節(jié),如圖1中的注釋提醒我對"qualifications()"消息執(zhí)行的任務(wù)。
將序列圖分層
我喜歡將UML序列圖從左至右地分層。先標出參與者,然后是控制器類,然后是用戶界面類,最后是商業(yè)類。在設(shè)計期間,可能需要添加系統(tǒng)類和持久類,我通常將它們放在序列圖的最右側(cè)。以這種方式將序列圖分層往往使它們更易于閱讀,并且更容易找出分層邏輯問題,例如用戶界面類直接訪問持久類(在今后的建模技巧中將對此做更多介紹)。
遵循一致的邏輯風格
請注意,在圖1UML序列圖所示的過程中,邏輯風格做了部分更改。一開始,特別是在登錄時,用戶界面處理一些基本邏輯--而在選擇研習班,以及稍后的驗證時,則是控制器類進行處理。這實際上是個設(shè)計問題。我不會在這個問題上糾纏太久,但和往常一樣,我建議選擇一種適合于您的建模風格,然后始終如一地貫徹在所有序列圖中。
牢記序列圖是動態(tài)的
您可能聽說過諸如動態(tài)建模和靜態(tài)建模這樣的術(shù)語,其他一些熟悉面向?qū)ο蠼<夹g(shù)的開發(fā)人員常常會提到它們。您甚至可能聽到過有關(guān)每種風格的優(yōu)點的爭論。軟件開發(fā)網(wǎng)
動態(tài)建模技術(shù)主要集中在標識系統(tǒng)中的行為,包括序列圖的繪制和活動圖的繪制(請參閱“如何繪制UML活動圖”)以及UML協(xié)作圖的繪制。而靜態(tài)建模則集中在系統(tǒng)的靜態(tài)方面,包括類、它們的屬性,以及類之間的關(guān)聯(lián)。類模型和持久/數(shù)據(jù)模型一樣,都是靜態(tài)建模的主要產(chǎn)物。
因此實際上沒有什么好爭論的--要想恰如其分地說明面向?qū)ο笙到y(tǒng),同時需要動態(tài)和靜態(tài)建模技術(shù)。
【編輯推薦】
- Visio畫UML圖基本操作及技巧解析
- 掌握六大技巧輕松實現(xiàn)UML序列圖繪制
- Java建模:UML序列圖
- 專家指導(dǎo) 如何在UML序列圖中表示分支
- 養(yǎng)成良好的UML序列圖繪制習慣