圖順序圖的得分要點(diǎn))
簡(jiǎn)介這份復(fù)習(xí)資料面向《UML系統(tǒng)分析與設(shè)計(jì)》課程學(xué)習(xí)者系統(tǒng)梳理關(guān)聯(lián)多重度、類(lèi)關(guān)系判定、交互圖對(duì)比、高內(nèi)聚概念、UML圖功能區(qū)分、四種基本關(guān)系以及概念類(lèi)識(shí)別等高頻考點(diǎn)適用于期末備考、考研復(fù)試或考前自測(cè)查漏。資料以1份doc文檔打包容量?jī)H132KB內(nèi)容緊湊可直接打開(kāi)打印便于隨時(shí)翻閱。文檔按試題考點(diǎn)逐條解析不僅給出答案還詳細(xì)解釋原理例如客戶(hù)與訂單的多重度判斷、順序圖與協(xié)作圖在時(shí)間順序與組織結(jié)構(gòu)上的優(yōu)劣比較、領(lǐng)域模型對(duì)軟件設(shè)計(jì)的啟發(fā)以及GRASP設(shè)計(jì)模式、統(tǒng)一過(guò)程階段、FURPS需求分類(lèi)等拓展內(nèi)容。此外針對(duì)類(lèi)圖、用例圖、交互圖、SSD圖等題型還配有簡(jiǎn)要的畫(huà)圖思路和答案要點(diǎn)幫助讀者理解UML各圖在實(shí)際項(xiàng)目中的使用場(chǎng)景而非死記硬背。目前已有404人學(xué)習(xí)下載說(shuō)明該整理對(duì)同類(lèi)復(fù)習(xí)需求具有參考價(jià)值。無(wú)論系統(tǒng)學(xué)習(xí)UML建模還是考前集中突破這份試題詳解都能幫助快速理清知識(shí)脈絡(luò)提升應(yīng)試與設(shè)計(jì)能力。1. 別把 UML 復(fù)習(xí)教材當(dāng)小說(shuō)試題真正在考的是讀圖與建模能力打開(kāi)一套《UML 系統(tǒng)分析與設(shè)計(jì)復(fù)習(xí)試題》不少人第一反應(yīng)是「把概念背熟、把每個(gè)圖的樣子記住」可真到了閉卷作答選擇題能蒙對(duì)簡(jiǎn)答能寫(xiě)幾句建模題卻總是拿不滿(mǎn)分。原因是這類(lèi)復(fù)習(xí)試題的命制邏輯從來(lái)不是考「你見(jiàn)過(guò)這張圖」而是考「給你一段業(yè)務(wù)描述你能不能畫(huà)出對(duì)的圖再給你一張圖你能不能說(shuō)出它錯(cuò)在哪、為什么」。也就是說(shuō)讀圖、譯圖、改圖這三項(xiàng)能力才是得分主線(xiàn)背誦只是入場(chǎng)券。這套文章適合三類(lèi)人期末備考但手里只有課件和真題的人準(zhǔn)備求職筆試、需要快速把 UML 系統(tǒng)分析與設(shè)計(jì)知識(shí)撿起來(lái)的人以及已經(jīng)畫(huà)過(guò)不少圖、卻總在關(guān)系方向、多重度、消息箭頭上被扣分的熟手。我會(huì)直接把復(fù)習(xí)試題拆成題型、考點(diǎn)、建模題的判分點(diǎn)、自測(cè)流程和常見(jiàn)翻車(chē)現(xiàn)場(chǎng)來(lái)寫(xiě)每個(gè)部分都能直接對(duì)應(yīng)到你手里的那張卷子上。2. 從試題反推考點(diǎn)選擇題與簡(jiǎn)答題的高頻落點(diǎn)清單把復(fù)習(xí)試題整體攤開(kāi)看題型結(jié)構(gòu)大體是三種概念辨析類(lèi)選擇題、術(shù)語(yǔ)與區(qū)別類(lèi)簡(jiǎn)答題、讀圖改錯(cuò)與建模題。我習(xí)慣先按題型反推考點(diǎn)而不是按章節(jié)順序去背書(shū)因?yàn)橥豢键c(diǎn)會(huì)被不同題型反復(fù)考只是問(wèn)法不一樣。題型常見(jiàn)占分主要考什么最容易失分的位置選擇題三成上下圖的分類(lèi)、關(guān)系辨析、符號(hào)識(shí)別把包含關(guān)系和擴(kuò)展關(guān)系記反簡(jiǎn)答題兩成上下圖與圖的區(qū)別、術(shù)語(yǔ)解釋、建模步驟只答名詞不展開(kāi)場(chǎng)景建模題 / 讀圖改錯(cuò)四到五成根據(jù)描述畫(huà)圖、給圖挑錯(cuò)關(guān)聯(lián)方向、多重度、消息箭頭這個(gè)比例在不同學(xué)校的卷子里會(huì)有浮動(dòng)但「建模題占大頭」幾乎是一致的。所以復(fù)習(xí)順序應(yīng)當(dāng)是先搞定選擇題里的分類(lèi)和關(guān)系辨析再用簡(jiǎn)答題把「區(qū)別類(lèi)問(wèn)題」的表達(dá)練順最后把大部分時(shí)間留給畫(huà)圖。2.1 結(jié)構(gòu)圖與行為圖選擇題第一步分類(lèi)選擇題里最基礎(chǔ)也最常考的是把 UML 的圖分成結(jié)構(gòu)圖和行為圖兩類(lèi)。結(jié)構(gòu)圖描述系統(tǒng)的靜態(tài)骨架行為圖描述系統(tǒng)在時(shí)間維度上發(fā)生了什么。常見(jiàn)問(wèn)法是「下列哪一組全部屬于結(jié)構(gòu)圖」或者「交互圖包含哪些成員」。結(jié)構(gòu)圖類(lèi)圖、對(duì)象圖、包圖、組件圖、部署圖、復(fù)合結(jié)構(gòu)圖。行為圖用例圖、活動(dòng)圖、狀態(tài)機(jī)圖、順序圖、通信圖、定時(shí)圖、交互概覽圖。一個(gè)容易記錯(cuò)的地方是用例圖。很多人以為用例畫(huà)的是功能列表屬于結(jié)構(gòu)但 UML 里用例圖描述的是參與者與系統(tǒng)之間的交互行為所以歸到行為圖。我的記憶習(xí)慣是「動(dòng)詞找行為」結(jié)構(gòu)圖里的元素大多是名詞行為圖里的元素大多含著動(dòng)作或事件。選擇題還喜歡考順序圖和通信圖的關(guān)系。記住一句話(huà)語(yǔ)義等價(jià)側(cè)重點(diǎn)不同。順序圖強(qiáng)調(diào)時(shí)間順序通信圖強(qiáng)調(diào)對(duì)象之間的鏈接關(guān)系??荚?yán)锍霈F(xiàn)「順序圖能直接轉(zhuǎn)換為通信圖」這種判斷答案是對(duì)的。2.2 關(guān)系辨析包含、擴(kuò)展、聚合、組合、同步異步選擇題和簡(jiǎn)答題的共用考點(diǎn)是關(guān)系辨析。這些關(guān)系是 UML 里最容易翻車(chē)的地方因?yàn)槊致?tīng)起來(lái)接近語(yǔ)義差別卻很大。用例圖里最??嫉氖前P(guān)系和擴(kuò)展關(guān)系。包含關(guān)系表示基用例執(zhí)行過(guò)程中一定會(huì)用到被包含的用例它是公共的、必需的子流程畫(huà)成虛線(xiàn)箭頭從基用例指向被包含用例。擴(kuò)展關(guān)系表示在某些條件下才插入的可選或異常分支畫(huà)成虛線(xiàn)箭頭從擴(kuò)展用例指向基用例的擴(kuò)展點(diǎn)。類(lèi)圖里最??嫉氖蔷酆虾徒M合。聚合是整體與部分可以分開(kāi)存在比如部門(mén)和員工部門(mén)沒(méi)了員工還在組合是整體與部分生命周期綁定比如訂單和訂單項(xiàng)訂單刪了訂單項(xiàng)沒(méi)有獨(dú)立存在的意義。畫(huà)法上一個(gè)用空心菱形一個(gè)用實(shí)心菱形。順序圖里最??嫉氖峭较ⅰ惒较⒑头祷叵?。同步消息用實(shí)線(xiàn)實(shí)心箭頭發(fā)送后要等對(duì)方返回異步消息用實(shí)線(xiàn)開(kāi)放箭頭發(fā)送完繼續(xù)往下走返回消息用虛線(xiàn)箭頭。選擇題經(jīng)常給一個(gè)箭頭畫(huà)法讓你選它表示什么這時(shí)候只要認(rèn)準(zhǔn)「實(shí)心箭頭是請(qǐng)求、虛線(xiàn)是返回、開(kāi)放箭頭多半是異步」就能定位。2.3 高頻簡(jiǎn)答題的三段式答法簡(jiǎn)答題的題目來(lái)來(lái)去去就那么幾道只是換一個(gè)圖讓你比較。常見(jiàn)的有類(lèi)圖和 ER 圖的區(qū)別、狀態(tài)圖和活動(dòng)圖的區(qū)別、順序圖和通信圖的區(qū)別、用例圖和活動(dòng)圖在需求分析中的分工。我一般建議用三段式回答先一句話(huà)定位這張圖屬于哪一類(lèi)、用來(lái)解決什么問(wèn)題再寫(xiě)兩點(diǎn)本質(zhì)區(qū)別最后補(bǔ)一個(gè)使用場(chǎng)景說(shuō)明什么情況下選它。比如問(wèn)狀態(tài)圖和活動(dòng)圖的區(qū)別可以這樣答狀態(tài)圖屬于行為圖用來(lái)描述單個(gè)對(duì)象在生命周期內(nèi)的事件驅(qū)動(dòng)變化核心是狀態(tài)、事件和遷移活動(dòng)圖描述的是一段業(yè)務(wù)流程的執(zhí)行順序核心是活動(dòng)、分支和并發(fā)。選型場(chǎng)景上描述訂單從創(chuàng)建到完成的狀態(tài)流轉(zhuǎn)用狀態(tài)圖描述一次請(qǐng)假審批的流程用活動(dòng)圖。這個(gè)答法不需要長(zhǎng)篇大論但每一條都踩在得分點(diǎn)上。閱卷時(shí)通常是按要點(diǎn)給分一句話(huà)定位給一分兩點(diǎn)區(qū)別給兩分場(chǎng)景例子再給一分比堆一段概念要穩(wěn)得多。3. 建模題怎么不丟分用例圖、類(lèi)圖、順序圖的答題順序與判分點(diǎn)建模題是復(fù)習(xí)試題里的重頭戲也是大多數(shù)人覺(jué)得自己「畫(huà)出來(lái)了但分不高」的部分。我批過(guò)不少模擬卷發(fā)現(xiàn)失分往往不是因?yàn)閳D丑而是因?yàn)殛P(guān)系方向錯(cuò)、多重度漏標(biāo)、消息箭頭用錯(cuò)這些恰恰是閱卷時(shí)最容易被盯住的硬傷。建模題有個(gè)共性邏輯先讀描述再找元素最后標(biāo)關(guān)系。不管畫(huà)哪種圖都不要一上來(lái)就畫(huà)框連線(xiàn)先把題干里的關(guān)鍵對(duì)象圈出來(lái)。下面按三種最常見(jiàn)的建模題分別說(shuō)清楚答題順序和判分點(diǎn)。3.1 用例圖從需求描述里撈參與者和用例用例圖的第一步是找參與者。參與者不一定是人也可以是外部系統(tǒng)或定時(shí)器。判斷標(biāo)準(zhǔn)是它是否與系統(tǒng)發(fā)生直接交互。第二步是找用例題干里的動(dòng)詞短語(yǔ)基本就是候選用例命名規(guī)范是「動(dòng)詞賓語(yǔ)」比如「提交領(lǐng)用申請(qǐng)」「審批借用記錄」。舉個(gè)例子一段典型的建模題描述是設(shè)備管理員負(fù)責(zé)維護(hù)設(shè)備臺(tái)賬員工可以發(fā)起領(lǐng)用申請(qǐng)主管審批通過(guò)后由倉(cāng)庫(kù)管理員辦理出庫(kù)。這里參與者有三個(gè)設(shè)備管理員、員工、主管、倉(cāng)庫(kù)管理員。用例則包括維護(hù)設(shè)備臺(tái)賬、發(fā)起領(lǐng)用申請(qǐng)、審批申請(qǐng)、辦理出庫(kù)。畫(huà)圖時(shí)的判分點(diǎn)有三處。第一參與者畫(huà)在系統(tǒng)邊界框外面用例畫(huà)在框里面邊界框標(biāo)識(shí)出系統(tǒng)名稱(chēng)。第二用例命名必須是動(dòng)詞短語(yǔ)寫(xiě)成「設(shè)備」或「臺(tái)賬」這類(lèi)名詞會(huì)被扣分。第三關(guān)系要不要標(biāo)包含或擴(kuò)展要謹(jǐn)慎只有存在公共子流程才用包含只有存在可選分支才用擴(kuò)展。有一個(gè)判斷包含關(guān)系的小技巧把兩個(gè)用例放進(jìn)去看能不能拆開(kāi)。如果每個(gè)用例執(zhí)行時(shí)都必經(jīng)某一段那這段就是被包含用例如果某段只是偶爾走、或者走錯(cuò)了才觸發(fā)那就是擴(kuò)展用例。比如「發(fā)起領(lǐng)用申請(qǐng)」和「校驗(yàn)庫(kù)存」之間如果每次申請(qǐng)都要校驗(yàn)庫(kù)存就畫(huà)成包含關(guān)系。3.2 類(lèi)圖名詞抽類(lèi)、關(guān)聯(lián)方向與多重度類(lèi)圖建模題的來(lái)源通常和用例圖是同一段描述所以第一步還是圈名詞。題干里的名詞都可能是候選類(lèi)但要經(jīng)過(guò)兩輪過(guò)濾第一輪去掉純屬性類(lèi)名詞比如編號(hào)、日期、數(shù)量它們更適合做屬性而不是類(lèi)第二輪合并同名異義和同義異名的概念比如「員工」和「申請(qǐng)人」在同一場(chǎng)景里指同一類(lèi)角色就要合并。過(guò)濾后得到的候選類(lèi)開(kāi)始畫(huà)關(guān)聯(lián)。關(guān)聯(lián)方向是建模題里最容易被扣分的地方。我習(xí)慣用一個(gè)句式自檢從 A 讀到 B每個(gè) A 對(duì)應(yīng)多少個(gè) B這句話(huà)通順?lè)较蚓蛯?duì)了。比如部門(mén)和員工讀作「一個(gè)部門(mén)對(duì)應(yīng) 1 到多個(gè)員工」關(guān)聯(lián)方向就是部門(mén)指向員工多重度標(biāo)在員工那端。多重度是另一個(gè)判分重點(diǎn)。1 表示恰好一個(gè)0..1 表示零個(gè)或一個(gè)* 表示零到多個(gè)1..* 表示一個(gè)到多個(gè)。畫(huà)的時(shí)候最常見(jiàn)的問(wèn)題是把多重度標(biāo)在錯(cuò)誤的一端或者干脆不標(biāo)。我會(huì)在答題時(shí)養(yǎng)成習(xí)慣每條關(guān)聯(lián)的兩端都檢查一遍先從整體端讀一遍再?gòu)牟糠侄俗x一遍確認(rèn)語(yǔ)義一致。如果題干里出現(xiàn)了整體和部分共生死的意思比如訂單刪除后訂單項(xiàng)沒(méi)有意義就畫(huà)組合關(guān)系實(shí)心菱形在整體端如果只是松散地歸屬比如部門(mén)里包含員工員工可以調(diào)崗就畫(huà)聚合空心菱形。繼承關(guān)系和依賴(lài)關(guān)系也要留意出現(xiàn)「是一種」的描述畫(huà)泛化出現(xiàn)「臨時(shí)使用」的描述畫(huà)依賴(lài)。3.3 順序圖生命線(xiàn)、激活條、消息方向順序圖的建模題通常給一段場(chǎng)景描述要求畫(huà)出多個(gè)對(duì)象之間的交互過(guò)程。答題順序是先確定參與交互的對(duì)象再?gòu)纳系较屡派€(xiàn)然后按時(shí)間順序畫(huà)消息最后檢查返回消息和組合片段。消息方向的判分點(diǎn)主要在箭頭上。同步調(diào)用畫(huà)實(shí)線(xiàn)實(shí)心箭頭返回結(jié)果畫(huà)虛線(xiàn)箭頭異步消息畫(huà)實(shí)線(xiàn)開(kāi)放箭頭。很多人在返回消息上畫(huà)成實(shí)心箭頭一道題從第三筆開(kāi)始就錯(cuò)了。另外消息的語(yǔ)義方向是從發(fā)送方指向接收方不是從接收方指向發(fā)送方畫(huà)反了整條交互邏輯就亂了。激活條也是判分點(diǎn)。對(duì)象從接收消息開(kāi)始到處理完返回消息為止生命線(xiàn)上要畫(huà)一個(gè)細(xì)長(zhǎng)矩形表示對(duì)象在這段時(shí)間內(nèi)處于激活狀態(tài)。沒(méi)有激活條的順序圖在閱卷時(shí)會(huì)被視為沒(méi)掌握基本要素。循環(huán)和分支用組合片段表示。循環(huán)用 loop多條件分支用 alt可選步驟用 opt。這些操作符要寫(xiě)在組合片段的左上角并標(biāo)注條件。如果題干里有「重復(fù)查詢(xún)直到成功」「根據(jù)角色走不同流程」這類(lèi)描述沒(méi)有對(duì)應(yīng)組合片段一定會(huì)被扣分。4. 自己出模擬題從往年卷到可閉卷自測(cè)的最小流程很多同學(xué)復(fù)習(xí) UML 系統(tǒng)分析與設(shè)計(jì)時(shí)手里只有一兩套復(fù)習(xí)試題做完就沒(méi)了然后開(kāi)始到處找新題。我的做法不太一樣我會(huì)用「換殼法」把往年的試題改寫(xiě)出一套變體卷考點(diǎn)保持不變只換業(yè)務(wù)領(lǐng)域和名詞這樣訓(xùn)練出來(lái)的不是對(duì)某張圖的記憶而是對(duì)建模過(guò)程的遷移能力。具體流程分三步先整理考點(diǎn)清單再改寫(xiě)題干場(chǎng)景最后閉卷自測(cè)并對(duì)照判分點(diǎn)估分。整套流程不需要大量題庫(kù)一套往年卷就能生成五六套變體。4.1 換殼法換領(lǐng)域不換結(jié)構(gòu)先拿出一道做過(guò)的建模題把題干里的業(yè)務(wù)名詞全部替換成另一個(gè)領(lǐng)域的概念同時(shí)保留參與者數(shù)量、關(guān)系結(jié)構(gòu)、生命周期這些核心骨架。比如原題是圖書(shū)借閱場(chǎng)景借閱人、圖書(shū)、借閱記錄可以換成實(shí)驗(yàn)室設(shè)備領(lǐng)用場(chǎng)景員工、設(shè)備、領(lǐng)用記錄。做換殼對(duì)照時(shí)要確??键c(diǎn)沒(méi)變。原領(lǐng)域要素?fù)Q殼后的要素保留的考點(diǎn)借閱人員工參與者識(shí)別圖書(shū)設(shè)備候選類(lèi)過(guò)濾借閱記錄領(lǐng)用記錄組合關(guān)系續(xù)借可選延期可選擴(kuò)展關(guān)系超期罰款逾期提醒狀態(tài)遷移我自己驗(yàn)證過(guò)換殼后的卷子做起來(lái)比原題更容易暴露問(wèn)題因?yàn)閳?chǎng)景不熟沒(méi)法靠印象里的答案去蒙只能靠對(duì)建模規(guī)則的理解一步步推。4.2 用腳本從題干池隨機(jī)組卷復(fù)習(xí)到后期我習(xí)慣把選擇題和簡(jiǎn)答題整理成一個(gè)題干池每次隨機(jī)抽一組來(lái)自測(cè)避免總是先做到熟悉的題。下面這個(gè)腳本可以幫你在本地快速生成一套變體卷。# 隨機(jī)組卷腳本從題干池抽題按題型控制數(shù)量 import random # 題干池示例每個(gè)條目含題干、題型、考點(diǎn) question_pool [ {text: 下列哪張圖屬于行為圖, type: choice, point: 圖的分類(lèi)}, {text: 包含關(guān)系和擴(kuò)展關(guān)系的區(qū)別是什么, type: short, point: 用例關(guān)系}, {text: 聚合和組合的生命周期差異在哪里, type: short, point: 類(lèi)圖關(guān)系}, {text: 順序圖中返回消息的箭頭畫(huà)法是, type: choice, point: 消息類(lèi)型}, {text: 根據(jù)描述畫(huà)出用例圖, type: model, point: 用例建模}, # 實(shí)際使用時(shí)按自己的題庫(kù)繼續(xù)往下加 ] def make_paper(pool, choice8, short2, model1, seedNone): # 設(shè)置隨機(jī)種子便于同一套題可復(fù)現(xiàn) if seed is not None: random.seed(seed) choices [q for q in pool if q[type] choice] shorts [q for q in pool if q[type] short] models [q for q in pool if q[type] model] paper [] paper random.sample(choices, min(choice, len(choices))) paper random.sample(shorts, min(short, len(shorts))) paper random.sample(models, min(model, len(models))) random.shuffle(paper) # 打亂題型順序模擬真實(shí)卷面 return paper paper make_paper(question_pool, choice2, short2, model1, seed42) for i, q in enumerate(paper, 1): print(f{i}. [{q[type]}] {q[text]}考點(diǎn){q[point]})這段腳本的邏輯是先按題型過(guò)濾題干池再?gòu)拿款?lèi)題里隨機(jī)抽取指定數(shù)量最后整體打亂順序避免每次自測(cè)時(shí)題型固定排列。參數(shù)里 choice 控制選擇題數(shù)量short 控制簡(jiǎn)答題數(shù)量model 控制建模題數(shù)量seed 用來(lái)固定隨機(jī)結(jié)果方便你隔幾天重做同一套題時(shí)能對(duì)比答案。用這種方法組出來(lái)的卷子每次的題目組合都不一樣但對(duì)考點(diǎn)的覆蓋率是可控的。需要注意的是這個(gè)腳本只負(fù)責(zé)抽題不負(fù)責(zé)評(píng)分。自測(cè)時(shí)建議把答案單獨(dú)寫(xiě)在另一張紙上做完再對(duì)照判分點(diǎn)估分否則眼睛會(huì)不自覺(jué)地往答案上瞟自測(cè)效果會(huì)大打折扣。4.3 閉卷自測(cè)與兩遍評(píng)分法閉卷做完一套變體卷后我建議用兩遍評(píng)分法來(lái)判分。第一遍只看要點(diǎn)完整性圖里該有的元素有沒(méi)有簡(jiǎn)答的三段式結(jié)構(gòu)是否齊全這遍給的是「要素分」。第二遍把自己當(dāng)成閱卷老師專(zhuān)門(mén)挑三類(lèi)硬傷關(guān)系方向是否畫(huà)反、多重度是否漏標(biāo)、消息箭頭是否用錯(cuò)。這遍扣的是「準(zhǔn)確分」。兩遍分?jǐn)?shù)都記錄在考點(diǎn)清單后面。凡是第二遍被扣分的地方回到對(duì)應(yīng)章節(jié)重新看一遍規(guī)則然后把錯(cuò)題回填到題干池里下一輪自測(cè)時(shí)加大這類(lèi)題目的抽取權(quán)重。我一般會(huì)保持每周一次閉卷自測(cè)建模題每題嚴(yán)格限制在十五分鐘內(nèi)時(shí)間一到就停筆這樣能提前適應(yīng)考場(chǎng)的節(jié)奏。5. 復(fù)習(xí)與答題中最容易翻車(chē)的四個(gè)坑現(xiàn)象、原因、補(bǔ)救寫(xiě)法這部分內(nèi)容來(lái)自我批改模擬卷和復(fù)盤(pán)真題的踩坑記錄。每條都是「現(xiàn)象 → 原因 → 解決」的順序?qū)懩憧梢栽趶?fù)習(xí)階段對(duì)照自查也可以在考前快速過(guò)一遍。5.1 把類(lèi)圖畫(huà)成數(shù)據(jù)庫(kù)表現(xiàn)象是畫(huà)類(lèi)圖時(shí)類(lèi)名上寫(xiě)的是「員工表」屬性里寫(xiě)了主鍵 id、外鍵 department_id還標(biāo)了 VARCHAR、INT 這類(lèi)數(shù)據(jù)類(lèi)型。整張圖看起來(lái)像一張 ER 圖或者建表語(yǔ)句。閱卷時(shí)這類(lèi)圖會(huì)被判定為沒(méi)有掌握領(lǐng)域模型和設(shè)計(jì)模型的層次。原因是沒(méi)有區(qū)分「數(shù)據(jù)建?!购汀笇?duì)象建模」。類(lèi)圖描述的是類(lèi)的職責(zé)、屬性和操作之間的關(guān)系屬性應(yīng)該寫(xiě)業(yè)務(wù)概念比如員工編號(hào)、姓名、所屬部門(mén)而不是數(shù)據(jù)庫(kù)字段和類(lèi)型。解決方法是畫(huà)類(lèi)圖前先問(wèn)一句這個(gè)屬性是業(yè)務(wù)上關(guān)心的還是存儲(chǔ)上需要的業(yè)務(wù)關(guān)心的留下存儲(chǔ)細(xì)節(jié)全部去掉。部門(mén)與員工之間畫(huà)關(guān)聯(lián)并標(biāo)注多重度即可不要畫(huà)成外鍵連線(xiàn)。5.2 包含關(guān)系和擴(kuò)展關(guān)系用反現(xiàn)象是題干里寫(xiě)「員工提交領(lǐng)用申請(qǐng)如果庫(kù)存不足則進(jìn)入補(bǔ)貨流程」有些同學(xué)的用例圖會(huì)畫(huà)成「提交領(lǐng)用申請(qǐng)」包含「補(bǔ)貨流程」或者反過(guò)來(lái)把必要的登錄步驟畫(huà)成擴(kuò)展。原因是對(duì)定義只背了關(guān)鍵詞沒(méi)理解觸發(fā)條件。包含關(guān)系是每次都會(huì)執(zhí)行的公共子流程擴(kuò)展關(guān)系是滿(mǎn)足特定條件才進(jìn)入的可選分支。補(bǔ)貨流程明顯是庫(kù)存不足時(shí)才觸發(fā)所以它應(yīng)該是擴(kuò)展關(guān)系。解決方法是畫(huà)完關(guān)系后做一次場(chǎng)景模擬沿著主流程走一遍看這個(gè)分支是不是每次都經(jīng)過(guò)。每次都經(jīng)過(guò)的畫(huà)包含偶爾進(jìn)入、條件觸發(fā)的畫(huà)擴(kuò)展。方向也不要記反擴(kuò)展關(guān)系的箭頭從擴(kuò)展用例指向基用例方向畫(huà)反同樣會(huì)扣分。5.3 順序圖里返回消息畫(huà)成實(shí)線(xiàn)箭頭現(xiàn)象是對(duì)象 A 調(diào)用對(duì)象 B 的方法B 處理完返回結(jié)果這條返回消息被畫(huà)成了和調(diào)用消息一樣的實(shí)線(xiàn)實(shí)心箭頭。整張圖看起來(lái)消息都在一個(gè)方向流動(dòng)但語(yǔ)義全錯(cuò)了。原因是對(duì)消息類(lèi)型只記住了名稱(chēng)沒(méi)有記住箭頭約定的區(qū)分。同步調(diào)用、異步調(diào)用和返回消息各有各的畫(huà)法閱卷時(shí)首先看的就是箭頭。解決方法是把三種畫(huà)法固定成一個(gè)口訣刻在腦子里實(shí)心箭頭是同步請(qǐng)求開(kāi)放箭頭是異步信號(hào)虛線(xiàn)箭頭是返回結(jié)果。畫(huà)完順序圖后逐條檢查箭頭凡是「對(duì)方答復(fù)」性質(zhì)的消息一律改成虛線(xiàn)。5.4 狀態(tài)圖畫(huà)成流程圖現(xiàn)象是題目要求畫(huà)某設(shè)備的狀態(tài)圖結(jié)果畫(huà)出來(lái)一張帶開(kāi)始、判斷、結(jié)束的活動(dòng)流程圖從上到下堆了一排步驟每個(gè)步驟之間用箭頭連起來(lái)。原因是沒(méi)有抓住狀態(tài)圖和活動(dòng)圖的本質(zhì)區(qū)別。狀態(tài)圖是事件驅(qū)動(dòng)的關(guān)注單個(gè)對(duì)象在生命周期中可能處于哪些狀態(tài)以及什么事件觸發(fā)狀態(tài)遷移活動(dòng)圖是流程驅(qū)動(dòng)的關(guān)注多個(gè)活動(dòng)之間的先后順序和分支合并。解決方法是畫(huà)狀態(tài)圖前先列一張狀態(tài)表把對(duì)象可能處于的狀態(tài)名詞都寫(xiě)出來(lái)比如待借出、已借出、已歸還、已報(bào)廢再為每個(gè)遷移標(biāo)上觸發(fā)事件。如果畫(huà)出的是動(dòng)詞步驟而不是名詞狀態(tài)說(shuō)明思路還停留在流程圖階段。6. 考前一晚的白紙驗(yàn)證法十五分鐘畫(huà)一張圖的自查習(xí)慣復(fù)習(xí)到考前一晚很多人會(huì)選擇把復(fù)習(xí)試題從頭到尾再看一遍。我不建議這么做因?yàn)榭创鸢笇儆诒粍?dòng)輸入到考場(chǎng)上能不能主動(dòng)輸出是另一回事。我養(yǎng)成的習(xí)慣是白紙驗(yàn)證法拿一張空白 A4 紙不看任何資料隨機(jī)抽三個(gè)考點(diǎn)每個(gè)考點(diǎn)閉卷畫(huà)一張圖時(shí)間限制在十五分鐘內(nèi)。驗(yàn)證清單固定為四問(wèn)圖的要素是否齊全比如類(lèi)圖有沒(méi)有標(biāo)多重度順序圖有沒(méi)有畫(huà)激活條。關(guān)系種類(lèi)是否標(biāo)對(duì)包含擴(kuò)展、聚合組合、同步異步有沒(méi)有混用。方向是否可讀把每條關(guān)系讀成一句通順的中文。能不能用一句話(huà)向別人解釋這張圖畫(huà)了什么。如果四問(wèn)都能答上來(lái)這個(gè)考點(diǎn)基本是穩(wěn)的。如果哪一問(wèn)卡住了立刻翻對(duì)應(yīng)章節(jié)補(bǔ)上后再閉卷重畫(huà)一次。我當(dāng)年復(fù)習(xí)時(shí)白紙默畫(huà)最常暴露的問(wèn)題是順序圖里返回消息箭頭畫(huà)錯(cuò)第一遍檢查時(shí)自己都沒(méi)發(fā)現(xiàn)直到對(duì)照判分點(diǎn)列表才看出來(lái)。后來(lái)我把判分點(diǎn)全部變成白紙上的打勾項(xiàng)畫(huà)完先自查再翻答案這個(gè)習(xí)慣讓建模題的正確率明顯穩(wěn)定下來(lái)??记澳且煌砼c其抱著復(fù)習(xí)試題反復(fù)看不如用一小時(shí)把高頻考點(diǎn)全部默畫(huà)一遍。畫(huà)錯(cuò)的地方就是你第二天最容易丟分的地方提前暴露比在考場(chǎng)上暴露劃算得多。希望這個(gè)白紙驗(yàn)證法能幫到你也祝你在 UML 系統(tǒng)分析與設(shè)計(jì)的考試?yán)锷俨葞讉€(gè)坑把建模題的每一分都拿穩(wěn)。本文還有配套的精品資源點(diǎn)擊獲取