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