Global Sources
電子工程專輯
 
電子工程專輯 > 功率技術/新能源
 
 
功率技術/新能源  

利用UML類別圖設立系統結構模型

上網時間: 2003年12月14日     打印版  Bookmark and Share  字型大小:  

關鍵字:uml  unified modeling language  統一建模語言  class   

統一建模語言(UML)是用於系統建模的一種半形式化標準,該語言兼具嚴格性和靈活性特點,可以對系統的不同層面進行描述。本文以一個電源子系統為例,介紹了UML的定義和對象之間的關係,以及透過類別圖(class diagram)對系統進行建模的方法。

統一建模語言(UML)是一種用於系統建模的半形式化標準。其十分嚴格的特點能滿足可執行性要求,同時又具有靈活性,能實現對系統各個層面的描述。在最基本的情況下,UML能描述一個系統的結構模型及系統內部的合作行為,以及系統對象和系統組件的具體行為規格。

類別與類別圖

類別(Class)是指某組對象的低層結構和行為規格。類別定義了對象的屬性(數據元)和方法(成員函數),類別還可以透過狀態圖或活動圖來說明其實例如何響應各類事件。

舉例來說,如果一個類別是‘切餅機’,那麼其對象便是‘餅’。一個對象是某個類別的實例,例如3.14159是浮點數類型的實例。一個特定類別的所有對象具有相同的數據結構和行為,儘管它們的屬性值可能互不相同。

當我們希望描述一個系統的某些結構特性時,通常會從它的通用特徵開始,如系統各個組成部份在設計時的各種特性以及它們之間的相互關係,而不是執行時某一具體時刻的系統結構。因此,我們通常會把系統結構抽象成為多個相互關聯的類別,並且知道在執行中各時刻這些類別的實例未必一定存在。如果我們希望獲得系統在某一瞬間的狀態,便需要採用對象。

圖1所示為一個以電池和太陽能電池板構成的供電系統,該圖是一個典型類別圖,圖中小方框表示不同的類別。‘電源子系統’類代表一個子系統,該子系統是一個大的結構對象,它包含了提供子系統功能的小對象。PowerClient類和Knob類以‘標準形式’顯示,而Light類除了名字外,還顯示了它的某些屬性和方法,其屬性為分類色彩和亮度,相應的枚舉類型為COLOR_TYPE和整數(int)。在Light類的底部列出了獲得可能返回值和參數的方法。DisplayThread是一個特殊的類,該類的實例在其自己的執行緒內執行。DisplayThread類包含了一個Light類的實例,它也在DisplayThread對象的執行緒中執行。圖1:系統類別圖組成結構示例。

通常,一個系統的結構模型由一組類別圖構成,一些類別圖表示子系統的結構,其中主要單元是大的對象,例如子系統和元件,另一些類別圖集中描述任務結構,並以活動對象為主(但也可描述系統旗語和事件隊列)。其餘的類圖描述類之間的合作結構,即對象是如何協同工作來實現系統級行為或模型構成,並主要描述各個模型包及其相互關係。上面這些類別圖都是描述同一系統結構的不同方面。

對象關係

對象只是系統的組成部份,它們必須與其它對象進行合作來實現系統功能,因此需要在對象之間設立鏈接(通常採用C或C++的指針),以便調用服務或相互發送事件(event)。這在類別類圖中表現為類之間的關聯,在圖1中示出了三個不同的關聯,不帶箭頭的線表示常規關聯。這些類別之間的關聯表示在執行過程中它們可能是實例對象之間的活動鏈接,並可在對象間調用服務。標有單向箭頭的地方表示資訊流只有一個方向。

線上的空心菱形(例如SolarPanel和PositionSensor類之間的菱形)顯示一個聚集,它代表了一種整體與局部的關聯形式。聚集的增強形式稱為組合體,採用實心菱形(如電源子系統和SolarPanel之間)或將一個類別嵌套在另一個類別中(如電源子系統和電池之間)來表示。組合體是整體與局部的關聯,但同時也顯示整體類負責各部份對象的製作和解除。

對於各種關聯還可以表示其多重性,即執行時可充當某一角色的類別的實例數。例如,你會發現只有一個Knob對象與每個PowerClient對象關聯。另一方面,每個電源子系統實例可與0個或多個(用*表示) SolarPanel實例關聯。對於嵌套的符號,在元件類的左上角示出了元件的多重性。例如,電源子系統擁有兩個電池對象。

除了關聯之外,UML還定義了其它的類間關係。最常見的一個是‘判定’,即‘is-a’關係,例如PowerClient(廣義的)和Light(具體的)間的關係(即Light是一種PowerClient)。從語義上來講,‘判定’確保Light類同樣具有所有PowerClient類的屬性、作業及關聯。Light類可重新定義PowerClient類中定義的作業,同時也可定義新的屬性和作業。例如,Light類與Knob類有關聯,因為它的父類PowerClient中定義了這一關聯。

此外,圖中還定義了‘正確性規則’約束,這是系統的類和關聯中沒有定義的系統語義。在本文例舉的類別圖中,我們需要規定在同一時刻,只能是電池或太陽能電池板之一供電,而不能兩者同時供電。約束是用來描述系統的非功能性特徵(通常稱為QoS,服務品質),例如方法的最差及平均性能、功能等。

UML是用於描述系統不同層面的一個功能強大的建模語言,其類圖是一種靈活的圖形符號,能清楚地表示出不同抽象程度下的系統結構。UML所描述的系統層面主要包括系統結構單元,以及從如何支援合作、所涉及的實例數量來描述的結構單元之間的相互關係。附加約束可讓開發人員更方便地描述系統結構的特殊情況以及結構限制。

作者: Bruce Powel Douglass


Email: bpd@ilogix.com


I-Logix公司




投票數:   加入我的最愛
我來評論 - 利用UML類別圖設立系統結構模型
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首