天天看點

《面向對象分析與設計》一1.6關于統一模組化語言UML

uml最初是在多種面向對象分析與設計方法互相融合的基礎上形成的,後來發展成為也可以用于業務模組化以及其他非軟體系統模組化的語言。它于1997年11月被對象管理組織(object management group)采納為模組化語言規範,随後被産業界和學術界廣泛接受。

uml定義了建立系統模型所需要的概念并給出了表示法,但它并不涉及如何進行系統模組化。是以它隻是一種模組化語言,而不是一種模組化方法。uml是獨立于開發過程的,也就是說它可以适用于不同的開發過程。

uml 2.4規範由四個部分組成:基礎結構(infrastructure)、上層結構(superstructure)、對象限制語言(object constraint language)和圖交換(diagram interchange)。簡言之,基礎結構給出了用于定義模組化語言的核心構造物,上層結構定義了模組化語言——uml,對象限制語言用于以精确的方式描述基礎結構、上層結構以及使用者建立的模型中的查詢表達式和限制,圖交換規定了如何定義用于資料交換的xml檔案的格式。

可見uml 2.4不僅僅适用于軟體系統模組化,其中還包含了大量的用于定義自身的元素。關心如何構造模組化語言以及開發模組化工具的讀者要掌握上述的四個部分;關心對應用系統模組化的讀者應該掌握上層結構部分,至少要掌握主要模組化元素的定義,如果需要在模型中精确地定義查詢表達式和限制,還要掌握對象限制語言。

盡管uml已經得到了廣泛應用,但它還存在不少缺點。對于以前的uml 1.x,來自學術界的主要批評是其文法和語義不夠嚴格;來自産業界的主要批評是它的内容過于龐大,概念過于複雜。至今uml已經開始了版本2x的發展,目前的uml 2.4就比以前的版本有了顯著的改進和提高,然而仍有不少問題沒有得到令人滿意的解決。特别是,它的複雜性不但沒有如人們的期望那樣得到控制,反而比以往更為龐大和複雜。對于uml存在的問題以及解決方法的深入讨論,請參閱文獻[17,18]。

針對龐大且複雜的uml,本書的原則是采用其中的在面向對象模組化中常用的概念和表示法,并梳理出清楚的語義。

下面就uml 2.4對面向對象模組化的支援而言,對uml 24支援的14種模型圖予以簡介,見圖1.9。

《面向對象分析與設計》一1.6關于統一模組化語言UML

uml 24支援的模型圖在邏輯上分為兩大類:結構圖(structure diagram)和行為圖(behavior diagram)。

結構圖用于對系統的靜态方面模組化。結構圖分為:

 類圖(class diagram)。它是描述系統中各個對象的類型以及其間存在的各種關系的圖。

 組合結構圖(composite structure diagram)。它是描述類和構件的内部結構的圖,其中包括與系統其他部分的互動點。

 構件圖(component diagram)。它是描述構件的組織結構和互相關系的圖,用于表達如何在實作時把系統元素組織成構件,進而支援以構件為機關進行軟體制品的實作和釋出。

 部署圖(deployment diagram)。它是描述節點、節點間的關系以及構件和節點間的部署關系的圖。

 對象圖(object diagram)。它是描述在某一時刻一組對象以及它們之間的關系的圖。

 包圖(package diagram)。它是描繪模型元素分組(包)以及分組之間依賴的圖。

 外擴圖(profile diagram)。它是在uml 24 的基礎上定義建立模元素的圖,用以增加新的模組化能力。

行為圖用于對系統的動态方面模組化。行為圖分為:

 活動圖(activity diagram)。它是描述活動、活動的執行順序以及活動的輸入與輸出的圖。

 用況圖(use case diagram)。它是描述一組用況和參與者以及它們之間的關系的圖。

 狀态機圖(state machine diagram)。它是描述一個對象或其他實體在其生命周期内所經曆的各種狀态以及狀态變遷的圖。

 互動圖(interaction diagram)。它是順序圖、互動概覽圖、通信圖和定時圖的統稱。

 順序圖(sequence diagram)。它是描述一組角色和由扮演這些角色的執行個體發送和接收的消息的圖。

 互動概覽圖(interaction overview diagram)。它是以一種活動圖的變種來描述互動的圖,它關注于對控制流的概覽,其中控制流的每個節點都可以是一個互動圖。

 通信圖(communication diagram)。它是描述一組角色、這些角色間的連接配接件以及由扮演這些角色的執行個體所收發的消息的圖。

 定時圖(timing diagram)。它是描述線上性時間上對象的狀态或條件變化的圖。

習題

1與傳統軟體開發方法相比,面向對象方法有什麼優點?

2查閱資料,進一步讨論uml與面向對象方法的關系。

3封裝的目的是什麼?在面向對象方法中封裝的目的是如何達到的?

4針對你過去使用傳統開發方法所構造的系統的不足,總結一下問題的原因。考慮如果使用面向對象方法,在哪些方面可能會獲益。

5面向對象方法的一個主要原則是抽象。思考一下在工作和學習中你經常在什麼場合下運用抽象原則。

繼續閱讀