於 UML 圖中應用套件

上一頁
回主題區

如何簡化複雜的圖型

Scott W. Ambler (scott.ambler@ronin-intl.com)
總裁, Ronin International
2000 年 11 月

這篇文章指導你如何運用套件去簡化及組織 UML 軟體圖,作品改編自 <The Object Primer 2nd Edition>  第 3 章及第 6 章的部份章節。

套件(Packages)是統一模塑語言(Unified Modeling Language;UML)的概念,能讓你用來組織模型元素(model elements),像使用案例(use cases)和類別(classes),進而將它們分門別類。有效的應用套件,可以簡化軟體圖型。在 UML 之中,以檔案夾的形狀來描繪套件,如 圖例 2 所示,並且可用在所有 UML 圖型裡。無論如何,通常是應用套件於使用案例圖或類別圖,緣於這類模型有逐漸增長的趨勢,因此極需要去進行區分。

一個範例:簡化使用案例圖(use case diagram)
圖例 1 描述一個複雜的使用案例圖(在 「塑造基本的使用案例模型」有這使用案例圖的說明),圖例 2 則展示你如何運用套件來進行劃分。透過採用套件,使用案例圖變得更簡易於理解。可以依次的將每個套件由另外的使用案例圖來製作文件,如 圖例 3 呈現出這樣的結果。

圖例 1. 大學系統中部份的使用案例模型
Partial use case model for a university system

圖例 2. 運用套件(packages)來組織使用案例模型(use case model)
A use case model organized with packages

圖例 3. 「研究班註冊管理」的套件(package)
The Manage Seminar Registration package

應用套件的經驗法則(Rules of thumb for applying packages)
 

bullet當圖型變得凌亂無章時應用套件
我只有當圖型變得龐大時才會使用套件,這通常意味著不能夠在單一頁裡列印這些圖型。使用套件能將大型的圖型組織成數個小型的圖型,圖型內應該有五到九個泡泡(7 +/- 2 bubbles)是一種好的嘗試,在這裡的每個泡泡就是使用案例或類別。

 
bullet套件應該具有凝聚性
當考量套件其他的內容時,你放進套件的任何東西應該都具有意義的。假如你能夠給套件簡短且具描述性的名稱,則它看來就像具有凝聚性,假使無法做到,你可能會把幾個不相關的東西放進套件內。

 
bullet針對使用案例圖,從相關的使用案例圖開始著手
為了識別套件使用那些使用案例圖,我喜歡從使用案例與另外一個使用案例之間具有延伸(extend)及包含(include)的結合關係開始著手。我嘗試把具有包含及延伸關係的使用案例歸類在相同的套件內,當作是基礎或親代使用案例(base/parent use case),這個規則可以運作得很好,因為通常引出這些使用案例,是以自基礎或親代使用案例中「抽出(pulling out)」它們必然性的結果(logic)開始。之後我分析這些使用案例,包含與這些使用案例有關的主要參與者(actors),你將會發現每個與你的系統經常互動的參與者,多少會達到幾個主要的目的;舉個例子來說,在你的系統裡學生的活動有大學註冊(enroll in the university)、管理課程表(manage their schedules)、以及管理他與大學之間的財務契約(manage their financial obligations)。

 
bullet針對類別圖,則從相關的類別圖開始著手
關於 UML 類別圖,我以類似的方法為例。首先,相同繼承階層的類別通常歸類在相同的套件,其次,通常經由聚合關係(aggregation )或合成關係(composition)與另一個類別相關聯,這些類別 也可歸類在相同的套件,第三,類別與其他一群個別類別間的共同合作,即是在你的循序圖(sequence diagrams)及合作圖(collaboration diagrams)裡所反映出來的資訊,這群類別通常歸類在相同的套件。第四,為了讓你的套件具有凝聚性的渴望,將驅使你做出更多如何把類別放進套件中的決定。

 

參考資料

bullet The Object Primer 2nd Edition by Scott W. Ambler. New York: Cambridge University Press, 2000.
bullet The Unified Modeling Language Reference Manual by James Rumbaugh, Grady Booch, and Ivar Jacobson. Reading, MA: Addison-Wesley Longman, Inc., 1999.

 

關於作者
Scott W. Ambler Ronin International 的總裁,該公司是一家專門提供物件導向過程指導、體系結構塑模和 Enterprise JavaBean (EJB) 開發的諮詢企業。他個人創作或者與其他人合著了幾本有關物件導向開發的書籍,包括最近出版的 The Object Primer 2nd Edition,該書詳細介紹了本文所概述的主題。 可以透過  scott.ambler@ronin-intl.com 與他聯繫,他的網站位於 www.ambysoft.com