UML统一建模语言知识体系概述
-
UML統(tǒng)一建模語言知識體系概述
- http://developer.51cto.com/ ?2006-01-11 16:46 ? ?noahsports.com ?我要評論(3 )
- UML是一種定義良好、易于表達、功能強大且普遍適用的建模語言。它溶入了軟件工程領(lǐng)域的新思想、新方法和新技術(shù)。它的作用域不限于支持面向?qū)ο蟮姆治雠c設計,還支持從需求分析開始的軟件開發(fā)的全過程。
?
一、UML概述
1. 可視化建模有助于:
捕獲商業(yè)流程 --> 捕獲系統(tǒng)結(jié)構(gòu)或行為
描述如何將系統(tǒng)元素整合在一起 --> 定義軟件構(gòu)架
保持設計和實現(xiàn)的一致性
適當?shù)碾[藏或暴露細節(jié) --> 管理復雜性
使人員間的交流更明確 --> 促進溝通
UML為所有開發(fā)者提供了一種表示語言
可視化的建模幫助開發(fā)組形象化,詳細說明,構(gòu)造并且文檔化一個系統(tǒng)的體系結(jié)構(gòu)和行為。
2. 標準建模語言UML的出現(xiàn)是面向?qū)ο蠹夹g(shù)發(fā)展的必然UML是一種定義良好、易于表達、功能強大且普遍適用的建模語言。它溶入了軟件工程領(lǐng)域的新思想、新方法和新技術(shù)。它的作用域不限于支持面向?qū)ο蟮姆治雠c設計,還支持從需求分析開始的軟件開發(fā)的全過程。
二、UML關(guān)系
1. 常用關(guān)系
依賴(Dependencies ;
關(guān)聯(lián)(Association
一般化(generalization ;
2. 依賴、一般化1)依賴關(guān)系:依賴關(guān)系是一種使用關(guān)系,特定事物的改變有可能會影響到使用該事物的事物,反之不成立。在我們想顯示一個事物使用另一個事物時使用依賴關(guān)系。通常情況下,依賴關(guān)系體現(xiàn)在某個類的方法使用另一個類作為參數(shù)(如圖)。
2)一般化:一般化是繼承關(guān)系,是“is-a-kind-of”的關(guān)系。人們將具有共同特性的元素抽象成類別,并通過增加其內(nèi)涵而進一步分類。例如,動物可分為飛鳥和走獸,人可分為男人和女人。在面向?qū)ο蠓椒ㄖ幸话銓⑶罢叻Q為父元素,將后者稱為子元素。繼承定義了父元素和子元素之間的分類關(guān)系。例如將客戶進一步分類成個體客戶和團體客戶,使用的就是繼承關(guān)系。
在UML定義中對繼承有三個要求:
子元素應與父元素完全一致,父元素所具有的關(guān)聯(lián)、屬性和操作,子元素也都隱含性地具有;
子元素還應包含額外信息;
允許使用父元素實例的地方,也應能使用子元素.
3. 關(guān)聯(lián)1) 關(guān)聯(lián)表示兩個類之間存在某種語義上的聯(lián)系。例如,一個人為一家公司工作,一家公司有許多辦公室。我們就認為人和公司、公司和辦公室之間存在某種語義上的聯(lián)系。在分析設計的類圖模型中,則在對應人類和公司類、公司類和辦公室類之間建立關(guān)聯(lián)關(guān)系。
關(guān)聯(lián)有兩元關(guān)系和多元關(guān)系。兩元關(guān)系是指一種一對一的關(guān)系,多元關(guān)系是一對多或多對一的關(guān)系。一般用實線連接有關(guān)聯(lián)的同一個類或不同的兩個類。當我們想要表示結(jié)構(gòu)化關(guān)系時使用關(guān)聯(lián)。
2) 關(guān)聯(lián)的方向: 關(guān)聯(lián)可以有方向,表示該關(guān)聯(lián)單方向被使用。關(guān)聯(lián)上加上箭頭表示方向,在UML中稱為導航。我們將只在一個方向上存在導航表示的關(guān)聯(lián),稱作單向關(guān)聯(lián),在兩個方向上都有導航表示的關(guān)聯(lián),稱作雙向關(guān)聯(lián)。
3) 關(guān)聯(lián)的命名: 既然關(guān)聯(lián)可以是雙向的,最復雜的命名方法是每個方向上給出一個名字,這樣的關(guān)聯(lián)有兩個名字,可以用小黑三角表示名字的方向。為關(guān)聯(lián)命名有幾種方法,其原則是該命名是否有助于理解該模型。
) 角色:關(guān)聯(lián)兩頭的類以某種角色參與關(guān)聯(lián)。例如,"公司"以"雇主"的角色, "人"以"雇員"的角色參與的"工作合同"關(guān)聯(lián)。"雇主"和"雇員"稱為角色名。如果在關(guān)聯(lián)上沒有標出角色名,則隱含地用類的名稱作為角色名。
角色還具有多重性(Multiplicity),表示可以有多少個對象參與該關(guān)聯(lián)。多重性表示參與對象的數(shù)目的上下界限制。"*"代表0~∞,可以用一個單個數(shù)字表示,也可以用范圍或者是數(shù)字和范圍不連續(xù)的組合表示。
5)聚集和組成:聚集是一種特殊形式的關(guān)聯(lián)。聚集表示類之間的關(guān)系是整體與部分的關(guān)系。一輛轎車包含四個車輪、一個方向盤、一個發(fā)動機和一個底盤,這是聚集的一個例子。在需求分析中,"包含"、"組成"、"分為……部分"等經(jīng)常設計成聚集關(guān)系。
聚集可以進一步劃分成共享聚集和組成。例如,課題組包含許多成員,但是每個成員又可以是另一個課題組的成員,即部分可以參加多個整體,我們稱之為共享聚集。另一種情況是整體擁有各部分,部分與整體共存,如整體不存在了,部分也會隨之消失,這稱為組成。例如,我們打開一個視窗口,它就由標題、外框和顯示區(qū)所組成。一旦消亡則各部分同時消失。在UML中,聚集表示為空心菱形,組成表示為實心菱形。
需要注意的是,對聚集的定義并不都一樣。大家應注意其他面向?qū)ο蠓椒ㄅcUML中所定義的聚集的差別。
三、模型,視圖,和圖表圖表是模型的視圖
表現(xiàn)給投資者看的,詳細的描述;針對系統(tǒng)的局部,提供了詳細描述;和別的視圖保持語義一致;
1. 用例圖-----捕獲系統(tǒng)中用戶能夠看見的功能1) 角色:任何一個與系統(tǒng)發(fā)生相互作用的事物都可以表現(xiàn)為一個角色。角色可以是人也可以是物。
2) 一個用例定義了一組系統(tǒng)要做的有序的動作序列,并且這個動作序列要產(chǎn)生一個可觀測的結(jié)果,返回給某一個特定的角色。
單個執(zhí)行者可與多個用例聯(lián)系;反過來,一個用例可與多個執(zhí)行者聯(lián)系。對同一個用例而言,不同執(zhí)行者有著不同的作用:他們可以從用例中取值,也可以參與到用例中。
2. 類圖-----捕獲系統(tǒng)的詞匯表1) 類是具有相同屬性、操作、關(guān)系的對象集合的總稱。通常在UML中類被畫成矩形。
2) 類圖:描述類和類之間的靜態(tài)關(guān)系,在系統(tǒng)的整個生命周期都是有效的。與數(shù)據(jù)模型不同,它不僅顯示了信息的結(jié)構(gòu),同時還描述了系統(tǒng)的行為。類圖是定義其它圖的基礎(chǔ)。在類圖的基礎(chǔ)上,狀態(tài)圖、協(xié)作圖等進一步描述了系統(tǒng)其他方面的特性。
3) 名稱:每個類都必須有一個名字,用來區(qū)分其它的類。類名是一個字符串,稱為簡單名字。
4) 屬性:是指類的命名的特性,常常代表一類取值。類可以有任意多個屬性,也可以沒有屬性。可以只寫上屬性名,也可以在屬性名后跟上類型甚至缺省取值。根據(jù)圖的詳細程度,每條屬性可以包括屬性的可見性、屬性名稱、類型、缺省值和約束特性。UML規(guī)定類的屬性的語法為: "可見性 屬性名 : 類型 = 缺省值 {約束特性}"。
常用的可見性有Public、Private和Protected三種,在UML中分別表示為"+"、"-"和"#"。類型表示該屬性的種類。它可以是基本數(shù)據(jù)類型,例如整數(shù)、實數(shù)、布爾型等,也可以是用戶自定義的類型。一般它由所涉及的程序設計語言確定。約束特性則是用戶對該屬性性質(zhì)一個約束的說明。例如"{只讀}"說明該屬性是只讀屬性。
5) 操作:是類的任意一個實例對象都可以調(diào)用的,并可能影響該對象行為的實現(xiàn)。該項可省略。操作用于修改、檢索類的屬性或執(zhí)行某些動作。它們被約束在類的內(nèi)部,只能作用到該類的對象上。UML規(guī)定操作的語法為:可見性 操作名 (參數(shù)表) : 返回類型 {約束特性}。
6)約束:在UML中,可以用約束表示規(guī)則。約束是放在括號"{ }"中的一個表達式,表示一個永真的邏輯陳述。
7) 組織屬性和方法:在畫類圖的時候沒有必要將全部的屬性和操作都畫出來.實際上,在大部分情況下我們也不可能在一個圖中將類的屬性和操作都畫出來。在畫類圖時可以只將感興趣的屬性和操作畫出來就可以了。可以用”...”表示還有屬性或方法沒有畫出來。
8) 使用類圖進行建模的幾個建議:
不要試圖使用所有的符號。從簡單的開始,例如,類、關(guān)聯(lián)、屬性和繼承等概念。在UML中,有些符號僅用于特殊的場合和方法中,只有當需要時才去使用。
根據(jù)項目開發(fā)的不同階段,用正確的觀點來畫類圖。如果處于分析階段,應畫概念層類圖;當開始著手軟件設計時,應畫說明層類圖;當考察某個特定的實現(xiàn)技術(shù)時,則應畫實現(xiàn)層類圖。
不要為每個事物都畫一個模型,應該把精力放在關(guān)鍵的領(lǐng)域。最好只畫幾張較為關(guān)鍵的圖,經(jīng)常使用并不斷更新修改。
使用類圖的最大危險是過早地陷入實現(xiàn)細節(jié)。為了避免這一危險,應該將重點放在概念層和說明層。
3. 對象圖-----捕獲實例和連接UML中對象圖與類圖具有相同的表示形式。
對象圖可以看作是類圖的一個實例。對象是類的實例。
對象之間的鏈是類之間的關(guān)聯(lián)的實例。鏈的圖形表示與關(guān)聯(lián)相似。
對象與類的圖形表示相似,均為劃分成兩個格子的長方形(下面的格子可省略)。上面的格子顯示對象名和類。
對象名格式為對象名 : 類名,類名和對象名下面有下劃線;下面的格子記錄對象的屬性以及值的列表,格式為“屬性 : 類型=值”。類型可以省略。對象圖常用于表示復雜的類圖的一個實例。
4. 組件圖-----捕獲實現(xiàn)的物理結(jié)構(gòu)1組件圖:組件圖顯示代碼本身的結(jié)構(gòu),顯示軟件組件之間的依賴關(guān)系。組件圖是指用依賴關(guān)系鏈接起來的組件集合,可以描述與特定語言相關(guān)的編譯時刻的依賴關(guān)系。
2組件:一般來說,軟件組件就是一個實際文件,可以是源代碼文件、二進制代碼文件和可執(zhí)行文件等。可以用來顯示編譯、鏈接或執(zhí)行時組件之間的依賴關(guān)系。
3在面向?qū)ο蠓椒ㄖ?#xff0c;類和組件等元素并不是所有的屬性和操作都對外可見。它們對外提供可見操作和屬性,稱之為類和組件的接口——可以表示為一頭是小園圈的直線。
5. 分布圖-----捕獲系統(tǒng)硬件的拓撲結(jié)構(gòu)1分布圖:描述系統(tǒng)硬件的物理拓撲結(jié)構(gòu)以及在此結(jié)構(gòu)上執(zhí)行的軟件。分布圖顯示系統(tǒng)運行時刻的結(jié)構(gòu);可以顯示計算節(jié)點的拓撲結(jié)構(gòu)和通信路徑、節(jié)點上運行的軟件組件、軟件組件包含的邏輯單元(對象、類)等。分布圖常常用于幫助理解分布式系統(tǒng)。
2)節(jié)點:代表一個物理設備以及其上運行的軟件系統(tǒng),如一臺Unix主機、一個PC終端、一臺打印機、一個傳感器等。節(jié)點表示為一個立方體。
3)連接:結(jié)點之間的連線表示系統(tǒng)之間進行交互的通信路徑,在UML中被稱為連接。
6. 時序圖-----捕獲系統(tǒng)的動態(tài)行為(面向時間的)
時序圖:當收到消息時,接收對象立即開始執(zhí)行活動,即對象被激活了。通過在對象生命線上顯示一個細長矩形框來表示激活。消息可以用消息名及參數(shù)來標識。消息也可帶有順序號,但較少使用。在時序圖的左邊可以有說明信息,用于說明消息發(fā)送的時刻、描述動作的執(zhí)行情況以及約束信息等。一個對象可以通過發(fā)送消息來創(chuàng)建另一個對象,當一個對象被刪除或自我刪除時,該對象用"X"標識。
7. 協(xié)作圖-----捕獲系統(tǒng)的動態(tài)行為 (面向消息的)1協(xié)作圖用于描述相互合作的對象間的交互關(guān)系和鏈接關(guān)系。雖然時序圖和協(xié)作圖都用來描述對象間的交互關(guān)系,但側(cè)重點不一樣。時序圖著重體現(xiàn)交互的時間順序,協(xié)作圖則著重體現(xiàn)交互對象間的靜態(tài)鏈接關(guān)系。協(xié)作圖中對象的外觀與時序圖中的一樣。對象間的鏈接關(guān)系類似于類圖中的聯(lián)系。通過在對象間的連接上標志帶有消息串的消息來表達對象間的消息傳遞。
2鏈接用于表示對象間的各種關(guān)系。各種連接關(guān)系與類圖中的定義相同,在連接的端點位置可以顯示對象的角色名。
3消息流:在協(xié)作圖的連接線上,可以用帶有消息串的消息來描述對象間的交互。消息的箭頭指明消息的流動方向。消息串說明要發(fā)送的消息、消息的參數(shù)、消息的返回值以及消息的序列號等信息。
8. 狀態(tài)圖-----捕獲系統(tǒng)動態(tài)行為(面向事件的)1狀態(tài)圖描述類的對象所有可能的狀態(tài)以及事件發(fā)生時狀態(tài)的轉(zhuǎn)移條件。通常,狀態(tài)圖是對類圖的補充。在實用上并不需要為所有的類畫狀態(tài)圖,僅為那些有多個狀態(tài)其行為受外界環(huán)境的影響并且發(fā)生改變的類的對象畫狀態(tài)圖。狀態(tài)圖只是對單個對象建立模型。
2事件和活動可以對狀態(tài)轉(zhuǎn)換線添加一些細節(jié)。可以指明引起轉(zhuǎn)移發(fā)生的事件和引起狀態(tài)變化所需執(zhí)行的計算(活動)。添加的事件和活動寫在轉(zhuǎn)換線上,事件和活動名之間用"/"隔開。
3防護:當滿足這個防護條件時,轉(zhuǎn)換才能發(fā)生。
4嵌套狀態(tài)。子狀態(tài)以兩種形式出現(xiàn):順序子狀態(tài)和并發(fā)子狀態(tài)。并發(fā)狀態(tài)之間用虛線隔開。
活動圖-----捕獲動態(tài)行為(面向活動的)1活動圖的應用非常廣泛,它既可用來描述操作(類的方法)的行為,也可以描述用例和對象內(nèi)部的工作過程。活動圖是由狀態(tài)圖擴展而來的,它們各自用于不同的目的。活動圖依據(jù)對象狀態(tài)的變化來捕獲動作(將要執(zhí)行的工作或活動)與動作的結(jié)果,突出了活動。活動圖中一個活動結(jié)束后將立即進入下一個活動(在狀態(tài)圖中狀態(tài)的變遷可能需要事件的觸發(fā))。
2活動和轉(zhuǎn)移:一項操作可以描述為一系列相關(guān)的活動。活動僅有一個起始點,但可以有多個結(jié)束點。一個活動可以順序地跟在另一個活動之后,這是簡單的順序關(guān)系。如果在活動圖中使用一個菱形的判斷標志,則可以表達條件關(guān)系,判斷標志可以有多個輸入和輸出轉(zhuǎn)移,但在活動的運作中僅觸發(fā)其中的一個輸出轉(zhuǎn)換。活動圖中,使用一個稱為同步條的水平粗線可以將一條轉(zhuǎn)移分為多個并發(fā)執(zhí)行的分支,或?qū)⒍鄠€轉(zhuǎn)換合為一條轉(zhuǎn)換。此時,只有輸入的轉(zhuǎn)換全部有效,同步條才會觸發(fā)轉(zhuǎn)換,進而執(zhí)行后面的活動。
3)泳道:用矩形框來表示,屬于某個泳道的活動放在該矩形框內(nèi),將泳道的角色名放在矩形框的頂部。
4)對象:在活動圖中可以出現(xiàn)對象。對象可以作為活動的輸入或輸出,,對象與活動間的輸入/輸出關(guān)系由虛線箭頭來表示。如果僅表示對象受到某一活動的影響,則可用不帶箭頭的虛線來連接對象與活動。
總結(jié)
以上是生活随笔為你收集整理的UML统一建模语言知识体系概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《大数据》第1期“研究”——大数据管理系
- 下一篇: 基于微博数据对突发性环境污染事件公众感知