UML 10 種常見的域建模錯誤

2021-09-21 12:15:53 字數 2105 閱讀 4792

technorati 標籤: 

uml這段時間在學 uml 建模,uml 10 中常見的域建模錯誤摘錄如下:

1.立即關聯指定多重度,確保每個關聯都有明確的多重度

類圖上有些關聯度表示的是一對一的關係,而其他關聯表示的是一對多的關係。這兩種關係都被稱為多重度。然而,不應在域建模期間就確定多重度 —— 這將占用大量的時間,是導致分析癱瘓的主要原因之一。

2.對名詞和動詞做過度的分析,而背離初衷

對名詞尤其是動詞作過度的分析,將很可能處於過低的抽象層次上,嚴重者還會有神經崩毀的危險(當然這是玩笑話)。

3.不對用例和時序圖進行研究,就將操作分配給類

我們提倡在域建模過程中使用要求最低的的方式。事實上,我們是想告訴你,不應該在域建模期間將任何操作分配給類。因為,在專案的該階段還沒有足夠的資訊,無法做出正確的決策。進入互動模式後,你將擁有足夠的資訊(至少希望如此),

4.在確保已滿足使用者需求之前,對**進行優化以提高重用性

物件和類的通用程度越高,在其他專案中重用他們的可能性就越大。乙個完整地類在理論上是可以在任意數目的環境(context)中重用的,然而要實現完整性和重用性,必須考慮屬性和操作,而前面已經指出了不應在域建模期間將操作分配給類的原因,因此在完成高階類圖期間,將過多的精力用於提供類的可重用性是不明智的,應快速完成域建模的工作,以便有時間確保你構建的系統正是使用者所需要的。

5.對於每個部分(part-of)關聯,就使用聚集還是組合而爭論不休

在 uml 中,有這麼一種說法,「按引用擁有」關係是聚集,而「按值擁有」關係是一種被稱為組合的「強」形式的聚集,在這種關係中,「部分」類歸父類「所有」:父類被刪除後,其所有的子物件示例將自動刪除。在域建模期間檢視區分聚集和組合無疑是費力不討好的。在域建模期間,更傾向於使用簡單的聚集。使用聚集還是組合是乙個詳細設計方面的問題。

6.未對問題空間進行建模之前,就假定一種具體的實現策略

改進域模型時,應刪除所有明顯陳述動作而不是依存性的內容以及同實現相關的內容。在高階類圖中,不應引入涉及到具體技術的內容,如關聯式資料庫或特定的伺服器。將實現問題留待實現階段解決,首先對問題域建模。

7.將類命名為難以理解的名稱(如 cportmgrintf),二不是直觀的名稱(如 usermanager)

首先建立模型的乙個重要原因,就是促使每個小組成員就關鍵抽象的名稱達到一致。類名越簡明,這項任務就越容易。應等到實現時再使用首字母縮寫和各種縮略語(如果你一定要這樣做的話)。

8.直接進入實現結構,如友元關係和引數化類

uml 提供了大量將我們稱作「booch 素材」的東西新增到類圖中的機會。這包括直接來自c++的結構,如引數化類和友元關係。這些東西與解決方案空間相關,而與問題空間不相關,因此域建模絕對是屬於問題空間的。

9.在域類和關聯式資料庫表之間建立 1 對 1 的對映

對使用關聯式資料庫的遺留系統進行重構時,資料庫中的表可能是很多的域類名稱的**。然而,決不要將它們完全搬照搬到靜態模型中。關聯式資料庫中的很多屬性不能找搬到物件模型環境中,應盡可能通過聚集,將屬性組轉換為「助手(helper)「類。這種類包含的屬性和操作可被組合成更小的「部分」類。

10.過早地執行「模式化」,這將導致根據同使用者問題毫無關係的模式建立解決方案。

模式通常在健壯性分析時才能發現。有兩種策略可用於發現同用例相關的模式:「螢幕控制」和「用例控制器」。設計模式對時序圖和設計級類圖很有用,但域建模期間不應考慮模式的問題。

javaScript 中常見的10種錯誤

game.prototype.restart function 0 執行上面的 將會出現如下錯誤 uncaught typeerror undefined is not a function 為什麼會有這個錯?this是指代當前物件本身,this的呼叫和它所在的環境密切相關。上面的錯誤是因為在呼叫s...

總結最常見的10種錯誤鏈結

眾所周之鏈結建設是乙個非常重要的優化活動,但這絕不意味著你可以不惜一切代價建立鏈結?因為鏈結建設不僅要花費大量的時間,又時候花費的還是金錢。有許多常見的鏈結建設的錯誤,今天夢就給大家舉出最常見的一些 1檢查反向有nofollow?屬性 nofollow 是乙個用於指示某些搜尋引擎的超連結不應影響搜尋...

全程建模 警覺 一種錯誤的UML類設計的方式

狂奔的 螞蟻 15 17 23 類圖裡面需要把所有的屬性都寫出來嗎 小白菜 15 32 01 不需要,只要能夠表達出你想要表達的意思即可 狂奔的 螞蟻 15 33 44 不是啊 就是寫好以後就直接生成 了 狂奔的 螞蟻 15 34 06 不是用例圖 是類圖 小白菜 15 35 47 uml用來繪製藍...