版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、返回總目錄 目錄 第 2 章 UML 語(yǔ)言概述22.1視圖22.2圖42.3模 型 元 素102.4通 用 機(jī) 制112.5擴(kuò) 展 機(jī) 制122.6 用 UML 建模142.7 工具的支持16第 2 章UML 語(yǔ)言概述統(tǒng)一建模語(yǔ)言 Unified Modeling Language 簡(jiǎn)稱 UML 的應(yīng)用領(lǐng)域很廣泛 它可以用于商業(yè)建模 business modeling 軟件開(kāi)發(fā)建模的各個(gè)階段 也可以用于其他類型的系統(tǒng) 它是一種通用 general 的建模語(yǔ)言 具有創(chuàng)建系統(tǒng)的靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)行為等多種結(jié)構(gòu) construction 模型的能力 UML 語(yǔ)言本身并不復(fù)雜 也不很專業(yè)化 它具有可擴(kuò)展性
2、和通用性 適合為各種多變的系統(tǒng)建模 本章主要介紹 UML 語(yǔ)言的概況 使大家了解 UML 的結(jié)構(gòu)和基本元素 基本元素只給出簡(jiǎn)要的描述 更詳細(xì)深入的討論將在后繼章節(jié)中敘述 因此 讀者在本章的學(xué)習(xí)中只要知道與UML 有關(guān)的概念即可 并不需要完全理解圖例 UML 由視圖 views 圖 Diagrams 模型元素 Model elements 和通用機(jī)制 general mechanism 等幾個(gè)部分構(gòu)成 視圖用來(lái)表示被建模系統(tǒng)的各個(gè)方面 從不同的目的出發(fā)建立 為系統(tǒng)建立多個(gè)模型這些模型都反映同一個(gè)系統(tǒng) 且具有一致性視圖由多個(gè)圖 Diagrams 構(gòu)成 它不是一個(gè)圖片 graph而是在某一個(gè)抽象層上
3、 對(duì)系統(tǒng)的抽象表示 如果要為系統(tǒng)建立一個(gè)完整的模型圖 只需定義一定數(shù)量的視圖 每個(gè)視圖表示系統(tǒng)的一個(gè)特殊的方面就可以了另外 視圖還把建模語(yǔ)言和系統(tǒng)開(kāi)發(fā)時(shí)選擇的方法或過(guò)程連接起來(lái) 圖由各種圖片 graph 構(gòu)成 用來(lái)描述一個(gè)視圖的內(nèi)容 UML 語(yǔ)言定義了 種不同的圖的類型 把它們有機(jī)地結(jié)合起來(lái)就可以描述系統(tǒng)的所有視圖 模型元素代表面向?qū)ο笾械念?對(duì)象 消息和關(guān)系等概念 是構(gòu)成圖的最基本的常用概念 一個(gè)模型元素可以用在多個(gè)不同的圖中 無(wú)論怎樣使用 它總是具有相同的含義和相同的符號(hào)表示 通用機(jī)制用于表示其他信息 比如注釋 模型元素的語(yǔ)義等 另外 它還提供擴(kuò)展機(jī)制 使 UML 語(yǔ)言能夠適應(yīng)一個(gè)特殊的方
4、法 或過(guò)程 或擴(kuò)充至一個(gè)組織或用戶 2.1 視圖 給復(fù)雜的系統(tǒng)建模是一件困難和耗時(shí)的事情 從理想化的角度來(lái)說(shuō) 整個(gè)系統(tǒng)像是一張畫圖 這張圖畫清晰而又直觀地描述了系統(tǒng)的結(jié)構(gòu)和功能 既易于理解又易于交流 但事實(shí)上 要畫出這張圖畫幾乎是不可能的 因?yàn)?一個(gè)簡(jiǎn)單的圖畫并不能完全反映出系統(tǒng)中需要的所有信息 描述一個(gè)系統(tǒng)涉及到該系統(tǒng)的許多方面 比如 功能性方面 它包括靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)交互 非功能性方面 定時(shí)需求 可靠性 展開(kāi)性等 和組織管理方面 工作組 映射代碼模塊等 完整地描述系統(tǒng) 通常的做法是用一組視圖反映系統(tǒng)的各個(gè)方面 每個(gè)視圖代表完整系統(tǒng)描述中的一個(gè)抽象 顯示這個(gè)系統(tǒng)中的一個(gè)特定的方面 每個(gè)視圖由一
5、組圖構(gòu)成 圖中包含了強(qiáng)調(diào)系統(tǒng)中某一方面的信息 視圖與視圖之間有時(shí)會(huì)產(chǎn)生輕微的重疊 從而使得 一個(gè)圖實(shí)際上可能是多個(gè)視圖的一個(gè)組成部分 如果用不同的視圖觀察系統(tǒng) 每次只集中地觀察系統(tǒng)的一個(gè)方面 視圖中的圖應(yīng)該簡(jiǎn)單 易于交流 且與其他的圖 圖用圖形符號(hào)表示 圖符號(hào)代表系統(tǒng)中的模型元素 和視圖有關(guān)聯(lián)關(guān)系 UML 中的視圖包括 用例視圖 Use-case view 邏輯視圖 Logical view 組件視圖 Component view 并發(fā)視圖 Concurrency View展開(kāi)視圖 Deployment View 等五種 能夠使用的其他視圖還有靜態(tài) 動(dòng)態(tài)視圖 邏輯 物理視圖 工作流程workf
6、low 等視圖 但 UML 語(yǔ)言中并不使用這些視圖 它們是 UML 語(yǔ)言的設(shè)計(jì)者意識(shí)中的視圖 因此在未來(lái)的大多數(shù) CASE 工具中有可能包含這些視圖 當(dāng)用戶選擇一個(gè) CASE 工具作圖 diagram 的時(shí)候 一定要保證該工具能夠容易地從一個(gè)視圖導(dǎo)航 navigate 到另一個(gè)視圖 另外 為了看清楚一個(gè)功能在圖中是怎樣工作的 該工具也應(yīng)該具備方便地切換至用例視圖或展開(kāi)視圖的長(zhǎng)處 因?yàn)橛美晥D下可以看到該功能是怎樣被外部用戶描述的 展開(kāi)視圖下可以看到物理結(jié)構(gòu)中該功能是怎樣分布的 即確定在哪臺(tái)計(jì)算機(jī)中得到該功能 2.1.1 用例視圖用例視圖 Use-case view 用于描述系統(tǒng)應(yīng)該具有的功能集
7、 它是從系統(tǒng)的外部用戶角度出發(fā) 對(duì)系統(tǒng)的抽象表示 用例視圖所描述的系統(tǒng)功能依靠于外部用戶或另一個(gè)系統(tǒng)觸發(fā)激活 為用戶或另一個(gè)系統(tǒng)提供服務(wù) 實(shí)現(xiàn)用戶或另一個(gè)系統(tǒng)與系統(tǒng)的交互 系統(tǒng)實(shí)現(xiàn)的最終目標(biāo)是提供用例視圖中描述的功能 用例視圖中可以包含若干個(gè)用例 use-case 用例用來(lái)表示系統(tǒng)能夠提供的功能 系統(tǒng)用法 一個(gè)用例是系統(tǒng)用能請(qǐng)求 的一個(gè)通用描述 用例視圖是其他視圖的核心和基礎(chǔ) 其他視圖的構(gòu)造和發(fā)展依賴于用例視圖中所描述的內(nèi)容 因?yàn)橄到y(tǒng)的最終目標(biāo)是提供用例視圖中描述的功能 同時(shí)附帶一些非功能性的性質(zhì)因此用例視圖影響著所有其他的視圖 用例視圖還可用于測(cè)試系統(tǒng)是否滿足用戶的需求和驗(yàn)證系統(tǒng)的有效性 用
8、例視圖主要為用戶 設(shè)計(jì)人員 開(kāi)發(fā)人員和測(cè)試人員而設(shè)置 用例視圖靜態(tài)地描述系統(tǒng)功能 為了動(dòng)態(tài)地觀察系統(tǒng)功能 偶爾也用活動(dòng)圖 activity diagram 描述 2.1.2 邏輯視圖用例視圖只考慮系統(tǒng)應(yīng)提供什么樣的功能 對(duì)這些功能的內(nèi)部運(yùn)作情況不予考慮 為了揭示系統(tǒng)內(nèi)部的設(shè)計(jì)和協(xié)作狀況 要使用邏輯視圖描述系統(tǒng) 邏輯視圖 Logical view 用來(lái)顯示系統(tǒng)內(nèi)部的功能是怎樣設(shè)計(jì)的 它利用系統(tǒng)的靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)行為來(lái)刻畫系統(tǒng)功能 靜態(tài)結(jié)構(gòu)描述類 對(duì)象和它們之間的關(guān)系等 動(dòng)態(tài)行為主要描述對(duì)象之間的動(dòng)態(tài)協(xié)作 當(dāng)對(duì)象之間彼此發(fā)送消息給給定的函數(shù)時(shí)產(chǎn)生動(dòng)態(tài)協(xié)作一致性 persistence 和并發(fā)性 co
9、ncurrency 等性質(zhì) 以及接口和類的內(nèi)部結(jié)構(gòu)都要在邏輯視圖中定義 靜態(tài)結(jié)構(gòu)在類圖和對(duì)象圖中描述 動(dòng)態(tài)建模用狀態(tài)圖 序列圖 協(xié)作圖和活動(dòng)圖描述 2.1.3 組件視圖組件視圖 Component view用來(lái)顯示代碼組件的組織方式 它描述了實(shí)現(xiàn)模塊 implementation module和它們之間的依賴關(guān)系 組件視圖由組件圖構(gòu)成 組件是代碼模塊 不同類型的代碼模塊形成不同的組件 組件按照一定的結(jié)構(gòu)和依賴關(guān)系呈現(xiàn) 組件的附加信息 比如 為組件分配資源 或其他管理信息 比如 進(jìn)展工作的進(jìn)展報(bào)告 也可以加入到組件視圖中 組件視圖主要供開(kāi)發(fā)者使用 2.1.4 并發(fā)視圖并發(fā)視圖 Concurren
10、cy View 用來(lái)顯示系統(tǒng)的并發(fā)工作狀況 并發(fā)視圖將系統(tǒng)劃分為進(jìn)程和處理機(jī)方式 通過(guò)劃分引入并發(fā)機(jī)制 利用并發(fā)高效地使用資源 并行執(zhí)行和處理異步 除了劃分系統(tǒng)為并發(fā)執(zhí)行的控制線程外 并發(fā)視圖還必須處理通信和這些線程之間的同步問(wèn)題 并發(fā)視圖所描述的方面屬于系統(tǒng)中的非功能性質(zhì)方面 并發(fā)視圖供系統(tǒng)開(kāi)發(fā)者和集成者 integrator 使用 它由動(dòng)態(tài)圖 狀態(tài)圖 序列圖協(xié)作圖 活動(dòng)圖 和執(zhí)行圖 組件圖 展開(kāi)圖 構(gòu)成 2.1.5 展開(kāi)視圖展開(kāi)視圖 Deployment View 用來(lái)顯示系統(tǒng)的物理架構(gòu) 即系統(tǒng)的物理展開(kāi) 比如計(jì)算機(jī)和設(shè)備以及它們之間的聯(lián)接方式 其中計(jì)算機(jī)和設(shè)備稱為結(jié)點(diǎn) node它由展開(kāi)圖
11、表示 展開(kāi)視圖還包括一個(gè)映射 該映射顯示在物理架構(gòu)中組件是怎樣展開(kāi)的 比 如在每立的計(jì)算機(jī)上 哪一個(gè)程序或?qū)ο笤谶\(yùn)行 展開(kāi)視圖提供給開(kāi)發(fā)者 集成者和測(cè)試者 2.2 圖 圖 diagram 由圖片 graph 組成 圖片是模型元素的符號(hào)化 把這些符號(hào)有機(jī)地組織起來(lái)形成的圖表示了系統(tǒng)的一個(gè)特殊部分或某個(gè)方面 一個(gè)典型的系統(tǒng)模型應(yīng)有多個(gè)各種類型的圖 圖是一個(gè)具體視圖的組成部分 在畫一個(gè)圖時(shí) 就相當(dāng)于把這個(gè)圖分配給某個(gè)視圖了 依據(jù)圖本身的內(nèi)容 有些圖可能是多個(gè)視圖的一部分 UML 中包含用例圖 類圖 對(duì)象圖 狀態(tài)圖 序列圖 協(xié)作圖 活動(dòng)圖 組 件 圖展開(kāi)圖共九種 本小節(jié)討論九種圖的基本概念 關(guān)于圖的語(yǔ)
12、法 含義 它們之間怎樣交互等所有細(xì)節(jié)將在后繼章節(jié)中敘述 使用這九種圖就可以描述世界上任何復(fù)雜的事物 這就充分地顯示了UML 的多樣性和靈活性 2.2.1 用例圖用例圖 use-case diagram 用于顯示若干角色 actor 以及這些角色與系統(tǒng)提供的用例之間的連接關(guān)系 如圖 2-1 所示 用例是系統(tǒng)提供的功能 即系統(tǒng)的具體用法 的描述通常一個(gè)實(shí)際的用例采用普通的文字描述 作為用例符號(hào)的文檔性質(zhì) 當(dāng)然 實(shí)際的用例 圖也可以用活動(dòng)圖描述 用例圖僅僅從角色 觸發(fā)系統(tǒng)功能的用戶等 使用系統(tǒng)的角度描述系統(tǒng)中的信息 也就是站在系統(tǒng)外部察看系統(tǒng)功能 它并不描述系統(tǒng)內(nèi)部對(duì)該功能的具體操作方式 用例圖定義
13、的是系統(tǒng)的功能需求 關(guān)于用例圖的圖示方法 含義等更進(jìn)一步的介紹放在第三章中 簽定保險(xiǎn)單 客戶 銷售統(tǒng)計(jì)資料 客戶數(shù)據(jù)資料 保險(xiǎn)銷售員 圖 2.1 用例圖示例 2.2.2 類圖類圖 class diagram 用來(lái)表示系統(tǒng)中的類和類與類之間的關(guān)系 它是對(duì)系統(tǒng)靜態(tài)結(jié)構(gòu)的描述 如圖 2-2 所示 類用來(lái)表示系統(tǒng)中需要處理的事物 類與類之間有多種連接方式 關(guān)系 比如 關(guān)聯(lián) 彼此間的連接 依賴 一個(gè)類使用另一個(gè)類 通用化 一個(gè)類是另一個(gè)類的特殊化或打包 packaged 多個(gè)類聚合成一個(gè)基本元素 類與類之間的這些關(guān)系都體現(xiàn)在類圖的內(nèi)部結(jié)構(gòu)之中 通過(guò)類的屬性 attribute 和操作 operation
14、 這些術(shù)語(yǔ)反映出來(lái) 在系統(tǒng)的生命周期中 類圖所描述的靜態(tài)結(jié)構(gòu)在任何情況下都是有效的 一個(gè)典型的系統(tǒng)中通常有若干個(gè)類圖 一個(gè)類圖不一定包含系統(tǒng)中所有的類 一個(gè)類還可以加到幾個(gè)類圖中 在第四章中 我們?cè)僭敿?xì)討論 交易員 有價(jià)證券 客戶 1擁有1.*1.*處 理 1含 0.*有0.*股票選擇 股票 債券 儀器工具 圖 2-2 金融貿(mào)易類圖示例 2.2.3 對(duì)象圖對(duì)象圖是類圖的變體 兩者之間的差別在于對(duì)象圖表示的是類的對(duì)象實(shí)例 而不是真實(shí)的類 對(duì)象圖是類圖的一個(gè)范例 example它及時(shí)具體地反映了系統(tǒng)執(zhí)行到某處時(shí) 系統(tǒng)的工作狀況 對(duì)象圖中使用的圖示符號(hào)與類圖幾乎完全相同 只不過(guò)對(duì)象圖中的對(duì)象名加了下
15、劃線而且類與類之間關(guān)系的所有實(shí)例也都畫了出來(lái) 如圖 2-3 所示 圖 2-3a 的類圖抽象地顯示各個(gè)類及它們之間的關(guān)系 圖 2-3b 的對(duì)象圖則是圖 2-3a 類圖的一個(gè)實(shí)例表示 對(duì)象圖沒(méi)有類圖重要 對(duì)象圖通常用來(lái)示例一個(gè)復(fù)雜的類圖 通過(guò)對(duì)象圖反映真正的實(shí)例是什么 它們之間可能具有什么樣的關(guān)系 幫助對(duì)類圖的理解 對(duì)象圖也可以用在協(xié)作圖中作為其一個(gè)組成部分 用來(lái)反映一組對(duì)象之間的動(dòng)態(tài)協(xié)作關(guān)系 作家 0.1使用 1.*計(jì)算機(jī)姓 名 string名 稱 string年 齡 integer內(nèi) 存 integerb對(duì)象圖名稱 長(zhǎng)城 P MMX內(nèi)存=64 丁一家里的 PC 計(jì)算機(jī) 姓名=丁一年齡=30 丁
16、一 作家 名 稱 Dell 466內(nèi)存=64 丁一辦公室中的 PC 計(jì)算機(jī) a類圖 圖 2-3 對(duì)象圖與類圖示例 2.2.4 狀態(tài)圖一般說(shuō)來(lái) 狀態(tài)圖是對(duì)類所描述事物的補(bǔ)充說(shuō)明 它顯示了類的所有對(duì)象可能具有的狀態(tài) 以及引起狀態(tài)變化的 如圖 2-4 所示 可以是給它發(fā)送消息的另一個(gè)對(duì)象或者某個(gè)任務(wù)執(zhí)行完畢 比如 指定時(shí)間到 狀態(tài)的變化稱作轉(zhuǎn)移 transition 一個(gè)轉(zhuǎn)移可以有一個(gè)與之相連的動(dòng)作 action 這個(gè)動(dòng)作指明了狀態(tài)轉(zhuǎn)移時(shí)應(yīng)該做些什么 并不是所有的類都有相應(yīng)的狀態(tài)圖 狀態(tài)圖僅用于具有下列特點(diǎn)的類 具有若干個(gè)確定的狀態(tài) 類的行為在這些狀態(tài)下會(huì)受到影響且被不同的狀態(tài)改變 另外 也可以為系
17、統(tǒng)描繪整體狀態(tài)圖 關(guān)于狀態(tài)圖更進(jìn)一步的討論詳見(jiàn)第五章和第八 章 2.2.5 序列圖上升樓層大樓的一層向上升到達(dá)一層 移到一層 向下降到達(dá)樓層空 閑下降樓層超時(shí)圖 2.4 電梯的狀態(tài)圖示例 上升樓層 序列圖用來(lái)反映若干個(gè)對(duì)象之間的動(dòng)態(tài)協(xié)作關(guān)系 也就是隨著時(shí)間的流逝 對(duì)象之間是如何交互的 如圖 2-5 所示 序列圖主要反映對(duì)象之間已發(fā)送消息的先后次序 說(shuō)明對(duì)象之間的交互過(guò)程 以及系統(tǒng)執(zhí)行過(guò)程中 在某一具置將會(huì)有什么發(fā)生 打印 文件 :打印服務(wù)器:打印機(jī):隊(duì)列打印 文件 打印機(jī)空閑打印 文件 打印機(jī)忙存儲(chǔ) 文件 :計(jì)算機(jī) 序列圖由若干個(gè)對(duì)象組成 每個(gè)對(duì)象用一個(gè)垂直的虛線表示 線上方是對(duì)象名每個(gè)對(duì)象的
18、正下方有一個(gè)矩形條 它與垂直的虛線相疊 矩形條表示該對(duì)象隨時(shí)間流逝的過(guò)程從上至下對(duì)象之間傳遞的消息用消息箭頭表示 它們位于表示對(duì)象的垂直線條之間時(shí)間說(shuō)明和其他的注釋作為腳本放在圖的邊緣 對(duì)序列圖的討論詳見(jiàn)第五章和第八章 圖 2.5 序列圖示例 2.2.6 協(xié)作圖協(xié)作圖和序列圖的作用一樣 反映的也是動(dòng)態(tài)協(xié)作 除了顯示消息變化 稱為交互 外 協(xié)作圖還顯示了對(duì)象和它們之間的關(guān)系 稱為上下文有關(guān) 由于協(xié)作圖或序列圖都反映對(duì)象之間的交互 所以建模者可以任意選擇一種反映對(duì)象間的協(xié)作 如果需要強(qiáng)調(diào)時(shí)間和序列 最好選擇序列圖 如果需要強(qiáng)調(diào)上下文相關(guān) 最好選擇協(xié)作圖 協(xié)作圖與對(duì)象圖的畫法一樣 圖中含有若干個(gè)對(duì)象
19、及它們之間的關(guān)系 使用對(duì)象圖或類圖中的符號(hào) 對(duì)象之間流動(dòng)的消息用消息箭頭表示 箭頭中間用標(biāo)簽標(biāo)識(shí)消息被發(fā)送的序號(hào) 條件 迭代 iteration 方式 返回值等等 通過(guò)識(shí)別消息標(biāo)簽的語(yǔ)法 開(kāi)發(fā)者可以看出對(duì)象間的協(xié)作 也可以跟蹤執(zhí)行流程和消息的變化情況 打印機(jī)忙1.2 存儲(chǔ) 文件 1 打印 文件 打印機(jī)空閑1.1打印 文件 :打印服務(wù)器 :計(jì)算機(jī) :打印機(jī) :隊(duì)列 協(xié)作圖中也能包含活動(dòng)對(duì)象 多個(gè)活動(dòng)對(duì)象可以并發(fā)執(zhí)行 如圖 2-6 所示 第五章和第八章詳細(xì)討論協(xié)作圖 圖 2.6 協(xié)作圖示例 2.2.7 活動(dòng)圖活動(dòng)圖 activity diagram 反映一個(gè)連續(xù)的活動(dòng)流 如圖 2-7 所示 相對(duì)于
20、描述活動(dòng)流 比如 用例或交互 來(lái)說(shuō) 活動(dòng)圖更常用于描述某個(gè)操作執(zhí)行時(shí)的活動(dòng)狀況 活動(dòng)圖由各種動(dòng)作狀態(tài) action state 構(gòu)成 每個(gè)動(dòng)作狀態(tài)包含可執(zhí)行動(dòng)作的規(guī)范說(shuō)明 當(dāng)某個(gè)動(dòng)作執(zhí)行完畢 該動(dòng)作的狀態(tài)就會(huì)隨著改變 這樣 動(dòng)作狀態(tài)的控制就從一個(gè)狀態(tài)流向另一個(gè)與之相連的狀態(tài) 活動(dòng)圖中還可以顯示決策 條件 動(dòng)作狀態(tài)的并行執(zhí)行 消息 被動(dòng)作發(fā)送或接收 的規(guī)范說(shuō)明等內(nèi)容 活動(dòng)圖在第五章中詳述 Printfile()磁盤滿在屏幕上 顯示磁盤滿空閑磁盤空間在屏幕上顯示打印擦除屏幕上的提示信息Printer.Print(file) 產(chǎn)生附錄文件圖 2.7 活動(dòng)圖示例 2.2.8 組件圖組件圖 compon
21、ent diagram 用來(lái)反映代碼的物理結(jié)構(gòu) 代碼的物理結(jié)構(gòu)用代碼組件表示 組件可以是源代碼 二進(jìn)制文件或可執(zhí)行文件組件組件包含了邏輯類或邏輯類的實(shí)現(xiàn)信息 因此邏輯視圖與組件視圖之間存在著映射關(guān) 系 組件之間也存在依賴關(guān)系 利用這種依賴關(guān)系可以方便地很容易地分析一個(gè)組件的變化會(huì)給其他的組件帶來(lái)怎樣的影響 組件可以與公開(kāi)的任何接口 比如 OLE COM 接口 一起顯示 也可以把它們組 窗口控制 whnd.cpp圖形庫(kù) graphic.dll窗口控制 whnd.obj通信控制 comhnd.cpp通信控制 comhnd.obj客戶程序 client.exe主控模塊 main.cpp主控模塊mai
22、n.obj合起來(lái)形成一個(gè)包 package在組件圖中顯示這種組合包 實(shí)際編程工作中經(jīng)常使用組件圖 如圖 2-8 所示第六章中將進(jìn)一步詳述組件圖 圖 2.8 組件圖示例 2.2.9 展開(kāi)圖展開(kāi)圖 deployment diagram 用來(lái)顯示系統(tǒng)中軟件和硬件的物理架構(gòu) 通常展開(kāi)圖中顯示實(shí)際的計(jì)算機(jī)和設(shè)備 用結(jié)點(diǎn)表示 以及各個(gè)結(jié)點(diǎn)之間的關(guān)系 還可以顯示關(guān)系的類型 每個(gè)結(jié)點(diǎn)內(nèi)部顯示的可執(zhí)行的組件和對(duì)象清晰地反映出哪個(gè)軟件運(yùn)行在哪個(gè)結(jié)點(diǎn)上 組件之間的依賴關(guān)系也可以顯示在展開(kāi)圖中 TCP/IPTCP/IP 客 戶 B Compaq Pro PC 應(yīng)用服務(wù)器 Silicon Graphics O2 客 戶
23、 A Compaq Pro PC正如前面所陳述 展開(kāi)圖用來(lái)表示展開(kāi)視圖 描述系統(tǒng)的實(shí)際物理結(jié)構(gòu) 用例視圖是對(duì)系統(tǒng)應(yīng)具有的功能的描述 它們二者看上去差別很大 似乎沒(méi)有什么聯(lián)系 然而 如果對(duì)系統(tǒng)的模型定義明確 那么從物理架構(gòu)的結(jié)點(diǎn)出發(fā) 找到它含有的組件 再通過(guò)組件到達(dá)它實(shí)現(xiàn)的類 再到達(dá)類的對(duì)象參與的交互 直至最終到達(dá)一個(gè)用例也是可能的 從整體來(lái)說(shuō) 系統(tǒng)的不同視圖給系統(tǒng)的描述應(yīng)當(dāng)是一致的 如圖 2-9 所示關(guān)于展開(kāi)圖的討論放在第六章中詳述 DecNet 數(shù)據(jù)庫(kù)服務(wù)器 VAX圖 2.9 展開(kāi)圖示例 2.3 模 型 元 素 可以在圖中使用的概念統(tǒng)稱為模型元素 模型元素用語(yǔ)義 元素的正式定義或確定的語(yǔ)句所
24、代表的準(zhǔn)確含義來(lái)定義 模型元素在圖中用其相應(yīng)的視圖元素 符號(hào) 表示 利用視圖元素可以把圖形象直觀地表示出來(lái) 一個(gè)元素 符號(hào) 可以存在于多個(gè)不同類型的圖中但是具體以怎樣的方式出現(xiàn)在哪種類型的圖中要符合 依據(jù) 一定的規(guī)則 類屬性 操作 對(duì)象 屬性 操作 狀 態(tài) 結(jié)點(diǎn) 用 例 圖 2-10 給出了類 對(duì)象 狀態(tài) 結(jié)點(diǎn) 包 package 和組件等模型元素的符號(hào)圖例 接口 包筆記 組件圖 2.10 一些通用的模型元素符號(hào)示例 模型元素與模型元素之間的連接關(guān)系也是模型元素 常見(jiàn)的關(guān)系有關(guān)聯(lián)association通用化generalization依賴dependency 和聚合 aggregation其中
25、聚合是關(guān)聯(lián)的一種特殊形式這些關(guān)系的圖示符號(hào)如圖 2-11 所示 依賴 通用 化 繼承 關(guān)聯(lián) 聚合 圖 2.11 關(guān)系的圖示符號(hào)示例 除了上述的模型元素外 模型元素還包括消息 動(dòng)作和版類 stereotype 所有模型元素的意義和允許的用法在后續(xù)章節(jié)中解釋 它們的語(yǔ)義采用非正式的可行方式描述 而不采用 UML 語(yǔ)言參考手冊(cè)中的正式定義 2.4 通 用 機(jī) 制 UML 語(yǔ)言利用通用機(jī)制為圖附加一些信息 這些信息通常無(wú)法用基本的模型元素表示 常用的通用機(jī)制有修飾 adornment 筆記 note 和規(guī)格說(shuō)明 specification 等 2.4.1 修飾在圖的模型元素上添加修飾為模型元素附加一定
26、的語(yǔ)義 這樣 建模者就可以方便地把類型與實(shí)例區(qū)別開(kāi) 當(dāng)某個(gè)元素代表一個(gè)類型時(shí) 它的名字被顯示成黑體字 當(dāng)用這個(gè)元素代表其對(duì)應(yīng)類型的實(shí)例時(shí) 它的名字下面加下劃線 同時(shí)還要指明實(shí)例的名字和類型的名字 比如 類用長(zhǎng)方形表示 其名字用黑體字書(shū)寫 比如 計(jì)算機(jī) 如果類的名字帶有下劃線 它則代表該類的一個(gè)對(duì)象 比如 丁一的計(jì)算機(jī) 對(duì)結(jié)點(diǎn)的修飾方式也是一樣的 結(jié)點(diǎn)的符號(hào)既可以是用黑體字表示的類型 比如 打印機(jī) 也可以是結(jié)點(diǎn)類型的一個(gè)實(shí)例 丁一的 HP 打印機(jī) 其他的修飾有對(duì)各種關(guān)系的規(guī)范說(shuō)明 比如重?cái)?shù)multiplicity 重?cái)?shù)是一個(gè)數(shù)值或一個(gè)范圍 它指明涉及到關(guān)系的類型的實(shí)例個(gè)數(shù) 修飾緊靠著模型元素書(shū)寫
27、 2.4.2 筆記無(wú)論建模語(yǔ)言怎樣擴(kuò)展 它不可能應(yīng)用于描述任何事物 為了在模型中添加一些額外的模型元素?zé)o法表示的信息 UML 語(yǔ)言提供了筆記能力 筆記可以放在任何圖的任意位置并且可以含有各種各樣的信息 信息的類型是字符串 UML 語(yǔ)言不能解釋 如果某個(gè)元素需要一些解釋或說(shuō)明信息 那么就可以為該元素添加筆記 通常用虛線把含有信息的筆記與圖中的一些元素聯(lián)系起來(lái) 如圖 2-12 所示 股票選項(xiàng)TheorPrice()MarketPrice() ExpireDate()使用B&S 公式圖 2.12 筆記圖示 筆記中可以包含建模者的注釋或問(wèn)題 用以提示建模者 防止日后出現(xiàn)不清楚該元素的含義等情況 筆記中
28、也可以包含版類 版類用于描述筆記的類型 版類在下一節(jié)的擴(kuò)展機(jī)制中詳細(xì)敘述 2.4.3 規(guī)格說(shuō)明模型元素含有一些性質(zhì) 這些性質(zhì)以數(shù)值方式體現(xiàn) 一個(gè)性質(zhì)用一個(gè)名字和一個(gè)值表示 又稱作加標(biāo)簽值 tagged value加標(biāo)簽值用整數(shù)或字符串等類型詳細(xì)說(shuō)明 UML 中 有許多預(yù)定義的性質(zhì) 比如 文檔 documentation響應(yīng) responsibility持續(xù)性 persistence和并發(fā)性 concurrency性質(zhì)一般作為模型元素實(shí)例的附加規(guī)格說(shuō)明 比如 用一些文字逐條列舉類的響應(yīng)和能力 這種規(guī)范說(shuō)明方式是非正式的 并且也不會(huì)直接顯示在圖中 但是在某些 CASE 工具中通過(guò)雙擊模型元素 就可
29、以打開(kāi)含有該元素所有性質(zhì)的規(guī)格說(shuō)明窗口 通過(guò)該窗口就可以方便地讀取信息了 2.5 擴(kuò) 展 機(jī) 制 UML 語(yǔ)言具有擴(kuò)展性 因此也適用于描述某個(gè)具體的方法 組織或用戶 這里我們介紹三種擴(kuò)展機(jī)制 版類 stereotype 加標(biāo)簽值 tagged value 和約束 constrains 這三種機(jī)制的更詳細(xì)的討論在第七章中進(jìn)行 2.5.1 版類版類擴(kuò)展機(jī)制是指在已有的模型元素基礎(chǔ)上建立一種新的模型元素 版類與現(xiàn)有的元素相差不多 只不過(guò)比現(xiàn)有的元素多一些特別的語(yǔ)義罷了 版類與產(chǎn)生該版類的原始元素的使用場(chǎng)所是一樣的 版類可以建立在所有的元素類型上 比如 類 結(jié)點(diǎn) 組件 筆記關(guān)系 關(guān)聯(lián) 通用化和依賴UM
30、L 語(yǔ)言中已經(jīng)預(yù)定義了一些版類 這些預(yù)定義的版類可以直接使用 從而免去了再定義新版類的麻煩 使得 UML 語(yǔ)言用起來(lái)比較簡(jiǎn)單 版類的表示方法是在元素名稱旁邊添加一個(gè)版類的名字 版類的名字用字符串 用雙尖角括號(hào)括起來(lái) 表示 如圖 2-13 所示 版類也可以用一個(gè)圖形表示 比如 圖標(biāo) 具體的版類元素的圖示方法有三種 第一種在元素名稱之上寫版類名 這是一般的表示法 第二種是在元素名稱旁畫出版類的圖標(biāo) 圖形化表示 第三種是把元素名稱和版類圖標(biāo)合在一起 圖 2-13 圖示了這三種表示法 客戶 角色 客戶客戶 圖 2-13 版類的圖示方法 當(dāng)一個(gè)元素與版類連接在一起后 該元素稱為 指定版類的元素類型比如
31、與版類 window 相連的類就稱為 window 版類的類這意味著該類是 window 類型的了 當(dāng)用戶定義版類的時(shí)候 與之相關(guān)的類也要定義 比如 定義 window版類時(shí) 必須定義 window 版類的類 圖 2-13 中的 客戶 是具有版類 角色 的類 由于版類 角色 添加了特別的語(yǔ)義給 客戶 類 所以該類代表的是系統(tǒng)的外部角色 用戶 版類是非常好的擴(kuò)展機(jī)制 它的存在避免了 UML 語(yǔ)言過(guò)于復(fù)雜化 同時(shí)也使 UML語(yǔ)言能夠適應(yīng)各種需求 很多需求的新模型元素已做成了 UML 語(yǔ)言的基礎(chǔ)原型 prototype用戶可以利用它添加新的語(yǔ)義后定義新的模型元素 2.5.2 加標(biāo)簽值value:in
32、texpdate:date 儀器abstractauthor=”HEE”status=draft在 2.4.3 節(jié)中已討論過(guò)元素有很多性質(zhì) 性質(zhì)用名字和值一對(duì)信息表示 性質(zhì)也稱為加標(biāo)簽值 UML 語(yǔ)言中已經(jīng)預(yù)定義了一定數(shù)量的性質(zhì) 用戶還可以為元素定義一些附加信息即定義性質(zhì) 任何一種類型的信息都可以定義為元素的性質(zhì) 比如 具體的方法信息 建模進(jìn)展?fàn)顩r的管理信息 其他工具使用的信息 用戶需要給元素附加的其他各類的信息 圖2-14 表示的是儀器類的性質(zhì) 其中抽象 abstract 詳細(xì)含義見(jiàn)第四章 是預(yù)定義的性質(zhì)作者和狀態(tài)是用戶定義的加標(biāo)簽值 圖 2.14 儀器類的性質(zhì)示例 2.5.3 約束約束是對(duì)
33、元素的限制 通過(guò)約束限定元素的用法或元素的語(yǔ)義 如果在幾個(gè)圖中都要使用某個(gè)約束 可以在工具中聲明該約束 當(dāng)然 也可以在圖中邊定義邊使用 圖 2-15 顯示的是老年人 類 與一般人 類 之間的關(guān)聯(lián)關(guān)系 顯然 并不是所有的人都是老年人 為了表示只有 歲以上的人才能加入老年人 類 我們定義了一個(gè)約束條件 年齡屬性大于 歲的人 person.age 60 有了這個(gè)條件 哪個(gè)人屬于這種關(guān)聯(lián)關(guān)系中也就自然清楚了 反過(guò)來(lái)說(shuō) 假如沒(méi)有約束條件 這個(gè)圖就很難解釋清楚 在最壞情況下 它可能會(huì)導(dǎo)致系統(tǒng)實(shí)現(xiàn)上的錯(cuò)誤 老年人0.1 person.a 0.*人在上述例子中 約束被直接定義和應(yīng)用在了需要使用的圖上 當(dāng)然 也
34、可以用名字加規(guī)格說(shuō)明的方法定義約束 比如老年人 和 person.age 60 UML 語(yǔ)言中預(yù)定義了一部分約束 這些約束的具體內(nèi)容在第七章中討論 ge60圖 2.15 約束示例 2.6 用 UML 建模 用 UML 語(yǔ)言建造系統(tǒng)模型的時(shí)候 并不是只建一個(gè)模型 在系統(tǒng)開(kāi)發(fā)的每個(gè)階段都要建造不同的模型 建造這些模型的目的也是不同的 需求分析階段建造的模型用來(lái)捕獲系統(tǒng)的需求 描繪與真實(shí)世界相應(yīng)的基本類和協(xié)作關(guān)系 設(shè)計(jì)階段的模型是分析模型的擴(kuò)充為實(shí)現(xiàn)階段作指導(dǎo)性的 技術(shù)上的解決方案 實(shí)現(xiàn)階段的模型是真正的源代碼source code編譯后的源代碼就變成了程序 最后是展開(kāi)模型 它在物理架構(gòu)上解釋系統(tǒng)是
35、如何展開(kāi)的 系統(tǒng)模型分析模型設(shè)計(jì)模型實(shí)現(xiàn)模型實(shí)現(xiàn)模型雖然這些模型各不相同 但通常情況下 后期的模型都由前期的模型擴(kuò)展而來(lái) 因此每個(gè)階段建造的模型都要保存下來(lái) 以便出錯(cuò)時(shí)返回重做或重新擴(kuò)展最初的分析模型 如圖 2-16 所示 圖 2.16 用多個(gè)模型描述的系統(tǒng) UML 語(yǔ)言具有階段獨(dú)立性 也就是說(shuō) 同樣的通用語(yǔ)言和同樣的圖可以用在不同的階段為不同的事情建模 這使得建模者能把更多的精力放在考慮模型的結(jié)構(gòu)和適用范圍上注意 建模語(yǔ)言只能用于建造模型 不能用于保證系統(tǒng)的質(zhì)量 第四章介紹 若使用 UML 語(yǔ)言建模 建模工作一定要依照某個(gè)方法或過(guò)程進(jìn)行 因?yàn)檫@個(gè)方法或過(guò)程列出了應(yīng)進(jìn)行哪些不同的步驟 及這些步
36、驟怎樣實(shí)現(xiàn)的大綱 建模的過(guò)程一般被分為以下幾個(gè)連續(xù)的重復(fù)迭代階段 需求分析階段 設(shè)計(jì)階段 實(shí)現(xiàn)階段和展開(kāi)階段 與實(shí)際的建模工作相比 這是一個(gè)簡(jiǎn)單的建模過(guò)程 通常情況下 一組人聚在一起提出問(wèn)題和討論目標(biāo)就已經(jīng)開(kāi)始建模了 他們一起討論并寫出一個(gè)非正式的會(huì)議記要 記錄可能要建造的模型的構(gòu)想和應(yīng)有怎樣的變化 記錄會(huì)議內(nèi)容的工具也很不正規(guī) 通常在筆記本和白板寫 這種會(huì)議一直要持續(xù)到參與討論的人感覺(jué)這些基本的模型具有一定的可行性了 才會(huì)進(jìn)入下一階段 這時(shí)形成的模型稱為早期的假說(shuō) 把假說(shuō)用某一 CASE 工具描述 假說(shuō)模型就組織起來(lái)了 同時(shí)按照建模語(yǔ)言的語(yǔ)法規(guī)則構(gòu)建一個(gè)真實(shí)的圖也是可行的了 再到下一階段時(shí)
37、前期模型會(huì)被更詳細(xì)地描述 這個(gè)階段主要完成的工作是 細(xì)化解決問(wèn)題的方案和文檔 提取更多的解決問(wèn)題需要的信息 這個(gè)工作可能需要幾經(jīng)反復(fù)才能最后完成 通過(guò)這個(gè)階段的工作 假說(shuō)也逐漸變成一個(gè)可使用的模型了 再接下來(lái)的步驟是集成 integration 和驗(yàn)證 verification 模型 集成就是把同一系統(tǒng)中的各種圖或模型結(jié)合起來(lái) 通過(guò)驗(yàn)證工作保證圖與圖之間數(shù)據(jù)的一致性 通過(guò)驗(yàn)證工作保證模型能夠正確地解決問(wèn)題 如圖 2-17 所示 使用非正式的工具 比如 白板和筆記公告 輸入 知識(shí) 經(jīng)驗(yàn)問(wèn)題描述 目標(biāo)等 集體討論描繪目標(biāo) 通過(guò)描繪目標(biāo)靠近實(shí)際工作集成 發(fā)現(xiàn)不足組織目標(biāo) 詳細(xì)說(shuō)明圖的細(xì)節(jié) (反復(fù)迭代
38、 明確內(nèi)容) 把非正式工具描繪的目標(biāo)組織成正式的圖 詳細(xì)說(shuō)明 檢查圖之間的沖突 系統(tǒng)的有效性和正確性 核實(shí)驗(yàn)證 制造原型和測(cè)試原型 原型化與測(cè)試 評(píng)價(jià)結(jié)果 若與目標(biāo)不符返回糾正不足之處 系統(tǒng)評(píng)價(jià) 得到滿意結(jié)果圖 2.17 實(shí)際建模工作的大致流程 最后 在實(shí)際解決問(wèn)題的時(shí)候模型被實(shí)現(xiàn)為各種原型 prototype 生成原型時(shí) 要對(duì)生成的原型進(jìn)行評(píng)價(jià) 以便發(fā)現(xiàn)可能潛在的錯(cuò)誤 遺漏的功能和開(kāi)發(fā)代價(jià)過(guò)高等不足之處 如果發(fā)現(xiàn)了上述不足之處 那么開(kāi)發(fā)人員還要返回到前期的各個(gè)階段步驟排 除 這 些 問(wèn) 題 如 果 問(wèn)題很嚴(yán)重 開(kāi)發(fā)者或許最終要返到剛開(kāi)始的集體討論 描繪草圖的階段 重新建模 當(dāng)然 如果問(wèn)題很小
39、 開(kāi)發(fā)者只需改變模型的一部分組織和規(guī)格說(shuō)明 注 意 把圖原型化的工作 一定要在把多個(gè)圖結(jié)合成原型結(jié)構(gòu)之后 原型只是一個(gè)很粗淺的東西 構(gòu)建原型僅僅是為了對(duì)其進(jìn)行評(píng)價(jià) 發(fā)現(xiàn)其中的不足之處 而對(duì)原型進(jìn)一步地開(kāi)發(fā)過(guò)程才算得上真正的系統(tǒng)開(kāi)發(fā)過(guò)程 2.7 工具的支持 使用建模語(yǔ)言需要相應(yīng)的工具支持 即使人工在白板上畫好了模型的草圖 建模者也需要使用工具 因?yàn)槟P椭泻芏鄨D的維護(hù) 同步和一致性檢查等工作 人工做起來(lái)幾乎是不可能的 自從用于產(chǎn)生程序的第一個(gè)可視化軟件問(wèn)世以來(lái) 建模工具 又叫 CASE 工具 一直不很成熟 許多 CASE 工具幾乎和畫圖工具一樣 僅提供了建模語(yǔ)言和很少的一致性檢查增加了一些方法的知
40、識(shí) 經(jīng)過(guò)人們不斷地改進(jìn) 今天的 CASE 工具正在接近圖的原始視覺(jué)效果 比如 Rational Rose 工具 就是一種比較現(xiàn)代的建模工具 但是還有一些工具仍然比較粗糙 比如一般軟件中很好用的 剪切 和 粘帖 功能 在這些工具中尚未實(shí)現(xiàn) 另外 每種工具都有屬于自己的建模語(yǔ)言 或至少有自己的語(yǔ)言定義也限制了這些工具的發(fā)展 隨著統(tǒng)一建模語(yǔ)言 UML 的發(fā)布 工具制造者現(xiàn)在可能會(huì)花較多的時(shí)間來(lái)提高工具質(zhì)量 減少定義新的方法和語(yǔ)言所花費(fèi)的時(shí)間 一個(gè)現(xiàn)代的 CASE 工具應(yīng)提供下述的功能 畫 圖 draw diagrams CASE 工具中必須提供方便作圖和為圖著色的功能 也必須具有智能 能夠理解圖的目
41、的 知道簡(jiǎn)單的語(yǔ)義和規(guī)則 這樣的特點(diǎn)帶來(lái)的方便是 當(dāng)建模者不適當(dāng)?shù)鼗蝈e(cuò)誤地使用模型元素時(shí) 工具能自動(dòng)告警或禁止其操作 積 累 repository CASE 工具中必須提供普通的積累功能 以便系統(tǒng)能夠把收集到的模型信息存儲(chǔ)下來(lái)如果在某個(gè)圖中改變了某個(gè)類的名稱 那么這種變化必須及時(shí)地反射到使用該類的所有其他圖中 導(dǎo) 航 navigation CASE 工具應(yīng)該支持易于在模型元素之間導(dǎo)航的功能 也就是 使建模者能夠容易地從一個(gè)圖到另一個(gè)圖地跟蹤模型元素或擴(kuò)充對(duì)模型元素的描述 多用戶支持 CASE 工具提供該功能使多個(gè)用戶可以在一個(gè)模型上工作 但被此之間沒(méi)有干擾 產(chǎn)生代碼 generate code
42、 一個(gè)高級(jí)的 CASE 工具一定要有產(chǎn)生代碼的能力 該功能可以把模型中的所有信息翻譯成代碼框架 把該框架作為實(shí)現(xiàn)階段的基礎(chǔ) 逆 轉(zhuǎn) reverse 一個(gè)高級(jí)的 CASE 工具一定要有閱讀現(xiàn)成代碼并依代碼產(chǎn)生模型的能力 即模型可由代碼生成 它與產(chǎn)生代碼是互逆的兩個(gè)過(guò)程 對(duì)開(kāi)發(fā)者來(lái)說(shuō) 他可以用建模工具或編程二種方法建模 集 成 integrate CASE 工具一定要能與其他工具集成 即與開(kāi)發(fā)環(huán)境 比如 編輯器 編譯器和調(diào)試器 和企業(yè)工具 比如 配置管理和版本控制系統(tǒng) 等的集成 覆蓋模型的所有抽象層 CASE 工具應(yīng)該能夠容易地從對(duì)系統(tǒng)的最上層的抽象描述向下導(dǎo)航至最低的代碼層這樣 若需要獲得類中一
43、個(gè)具體操作的代碼 只要在圖中單擊這個(gè)操作的名字即可 模型互換 模型或來(lái)自某個(gè)模型的個(gè)別的圖應(yīng)該能夠從一個(gè)工具輸出 然后再輸入到另一個(gè)工具就像 JAVA 代碼可在一個(gè)工具中產(chǎn)生 而后用在另一個(gè)工具中一樣 模型互換功能也應(yīng)該支持用明確定義的語(yǔ)言描述的模型之間的互換 輸出 輸入 2.7.1 繪圖支持CASE 工具應(yīng)使繪圖工作簡(jiǎn)單而有趣 一個(gè)高級(jí)的繪圖工具能夠充當(dāng) CASE 工具經(jīng)歷了一段很長(zhǎng)的時(shí)間 那是因?yàn)?CASE 工具不僅必須提供優(yōu)秀的選擇 放置 連接和定義圖中元素的機(jī)制 而且還要幫助建模者著色 形成一張正確的圖 CASE 工具還應(yīng)該有理解模型元素語(yǔ)義的能力 這種能力能夠在錯(cuò)誤地使用模型元素時(shí)發(fā)
44、出警告 或者提示一個(gè)具體的操作與其他操作之間可能存在不一致問(wèn)題 比如 在一個(gè)模型中 若修改某個(gè)圖后 將會(huì)引起該圖與其他圖的沖突 這時(shí)系統(tǒng)就會(huì)自動(dòng)告警 提示建模者的修改可能出現(xiàn)錯(cuò)誤 CASE 工具也應(yīng)提供圖的版面設(shè)計(jì)功能 比如 允許建模者重新排列模型元素 而代表消息的線條由工具自動(dòng)地重新排列 使它們彼此不會(huì)交叉 在很多 CAD 系統(tǒng)中 這個(gè)功能實(shí)現(xiàn)得很好 建模工具的制造者可以從中借鑒一些經(jīng)驗(yàn) 2.7.2 模型積累CASE 工具的模型積累就是提供一個(gè)數(shù)據(jù)庫(kù) 用數(shù)據(jù)庫(kù)保存模型中元素的所有信息而不考慮這些信息來(lái)自哪個(gè)圖 這個(gè)積累應(yīng)該含有整個(gè)模型的基本信息 這些基本信息可以通過(guò)若干個(gè)圖看到 如圖 2-1
45、8 所示 執(zhí)行 告或阻止這種用法 如果建模者打算刪除某圖中的元素 而該元素又被其他圖使用 同樣也會(huì)產(chǎn)生警告開(kāi)發(fā)者的信息 如果開(kāi)發(fā)者一定要?jiǎng)h除這個(gè)元素 那么所有引用了該元素的圖中的該元素也將被刪除 這樣 開(kāi)發(fā)者就一定要返回去修改引用了該元素的圖 使之有效 鑒定是指 CASE 工具可以使用積累鑒定模型 或是指出尚未詳細(xì)說(shuō)明的部分 或是跟蹤模型 發(fā)現(xiàn)可能的錯(cuò)誤或不合適的解決方法 報(bào)告指的是 CASE 工具能自動(dòng)產(chǎn)生所有模型元素的完全的和擴(kuò)展的文檔 比如 類或圖的報(bào)告 這個(gè)報(bào)告與所有數(shù)據(jù)的術(shù)語(yǔ)分類很相似 重用元素或圖指的是利用積累支持重用功能 以便某個(gè)工程的建模解決方案或部分方案能容易地用在另一個(gè)工程
46、中 UML 模型中的組件直接與源代碼相連 因此組件或其源代碼都能在不同的工程中重用 2.7.3 導(dǎo)航當(dāng)把幾個(gè)視圖和圖合起來(lái)共同描述一個(gè)系統(tǒng)的時(shí)候 能夠方便地在視圖和圖之間導(dǎo)航是很重要的 CASE 工具一定要支持導(dǎo)航功能 達(dá)到方便地瀏覽不同的圖和搜索模型元素的目的 在 CASE 工具中表示的模型元素本身應(yīng)該具有超鏈功能 右擊元素應(yīng)能彈出一個(gè)快捷菜單 上面顯示普通的操作并給出可能的導(dǎo)航 比如 查看含有該元素的圖或獲取關(guān)于該元素的詳細(xì)信息 圖中有些部分應(yīng)該能展開(kāi)和折疊 就像 Windows 操作系統(tǒng)中的資源管理器一樣展開(kāi)功能方便于觀察構(gòu)成包的內(nèi)容 由哪些圖構(gòu)成 折疊功能方便于觀察周圍的包 另一種控制
47、復(fù)雜圖的方式是定義過(guò)濾器 用過(guò)濾器把圖中一些開(kāi)發(fā)者感興趣的方面獨(dú)立表示出來(lái)或高亮顯示 比如 只高亮顯示圖中的關(guān)系 或高亮顯示類 具體高亮顯示什么類型由建模者控制 有了過(guò)濾器 建模者就可以在某一時(shí)段只研究那些重要的高顯部分 2.7.4 多用戶支持CASE 工具應(yīng)能讓多個(gè)用戶在同一個(gè)模型上協(xié)同工作 也就是說(shuō) 彼此之間沒(méi)有干擾一般地 如果一個(gè)用戶正在某個(gè)圖上工作 那么該用戶應(yīng)該鎖定這個(gè)圖 不讓其他用戶同時(shí)改變這個(gè)圖 更進(jìn)一步地說(shuō) CASE 工具要具有識(shí)別對(duì)積累享元素的任何改變的能力 但是這種改變是否適當(dāng)是否有效還要靠用戶決定 2.7.5 代碼生成現(xiàn)代 CASE 工具支持代碼生成 這樣建模階段存儲(chǔ)的有
48、價(jià)值的部分工作就可以直接用到實(shí)現(xiàn)階段 減少重復(fù)勞動(dòng) 一般地 CASE 工具產(chǎn)生用編程語(yǔ)言書(shū)寫的代碼框架 code skeleton 和把模型轉(zhuǎn)換成編程語(yǔ)言書(shū)寫的代碼 從理論上講 包括把動(dòng)態(tài)模型的一部分翻譯成方法的主體部分而實(shí)際上 CASE 工具產(chǎn)生的代碼通常是靜態(tài)信息 比如類的聲明 包括屬性和方法的說(shuō)明真正代碼中的方法的主體部分 動(dòng)態(tài)信息 是空缺的它需要程序員親自編制實(shí)現(xiàn) 代碼生成工作可被用戶參數(shù)化 也就是用戶給出指令 在指令中說(shuō)明需要產(chǎn)生的代碼有怎樣的特點(diǎn) 由 CASE 工具依此指令生成 GUI 構(gòu)造器 文檔工具 任何類型的編程語(yǔ)言都能在 CASE 工具中使用 一般常用的是面向?qū)ο缶幊陶Z(yǔ)言
49、比如C+或 JAVA 但是用 SQL 或 IDL 這樣的語(yǔ)言書(shū)寫的代碼也能夠生成 由于不同的編程語(yǔ)言使用不同的代碼生成器 因此 CASE 工具應(yīng)有插接各種代碼生成器的能力 假如依據(jù)某個(gè)模型生成了代碼之后 用戶才開(kāi)始編寫方法的主體部分 如果在用戶編程完成后 又對(duì)該模型的某個(gè)地方做了修改 那么再用修改過(guò)的模型生成代碼會(huì)不會(huì)把用戶的編碼工作丟失呢 答案是不會(huì)丟失 因?yàn)榇a中 自動(dòng)生成的代碼和人工編制的代碼分別用不同的標(biāo)記顯示 當(dāng)重新生成代碼時(shí) 代碼生成器不會(huì)觸及人工編碼的那一部分 2.7.6 工程逆轉(zhuǎn)工程逆轉(zhuǎn)與代碼生成幾乎是對(duì)立的二個(gè)功能 CASE 工具閱讀和分析代碼 為的是用圖顯示代碼的結(jié)構(gòu) 通常
50、只有靜態(tài)結(jié)構(gòu) 比如類圖 能用代碼構(gòu)建 動(dòng)態(tài)信息是不能從代碼中提取的 工程逆轉(zhuǎn)常應(yīng)用于下列二種代碼 一是不知其結(jié)構(gòu)的代碼 這個(gè)代碼或許是買來(lái)的或許是人工編制的 二是由代碼生成功能產(chǎn)生的代碼 對(duì)人工編制的未知結(jié)構(gòu)的代碼進(jìn)行逆轉(zhuǎn)時(shí) 逆轉(zhuǎn)結(jié)果或是被提高或是被降低 不符合結(jié)構(gòu)化的代碼也能被發(fā)現(xiàn)出來(lái) 對(duì)于購(gòu)買的類庫(kù) 代碼工程逆轉(zhuǎn)用來(lái)得到該類庫(kù)的結(jié)構(gòu)圖 使該類庫(kù)中的類能被直接用在建模過(guò)程時(shí)所作的圖中 代碼生成和工程逆轉(zhuǎn)合在一起稱作往返工程 round-trip engineering使用往返工程開(kāi)發(fā)者能夠在建模和實(shí)現(xiàn)之間反復(fù)操作 開(kāi)發(fā)過(guò)程才真正變成了能夠迭代反復(fù)的過(guò)程 2.7.7 集成建模工具與系統(tǒng)開(kāi)發(fā)時(shí)需要使用的其他工具形成一個(gè)整體 就是集成 建模工具
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年中國(guó)中信金融資產(chǎn)管理股份有限公司廣西分公司社會(huì)招聘?jìng)淇碱}庫(kù)完整參考答案詳解
- 2026年臺(tái)州市黃巖經(jīng)開(kāi)投資集團(tuán)有限公司下屬公司公開(kāi)招聘市場(chǎng)化工作人員的備考題庫(kù)含答案詳解
- 2026年如皋市北開(kāi)人力資源發(fā)展有限公司招聘?jìng)淇碱}庫(kù)及答案詳解參考
- 2026年中國(guó)水務(wù)投資集團(tuán)有限公司校園招聘108人備考題庫(kù)及一套完整答案詳解
- 2026年習(xí)水縣紀(jì)委監(jiān)委公開(kāi)選調(diào)事業(yè)人員備考題庫(kù)有答案詳解
- 2026年廣東省退役軍人服務(wù)中心公開(kāi)招聘編外聘用工作人員備考題庫(kù)及參考答案詳解一套
- 2026年吉林大學(xué)化學(xué)學(xué)院面向海內(nèi)外誠(chéng)聘教師備考題庫(kù)完整答案詳解
- 2026年國(guó)家電投集團(tuán)江西電力有限公司招聘?jìng)淇碱}庫(kù)含答案詳解
- 2026年中國(guó)資源循環(huán)集團(tuán)新能源科技有限公司招聘?jìng)淇碱}庫(kù)及參考答案詳解一套
- 餐飲原料常識(shí)培訓(xùn)課件
- 2025西藏日喀則市薩迦縣招聘專職網(wǎng)格員11人筆試備考題庫(kù)及答案解析
- 節(jié)能工程監(jiān)理質(zhì)量評(píng)估報(bào)告范本
- 攝影取景角度課件
- 2025寧夏黃河農(nóng)村商業(yè)銀行科技人員社會(huì)招聘考試筆試參考題庫(kù)及答案解析
- 統(tǒng)編版語(yǔ)文一年級(jí)上冊(cè)無(wú)紙化考評(píng)-趣味樂(lè)考 玩轉(zhuǎn)語(yǔ)文 課件
- 2025年北京市海淀區(qū)中小學(xué)教師招聘筆試參考試題及答案解析
- 全科接診流程訓(xùn)練
- 2026年新《煤礦安全規(guī)程》培訓(xùn)考試題庫(kù)(附答案)
- 繼續(xù)教育部門述職報(bào)告
- 魚(yú)塘測(cè)量施工方案
- 湖北省宜昌市秭歸縣2026屆物理八年級(jí)第一學(xué)期期末學(xué)業(yè)水平測(cè)試模擬試題含解析
評(píng)論
0/150
提交評(píng)論