UML是一種通用的建模語言,其表達(dá)能力相當(dāng)?shù)膹?qiáng),不僅可以用于軟件系統(tǒng)的建模,而且可用于業(yè)務(wù)建模以及其它非軟件系統(tǒng)建模。UML綜合了各種面向?qū)ο蠓椒ㄅc表示法的優(yōu)點(diǎn),至提出之日起就受到了廣泛的重視并得到了工業(yè)界的支持。 本章將按視圖、模型元素、圖以及公共機(jī)制依次介紹UML的構(gòu)造和基本元素,以使得讀者對UML有一個(gè)總體了解,其具體細(xì)節(jié)將在后續(xù)章節(jié)中詳細(xì)描述。 畫圖工具:eDraw、jude 歡迎大家繼續(xù)支持和關(guān)注我的博客: http://hoojo.cnblogs.com http://blog.csdn.net/IBM_hoojo 也歡迎大家和我交流、探討IT方面的知識。 email:hoojo_@126.com 如果你覺得本文不錯(cuò)的話,請你點(diǎn)擊屏幕右下方的 。如果你以后會用到這篇文章的或覺得以后要重新翻閱的話,你可以點(diǎn)擊屏幕右下角的 。如果你覺得我的博文不錯(cuò)或是想在第一時(shí)間看到我的動態(tài)的話,你可以點(diǎn)擊屏幕右下角 。如果你想說點(diǎn)什么的話,你可以點(diǎn)擊屏幕右下方的 。如果你都點(diǎn)過了,那真的太謝謝你了,兄弟太支持了。此時(shí),或許你可以點(diǎn)擊 按鈕,然后看看博文的導(dǎo)航繼續(xù)瀏覽其他文章。 1. UML的組成 UML由視圖(View)、圖(Diagram)、模型元素(Model Element)和通用機(jī)制(General Mechanism)等幾個(gè)部分組成。 a) 視圖(View): 是表達(dá)系統(tǒng)的某一方面的特征的UML建模元素的子集,由多個(gè)圖構(gòu)成,是在某一個(gè)抽象層上,對系統(tǒng)的抽象表示。 b) 圖(Diagram): 是模型元素集的圖形表示,通常是由?。P(guān)系)和頂點(diǎn)(其他模型元素)相互連接構(gòu)成的。 c) 模型元素(Model Element):代表面向?qū)ο笾械念?、對象、消息和關(guān)系等概念,是構(gòu)成圖的最基本的常用概念。 d) 通用機(jī)制(General Mechanism):用于表示其他信息,比如注釋、模型元素的語義等。另外,UML還提供擴(kuò)展機(jī)制,使UML語言能夠適應(yīng)一個(gè)特殊的方法(或過程),或擴(kuò)充至一個(gè)組織或用戶。 2. UML視圖的分類 UML是用來描述模型的,用模型來描述系統(tǒng)的機(jī)構(gòu)或靜態(tài)特征,以及行為或動態(tài)特征。從不同的視角為系統(tǒng)構(gòu)架建模,形成系統(tǒng)的不同視圖。 (1) 用例視圖(Use Case View),強(qiáng)調(diào)從用戶的角度看到的或需要的系統(tǒng)功能,是被稱為參與者的外部用戶所能觀察到的系統(tǒng)功能的模型圖。 (2) 邏輯視圖(Logical View),展現(xiàn)系統(tǒng)的靜態(tài)或結(jié)構(gòu)組成及特征,也稱為結(jié)構(gòu)模型視圖(Structural Model View)或靜態(tài)視圖(Static View)。 (3) 并發(fā)視圖(Concurrent View),體現(xiàn)了系統(tǒng)的動態(tài)或行為特征,也稱為行為模型視圖(Behavioral Model View)或動態(tài)視圖(Dynamic View)。 (4) 組件視圖(Component View),體現(xiàn)了系統(tǒng)實(shí)現(xiàn)的結(jié)構(gòu)和行為特征,也稱為實(shí)現(xiàn)模型視圖(Implementation Model View)。 (5) 配置視圖(Deployment View),體現(xiàn)了系統(tǒng)實(shí)現(xiàn)環(huán)境的結(jié)構(gòu)和行為特征,也稱為環(huán)境模型視圖(Environment Model View)或物理視圖(Physical View)。 視圖是由圖組成的,UML提供9種不同的圖: (1) 用例圖(Use Case Diagram),描述系統(tǒng)功能; (2) 類圖(Class Diagram),描述系統(tǒng)的靜態(tài)結(jié)構(gòu); (3) 對象圖(Object Diagram),描述系統(tǒng)在某個(gè)時(shí)刻的靜態(tài)結(jié)構(gòu); (4) 組件圖(Component Diagram),描述了實(shí)現(xiàn)系統(tǒng)的元素的組織; (5) 配置圖(Deployment Diagram),描述了環(huán)境元素的配置,并把實(shí)現(xiàn)系統(tǒng)的元素映射到配置上; (6) 狀態(tài)圖(State Diagram),描述了系統(tǒng)元素的狀態(tài)條件和響應(yīng); (7) 時(shí)序圖(Sequence Diagram),按時(shí)間順序描述系統(tǒng)元素間的交互; (8) 協(xié)作圖(Collaboration Diagram),按照時(shí)間和空間順序描述系統(tǒng)元素間的交互和它們之間的關(guān)系; (9) 活動圖(Activity Diagram),描述了系統(tǒng)元素的活動; 建模方法由建模語言和建模過程兩部分構(gòu)成。其中建模語言是用來表述設(shè)計(jì)方法的表示法,建模過程是對設(shè)計(jì)中所應(yīng)采取的步驟的描述。UML是一種建模語言,它在很大程度上獨(dú)立于建模過程。在實(shí)際建模中,建模人員最好把UML用于以用案驅(qū)動的、以體系機(jī)構(gòu)為中心的、迭代的和漸增式的開發(fā)過程中。 一般而言,軟件系統(tǒng)的體系結(jié)構(gòu)給出了軟件系統(tǒng)的組織、組成系統(tǒng)的構(gòu)造元素及其接口的選擇、系統(tǒng)的行為和體系結(jié)構(gòu)風(fēng)格等信息。也就是說,它不僅關(guān)心系統(tǒng)的結(jié)構(gòu)和行為等功能性需求,而且也涉及系統(tǒng)的性能、易理解性、易復(fù)用性等非功能性需求。如下圖所示,UML利用用戶模型視圖、結(jié)構(gòu)模型視圖、行為模型視圖、實(shí)現(xiàn)模型視圖和環(huán)境模型視圖來描述軟件系統(tǒng)的體系結(jié)構(gòu)。 根據(jù)它們在不同架構(gòu)視圖的應(yīng)用,可以把9種圖分成: (1) 用戶模型視圖:用例圖; (2) 結(jié)構(gòu)模型視圖:類圖和對象; (3) 行為模型視圖:狀態(tài)圖、時(shí)序圖、協(xié)作圖和活動圖(動態(tài)圖); (4) 實(shí)現(xiàn)模型視圖:組件圖; (5) 環(huán)境模型視圖:配置圖。 用戶模型視圖由專門描述最終用戶、分析人員和測試人員看到的系統(tǒng)行為的用案組成,它實(shí)際上是從用戶角度來描述系統(tǒng)應(yīng)該具有的功能。用戶模型視圖所描述的系統(tǒng)功能依靠外部用戶或者另外一個(gè)系統(tǒng)來激活,為用戶或者另一系統(tǒng)提供服務(wù),從而實(shí)現(xiàn)用戶或另一系統(tǒng)與系統(tǒng)的交互。系統(tǒng)實(shí)現(xiàn)的最終目標(biāo)是提供用戶模型視圖中所描述的功能。在UML中,用戶模型視圖是由用案圖組成。 結(jié)構(gòu)模型視圖描述組成系統(tǒng)的類、對象以及它們之間的關(guān)系等靜態(tài)結(jié)構(gòu),用來支持系統(tǒng)的功能需求,即描述系統(tǒng)內(nèi)部功能是如何設(shè)計(jì)的。結(jié)構(gòu)模型視圖由類圖和對象圖構(gòu)成,主要供設(shè)計(jì)人員和開發(fā)人員使用。 行為模型視圖主要用來描述形成系統(tǒng)并發(fā)與同步機(jī)制的線程和進(jìn)程,其關(guān)注的重點(diǎn)是系統(tǒng)的性能、易伸縮性和系統(tǒng)的吞吐量等非功能性需求。行為模型視圖利用并發(fā)來描述資源的高效使用、并行執(zhí)行和處理異步事件。除了講系統(tǒng)劃分為并發(fā)執(zhí)行的控制線程之外,行為模型還必須處理通信和這些線程及進(jìn)程之間的同步問題。行為模型視圖主要供系統(tǒng)開發(fā)人員和系統(tǒng)集成人員使用,它由序列圖、協(xié)作圖、狀態(tài)圖和活動圖組成。 實(shí)現(xiàn)模型視圖用來描述系統(tǒng)的實(shí)現(xiàn)模塊它們之間的依賴關(guān)系以及資源分配情況。這種視圖主要用于系統(tǒng)的配置管理,它是由一些獨(dú)立的構(gòu)件組成的。實(shí)現(xiàn)模型視圖由構(gòu)件圖組成。其中構(gòu)件是代碼模塊,不同類型的代碼模塊形成不同的構(gòu)件。實(shí)現(xiàn)模型視圖主要供開發(fā)人員使用。 環(huán)境模型視圖用來描述物理系統(tǒng)的硬件拓?fù)浣Y(jié)構(gòu)。例如,系統(tǒng)中的計(jì)算機(jī)和設(shè)備的分布情況以及它們之間的連接方式,其中計(jì)算機(jī)和設(shè)備統(tǒng)稱為節(jié)點(diǎn)。在UML中環(huán)境模型視圖是由部署圖來表示的。系統(tǒng)部署圖描述了系統(tǒng)構(gòu)件在節(jié)點(diǎn)上的分布情況,即用來描述軟件構(gòu)件到物理節(jié)點(diǎn)的映射。部署圖主要供開發(fā)人員、系統(tǒng)集成人員和測試人員使用。 上面每一種視圖反映了系統(tǒng)的一個(gè)特定方面,不同人員可以單獨(dú)的使用其中每一種視圖,從而可以關(guān)注特定的體系結(jié)構(gòu)問題。但在通常情況下,由于系統(tǒng)的最終目標(biāo)是提供用戶模型視圖中描述的功能以及其它一些非功能性需求,因此,用戶模型視圖是其它視圖的核心基礎(chǔ),其它視圖的構(gòu)造都依賴與用戶模型視圖中所描述的類容。 細(xì)心的讀者已經(jīng)發(fā)現(xiàn),每一種UML圖都是由多個(gè)圖組成的,每一種圖都是體系結(jié)構(gòu)某個(gè)側(cè)面的表示,各種圖實(shí)際上是一致的,所有的圖在一起組成了系統(tǒng)的完整視圖。如下圖所示,UML中總共提供了用案圖、類圖、對象圖、序列圖、協(xié)作圖、狀態(tài)圖、活動圖、構(gòu)建圖和部署圖9種圖。根據(jù)它們描述的是系統(tǒng)的靜態(tài)結(jié)構(gòu)還是動態(tài)行為,可以將它們分為靜態(tài)圖和動態(tài)圖兩類。再進(jìn)一步介紹這9中UML圖時(shí),先了解下什么是模型元素: 3. UML的建模機(jī)制 UML有兩套建模機(jī)制:靜態(tài)建模機(jī)制和動態(tài)建模機(jī)制。靜態(tài)建模機(jī)制包括用例圖、類圖、對象圖、包、組件圖和配置圖。動態(tài)建模機(jī)制包括狀態(tài)圖、時(shí)序圖、協(xié)作圖、活動圖。 (1) 用例圖:用例的可視化工具,它提供計(jì)算機(jī)系統(tǒng)的高層次的用戶視圖,表示以外部活動者的角度來看系統(tǒng)將是怎樣使用的。 用例圖(用案圖)是用于描述一組用案,參與者以及它們之間的連接關(guān)系。一個(gè)用案圖描述了一組動作序列,每一個(gè)序列表示系統(tǒng)的外部設(shè)施(系統(tǒng)的參與者)與系統(tǒng)本身的交互。從一個(gè)特定參與者的角度看,一個(gè)用案完成對其有價(jià)值的工作。如圖2.5所示,用案圖僅僅是從參與者使用系統(tǒng)的角度來描述系統(tǒng)中的信息,即站在系統(tǒng)外部查看系統(tǒng)應(yīng)該具有什么功能,而并不描述該功能在軟件內(nèi)部是如何實(shí)現(xiàn)的。用案可以應(yīng)用于整個(gè)系統(tǒng),也可以應(yīng)用于系統(tǒng)的一個(gè)部分,包括子系統(tǒng)、單個(gè)的類或者接口。通常,用案不僅代表這些元素所期望的行為,而且還可以把這些元素用作開發(fā)過程中測試用案的基礎(chǔ)。 用例圖包括以下3方面內(nèi)容: (a) 用例(Use Case) (b) 參與者(Actor) (c) 依賴、泛化和關(guān)聯(lián)關(guān)系 用例圖示例: (2) 類圖:描述類、接口、協(xié)作以及它們之間關(guān)系的圖。 類圖是用于描述一組類、接口、協(xié)作以及它們之間的靜態(tài)關(guān)系。在面向?qū)ο笙到y(tǒng)的建模中,類圖是最為常用的圖,它用來闡明系統(tǒng)的靜態(tài)結(jié)構(gòu)。事實(shí)上類是對一組具有相同屬性、操作、關(guān)系和語義的對象的描述,其中對類的屬性和操作進(jìn)行描述時(shí)的一個(gè)最重要的細(xì)節(jié)就是它的可見性。 類可以以多種形式連接,例如關(guān)聯(lián)、泛化、依賴和實(shí)現(xiàn)等。一個(gè)典型的系統(tǒng)中通常有若干個(gè)類圖。一個(gè)類圖不一定要包含系統(tǒng)中所有的類,一個(gè)類可以加到幾個(gè)類圖中。 類圖示例: (3) 對象圖:表示在某一時(shí)間上一組對象以及它們之間的關(guān)系的圖。對象圖可以被看做是類圖在系統(tǒng)某一時(shí)刻的實(shí)例。 對象圖是類圖的實(shí)例,用來描述特定運(yùn)行時(shí)刻一組對象之間的關(guān)系。也就是說,對象用于描述交互的靜態(tài)部分,它由參與協(xié)作的有關(guān)對象組成。但不包括在對象之間傳遞的任何消息。 在創(chuàng)建對象圖時(shí),建模人員并不需要用單個(gè)的對象圖來描述系統(tǒng)中的每一個(gè)對象。事實(shí)上,絕大多數(shù)系統(tǒng)中都會包含成百上千的對象。用對象來描述系統(tǒng)的所有對象以及它們之間的關(guān)系一般是不太現(xiàn)實(shí)的。因此,建模人員可以選擇所感興趣的對象極其之間的關(guān)系來描述。 對象圖中所使用的符號和類圖中使用的符號幾乎完全相同,區(qū)別僅在于對象圖的對象名帶有下劃線,而且類與類之間關(guān)系的所有的實(shí)例都要畫出來。 (4) 組件圖:描述軟件組件以及組件之間的關(guān)系,組件本身是代碼的物理模塊,組件圖則顯示了代碼的結(jié)構(gòu)。 組件圖(構(gòu)件圖)是用于描述一組構(gòu)件之間的組織和依賴關(guān)系,用于建模系統(tǒng)的靜態(tài)實(shí)現(xiàn)視圖。構(gòu)件可以是可執(zhí)行程序集、庫、表、文件和文檔等,它包含了邏輯類或者邏輯類的實(shí)現(xiàn)信息,因此結(jié)構(gòu)模型視圖和實(shí)現(xiàn)模型視圖之間存在映射關(guān)系。 構(gòu)建圖中也可以包括包或子系統(tǒng),它們都是用于將模型元素組成較大的組塊。 組件圖例圖: (5) 配置圖:描述系統(tǒng)硬件的物理拓?fù)浣Y(jié)構(gòu)以及在此結(jié)構(gòu)上執(zhí)行的軟件。配置圖可以顯示計(jì)算節(jié)點(diǎn)的拓?fù)浣Y(jié)構(gòu)和通信路徑、結(jié)點(diǎn)上運(yùn)行的軟件組件、軟件組件包含的邏輯單元(對象、類)等。配置圖常常用于幫助理解分布式系統(tǒng)。 配置圖(部署圖)用來描述系統(tǒng)運(yùn)行是進(jìn)行處理的節(jié)點(diǎn)以及在節(jié)點(diǎn)上活動的構(gòu)件的配置。部署圖用來對系統(tǒng)的環(huán)境模型視圖進(jìn)行建模。在大多數(shù)情況下,部署圖用來描述系統(tǒng)硬件的擴(kuò)普結(jié)構(gòu)。 在UML中,建模人員可以用類圖來描述系統(tǒng)的靜態(tài)結(jié)構(gòu),可以用序列圖、協(xié)作圖、狀態(tài)圖、活動圖來描述系統(tǒng)的動態(tài)行為,而用部署圖來描述軟件所執(zhí)行所需的處理器和設(shè)備的拓?fù)浣Y(jié)構(gòu)。 (6) 狀態(tài)圖:通過類對象的生命周期建立模型來描述對象隨時(shí)間變化的動態(tài)行為。 狀態(tài)圖實(shí)際上是一種由狀態(tài)、變遷、事件和活動組成的狀態(tài)機(jī)。狀態(tài)圖描述從狀態(tài)到狀態(tài)的控制流,常用于系統(tǒng)的動態(tài)特性建模。在大多數(shù)情況下,它用來對反應(yīng)型對象的行為建模。 在UML中,狀態(tài)圖可以用來對一個(gè)對象按事件排序的行為建模。一個(gè)狀態(tài)圖是強(qiáng)調(diào)從狀態(tài)到狀態(tài)的控制流的狀態(tài)機(jī)的簡單表示。一般而言,狀態(tài)圖是對類所描述的設(shè)施的補(bǔ)充說明,它描述了類的所有對象可能具有的狀態(tài)以及引起狀態(tài)變化的事件。 (7) 時(shí)序圖:交互圖描述了一個(gè)交互,它由一組對象和它們之間的關(guān)系組成,并且還包括在對象間傳遞的信息。交互圖表達(dá)對象之間的交互,是描述一組對象如何協(xié)作完成某個(gè)行為的模型化工具。 序列圖和協(xié)作圖統(tǒng)稱為交互圖。其中,序列圖用來描述對象之間消息發(fā)送的先后次序,闡明對象之間的交互過程以及在系統(tǒng)執(zhí)行過程中的某一具體時(shí)刻將會發(fā)生什么事件。序列圖是一種強(qiáng)調(diào)時(shí)間順序的交互圖,其中對象沿橫軸方向排列,消息沿縱軸方向排列。 序列圖中的對象生命線是一條垂直的虛線,它表示一個(gè)對象在一段時(shí)間內(nèi)存在。由于序列圖中大多數(shù)對象都存在于整個(gè)交互過程中,因此這些對象全部排列在圖的頂部,它們的生命線從圖的頂部畫到圖的底部。每個(gè)對象的下方有一個(gè)矩形條,它與對象的生命線重疊,它表示該對象的控制焦點(diǎn)。序列圖中的消息可以有序號,但由于這種圖上的消息已經(jīng)從縱軸上按時(shí)間順序排序,因此消息序號通常予以省略。 (8) 協(xié)作圖:包含類元角色和關(guān)聯(lián)角色,而不僅僅是類元和關(guān)聯(lián)。協(xié)作圖強(qiáng)調(diào)參加交互的各對象的組織。協(xié)作圖只對相互間有交互作用的對象和這些對象間的關(guān)系建模,而忽略了其他對象和關(guān)聯(lián)。協(xié)作圖也是一種交互圖,它強(qiáng)調(diào)收發(fā)消息的對象的組織結(jié)構(gòu)。 協(xié)作圖和序列圖是協(xié)作的,它們可以互相轉(zhuǎn)換。在多數(shù)情況下,協(xié)作圖主要對單調(diào)的、順序的控制流建模,但它也可以用來對包括迭代和分支在內(nèi)的復(fù)雜控制流進(jìn)行建模。 一般而言,建模人員可以創(chuàng)建多個(gè)協(xié)作圖,其中一些是主要的,另外一些是可選擇的路徑或者異常條件。建模人員可以用包來組織這些協(xié)作圖,并給每個(gè)圖起一個(gè)合適的名字,以便與其它圖區(qū)別開。 (9) 活動圖:用于展現(xiàn)參與行為的類的活動或動作。 活動圖是狀態(tài)圖的一種特殊情況,其中幾乎所有或大多數(shù)狀態(tài)都處于活動狀態(tài),而且?guī)缀跛谢蛘叽蠖鄶?shù)變遷都是由源狀態(tài)中活動的完成觸發(fā)的?;顒訄D本質(zhì)上是一種流程圖,它描述了從活動到活動的控制流。 可以把活動圖看作是新樣的交互圖,但交互圖觀察的是傳遞消息的對象,而活動圖觀察到的是對象之間傳送的消息。盡管兩者在語義上的區(qū)別很細(xì)微,但它們使用不同的方式來看系統(tǒng)的。 如果你覺得本文不錯(cuò)的話,請你點(diǎn)擊屏幕右下方的 。如果你以后會用到這篇文章的或覺得以后要重新翻閱的話,你可以點(diǎn)擊屏幕右下角的 。如果你覺得我的博文不錯(cuò)或是想在第一時(shí)間看到我的動態(tài)的話,你可以點(diǎn)擊屏幕右下角 。如果你想說點(diǎn)什么的話,你可以點(diǎn)擊屏幕右下方的 。如果你都點(diǎn)過了,那真的太謝謝你了,兄弟太支持了。此時(shí),或許你可以點(diǎn)擊 按鈕,然后看看博文的導(dǎo)航繼續(xù)瀏覽其他文章。 最后,歡迎大家繼續(xù)支持和關(guān)注我的博客: http://hoojo.cnblogs.com http://blog.csdn.net/IBM_hoojo 也歡迎大家和我交流、探討IT方面的知識。
|