無(wú)為

          無(wú)為則可為,無(wú)為則至深!

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks

          請(qǐng)嘗試本文所介紹的技巧來(lái)創(chuàng)建有效的 UML 序列圖。本文改編自 The Object Primer 2nd Edition 的第 6 章。

          有一些方法可以幫助您提高 UML 序列圖的質(zhì)量和效力。它們包括:

          和主題問(wèn)題專(zhuān)家一起驗(yàn)證決策

          使解決方案盡量簡(jiǎn)單

          為繪制消息和返回值選擇一種一致而有效的風(fēng)格

          將序列圖分層

          遵循一致的邏輯風(fēng)格

          牢記序列圖是動(dòng)態(tài)的

           

          驗(yàn)證決策
          在開(kāi)發(fā) 1 序列圖的過(guò)程中,我做了一些對(duì)其它模型可能有潛在影響的決策。例如,在對(duì)第 10 步建模時(shí),假設(shè)(大致上是個(gè)設(shè)計(jì)決策)費(fèi)用顯示屏幕同時(shí)也處理學(xué)生對(duì)費(fèi)用是否可接受所進(jìn)行的驗(yàn)證。該決策應(yīng)該由用戶(hù)界面原型反映出來(lái),并由主題問(wèn)題專(zhuān)家 (SME) 進(jìn)行驗(yàn)證。您應(yīng)該和 SME(特別是那些對(duì)于如何開(kāi)發(fā)類(lèi)似模型有著深刻見(jiàn)解的富有經(jīng)驗(yàn)的人)一起執(zhí)行序列圖的繪制工作。

          保持簡(jiǎn)單
          在對(duì)第 2 和第 3 步建模時(shí),我忽然意識(shí)到學(xué)生可能應(yīng)該使用口令進(jìn)入系統(tǒng)。在向 SME 提出了這個(gè)概念后發(fā)覺(jué)我錯(cuò)了:姓名和學(xué)號(hào)組合對(duì)于我們的目的來(lái)說(shuō)已經(jīng)足夠唯一,并且學(xué)校也不希望增加復(fù)雜的口令管理。這是個(gè)很有意思的決策,因?yàn)檫@是學(xué)校的一個(gè)運(yùn)作策略,所以可以作為一條商業(yè)規(guī)則記載到增補(bǔ)規(guī)范中。通過(guò)與 SME 一起檢驗(yàn)這個(gè)想法,而不是假定我比他們知道得更多,我避免了鍍金的機(jī)會(huì),因而減少了我們小組開(kāi)發(fā)這一系統(tǒng)所需的工作。

          繪制消息和返回值
          我更喜歡從左至右地繪制消息,從右至左地繪制返回值,盡管這樣對(duì)于復(fù)雜的對(duì)象/類(lèi)來(lái)說(shuō)不總是非常合適。我將消息上的標(biāo)簽和返回值對(duì)齊到離箭頭最近的位置。我不喜歡在序列圖上標(biāo)出返回值,為的是使圖盡可能地簡(jiǎn)化。不過(guò),始終標(biāo)出返回值也同樣有效,特別是在序列圖用于設(shè)計(jì)而不是分析目的時(shí)。(我希望我的分析圖盡量簡(jiǎn)單,而設(shè)計(jì)圖盡量全面。)在分析期間,我的目標(biāo)是理解邏輯和確保邏輯的正確性。而在設(shè)計(jì)期間,則要賦予消息精確的細(xì)節(jié),如 1 中的注釋提醒我對(duì) "qualifications()" 消息執(zhí)行的任務(wù)。

          將序列圖分層
          我喜歡將序列圖從左至右地分層。先標(biāo)出參與者,然后是控制器類(lèi),然后是用戶(hù)界面類(lèi),最后是商業(yè)類(lèi)。在設(shè)計(jì)期間,可能需要添加系統(tǒng)類(lèi)和持久類(lèi),我通常將它們放在序列圖的最右側(cè)。以這種方式將序列圖分層往往使它們更易于閱讀,并且更容易找出分層邏輯問(wèn)題,例如用戶(hù)界面類(lèi)直接訪(fǎng)問(wèn)持久類(lèi)(在今后的建模技巧中將對(duì)此做更多介紹)。

          遵循一致的邏輯風(fēng)格
          請(qǐng)注意,在 1 序列圖所示的過(guò)程中,邏輯風(fēng)格做了部分更改。一開(kāi)始,特別是在登錄時(shí),用戶(hù)界面處理一些基本邏輯 -- 而在選擇研習(xí)班,以及稍后的驗(yàn)證時(shí),則是控制器類(lèi)進(jìn)行處理。這實(shí)際上是個(gè)設(shè)計(jì)問(wèn)題。我不會(huì)在這個(gè)問(wèn)題上糾纏太久,但和往常一樣,我建議選擇一種適合于您的建模風(fēng)格,然后始終如一地貫徹在所有序列圖中。

          牢記序列圖是動(dòng)態(tài)的
          您可能聽(tīng)說(shuō)過(guò)諸如動(dòng)態(tài)建模靜態(tài)建模這樣的術(shù)語(yǔ),其他一些熟悉面向?qū)ο蠼<夹g(shù)的開(kāi)發(fā)人員常常會(huì)提到它們。您甚至可能聽(tīng)到過(guò)有關(guān)每種風(fēng)格的優(yōu)點(diǎn)的爭(zhēng)論。

          動(dòng)態(tài)建模技術(shù)主要集中在標(biāo)識(shí)系統(tǒng)中的行為,包括序列圖的繪制和活動(dòng)圖的繪制(請(qǐng)參閱如何繪制 UML 活動(dòng)圖)以及 UML 協(xié)作圖的繪制。而靜態(tài)建模則集中在系統(tǒng)的靜態(tài)方面,包括類(lèi)、它們的屬性,以及類(lèi)之間的關(guān)聯(lián)。類(lèi)模型和持久/數(shù)據(jù)模型一樣,都是靜態(tài)建模的主要產(chǎn)物。

          因此實(shí)際上沒(méi)有什么好爭(zhēng)論的 -- 要想恰如其分地說(shuō)明面向?qū)ο笙到y(tǒng),同時(shí)需要?jiǎng)討B(tài)和靜態(tài)建模技術(shù)。



          凡是有該標(biāo)志的文章,都是該blog博主Caoer(草兒)原創(chuàng),凡是索引、收藏
          、轉(zhuǎn)載請(qǐng)注明來(lái)處和原文作者。非常感謝。

          posted on 2005-12-20 21:19 草兒 閱讀(385) 評(píng)論(1)  編輯  收藏

          Feedback

          # re: UML要點(diǎn)與應(yīng)用 2006-05-25 19:15 pc
          http://www.kpwang.com/pc/view.jsp?board_id=1&article_id=20064823373 java開(kāi)發(fā)的郵件發(fā)送程序 http://www.kpwang.com/pc/view.jsp?board_id=1&article_id=200648232011 Java進(jìn)階學(xué)習(xí):網(wǎng)絡(luò)服務(wù)器編程 http://www.kpwang.com/pc/view.jsp?board_id=1&article_id=20064823176 Java語(yǔ)言的Socket編程 http://www.kpwang.com/pc/view.jsp?board_id=1&article_id=200648231527 Java數(shù)據(jù)報(bào)之失序和丟包  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 大化| 汕尾市| 元阳县| 金阳县| 榆树市| 三都| 镇雄县| 庄浪县| 拉萨市| 泊头市| 文登市| 越西县| 莎车县| 宝山区| 南木林县| 凤冈县| 会泽县| 朝阳县| 巴彦淖尔市| 台中县| 九江县| 神农架林区| 沽源县| 南平市| 潍坊市| 施秉县| 盖州市| 石柱| 乐安县| 柯坪县| 漳平市| 九龙城区| 马尔康县| 股票| 隆回县| 平利县| 疏附县| 鄂托克旗| 桑植县| 桃园市| 中宁县|