《軟件入門與提高叢書:UML2軟件建模入門與提高》從初學者的角度出發(fā),由淺入深、循序漸進地介紹統(tǒng)一建模語言UML的相關知識,書中提供了大量操作UML的示例。另外,還向讀者提供了很多實戰(zhàn)案例和上機練習,用于演練。
本書共分為16章,內容包括面向對象思想和軟件建模分類,UML發(fā)展歷史、組成元素、體系結構、建模流程和應用領域,常用的UML建模工具,用例圖、類圖、對象圖和包圖、狀態(tài)機圖、活動圖、順序圖和時間圖、通信圖和交互概覽圖、組件圖和部署圖,UML到關系型數據庫的映射,UML與統(tǒng)一過程,UML與Java語言的映射,以及UML與設計模式等。最后一章提供了一個綜合的案例。
本書示例新穎,內容豐富,涉及面廣泛,適合所有的UML初學者學習,也可以幫助有基礎知識的讀者提高創(chuàng)建UML模型圖的技能。另外,對于大中專學生和培訓班的學生來說,本書更是一本不可多得的教材和自學用書。
UML是英文Unified Modeling Language的縮寫,又稱為統(tǒng)一建模語言,或者標準建模語言,它是始于1997年的一個OMG標準,是一個支持模型化和軟件系統(tǒng)開發(fā)的圖形化語言,可為軟件開發(fā)的所有階段提供模型化和可視化支持。面向對象的分析與設計方法在20世紀80年代末至90年代中出現(xiàn)了一個高潮,UML正是這個高潮的產物,它不僅統(tǒng)一了Booch、Rumbaugh和Jacobson的表示方法,而且做了進一步的發(fā)展,并最終統(tǒng)一為大眾所接受的標準建模語言。
本書內容
全書共分16章,主要內容如下。
第1章:面向對象和軟件建模。從模型開始介紹,接著介紹面向對象思想的三大要素、三大模型、常用的三層開發(fā)方法、軟件建模知識,最后介紹常用的建模分類。
第2章:UML入門基礎。著重介紹UML的基礎知識,包括UML的概念、發(fā)展歷史、目標、組成元素、體系結構、建模流程以及應用領域等內容。
第3章:UML建模工具。從目前眾多的UML建模工具中挑選出應用最廣泛且在建模工具中最有影響力的3種工具(Visio、Enterprise Architect和PowerDesigner)進行介紹。
第4章:用例圖。介紹用例圖的構成、設計和使用,包括用例圖的組成部分、各個部分成員的確定和使用,以及如何繪制完整的用例圖等。
第5章:類圖。詳細介紹UML中的類圖,包括類圖中的類、抽象類、接口和各種關系的實現(xiàn)等內容,還介紹如何使用類圖進行建模。
第6章:對象圖和包圖。首先介紹對象圖,包括概念、組成、繪制和閱讀,以及如何建模等;然后介紹包圖,包括概念、組成、分類、設計原則以及如何建模等。
第7章:狀態(tài)機圖。詳細介紹狀態(tài)機圖的繪制,首先介紹狀態(tài)機圖的基本內容,包括概念、標記、狀態(tài)類型和狀態(tài)機圖的應用等,然后介紹狀態(tài)機圖中的轉移元素,最后介紹組合狀態(tài)。
第8章:活動圖。詳細介紹活動圖的繪制,其內容包括活動圖的定義、作用、與狀態(tài)機圖的區(qū)別、組成元素和活動轉換等。
第9章:順序圖和時間圖。介紹UML中的兩種交互圖,即順序圖和時間圖。順序圖描述系統(tǒng)對象之間的交互順序,但是這個順序沒有細致的時間刻度,只是一個大概的流程,而時間圖彌補了這個不足,它們共同繪制了系統(tǒng)對象間交互的順序和時間。
第10章:通信圖和交互概覽圖。首先對通信圖的概念進行介紹,然后介紹通信圖中的消息、對象的創(chuàng)建和消息迭代等內容,最后介紹交互圖和交互概覽圖的繪制。
第11章:繪制UML的實現(xiàn)圖。首先介紹組件圖的繪制和建模,然后介紹部署圖的繪制和建模。
第12章:UML到關系型數據庫的映射。著重介紹如何將UML類圖中的類和關系映射到關系型數據庫表。首先介紹基本結構的映射,然后介紹泛化關系和關聯(lián)關系的映射,最后介紹完整性與約束檢查以及存儲過程、觸發(fā)器和索引等內容。
第13章:UML與統(tǒng)一過程。首先討論軟件開發(fā)過程和成熟標準,然后詳細介紹一種使用UML的過程,即統(tǒng)一過程,最后簡單介紹使用UML過程的一般特征。
第14章:UML與Java語言映射。主要介紹UML類圖映射為Java語言實現(xiàn)的方法,包括轉換為Java類、轉換原則、轉換類之間的關聯(lián)、泛化關聯(lián)以及包和接口等。
第15章:UML與設計模式。首先介紹模式的一些基本概念,接著介紹UML對設計模式的支持,然后通過具體的示例討論如何使用設計模式進行系統(tǒng)設計。
第16章:即時通信系統(tǒng)。綜合UML建模系統(tǒng)的各類模型,通過對即時通信系統(tǒng)的分析,繪制該系統(tǒng)的UML模型圖,包括用例圖、靜態(tài)圖、行為圖和交互圖等多種圖形。
本書特色
本書內容詳細、示例豐富,知識面廣,全面地講解了UML的應用和開發(fā)。本書最大的特點體現(xiàn)在如下幾個方面。
。1)知識全面,內容豐富
本書緊密圍繞UML的相關知識展開詳細的講解,涵蓋了實際開發(fā)應用中的具體應用代碼。
。2)理論和示例結合
書中幾乎每一個知識點都有豐富而典型的示例,而且每一章最后都會通過一個或多個綜合的實戰(zhàn)介紹該章的知識。作為一本UML入門類型的書,將理論和實踐很好地結合起來進行講解,讓讀者最容易快速掌握。
。3)應用廣泛,提供文檔
對于大多數的精選實戰(zhàn)案例,都會向讀者提供詳細的實現(xiàn)步驟,結構清晰簡明,分析深入淺出,而且有些實戰(zhàn)案例貼近實際。
(4)網站技術支持
讀者在學習或者工作的過程中,如果遇到實際問題,可與我們取得聯(lián)系,作者會在第一時間給予幫助。
。5)貼心的提示
為了便于讀者閱讀,書中還穿插著一些技巧、提示等小貼士,體例約定如下。
提示:通常是一些提醒,讓讀者加深印象或提供建議及解決問題的方法。
注意:提出學習過程中需要特別注意的一些知識點和內容,或者相關信息。
技巧:通過簡短的文字,指出知識點在應用時的一些小竅門。
讀者對象
本書適合作為軟件開發(fā)入門者的自學用書,也適合作為高等院校相關專業(yè)的教學參考書,還可供開發(fā)人員查閱、參考。本書特別適合下列人員閱讀:
UML初學者。
各大中專院校的在校學生和相關授課教師。
準備從事與UML應用相關工作的人員。
作者團隊
除了封面署名作者之外,參與本書編寫的人員還有程朝斌、王詠梅、郝軍啟、王慧、鄭小營、張浩華、王超英、張凡、趙振方、張艷梅等,在此表示感謝。在本書的編寫過程中,我們力求精益求精,但難免存在一些不足之處,懇請廣大讀者批評指正。
編 者
第1章 面向對象和軟件建模1
1.1 模型2
1.2 面向對象的思想3
1.2.1 了解面向對象3
1.2.2 面向對象的三大要素5
1.2.3 面向對象的三大模型7
1.2.4 面向對象的常用三層8
1.2.5 面向對象的開發(fā)方法10
1.3 軟件建模11
1.3.1 軟件建模概述11
1.3.2 建模的三要素11
1.3.3 面向對象建模12
1.4 建模分類14
1.4.1 業(yè)務建模14
1.4.2 數據建模16
1.4.3 應用程序建模16
1.5 思考與練習17
第2章 UML入門基礎19
2.1 UML概述20
2.1.1 UML簡介20
2.1.2 UML發(fā)展歷史21
2.1.3 UML的目標22
2.2 UML的基本組成23
2.2.1 建模元素23
2.2.2 關系26
2.2.3 圖28
2.2.4 規(guī)則30
2.2.5 通用機制31
2.2.6 UML標準通用機制34
2.3 UML其他內容40
2.3.1 UML的體系結構40
2.3.2 UML建模流程41
2.3.3 UML的應用領域42
2.4 UML 2.0概述42
2.5 思考與練習44
第3章 UML建模工具45
3.1 使用建模工具需知46
3.1.1 建模工具的作用46
3.1.2 選擇建模工具的方法47
3.1.3 常用建模工具48
3.2 Visio 201049
3.2.1 Visio 2010簡介49
3.2.2 實戰(zhàn)——繪制論壇系統(tǒng)的用例圖51
3.3 Enterprise Architect 854
3.3.1 Enterprise Architect 8簡介54
3.3.2 實戰(zhàn)——繪制論壇系統(tǒng)的類圖57
3.4 PowerDesigner 16.5 61
3.4.1 PowerDesigner簡介62
3.4.2 實戰(zhàn)——安裝
PowerDesigner 16.563
3.4.3 實戰(zhàn)——繪制活動圖65
3.4.4 實戰(zhàn)——生成模型報告68
3.4.5 實戰(zhàn)——對MySQL進行反向工程70
3.5 思考與練習73
第4章 用例圖75
4.1 用例圖簡介76
4.2 用例圖的構成78
4.2.1 系統(tǒng)78
4.2.2 參與者79
4.2.3 用例79
4.2.4 關系80
4.3 使用參與者81
4.3.1 參與者的確定81
4.3.2 參與者的使用82
4.4 用例的使用83
4.4.1 識別用例83
4.4.2 用例描述87
4.5 關系88
4.5.1 關聯(lián)關系88
4.5.2 泛化關系89
4.5.3 包含關系90
4.5.4 擴展關系91
4.6 實戰(zhàn)——圖書館管理系統(tǒng)用例圖92
4.7 思考與練習97
第5章 類圖101
5.1 類圖和元素102
5.1.1 類圖概述102
5.1.2 類104
5.1.3 抽象類109
5.1.4 接口109
5.2 依賴關系110
5.2.1 依賴關系概述110
5.2.2 依賴關系分類111
5.3 關聯(lián)關系113
5.3.1 關聯(lián)關系概述113
5.3.2 常見的關聯(lián)118
5.3.3 聚合關聯(lián)121
5.3.4 組合關聯(lián)122
5.3.5 建立關聯(lián)123
5.4 泛化關系123
5.4.1 泛化關系概述124
5.4.2 常用的泛化125
5.4.3 泛化集126
5.4.4 泛化約束127
5.5 實現(xiàn)關系128
5.6 類圖建模步驟130
5.7 實戰(zhàn)——構建病房監(jiān)護系統(tǒng)的類型131
5.8 思考與練習133
第6章 對象圖和包圖137
6.1 了解對象138
6.1.1 對象概述138
6.1.2 對象符號139
6.2 對象圖142
6.2.1 對象圖概述142
6.2.2 繪制和閱讀對象圖143
6.2.3 使用對象圖建模144
6.3 對象圖和類圖144
6.4 實戰(zhàn)——繪制訂單管理系統(tǒng)的對象圖145
6.5 了解包146
6.5.1 包概述146
6.5.2 包的符號147
6.6 包圖149
6.6.1 包圖概述149
6.6.2 包圖分類150
6.6.3 包導入和包合并152
6.6.4 使用包圖建模154
6.6.5 包圖設計原則154
6.7 實戰(zhàn)——繪制劇院系統(tǒng)的包圖157
6.8 思考與練習159
第7章 狀態(tài)機圖161
7.1 狀態(tài)機圖簡介162
7.1.1 狀態(tài)機概述162
7.1.2 狀態(tài)機標記163
7.1.3 狀態(tài)類型165
7.1.4 狀態(tài)機圖的應用166
7.2 轉移167
7.2.1 轉移簡介167
7.2.2 事件168
7.2.3 動作170
7.2.4 活動與延遲事件171
7.2.5 轉移的類型172
7.3 組合狀態(tài)174
7.3.1 順序狀態(tài)174
7.3.2 并發(fā)狀態(tài)174
7.3.3 同步狀態(tài)175
7.3.4 歷史狀態(tài)175
7.3.5 子狀態(tài)機引用176
7.4 實戰(zhàn)——自動存取款系統(tǒng)狀態(tài)機圖178
7.5 思考與練習180
第8章 活動圖181
8.1 活動圖的基本概念182
8.1.1 活動圖的定義182
8.1.2 活動圖的作用182
8.1.3 活動圖的主要元素183
8.1.4 理解活動與動作184
8.1.5 活動圖與狀態(tài)圖的區(qū)別186
8.2 活動圖的元素詳解186
8.2.1 動作狀態(tài)186
8.2.2 活動狀態(tài)186
8.2.3 開始和結束狀態(tài)187
8.2.4 分支與合并188
8.2.5 分叉與匯合190
8.2.6 對象流191
8.2.7 泳道192
8.3 活動轉換193
8.3.1 轉移193
8.3.2 判定194
8.3.3 發(fā)送和接收信號動作195
8.3.4 事件和觸發(fā)器195
8.3.5 可中斷區(qū)間196
8.3.6 異常197
8.4 實戰(zhàn)——活動圖的應用198
8.5 思考與練習200
第9章 順序圖和時間圖203
9.1 順序圖簡介204
9.2 順序圖的構成205
9.2.1 對象205
9.2.2 生命線和激活期208
9.2.3 消息209
9.2.4 序號210
9.2.5 參數212
9.2.6 激活期規(guī)范213
9.3 消息類型217
9.3.1 同步消息217
9.3.2 異步消息218
9.3.3 反身消息219
9.3.4 接收發(fā)送消息220
9.3.5 消息分支和從屬流220
9.4 組合片段222
9.4.1 組合片段簡介222
9.4.2 選項組合片段224
9.4.3 備選組合片段225
9.4.4 循環(huán)組合片段226
9.4.5 引用組合片段227
9.5 時間圖228
9.5.1 時間圖概述228
9.5.2 時間圖的構成229
9.5.3 時間約束234
9.5.4 替代表示法235
9.6 實戰(zhàn)——團購系統(tǒng)順序圖236
9.7 思考與練習241
第10章 通信圖和交互概覽圖245
10.1 通信圖簡介246
10.1.1 通信圖概述246
10.1.2 對象與類角色247
10.1.3 關聯(lián)角色與鏈接248
10.1.4 消息250
10.2 消息序號和控制點251
10.2.1 消息序號252
10.2.2 消息控制點252
10.3 創(chuàng)建對象253
10.4 消息迭代253
10.4.1 對象的迭代254
10.4.2 消息的迭代254
10.5 交互圖255
10.6 交互概覽圖256
10.6.1 交互概覽圖簡介256
10.6.2 繪制交互概覽圖257
10.7 實戰(zhàn)——在線報考系統(tǒng)的交互圖257
10.8 思考與練習259
第11章 繪制UML的實現(xiàn)圖261
11.1 了解組件262
11.1.1 組件概述262
11.1.2 組件的符號262
11.2 組件圖265
11.2.1 組件圖概述265
11.2.2 組件間的關系267
11.2.3 組件圖和類圖268
11.2.4 實戰(zhàn)——繪制組件圖268
11.3 使用組件圖建模269
11.3.1 對源代碼建模270
11.3.2 對可執(zhí)行體的發(fā)布建模270
11.3.3 對物理數據庫建模271
11.3.4 對可適應的系統(tǒng)建模272
11.4 了解節(jié)點272
11.4.1 節(jié)點的符號272
11.4.2 節(jié)點和組件的區(qū)別273
11.5 部署圖274
11.5.1 部署圖概述274
11.5.2 部署圖的關系275
11.5.3 實戰(zhàn)——繪制部署圖276
11.6 使用部署圖建模278
11.6.1 對嵌入式系統(tǒng)建模278
11.6.2 對客戶/服務器建模279
11.6.3 對全分布式系統(tǒng)建模280
11.7 思考與練習281
第12章 UML到關系型數據庫的映射285
12.1 關系型數據庫與UML模型286
12.1.1 關系型數據庫管理系統(tǒng)286
12.1.2 UML模型286
12.2 基本結構映射287
12.2.1 主鍵的生成287
12.2.2 屬性類型到域的映射288
12.2.3 屬性到列的映射289
12.3 泛化關系的映射289
12.3.1 所有類的映射289
12.3.2 除無屬性外類的映射291
12.3.3 父類屬性下移291
12.3.4 子類屬性上移292
12.3.5 映射方法比較293
12.4 關聯(lián)關系的映射294
12.4.1 一對一關聯(lián)的映射294
12.4.2 零或一對一關聯(lián)的映射295
12.4.3 一對多關聯(lián)的映射295
12.4.4 多對多關聯(lián)的映射297
12.4.5 聚合和組合關系的映射298
12.4.6 映射時應避免的情況298
12.5 完整性與約束檢查299
12.5.1 父表的約束300
12.5.2 子表的約束301
12.6 其他相關問題302
12.6.1 存儲過程302
12.6.2 觸發(fā)器302
12.6.3 索引303
12.7 實戰(zhàn)——軟件公司UML模型的映射303
12.8 思考與練習305
第13章 UML與統(tǒng)一過程309
13.1 軟件開發(fā)過程簡介310
13.2 定義和理解軟件工程的過程311
13.3 軟件成熟標準:CMM311
13.3.1 使用CMM的意義311
13.3.2 CMM等級312
13.3.3 CMM框架314
13.3.4 CMM結構315
13.4 RUP簡介316
13.4.1 使用RUP的意義316
13.4.2 什么是RUP317
13.4.3 RUP的特點318
13.4.4 RUP六大開發(fā)經驗320
13.5 RUP二維開發(fā)模型321
13.5.1 時間維322
13.5.2 RUP的靜態(tài)結構324
13.6 RUP工作流程326
13.6.1 初始階段326
13.6.2 細化階段327
13.6.3 構造階段328
13.6.4 交付階段329
13.7 RUP的核心工作流329
13.7.1 商業(yè)建模329
13.7.2 需求329
13.7.3 分析和設計331
13.7.4 實現(xiàn)332
13.7.5 測試332
13.7.6 部署333
13.7.7 配置和變更管理333
13.7.8 項目管理334
13.7.9 環(huán)境334
13.8 如何在過程中使用UML334
13.8.1 以架構為中心334
13.8.2 用例驅動335
13.8.3 UML對迭代開發(fā)的支持335
13.8.4 UML圖與工作流程之間的關系336
13.9 思考與練習336
第14章 UML與Java語言映射339
14.1 模型映射為Java的實現(xiàn)340
14.1.1 轉換為Java類340
14.1.2 轉換原則341
14.2 實現(xiàn)常見關聯(lián)342
14.2.1 基本關聯(lián)342
14.2.2 強制對可選或者強制關聯(lián)343
14.2.3 可選對可選關聯(lián)344
14.2.4 可選對多關聯(lián)345
14.2.5 強制對多關聯(lián)346
14.2.6 多對多關聯(lián)346
14.2.7 關聯(lián)類的實現(xiàn)347
14.2.8 聚合關聯(lián)的實現(xiàn)348
14.2.9 組合關聯(lián)的實現(xiàn)348
14.3 實現(xiàn)泛化349
14.4 特殊模型的映射350
14.4.1 包350
14.4.2 接口350
14.4.3 枚舉352
14.5 實戰(zhàn)——類圖與Java的工程化352
14.5.1 正向工程352
14.5.2 逆向工程355
14.6 思考與練習357
第15章 UML與設計模式359
15.1 了解模式360
15.2 軟件設計模式360
15.2.1 了解設計模式360
15.2.2 設計模式的誕生362
15.2.3 設計模式的原則363
15.2.4 設計模式的分類364
15.3 設計模式的元素366
15.3.1 關鍵元素366
15.3.2 其他元素367
15.4 創(chuàng)建型模式367
15.4.1 了解創(chuàng)建型模式368
15.4.2 簡單工廠模式368
15.4.3 工廠方法模式372
15.4.4 抽象工廠模式375
15.4.5 單例模式380
15.5 結構型模式384
15.5.1 了解結構型模式384
15.5.2 適配器模式385
15.5.3 外觀模式388
15.6 觀察者模式390
15.6.1 了解觀察者模式390
15.6.2 實戰(zhàn)——自定義觀察者模式391
15.7 思考與練習393
第16章 即時通信系統(tǒng)395
16.1 系統(tǒng)建模概述396
16.1.1 系統(tǒng)開發(fā)的背景396
16.1.2 系統(tǒng)建模的基本步驟396
16.2 系統(tǒng)分析397
16.2.1 系統(tǒng)結構397
16.2.2 需求分析398
16.3 用例圖398
16.3.1 確定參與者399
16.3.2 確定用例399
16.3.3 繪制系統(tǒng)用例圖400
16.4 靜態(tài)圖402
16.4.1 即時通信類402
16.4.2 即時通信類圖404
16.5 行為圖405
16.5.1 行為分析405
16.5.2 用戶聊天的活動圖406
16.5.3 可疑言論處理活動圖406
16.6 交互圖408
16.6.1 用戶登錄順序圖408
16.6.2 離線消息順序圖409
16.6.3 言論處理順序圖409
16.6.4 在線通信順序圖410
16.6.5 交互概覽圖411
16.7 組件圖412
附錄 各章思考與練習答案415