本書全面介紹使用UML進行軟件設計、分析與開發(fā)的知識。UML適合于以體系結構為中心、用例驅動、迭代式和漸增式的軟件開發(fā)過程,其應用領域非常廣泛。本書內容包括面向對象的分析方法和設計方法,面向對象分析的三層設計,用例圖、類圖、對象圖和包圖、活動圖、順序圖和協(xié)作圖、狀態(tài)圖、構造組件圖和部署圖等,UML核心語義以及擴展機制的三個重要組成部分:構造型、標記值和約束,使用與UML緊密結合的RUP進行軟件開發(fā),對象約束語言,UML在Web應用程序中的應用,使用C++語言實現(xiàn)UML模型(重點介紹類圖模型的實現(xiàn))的基本原理和方法。
本書適合作為普通高校計算機專業(yè)教材,也可以作為軟件設計人員和開發(fā)人員的參考資料。
20世紀90年代,人們推出了許多不同的面向對象設計和分析方法。這些不同的面向對象的方法具有不同的建模符號體系,這些不同的符號體系極大地妨礙了軟件的設計人員、開發(fā)人員和用戶之間的交流。因此,有必要在分析、比較不同的建模語言以及總結面向對象技術應用實踐的基礎上,建立一個標準的、統(tǒng)一的建模語言。UML就是這樣的建模語言,UML在1997年11月17日被對象管理組織OMG采納成為基于面向對象技術的標準建模語言。統(tǒng)一建模語言UML不僅統(tǒng)一了面向對象方法中的符號表示,而且在其基礎上進一步發(fā)展,并最終被統(tǒng)一為被人們所接受的標準。
UML相當適合于以體系結構為中心的、用例驅動的、迭代式和漸增式的軟件開發(fā)過程,其應用領域頗為廣泛,除了可用于具有實時性要求軟件系統(tǒng)建模以及處理復雜數(shù)據(jù)的信息系統(tǒng)建模外,還可用于描述非軟件領域的系統(tǒng)。
UML適用于系統(tǒng)開發(fā)過程中從需求分析到完成測試的各個階段:在需求分析階段,可以用用戶模型視圖來捕獲用戶需求;在分析和設計階段,可以用靜態(tài)結構和行為模型視圖來描述系統(tǒng)的靜態(tài)結構和動態(tài)行為;在實現(xiàn)階段,可以將UML模型自動轉換為用面向對象程序設計語言實現(xiàn)代碼。
本書以漸進的順序來介紹UML,從需求分析開始,然后再構建和部署系統(tǒng)。
第1章 主要介紹什么是面向對象的分析方法和設計方法,面向對象分析的三層設計;然后介紹面向對象分析的工具和方法——UML,以及UML的主要構成。
第2章 主要介紹什么是用例圖,用例圖的組成,以及如何使用用例圖對系統(tǒng)進行需求分析。
第3章 介紹類圖、對象圖和包圖的基本概念,重點介紹了類與類之間的關系以及如何建模類圖。
第4章 主要介紹活動圖的相關知識和活動圖在UML建模中發(fā)揮的作用,并輔以圖書館管理系統(tǒng)活動圖實例。
第5章 介紹系統(tǒng)交互之一的順序圖,其中主要介紹系統(tǒng)順序圖的作用,以及順序圖的組成。UML2.0在UML1.x的基礎上,為管理復雜交互添加了順序片段部分。
第6章 主要介紹通信圖,通信圖也是描述系統(tǒng)交互的動態(tài)視圖,其在UML1.x中稱為協(xié)作圖,在本章介紹了構成通信圖的主要部件,以及如何實現(xiàn)通信圖與順序圖之間的轉換。
第7章 本章主要介紹UML2.0新增的交互視圖——時序圖。當正在建模的系統(tǒng)對時間有需求時,就需要使用時序圖對其進行交互建模。
第8章 本章主要介紹交互概況圖和組合結構圖,交互概況圖將順序圖、通信圖和時序圖組合在一起,使用各種類型的交互圖的特長為用例進行建模。組合結構圖則從另一個方面描述了類之間的組成結構。
第9章 主要介紹了狀態(tài)圖的基礎知識,并著重介紹狀態(tài)圖中的重要元素,最后給出了圖書館管理系統(tǒng)中用到的狀態(tài)圖。
第10章 介紹如何構造組件圖和部署圖。
第11章 介紹如何通過與UML緊密結合的RUP進行軟件開發(fā),重點介紹了RUP的二維空間和RUP的核心工作流程。
第12章 介紹如何根據(jù)UML模型進行數(shù)據(jù)庫設計。
第13章 本章由淺入深地介紹了對象約束語言,包括對象約束語言的結構、語法、集合的使用和OCL標準庫等。
第14章 本章從UML四層體系結構入手,詳細介紹了UML核心語義及擴展機制的三個重要組成部分:構造型、標記值和約束。
第15章 介紹用C++語言實現(xiàn)UML模型(重點介紹類圖模型的實現(xiàn))的基本原理和方法。
第16章 介紹使用UML分析一個比較完整的案例——圖書管理系統(tǒng),這一章是對前面基礎部分的總結,展示了如何使用UML為系統(tǒng)建模。
第17章 主要介紹嵌入式系統(tǒng)的分析,以及嵌入式系統(tǒng)的技術特點和開發(fā)過程,并通過一個案例——MP3播放器,介紹UML在嵌入式系統(tǒng)中的應用。
第18章 主要介紹UML在Web應用程序中的應用,通過本章的介紹,將使讀者對Web應用程序的開發(fā)有一個全新的認識。
本書特色
本書是一本完整介紹UML在軟件設計和開發(fā)過程中應用的教程,在編寫過程中我們精心設計了豐富的體例,以幫助讀者順利學習本書內容。
? 理論緊密結合實踐 全書提供了3個完整的分析案例,通過示例分析、設計過程講解UML的應用知識。
? 圖文并茂 UML理論知識比較抽象,本書繪制了大量UML圖,幫助讀者直觀理解抽象內容。
? 網(wǎng)站互動 我們在網(wǎng)站上提供了本書案例和擴展內容的資料鏈接,便于讀者繼續(xù)學習相關知識;授課教師也可以下載本書教學課件和其他教學資源。
? 思考與練習 簡答題測試讀者對各章內容的掌握程度;分析題理論結合實際,引導讀者深入掌握UML理論知識。
讀者對象
本書在多家院校成熟教案以及自編教材的基礎上整合編寫,全面介紹使用UML進行軟件設計、分析與開發(fā)的知識,適合作為普通高校計算機專業(yè)教材,也可以作為軟件設計人員和開發(fā)人員的參考資料。
本書作者均從事軟件分析、開發(fā)和教學工作,擁有豐富的UML開發(fā)案例。參與本書編寫人員除了封面署名人員之外,還有吳俊海、張瑞萍、董志鵬、祝紅濤、王海峰、郝相林、劉萬軍、楊寧寧、郭曉俊、康顯麗、辛愛軍、牛小平、賈栓穩(wěn)、王立新、蘇靜、趙元慶、王蕾、亢鳳林、韋潛、郝安林等人。由于時間倉促,書中錯誤在所難免,敬請讀者批評指正。讀者可以通過清華大學出版社網(wǎng)站www.tup.tsinghua.edu.cn與我們聯(lián)系。
編 者
第1章 UML與面向對象1
1.1 面向對象開發(fā)2
1.1.1 理解面向對象開發(fā)2
1.1.2 面向對象的主要概念5
1.1.3 OO開發(fā)的優(yōu)點8
1.2 OO開發(fā)中的三層設計8
1.3 UML簡介9
1.3.1 為什么對系統(tǒng)建模9
1.3.2 UML的發(fā)展10
1.3.3 UML的構成10
1.3.4 “統(tǒng)一”的意義11
1.4 UML視圖11
1.5 UML圖13
1.6 模型元素15
1.6.1 事物15
1.6.2 關系17
1.7 通用機制18
1.8 使用UML建模19
1.9 思考與練習20
第2章 用例圖21
2.1 用例圖的構成21
2.1.1 系統(tǒng)22
2.1.2 參與者22
2.1.3 用例24
2.1.4 關系26
2.2 泛化27
2.2.1 泛化用例27
2.2.2 泛化參與者29
2.3 描述用例30
2.4 用例之間的關系33
2.4.1 包含關系33
2.4.2 擴展關系34
2.5 用例建模36
2.5.1 確定系統(tǒng)涉及的總體信息36
2.5.2 確定系統(tǒng)的參與者36
2.5.3 確定用例與構造用例模型37
2.6 思考與練習40
第3章 類圖、對象圖和包圖41
3.1 類圖41
3.1.1 概述41
3.1.2 類及類的表示42
3.1.3 定義類47
3.2 關聯(lián)關系47
3.2.1 二元關聯(lián)48
3.2.2 關聯(lián)類53
3.2.3 或關聯(lián)與反身關聯(lián)54
3.2.4 聚合55
3.2.5 組成55
3.3 泛化關系56
3.3.1 泛化的含義和用途56
3.3.2 泛化的層次與多重繼承57
3.3.3 泛化約束58
3.4 依賴關系和實現(xiàn)關系59
3.5 構造類圖模型61
3.6 抽象類63
3.7 接口64
3.8 對象圖65
3.8.1 對象和鏈65
3.8.2 使用對象圖建模66
3.9 包圖67
3.9.1 理解包圖67
3.9.2 導入包68
3.9.3 使用包圖建模70
3.10 思考與練習70
第4章 活動圖72
4.1 定義活動圖72
4.2 認識活動圖標記符73
4.2.1 活動74
4.2.2 狀態(tài)75
4.2.3 轉移75
4.2.4 控制點76
4.2.5 判斷節(jié)點與合并節(jié)點77
4.2.6 綜合應用79
4.3 其他標記符79
4.3.1 事件和觸發(fā)器79
4.3.2 分叉和匯合80
4.3.3 泳道81
4.3.4 對象流82
4.4 建造活動圖模型83
4.4.1 建;顒訄D步驟83
4.4.2 標識用例84
4.4.3 建模主路徑84
4.4.4 建模從路徑85
4.4.5 添加泳道86
4.4.6 改進高層活動87
4.5 思考與練習87
第5章 順序圖89
5.1 定義順序圖89
5.2 順序圖的組成90
5.2.1 對象與生命線90
5.2.2 消息91
5.2.3 激活94
5.3 創(chuàng)建對象和分支、從屬流95
5.3.1 創(chuàng)建對象95
5.3.2 分支和從屬流96
5.4 建模時間97
5.5 建模迭代98
5.6 消息中的參數(shù)和序號99
5.7 管理復雜交互的順序圖片段100
5.8 創(chuàng)建順序圖模型101
5.8.1 確定用例與工作流101
5.8.2 布置對象與添加消息101
5.9 思考與練習104
第6章 通信圖105
6.1 通信圖的構成105
6.1.1 對象和類角色105
6.1.2 關聯(lián)角色106
6.1.3 通信鏈接107
6.1.4 消息107
6.2 對消息使用序列號和控制點108
6.3 在通信圖中創(chuàng)建對象109
6.4 迭代110
6.5 順序圖與通信圖110
6.6 思考與練習112
第7章 時序圖113
7.1 時序圖構成113
7.1.1 時序圖中的對象113
7.1.2 狀態(tài)115
7.1.3 時間115
7.1.4 狀態(tài)線116
7.1.5 事件與消息116
7.2 時間約束117
7.3 時序圖的替代表示法118
7.4 思考與練習119
第8章 交互概況圖和組合結構圖120
8.1 交互概況圖的組成120
8.2 為用例建模交互概況圖121
8.2.1 交互122
8.2.2 組合交互124
8.3 組合結構圖125
8.3.1 內部結構125
8.3.2 使用類127
8.3.3 合作128
8.4 思考與練習129
第9章 狀態(tài)機圖130
9.1 定義狀態(tài)機圖130
9.1.1 狀態(tài)機130
9.1.2 對象、狀態(tài)和事件131
9.1.3 狀態(tài)機圖131
9.2 認識狀態(tài)機圖中的標記符132
9.2.1 狀態(tài)132
9.2.2 轉移132
9.2.3 決策點135
9.2.4 同步135
9.3 指定狀態(tài)機圖中的動作和事件136
9.3.1 事件136
9.3.2 動作138
9.4 組成狀態(tài)141
9.4.1 順序子狀態(tài)141
9.4.2 并發(fā)子狀態(tài)142
9.4.3 子狀態(tài)機引用狀態(tài)143
9.4.4 同步狀態(tài)144
9.4.5 歷史狀態(tài)145
9.5 建造狀態(tài)機圖模型146
9.5.1 分析狀態(tài)機圖146
9.5.2 完成狀態(tài)機圖146
9.6 思考與練習147
第10章 構造實現(xiàn)方式圖148
10.1 組件圖概述148
10.2 組件及其表示149
10.3 接口和組件間的關系149
10.4 組件圖的應用150
10.5 部署圖151
10.5.1 節(jié)點152
10.5.2 關聯(lián)關系153
10.5.3 部署圖的應用153
10.6 組合組件圖和部署圖155
10.7 建模實現(xiàn)方式圖156
10.7.1 添加節(jié)點和關聯(lián)關系156
10.7.2 添加組件、類和對象157
10.7.3 添加依賴關系157
10.7.4 圖書管理系統(tǒng)的實現(xiàn)
方式圖158
10.8 思考與練習160
第11章 UML與RUP162
11.1 理解軟件開發(fā)過程162
11.2 Rational統(tǒng)一過程(RUP)163
11.2.1 理解RUP163
11.2.2 為什么要使用RUP164
11.3 RUP的二維空間165
11.3.1 時間維165
11.3.2 RUP的靜態(tài)結構167
11.4 核心工作流程169
11.4.1 需求獲取工作流169
11.4.2 分析工作流172
11.4.3 設計工作流174
11.4.4 實現(xiàn)工作流176
11.4.5 測試工作流179
11.5 思考與練習182
第12章 UML與數(shù)據(jù)庫設計183
12.1 數(shù)據(jù)庫結構183
12.2 數(shù)據(jù)庫接口183
12.3 數(shù)據(jù)庫結構轉換184
12.3.1 類到表的轉換184
12.3.2 關聯(lián)關系的轉換186
12.4 完整性與約束驗證188
12.4.1 父表的約束188
12.4.2 子表的約束191
12.5 關于存儲過程和觸發(fā)器191
12.6 鐵路系統(tǒng)UML模型到
數(shù)據(jù)庫的轉換192
12.7 用SQL語句實現(xiàn)數(shù)據(jù)庫功能194
12.8 思考與練習195
第13章 對象約束語言197
13.1 OCL概述197
13.2 OCL結構198
13.2.1 抽象語法198
13.2.2 具體語法198
13.3 OCL表達式199
13.4 OCL語法200
13.4.1 固化類型200
13.4.2 數(shù)據(jù)類型、運算符和
操作201
13.5 深入固化類型202
13.5.1 屬性約束建模202
13.5.2 對操作約束建模203
13.6 使用集合204
13.6.1 創(chuàng)建集合204
13.6.2 操作集合205
13.7 使用消息206
13.8 元組208
13.9 OCL標準庫209
13.9.1 OclVoid和OclAny
類型209
13.9.2 OclMessage類型210
13.9.3 集合類型210
13.9.4 模型元素類型215
13.9.5 基本類型216
13.10 思考與練習218
第14章 UML擴展機制220
14.1 UML的體系結構220
14.1.1 四層體系結構220
14.1.2 元元模型層222
14.1.3 元模型層223
14.2 UML核心語義224
14.3 構造型226
14.3.1 表示構造型226
14.3.2 UML標準構造型226
14.3.3 數(shù)據(jù)建模229
14.3.4 Web建模和業(yè)務
建模擴展230
14.4 標記值231
14.4.1 表示標記值231
14.4.2 標記值應用元素231
14.4.3 自定義標記值232
14.4.4 UML標準標記值233
14.5 約束233
14.5.1 表示約束233
14.5.2 UML標準約束234
14.5.3 自定義約束236
14.6 思考與練習236
第15章 UML模型的實現(xiàn)237
15.1 類的實現(xiàn)237
15.2 關聯(lián)關系的實現(xiàn)239
15.2.1 一般關聯(lián)的實現(xiàn)240
15.2.2 有序關聯(lián)的實現(xiàn)244
15.2.3 關聯(lián)類的實現(xiàn)244
15.2.4 受限關聯(lián)的實現(xiàn)246
15.3 聚合與組合關系的實現(xiàn)249
15.4 泛化關系的實現(xiàn)250
15.5 接口類和包的實現(xiàn)251
15.6 思考與練習252
第16章 圖書管理系統(tǒng)的
分析與設計256
16.1 系統(tǒng)需求256
16.2 需求分析257
16.2.1 識別參與者和用例257
16.2.2 用例描述259
16.3 靜態(tài)結構模型262
16.3.1 定義系統(tǒng)中的
對象和類262
16.3.2 定義用戶界面類266
16.3.3 類之間的關系269
16.4 動態(tài)行為模型271
16.4.1 建立順序圖271
16.4.2 建立狀態(tài)圖280
16.5 物理模型281
第17章 嵌入式系統(tǒng)設計283
17.1 嵌入式系統(tǒng)的技術特點283
17.2 嵌入式系統(tǒng)的開發(fā)技術285
17.2.1 嵌入式系統(tǒng)開發(fā)過程285
17.2.2 軟件移植286
17.3 嵌入式系統(tǒng)的需求分析286
17.3.1 MP3播放器的
工作原理287
17.3.2 外部事件287
17.3.3 識別用例289
17.3.4 使用順序圖描述用例290
17.4 系統(tǒng)的靜態(tài)模型293
17.4.1 識別系統(tǒng)中的
對象或類293
17.4.2 繪制類圖294
17.5 系統(tǒng)的動態(tài)模型298
17.5.1 狀態(tài)圖298
17.5.2 協(xié)作圖300
17.6 體系結構302
第18章 Web應用程序設計303
18.1 Web應用程序的結構303
18.1.1 瘦客戶模式304
18.1.2 胖客戶模式306
18.1.3 Web傳輸模式307
18.1.4 程序結構模式對
程序的影響307
18.2 Web應用系統(tǒng)的UML
建模方法308
18.3 UML在學生成績管理系統(tǒng)
建模中的運用311
18.3.1 系統(tǒng)需求分析311
18.3.2 系統(tǒng)設計311
18.4 系統(tǒng)詳細設計318
18.5 系統(tǒng)部署320