請嘗試本文介紹的技巧來(lái)創(chuàng )建有效的 UML 序列圖。本文改編自The Object Primer 2nd Edition的第 6 章。
有一些方法可以幫助您提高 UML 序列圖的質(zhì)量和效力。它們包括:
驗證決策
在開(kāi)發(fā)
保持簡(jiǎn)單
在對第 2 和第 3步建模時(shí),我忽然意識到學(xué)生可能應該使用口令進(jìn)入系統。在向 SME提出了這個(gè)概念后發(fā)覺(jué)我錯了:姓名和學(xué)號組合對于我們的目的來(lái)說(shuō)已經(jīng)足夠唯一,并且學(xué)校也不希望增加復雜的口令管理。這是個(gè)很有意思的決策,因為這是學(xué)校的一個(gè)運作策略,所以可以作為一條商業(yè)規則記載到增補規范中。通過(guò)與SME一起檢驗這個(gè)想法,而不是假定我比他們知道得更多,我避免了“鍍金”的機會(huì ),因而減少了我們小組開(kāi)發(fā)這一系統所需的工作。
繪制消息和返回值
我更喜歡從左至右地繪制消息,從右至左地繪制返回值,盡管這樣對于復雜的對象/類(lèi)來(lái)說(shuō)不總是非常合適。我將消息上的標簽和返回值對齊到離箭頭最近的位置。我不喜歡在序列圖上標出返回值,為的是使圖盡可能地簡(jiǎn)化。不過(guò),始終標出返回值也同樣有效,特別是在序列圖用于設計而不是分析目的時(shí)。(我希望我的分析圖盡量簡(jiǎn)單,而設計圖盡量全面。)在分析期間,我的目標是理解邏輯和確保邏輯的正確性。而在設計期間,則要賦予消息精確的細節,如
將序列圖分層
我喜歡將序列圖從左至右地分層。先標出參與者,然后是控制器類(lèi),然后是用戶(hù)界面類(lèi),最后是商業(yè)類(lèi)。在設計期間,可能需要添加系統類(lèi)和持久類(lèi),我通常將它們放在序列圖的最右側。以這種方式將序列圖分層往往使它們更易于閱讀,并且更容易找出分層邏輯問(wèn)題,例如用戶(hù)界面類(lèi)直接訪(fǎng)問(wèn)持久類(lèi)(在今后的建模技巧中將對此做更多介紹)。
遵循一致的邏輯風(fēng)格
請注意,在
牢記序列圖是動(dòng)態(tài)的
您可能聽(tīng)說(shuō)過(guò)諸如 動(dòng)態(tài)建模和 靜態(tài)建模這樣的術(shù)語(yǔ),其他一些熟悉面向對象建模技術(shù)的開(kāi)發(fā)人員常常會(huì )提到它們。您甚至可能聽(tīng)到過(guò)有關(guān)每種風(fēng)格的優(yōu)點(diǎn)的爭論。
動(dòng)態(tài)建模技術(shù)主要集中在標識系統中的行為,包括序列圖的繪制和活動(dòng)圖的繪制(請參閱
因此實(shí)際上沒(méi)有什么好爭論的 --要想恰如其分地說(shuō)明面向對象系統,同時(shí)需要動(dòng)態(tài)和靜態(tài)建模技術(shù)。
![]() | ||
![]() | ![]() | Scott W. Ambler 是 Ronin International 的總裁,該公司是一家專(zhuān)門(mén)提供面向對象軟件過(guò)程指導、體系結構建模和 Enterprise JavaBean (EJB) 開(kāi)發(fā)的咨詢(xún)企業(yè)。他創(chuàng )作或者與其他人合著(zhù)了幾本有關(guān)面向對象開(kāi)發(fā)的書(shū)籍,包括最近出版的 Object Primer 2nd Edition,該書(shū)詳細介紹了本文所概述的主題??梢酝ㄟ^(guò) scott.ambler@ronin-intl.com 與他聯(lián)系,他的網(wǎng)站位于 www.ambysoft.com。 |
聯(lián)系客服