(1)對系統的詞彙建模
爲了對系統的詞彙建模,需做如下工作:
- 識別用戶或實現者用於描述問題或者描述解決方案的那些事物。用CRC卡和基於用況分析的技術幫助用戶發現這些抽象。
- 對於每個抽象,識別一個職責集。確保能清楚地定義每個類,而且這些職責能在所有的類之間很好的均衡。
(2)對系統中的職責分佈建模
一旦開始大量的類建模,就要保證抽象提供了均衡的職責集。
這意味着不能讓任何類過大或過小,每一個類應該做好一件事。
若抽象出來的類過大,將會發現模型難以變化而很不容易複用;
若抽象出來的類過小,則最終抽象會過多,難以合理的管理和理解。
可以使用UML來幫助可視化和詳述這種職責的均衡。
對系統中的職責分佈建模,要做如下工作:
- 識別一組爲了完成某些行爲而緊密地協同工作的類。
- 對上述的每一個類識別出一組職責。
- 從整體上觀察這組類,把職責過多的類分成較小的抽象,把職責過於瑣碎的小類合成較大的類,重新分配職責以使每一個抽象合理的存在。
- 考慮這些類的相互協作方式,相應地重新分配它們的職責,使協作中沒有哪個類的職責過多或過少。
(3)對非軟件事物建模
有時,要建模的事物在軟件中並無類似物。
爲了對非軟件事物建模,要做如下工作:
- 對抽象爲類的事物建模
- 如果要將這些非軟件事物與UML已定義的構造塊相區別,就要創建一個新的構造塊,用衍型詳述這些新語義,並給出不同的可視化提示。
- 如果建模的事物是某種本身包含軟件的硬件,考慮把它建模爲一個結點,以便能進一步擴充它的結構。
(4)對簡單類型建模,要做如下工作:
- 對抽象爲類型或枚舉的事物建模,這可以用帶有適當衍型的類表示符來表示。
- 若需要詳述與該類型相聯繫的值域,可以使用約束。
提示和技巧
在用 UML 對類建模時要記住:對最終用戶或實現者來說,各個類都應該映射到某個有形的或者概念性的抽象。
一個結構良好的類,應符合如下條件:
- 爲取自問題域或者解域的詞彙中的事物提供明確的抽象。
- 嵌入一個小的、明確定義的職責集,並且能很好的實現它們。
- 把抽象的規約和它的實現清楚的分開。
- 簡單而且可理解,並且具有可適應性和可擴展性。
當用UML 繪製一個類時,要遵循如下的策略:
- 僅顯示在該類的語境中對於理解抽象較爲重要的類的特徵。
- 按屬性和操作的種類進行分組,以更好的組織其長列表。
- 把相關的類顯示在同一個類圖中。