大象--Thinking in UML
-
【作 者】譚云杰 著
【I S B N 】978-7-5084-6046-8
【責任編輯】宋俊娥
【適用讀者群】科技
【出版時間】2009-01-01
【開 本】16開本
【裝幀信息】平裝(光膜)
【版 次】2009年01月第1版
【頁 數】
【千字數】
【印 張】
【定 價】¥68
【叢 書】暫無分類
【備注信息】
簡介
本書特色
前言
章節列表
精彩閱讀
下載資源
相關圖書
本書以UML為載體,將面向對象的分析設計思想巧妙地融入建模過程中,通過貫穿全書的實例將軟件系統開發過程中方方面面的知識有機地結合在一起,用生動的語言和精彩的事例將復雜枯燥的軟件過程講解得津津有味。
全書分為準備篇、基礎篇、進階篇和總結篇四個部分。準備篇講述面向對象分析的一些基本概念,及學習建模需要了解的一些基本知識。基礎篇對UML的基礎概念重新組織和歸納整理,進行擴展和討論,引申出針對UML的這些概念在面向對象方法中應用方法的思考。進階篇以一個實例貫穿全篇,闡述如何使用UML從頭到尾地實施一個項目。總結篇針對在現實中經常遇到并且較難掌握的問題進行深入的探討,升華在前幾篇學習到的知識。
本書適用于正在學習編程、軟件工程等知識,準備將來從事IT行業的讀者、正努力向設計師或系統分析員轉變的技術人員及期望對軟件分析設計更上一層樓的設計人員學習和提高之用。
提到Thinking這個詞,讀者大多會想到一本經典技術書籍《Thinking in Java》。之所以《Thinking in Java》會成為經典,原因在于這本書并不是教授讀者Java語言本身,而是透過Java語言深入討論其背后的思想和方法。授人以魚不如授人以漁。
本書是講述UML的。同樣,本書也不是一本純粹教授UML語法的書籍,而是通過UML這個表象來深入探討面向對象的分析方法;同時將結合軟件工程,傳達基于對象的思考方法、分析模式和推導過程以及它們在軟件工程的各個階段如何發揮作用。本書冠以 Thinking in UML這一名稱正是為了切合這個主題。作者不敢奢望本書會成為《Thinking in Java》一樣的經典書籍,但是作者在本書中傾盡了自己在面向對象分析和設計領域中的實踐和經驗積累。至少對那些尚未能夠深入此領域,感覺面向對象仍然似是而非的朋友們,本書中將要傳達的那些思路將會是一條線索,至少能夠幫助你找到通往面向對象分析的大門。
本書在編寫過程中,以大量實際項目中會遇到的實例引出問題,講述作者對這一問題的分析思路和解決辦法。再進一步升華,通過對實例的評點,分析思路的歸納和擴展,上升到面向對象方法理論。逐步引導讀者由點到面,由表及里,最后由對工具的使用上升到思想的高度,從而能夠自如地跳出工具使用的局限,真正從方法和思想的高度來看待和解決現實的問題。本書中的很多內容和思想將是你在其他書籍中看不到的。
本書分為四部分,由淺入深,從基礎到高級,每個章節都有具體的實例進行說明,同時作者將耗費更多的篇幅來評點和闡述這些實例。在某些章節最后還會就一些關鍵概念和不容易理解的地方提出問題,讓讀者自行思考。
第一部分為準備篇??需要了解。在這一部分中,作者將從面向對象的困難和需要入手,講述面向對象分析的一些基本概念,由此提出為什么需要UML這一話題。另一方面,也講述了接下來學習建模需要了解的一些基本知識。
第二部分為基礎篇??在學習中思考。在這一部分中,作者將從實用的角度對UML的基礎概念重新組織和歸納整理,同時進行一些擴展和討論,引申出針對UML的這些概念在面向對象方法中應用方法的思考。這些內容將覆蓋絕大部分實際工作的需要。通過這一部分的學習,讀者將從另一個角度了解UML,知道UML能夠做什么。
第三部分為進階篇??在實踐中思考。在這一部分中,作者將以一個實例貫穿全篇,以軟件過程為綱,闡述在第一部分中學習到的那些UML元素和視圖將如何在一個實際的軟件過程中發揮作用,如何相互配合將一份原始需求經過層層分析和推導,最終形成可執行的代碼。并且這個過程將是可驗證的和可追溯的。讀者在閱讀本部分的時候,應關注分析過程和推導過程,思考從需求到實現是如何保證可驗證性和可追溯性的。通過這一部分的學習,讀者將能夠學會如何使用UML來從頭到尾地實施一個項目。
第四部分為總結篇??在提煉中思考。在這一部分中,每個章節均會針對一個在現實中經常遇到并且較難掌握的問題進行深入的探討。這些探討將有助于提升面向對象的思考能力,升華在前兩部分學習到的知識。
本書中用到的UML圖使用Rose繪制,完整的工程文件收錄在本書附帶的光盤中。
由于作者水平有限,很多內容是自己的經驗總結,出現錯誤在所難免,歡迎廣大讀者批評指正。讀者在閱讀本書的過程中有任何不清楚的問題和批評建議,可以到作者的博客http://blog.csdn.net/coffeewoo或http://coffeewoo.itpub.net留言,或者發郵件到coffeewoo@gmail.com,作者將盡力給您答疑解惑,您的批評建議也將鞭策作者做得更好。
寫給讀者的話
關于本書
如何閱讀本書
光盤使用說明
第一部分 準備篇??需要了解
第1章 為什么需要UML 2
1.1 面向過程還是面向對象 2
1.1.1 面向過程方法 3
1.1.2 面向過程的困難 4
1.1.3 面向對象方法 6
1.1.4 面向對象的困難 8
1.2 UML帶來了什么 10
1.2.1 什么是UML 10
1.2.2 統一語言 11
1.2.3 可視化 12
1.2.4 從現實世界到業務模型 14
1.2.5 從業務模型到概念模型 15
1.2.6 從概念模型到設計模型 17
1.2.7 面向對象的困難解決了嗎 18
1.2.7.1 從現實世界到業務模型 18
1.2.7.2 從業務模型到概念模型 19
1.2.7.3 從概念模型到設計模型 19
1.3 統一過程簡介 20
1.3.1 RUP是什么 20
1.3.2 RUP與UML 22
1.3.3 RUP與軟件工程 23
1.3.4 RUP與最佳實踐 25
1.3.5 RUP與本書 25
第2章 建模基礎 27
2.1 建模 27
2.2 用例驅動 29
2.3 抽象層次 31
2.4 視圖 32
2.5 對象分析方法 34
第二部分 基礎篇??在學習中思考
第3章 UML核心元素 38
3.1 版型 38
3.2 參與者 39
3.2.1 基本概念 39
3.2.1.1 參與者位于邊界之外 39
3.2.1.2 參與者可以非人 40
3.2.2 發現參與者 40
3.2.3 業務主角 42
3.2.4 業務工人 43
3.2.5 參與者與涉眾的關系 44
3.2.6 參與者與用戶的關系 45
3.2.7 參與者與角色的關系 45
3.2.8 參與者的核心地位 45
3.2.9 檢查點 46
3.3 用例 47
3.3.1 基本概念 47
3.3.2 用例的特征 48
3.3.3 用例的粒度 50
3.3.4 用例的獲得 52
3.3.5 用例和功能的誤區 54
3.3.6 目標和步驟的誤區 57
3.3.7 用例粒度的誤區 59
3.3.8 業務用例 61
3.3.9 業務用例實現 62
3.3.10 概念用例 63
3.3.11 系統用例 64
3.3.12 用例實現 64
3.4 邊界 65
3.4.1 邊界決定視界 66
3.4.2 邊界決定抽象層次 66
3.4.3 靈活使用邊界 67
3.5 業務實體 68
3.5.1 業務實體的屬性 68
3.5.2 業務實體的方法 69
3.5.3 獲取業務實體 69
3.6 包 71
3.7 分析類 73
3.7.1 邊界類 74
3.7.2 控制類 75
3.7.3 實體類 75
3.7.4 分析類的三高 76
3.8 設計類 77
3.8.1 類 78
3.8.2 屬性 78
3.8.3 方法 78
3.8.4 可見性 78
3.9 關系 79
3.9.1 關聯關系(association) 79
3.9.2 依賴關系(dependency) 80
3.9.3 擴展關系(extends) 80
3.9.4 包含關系(include) 81
3.9.5 實現關系(realize) 81
3.9.6 精化關系(refine) 82
3.9.7 泛化關系(generalization) 83
3.9.8 聚合關系(aggregation) 83
3.9.9 組合關系(composition) 83
3.10 組件 84
3.10.1 完備性 85
3.10.2 獨立性 85
3.10.3 邏輯性 85
3.10.4 透明性 85
3.10.5 使用組件 85
3.11 節點 87
3.11.1 分布式應用環境 88
3.11.2 多設備應用環境 88
第4章 UML核心視圖 90
4.1 靜態視圖 90
4.1.1 用例圖 90
4.1.1.1 業務用例視圖 90
4.1.1.2 業務用例實現視圖 92
4.1.1.3 概念用例視圖 92
4.1.1.4 系統用例視圖 92
4.1.1.5 系統用例實現視圖 93
4.1.2 類圖 94
4.1.2.1 概念層類圖 95
4.1.2.2 說明層類圖 95
4.1.2.3 實現層類圖 95
4.1.3 包圖 97
4.2 動態視圖 97
4.2.1 活動圖 98
4.2.1.1 用例活動圖 98
4.2.1.2 對象活動圖 101
4.2.1.3 泳道 101
4.2.1.4 業務場景建模 102
4.2.1.5 用例場景建模 103
4.2.2 狀態圖 104
4.2.3 時序圖 106
4.2.3.1 業務模型時序圖 106
4.2.3.2 概念模型時序圖 109
4.2.3.3 設計模型時序圖 110
4.2.4 協作圖 110
4.2.4.1 業務模型協作圖 112
4.2.4.2 概念模型協作圖 113
4.2.4.3 設計模型協作圖 113
第5章 UML核心模型 116
5.1 用例模型概述 116
5.2 業務用例模型 118
5.2.1 業務用例模型主要內容 120
5.2.2 業務用例模型工件的取舍 120
5.2.3 何時使用業務用例模型 121
5.3 概念用例模型 122
5.3.1 概念用例模型的主要內容 123
5.3.2 獲得概念用例 124
5.3.3 何時使用概念用例模型 124
5.4 系統用例模型 125
5.4.1 系統用例模型的主要內容 125
5.4.2 獲得系統用例 127
5.5 領域模型 128
5.6 分析模型 130
5.6.1 如何使用分析模型 131
5.6.2 分析模型的主要內容 133
5.6.3 分析模型的意義 134
5.7 軟件架構和框架 135
5.7.1 軟件架構 136
5.7.1.1 業務架構 136
5.7.1.2 軟件架構 138
5.7.1.3 架構描述 139
5.7.2 軟件框架 141
5.7.3 何時使用架構和框架 142
5.8 設計模型 142
5.8.1 設計模型的應用場合 143
5.8.2 設計模型的主要內容 144
5.8.3 從分析模型映射到設計模型 146
5.9 組件模型 147
5.9.1 何時使用組件模型 149
5.9.2 廣義組件的用法 149
5.10 實施模型 150
第6章 統一過程核心工作流簡介 152
6.1 業務建模工作流程 153
6.1.1 工作流程 153
6.1.2 活動集和工件集 153
6.1.3 業務建模的目標和場景 156
6.1.3.1 場景 #1??組織圖 156
6.1.3.2 場景 #2??領域建模 156
6.1.3.3 場景 #3??單業務多系統 156
6.1.3.4 場景 #4??通用業務模型 157
6.1.3.5 場景 #5??新業務 157
6.1.3.6 場景 #6??修改 157
6.2 系統建模工作流程 157
6.2.1 工作流程 157
6.2.1.1 分析問題 158
6.2.1.2 理解涉眾需求 158
6.2.1.3 定義系統 159
6.2.1.4 改進系統定義 159
6.2.1.5 管理系統規模 159
6.2.1.6 管理需求變更 159
6.2.2 活動集和工件集 160
6.2.2.1 前景 160
6.2.2.2 涉眾請求 161
6.2.2.3 需求屬性 162
6.2.2.4 軟件需求規約 162
6.2.2.5 用例示意板 162
6.2.3 系統建模的目標 162
6.3 分析設計建模工作流程 163
6.3.1 工作流程 163
6.3.1.1 定義和改進架構 164
6.3.1.2 分析行為 165
6.3.1.3 設計組件(構件) 166
6.3.1.4 設計數據庫 169
6.3.2 活動集和工件集 170
6.3.3 分析設計的目標 171
6.3.4 推薦的分析設計工作流程簡介 171
6.4 實施建模工作流程 173
6.4.1 工作流程 173
6.4.2 活動集和工件集 174
6.4.3 推薦的實施建模工作流程 175
第7章 迭代式軟件生命周期 179
第三部分 進階篇??在實踐中思考
第8章 準備工作 182
8.1 案例說明 182
8.2 了解問題領域 183
8.2.1 了解業務概況 183
8.2.2 整理業務目標 183
8.3 做好涉眾分析 184
8.3.1 什么是涉眾 184
8.3.2 發現和定義涉眾 184
8.3.2.1 業主 185
8.3.2.2 業務提出者 185
8.3.2.3 業務管理者 185
8.3.2.4 業務執行者 186
8.3.2.5 第三方 186
8.3.2.6 承建方 186
8.3.2.7 相關的法律法規 186
8.3.2.8 用戶 187
8.3.3 涉眾分析報告 187
8.3.3.1 涉眾概要 187
8.3.3.2 涉眾簡檔 189
8.3.3.3 用戶概要 190
8.3.3.4 用戶簡檔 191
8.3.3.5 消費者統計 192
8.4 規劃業務范圍 193
8.4.1 規劃業務目標 193
8.4.2 規劃涉眾期望 193
8.5 整理好你的思路 194
8.5.1 劃分優先級 194
8.5.1.1 涉眾優先級標準 195
8.5.1.2 期望優先級標準 195
8.5.1.3 優先級矩陣 195
8.5.2 規劃需求層次 196
8.5.2.1 第一層次:業務架構 196
8.5.2.2 第二層次:業務流程 196
8.5.2.3 第三層次:工作細節 197
8.5.3 需求調研計劃 197
8.6 客戶訪談技巧 198
8.6.1 溝通的困難 198
8.6.2 溝通技巧 199
8.6.2.1 建立平等的對話平臺 200
8.6.2.2 做足準備工作 200
8.6.2.3 以我為主 200
8.6.2.4 改變溝通策略 201
8.6.2.5 把握需求節奏 201
8.6.2.6 記錄與反饋 201
8.7 提給讀者的問題 202
第9章 獲取需求 203
9.1 定義邊界 203
9.1.1 盤古開天??從混沌走向清晰 203
9.1.2 現在行動:定義邊界 204
9.1.3 進一步討論 206
9.1.3.1 第一個討論 206
9.1.3.2 第二個討論 207
9.1.3.3 第三個討論 208
9.1.4 提給讀者的問題 209
9.2 發現主角 210
9.2.1 女媧造人??誰來掌管這個世界 210
9.2.2 現在行動:發現主角 210
9.2.2.1 第一個例子 211
9.2.2.2 第二個例子 211
9.2.3 進一步討論 214
9.2.3.1 第一個討論 214
9.2.3.2 第二個討論 215
9.2.3.3 第三個討論 215
9.2.3.4 第四個討論 216
9.2.3.5 第五個討論 216
9.2.4 提給讀者的問題 217
9.3 獲取業務用例 217
9.3.1 炎黃之治??從愚昧走向文明 217
9.3.2 現在行動:獲取業務用例 218
9.3.2.1 第一個例子 218
9.3.2.2 第二個例子 221
9.3.2.3 第三個例子 224
9.3.3 進一步討論 224
9.3.3.1 第一個討論 224
9.3.3.2 第二個討論 226
9.3.3.3 第三個討論 226
9.3.4 提給讀者的問題 228
9.4 業務建模 228
9.4.1 商鞅變法??強盛的必由之路 228
9.4.2 現在行動:建立業務模型 229
9.4.2.1 業務用例場景示例 229
9.4.2.2 業務用例規約示例 235
9.4.2.3 業務對象模型 237
9.4.2.4 業務用例實現視圖 237
9.4.2.5 業務用例實現場景示例 238
9.4.2.6 包圖 239
9.4.3 進一步討論 240
9.4.3.1 第一個討論 240
9.4.3.2 第二個討論 241
9.4.3.3 第三個討論 241
9.4.3.4 第四個討論 242
9.4.3.5 第五個討論 242
9.4.4 提給讀者的問題 243
9.5 領域建模 243
9.5.1 風火水土??尋找構成世界的基本元素 243
9.5.2 現在行動:建立領域模型 244
9.5.2.1 提出領域問題 245
9.5.2.2 分析領域問題 246
9.5.2.3 建立領域模型 248
9.5.2.4 驗證領域模型 250
9.5.2.5 領域建模歸納 250
9.5.3 進一步討論 252
9.5.3.1 第一個討論:為什么需要領域模型 252
9.5.3.2 第二個討論:怎樣選擇問題領域 252
9.5.3.3 第三個討論:領域模型與用例模型 253
9.5.3.4 第四個討論:領域模型和設計模型 254
9.5.3.5 第五個討論:領域模型要做到什么程度 254
9.5.4 提給讀者的問題 255
9.6 提煉業務規則 255
9.6.1 牛頓的思考??揭穿蘋果的秘密 255
9.6.2 現在行動:提煉業務規則 256
9.6.2.1 全局規則 256
9.6.2.2 交互規則 258
9.6.2.3 內稟規則 258
9.6.2.4 分類業務規則的意義 258
9.6.3 進一步討論 259
9.6.3.1 第一個討論:需求管理和業務規則管理 259
9.6.3.2 第二個討論:分類業務規則對于開發的意義 260
9.6.4 提給讀者的問題 260
9.7 獲取非功能性需求 261
9.7.1 非物質需求??精神文明是不可缺少的 261
9.7.2 現在行動:獲取非功能性需求 262
9.7.2.1 可靠性 263
9.7.2.2 可用性 264
9.7.2.3 有效性 265
9.7.2.4 可移植性 266
9.7.3 進一步討論 266
9.7.3.1 第一個討論:如何采集非功能性需求 266
9.7.3.2 第二個討論:如何記錄非功能性需求 270
9.7.4 提給讀者的問題 270
9.8 主要成果物 270
第10章 需求分析 273
10.1 關鍵概念分析 273
10.1.1 阿基米德杠桿??找到撬動地球的支點 273
10.1.2 現在行動:建立概念模型 274
10.1.2.1 獲取概念用例 274
10.1.2.2 分析概念用例 278
10.1.2.3 建立概念模型 280
10.1.3 進一步討論 285
10.1.3.1 第一個討論:概念模型和領域模型 285
10.1.3.2 第二個討論:軟件架構的引入 285
10.1.4 提給讀者的問題 286
10.2 業務架構 286
10.2.1 拼圖游戲??我們也想造個世界 286
10.2.2 現在行動:建立業務架構 287
10.2.3 進一步討論 292
10.2.3.1 第一個討論:結構化設計方法和業務架構方法 292
10.2.3.2 第二個討論:業務構件和業務實體 293
10.2.3.3 第三個討論:業務架構和軟件架構 294
10.2.3.4 第四個討論:建模的價值 294
10.2.4 提給讀者的問題 296
10.3 系統原型 296
(以下略)
- 軟件工程(微課版) [主編 陳亞峰]
- 火球-UML大戰需求分析(第二版) [張傳波 著]
- UML系統建模及系統分析與設計(第二版) [王欣 張毅 編著]
- 軟件工程 [主 編 田保軍 劉利民]
- 軟件工程(第二版) [曾強聰 趙歆 陽王東 編著]
- 軟件工程(第二版) [王偉 杜文潔]
- 軟件工程 [曾強聰 趙歆 ]
- 軟件工程概論 [倪天林 王偉娜]
- UML系統建模及系統分析與設計 [王欣 張毅 編著]
- 大象——Thinking in UML(第二版) [譚云杰 著]
- 火球——UML大戰需求分析 [張傳波 著]
- Visual C# 2010與UML開發實戰 [張書源]
- UML面向對象建模基礎 [徐鋒 陳暄 等編著]
- 軟件工程(第二版) [盧瀟 主編]
- 軟件工程 [景秀麗 呂洪林]
- 軟件工程與實踐 [劉竹林]
- 軟件工程(第二版) [閆菲 主編]
- 軟件工程--原理、方法與應用 [肖孟強 曲秀清 主編]
- 實用軟件工程教程 [閻菲 主編]
- 軟件開發生命周期與統一建模語言 UML [曹 靜 主 編]
- 軟件工程--原理、方法與應用(第二版) [肖孟強 王宗江 主編]
- 軟件工程 [曹哲 高誠 主編]