本書以UML為載體,將面向?qū)ο蟮姆治鲈O(shè)計思想巧妙地融入建模過程中,通過貫穿全書的實例將軟件系統(tǒng)開發(fā)過程中方方面面的知識有機地結(jié)合在一起,用生動的語言和精彩的事例將復(fù)雜枯燥的軟件過程講解得津津有味。
全書分為四個部分。及時部分講述面向?qū)ο蠓治龅囊恍┗靖拍睿皩W(xué)習(xí)建模需要了解的一些基本知識。第二部分對UML的基礎(chǔ)概念重新組織和歸納整理,進行擴展和討論,引申出針對UML的這些概念在面向?qū)ο蠓椒ㄖ袘?yīng)用方法的思考。第三部分以一個實例貫穿全篇,闡述如何使用UML從頭到尾地實施一個項目。第四部分針對在現(xiàn)實中經(jīng)常遇到并且較難掌握的問題進行深入的探討,升華在前幾篇學(xué)習(xí)到的知識。
本書可供正在學(xué)習(xí)編程、軟件工程等知識,準備將來從事IT行業(yè)的讀者、正努力向設(shè)計師或系統(tǒng)分析員轉(zhuǎn)變的技術(shù)人員及期望對軟件分析設(shè)計更上一層樓的設(shè)計人員學(xué)習(xí)和提高之用。
本書版創(chuàng)造暢銷奇跡,好評如潮,歡迎圍觀
震撼本土原創(chuàng)!
這是一本講軟件的分析、設(shè)計與建模的書
這是一本將晦澀的概念與項目的實踐緊密結(jié)合的書
這是一本讓您與似是而非的感覺做個了斷的書
這是一本充滿思想與智慧的書
……
字字珠璣,醍醐灌頂
從來沒有一本書,帶給軟件開發(fā)人員如此醍醐灌頂?shù)母惺堋?/p>
軟件江湖盛傳的"UML書",開發(fā)人員夢寐以求的"九陽真經(jīng)",真正助您打通軟件開發(fā)"任督二脈"。
萬眾矚目的《大象——Thinking in UML》(第二版),大陸和臺灣地區(qū)同步重磅推出。
面對眼花繚亂的軟件開發(fā)新技術(shù),是選擇繼續(xù)疲于應(yīng)付?還是畢其功于一役?
CSDN超級名博Coffeewoo 之12年軟件分析設(shè)計與建模純甘經(jīng)驗分享。
譚云杰:
CSDN專家博客coffeewoo博主。博學(xué)架構(gòu)師,PMP獲得者,擅長于系統(tǒng)建模和系統(tǒng)分析設(shè)計。從事過電力、政府、航空等多個行業(yè)的管理軟件開發(fā)工作和工作流中間件產(chǎn)品的研發(fā)工作,擁有十多個軟件項目的分析設(shè)計經(jīng)驗和架構(gòu)設(shè)計經(jīng)驗,其中不乏中型和大型軟件項目。目前就職于某著名跨國軟件企業(yè)中國研發(fā)中心,從事產(chǎn)品研發(fā)工作。
作者使用UML進行系統(tǒng)分析建模至今已十年有余,對系統(tǒng)建模、分析和設(shè)計有深刻而獨道的見解。在其博客上發(fā)表的OO系統(tǒng)分析員之路系列文章短短時間內(nèi)便獲得了十幾萬的點擊量,深受讀者的喜愛。
大象希形
再版序
寫給讀者的話
關(guān)于本書
如何閱讀本書
免費下載資源使用說明
Part I 你需要了解
第1章 為什么需要UML
1.1 面向過程還是面向?qū)ο?/p>
1.1.1 面向過程方法
1.1.2 面向過程的困難
1.1.3 面向?qū)ο蠓椒?/p>
1.1.4 面向?qū)ο蟮睦щy
1.2 UML帶來了什么
1.2.1 什么是UML
1.2.2 統(tǒng)一語言
1.2.3 可視化
1.2.4 從現(xiàn)實世界到業(yè)務(wù)模型
1.2.5 從業(yè)務(wù)模型到概念模型
1.2.6 從概念模型到設(shè)計模型
1.2.7 面向?qū)ο蟮睦щy解決了嗎
1.3 統(tǒng)一過程簡介
1.3.1 RUP是什么
1.3.2 RUP與UML
1.3.3 RUP與軟件工程
1.3.4 RUP與實踐
1.3.5 RUP與本書
第2章 建模基礎(chǔ)
2.1 建模
2.2 用例驅(qū)動
2.3 抽象層次
2.4 視圖
2.5 對象分析方法
Part II 在學(xué)習(xí)中思考
第3章 UML核心元素
3.1 版型
3.2 參與者
3.2.1 基本概念
3.2.2 發(fā)現(xiàn)參與者
3.2.3 業(yè)務(wù)主角
3.2.4 業(yè)務(wù)工人
3.2.5 參與者與涉眾的關(guān)系
3.2.6 參與者與用戶的關(guān)系
3.2.7 參與者與角色的關(guān)系
3.2.8 參與者的核心地位
3.2.9 檢查點
3.3 用例
3.3.1 基本概念
3.3.2 用例的特征
3.3.3 用例的粒度
3.3.4 用例的獲得
3.3.5 用例和功能的誤區(qū)
3.3.6 目標和步驟的誤區(qū)
3.3.7 用例粒度的誤區(qū)
3.3.8 業(yè)務(wù)用例
3.3.9 業(yè)務(wù)用例實現(xiàn)
3.3.10 概念用例
3.3.11 系統(tǒng)用例
3.3.12 用例實現(xiàn)
3.4 邊界
3.4.1 邊界決定視界
3.4.2 邊界決定抽象層次
3.4.3 靈活使用邊界
3.5 業(yè)務(wù)實體
3.5.1 業(yè)務(wù)實體的屬性
3.5.2 業(yè)務(wù)實體的方法
3.5.3 獲取業(yè)務(wù)實體
3.6 包
3.7 分析類
3.7.1 邊界類
3.7.2 控制類
3.7.3 實體類
3.7.4 分析類的三高
3.8 設(shè)計類
3.8.1 類
3.8.2 屬性
3.8.3 方法
3.8.4 可見性
3.9 關(guān)系
3.9.1 關(guān)聯(lián)關(guān)系(association)
3.9.2 依賴關(guān)系(dependency)
3.9.3 擴展關(guān)系(extends)
3.9.4 包含關(guān)系(include)
3.9.5 實現(xiàn)關(guān)系(realize)
3.9.6 精化關(guān)系(refine)
3.9.7 泛化關(guān)系(generalization)
3.9.8 聚合關(guān)系(aggregation)
3.9.9 組合關(guān)系(composition)
3.10 組件
3.10.1 完備性
3.10.2 獨立性
3.10.3 邏輯性
3.10.4 透明性
3.10.5 使用組件
3.11 節(jié)點
3.11.1 分布式應(yīng)用環(huán)境
3.11.2 多設(shè)備應(yīng)用環(huán)境
第4章 UML核心視圖
4.1 靜態(tài)視圖
4.1.1 用例圖
4.1.2 類圖
4.1.3 包圖
4.2 動態(tài)視圖
4.2.1 活動圖
4.2.2 狀態(tài)圖
4.2.3 時序圖
4.2.4 協(xié)作圖
第5章 UML核心模型
5.1 用例模型概述
5.2 業(yè)務(wù)用例模型
5.2.1 業(yè)務(wù)用例模型主要內(nèi)容
5.2.2 業(yè)務(wù)用例模型工件的取舍
5.2.3 何時使用業(yè)務(wù)用例模型
5.3 概念用例模型
5.3.1 概念用例模型的主要內(nèi)容
5.3.2 獲得概念用例
5.3.3 何時使用概念用例模型
5.4 系統(tǒng)用例模型
5.4.1 系統(tǒng)用例模型的主要內(nèi)容
5.4.2 獲得系統(tǒng)用例
5.5 領(lǐng)域模型
5.5.1 讀者須知
5.5.2 基本概念
5.5.3 領(lǐng)域模型的主要內(nèi)容
5.6 分析模型
5.6.1 如何使用分析模型
5.6.2 分析模型的主要內(nèi)容
5.6.3 分析模型的意義
5.7 軟件架構(gòu)和框架
5.7.1 軟件架構(gòu)
5.7.2 軟件框架
5.7.3 何時使用架構(gòu)和框架
5.8 設(shè)計模型
5.8.1 設(shè)計模型的應(yīng)用場合
5.8.2 設(shè)計模型的主要內(nèi)容
5.8.3 從分析模型映射到設(shè)計模型
5.9 組件模型
5.9.1 何時使用組件模型
5.9.2 廣義組件的用法
5.10 實施模型
何時使用實施模型
第6章 統(tǒng)一過程核心工作流簡介
6.1 業(yè)務(wù)建模工作流程
6.1.1 工作流程
6.1.2 活動集和工件集
6.1.3 業(yè)務(wù)建模的目標和場景
6.2 系統(tǒng)建模工作流程
6.2.1 工作流程
6.2.2 活動集和工件集
6.2.3 系統(tǒng)建模的目標
6.3 分析設(shè)計建模工作流程
6.3.1 工作流程
6.3.2 活動集和工件集
6.3.3 分析設(shè)計的目標
6.3.4 推薦的分析設(shè)計工作流程簡介
6.4 實施建模工作流程
6.4.1 工作流程
6.4.2 活動集和工件集
6.4.3 推薦的實施建模工作流程
第7章 迭代式軟件生命周期
Part III 在實踐中思考
第8章 準備工作
8.1 案例說明
8.2 了解問題領(lǐng)域
8.2.1 了解業(yè)務(wù)概況
8.2.2 整理業(yè)務(wù)目標
8.3 做好涉眾分析
8.3.1 什么是涉眾
8.3.2 發(fā)現(xiàn)和定義涉眾
8.3.3 涉眾分析報告
8.4 規(guī)劃業(yè)務(wù)范圍
8.4.1 規(guī)劃業(yè)務(wù)目標
8.4.2 規(guī)劃涉眾期望
8.5 整理好你的思路
8.5.1 劃分優(yōu)先級
8.5.2 規(guī)劃需求層次
8.5.3 需求調(diào)研計劃
8.6 客戶訪談技巧
8.6.1 溝通的困難
8.6.2 溝通技巧
8.7 提給讀者的問題
第9章 獲取需求
9.1 定義邊界
9.1.1 盤古開天——從混沌走向清晰
9.1.2 現(xiàn)在行動:定義邊界
9.1.3 進一步討論
9.1.4 提給讀者的問題
9.2 發(fā)現(xiàn)主角
9.2.1 女媧造人——誰來掌管這個世界
9.2.2 現(xiàn)在行動:發(fā)現(xiàn)主角
9.2.3 進一步討論
9.2.4 提給讀者的問題
9.3 獲取業(yè)務(wù)用例
9.3.1 炎黃之治——從愚昧走向文明
9.3.2 現(xiàn)在行動:獲取業(yè)務(wù)用例
9.3.3 進一步討論
9.3.4 提給讀者的問題
9.4 業(yè)務(wù)建模
9.4.1 商鞅變法——強盛的必由之路
9.4.2 現(xiàn)在行動:建立業(yè)務(wù)模型
9.4.3 進一步討論
9.4.4 提給讀者的問題
9.5 領(lǐng)域建模
9.5.1 風(fēng)火水土——尋找構(gòu)成世界的
基本元素
9.5.2 現(xiàn)在行動:建立領(lǐng)域模型
9.5.3 進一步討論
9.5.4 提給讀者的問題
9.6 提煉業(yè)務(wù)規(guī)則
9.6.1 牛頓的思考——揭穿蘋果的秘密
9.6.2 現(xiàn)在行動:提煉業(yè)務(wù)規(guī)則
9.6.3 進一步討論
9.6.4 提給讀者的問題
9.7 獲取非功能性需求
9.7.1 非物質(zhì)需求——精神文明是
不可缺少的
9.7.2 現(xiàn)在行動:獲取非功能性需求
9.7.3 進一步討論
9.7.4 提給讀者的問題
9.8 主要成果物
提給讀者的問題
第10章 需求分析
10.1 關(guān)鍵概念分析
10.1.1 阿基米德杠桿——找到撬動地球的
支點
10.1.2 現(xiàn)在行動:建立概念模型
10.1.3 進一步討論
10.1.4 提給讀者的問題
10.2 業(yè)務(wù)架構(gòu)
10.2.1 拼圖游戲——我們也想造個世界
10.2.2 現(xiàn)在行動:建立業(yè)務(wù)架構(gòu)
10.2.3 進一步討論
10.2.4 提給讀者的問題
10.3 系統(tǒng)原型
第11章 系統(tǒng)分析
11.1 確定系統(tǒng)用例
11.1.1 開始規(guī)劃——確定新世界的萬物
11.1.2 現(xiàn)在行動:確定系統(tǒng)用例
11.1.3 現(xiàn)在行動:描述系統(tǒng)用例
11.1.4 進一步討論
11.1.5 提給讀者的問題
11.2 分析業(yè)務(wù)規(guī)則
11.2.1 設(shè)定規(guī)則——沒有規(guī)矩不成方圓
11.2.2 現(xiàn)在行動:分析業(yè)務(wù)規(guī)則
11.2.3 提給讀者的問題
11.3 用例實現(xiàn)
11.3.1 繪制藍圖——世界將這樣運行
11.3.2 現(xiàn)在行動:實現(xiàn)用例
11.3.3 進一步討論
11.3.4 提給讀者的問題
11.4 軟件架構(gòu)和框架
11.4.1 設(shè)計架構(gòu)——新世界的骨架
11.4.2 什么是軟件架構(gòu)
11.4.3 什么是軟件框架
11.4.4 軟件架構(gòu)的基本構(gòu)成
11.4.5 應(yīng)用軟件架構(gòu)
11.4.6 提給讀者的問題
11.5 分析模型
11.5.1 設(shè)計功能零件——讓世界初步
運轉(zhuǎn)起來
11.5.2 現(xiàn)在行動:建立分析模型
11.5.3 進一步討論
11.5.4 提給讀者的問題
11.6 組件模型
11.6.1 設(shè)計功能部件——構(gòu)建世界的
基礎(chǔ)設(shè)施
11.6.2 現(xiàn)在行動:建立組件模型
11.6.3 進一步討論
11.6.4 提給讀者的問題
11.7 部署模型
11.7.1 安裝零部件——組裝一個新世界
11.7.2 現(xiàn)在行動:建立部署模型
11.7.3 提給讀者的問題
第12章 系統(tǒng)設(shè)計
12.1 系統(tǒng)分析與系統(tǒng)設(shè)計的差別
12.2 設(shè)計模型
12.2.1 按圖索驥——為新世界添磚加瓦
12.2.2 現(xiàn)在行動:將分析模型映射到
設(shè)計模型
12.2.3 進一步討論
12.2.4 提給讀者的問題
12.3 接口設(shè)計
12.3.1 暢通無阻——構(gòu)建四通八達的
神經(jīng)網(wǎng)絡(luò)
12.3.2 現(xiàn)在行動:設(shè)計接口
12.3.3 進一步討論
12.3.4 提給讀者的問題
12.4 包設(shè)計
12.4.1 分工合作——組織有序世界
才能更好
12.4.2 現(xiàn)在行動:設(shè)計包
12.4.3 進一步討論
12.5 提給讀者的問題
第13章 數(shù)據(jù)庫設(shè)計
13.1 關(guān)公戰(zhàn)秦瓊——面向?qū)ο笈c關(guān)系
模型之爭
13.2 相輔相成——面向?qū)ο蟮臄?shù)據(jù)庫設(shè)計
13.3 平衡的藝術(shù)——數(shù)據(jù)庫設(shè)計的方法
和策略
13.3.1 OR-Mapping策略
13.3.2 對象—關(guān)系平衡策略
13.4 進一步討論——數(shù)據(jù)庫設(shè)計到底
有多重要
第14章 開發(fā)
14.1 生成代碼
14.1.1 現(xiàn)在行動:生成代碼
14.1.2 進一步討論
14.2 分工策略
14.2.1 縱向分工策略
14.2.2 橫向分工策略
14.2.3 選擇適合你的開發(fā)分工策略
Part IV 在提煉中思考
第15章 測試
15.1 質(zhì)量保障——新世界需要穩(wěn)健運行
15.2 設(shè)計和開發(fā)測試例
15.3 提給讀者的問題
第16章 理解用例的本質(zhì)
16.1 用例是系統(tǒng)思維
16.2 用例是面向服務(wù)的
16.3 善用用例方法
第17章 理解用例驅(qū)動
17.1 用例與項目管理
17.2 用例與可擴展架構(gòu)
第18章 用例驅(qū)動與領(lǐng)域驅(qū)動
18.1 用例驅(qū)動與領(lǐng)域驅(qū)動的差異
18.2 領(lǐng)域驅(qū)動的理想與現(xiàn)實
18.3 如何決定是否采用領(lǐng)域驅(qū)動方法
第19章 理解建模的抽象層次
19.1 再討論抽象層次
19.1.1 層次高低問題
19.1.2 層次不交叉問題
19.2 如何決定抽象層次
19.3 抽象層次與UML建模的關(guān)系
第20章 劃分子系統(tǒng)的問題
20.1 面向?qū)ο蟮淖酉到y(tǒng)問題
20.2 UC矩陣還適用嗎
20.3 如何劃分子系統(tǒng)
第21章 學(xué)會使用系統(tǒng)邊界
21.1 邊界是面向?qū)ο蟮谋U?/p>
21.2 利用邊界來分析需求
21.2.1 邊界分析示例一
21.2.2 邊界分析示例二
21.3 邊界意識決定設(shè)計好壞
第22章 學(xué)會從接口認知事物
22.1 怎樣描述一件事物
22.2 接口是系統(tǒng)的靈魂
第23章 學(xué)會正確選擇
23.1 屁股決定腦袋——學(xué)會綜合權(quán)衡
23.2 理辯則明——學(xué)會改變視角
第24章 學(xué)會使用設(shè)計模式
24.1 如何學(xué)習(xí)設(shè)計模式
24.2 如何使用設(shè)計模式
附錄 UML視圖常用元素參考
圖目錄
表目錄
后記
大象希形
■可遇而不可求
中國象棋,只有32棵棋子,規(guī)則簡單,但水平高低之間,不在于是否掌握了馬走日象走田。正如UML,簡單說只有元素、視圖與模型,但水平高低之間,絕不在于誰能在視圖之上畫出各種元素堆積的模型,而是在于誰能夠借助UML提供的這些工具,靈活自如地為復(fù)雜項目的開發(fā)提供一個成熟的、統(tǒng)一的、系統(tǒng)的、廣泛適用的系統(tǒng)分析設(shè)計與建模方法,即軟件的統(tǒng)一過程。
說到統(tǒng)一過程,不能不提一下RUP,正是由于RUP與UML師出同門,造就了RUP在軟件統(tǒng)一過程中的霸主地位。不過一提到RUP,文檔、模型、迭代、組件、架構(gòu)、軟件層次等詞匯,嚼蠟般的概念撲面而來,可以想象學(xué)習(xí)的感受。RUP的官方文檔晦澀而枯燥;相關(guān)的圖書,缺少透徹的理解與思想,有時還不如官方文檔好看。痛苦在于,明明你知道RUP就是把守通向?qū)崿F(xiàn)技術(shù)自由之夢想之路的任督二脈,卻又無力打通。而于菜鳥同志們來說,層出不窮的開發(fā)框架,云山霧罩的設(shè)計模式,龐大復(fù)雜的體系和概念、無處著力的分析設(shè)計與建模….,從何學(xué)起?如何學(xué)起?
這就是一本解決這些問題的書。
坦率地說,這樣的書不是策劃而來,全憑幸運之神的眷顧。而于廣大讀者,這是一部可遇而不可求的技術(shù)寶作。
■天上人間
有句俗話叫吃水不忘挖井人,說起UML,不能忘記Ivar,James,Grady這三個UML的創(chuàng)始人———三位方法學(xué)大師,在軟件領(lǐng)域,他們是教父級人物。但是并非所有讀者都認可這個觀點,原因是他們飽受UML與RUP之晦澀復(fù)雜之苦,并且始終也未得其門而入。不能被大眾所掌握,再巧妙再高深的知識也只是形同雞肋。
本書及時版的字字句句,如鵜鶘灌頂,使好多困擾本人多年的似是而非的晦澀技術(shù)概念,茅塞頓開。本書第二版面市之際,我已經(jīng)知道,那種無以言表的美好感覺,并非我的獨自感受,兩萬余名及時版的讀者,無不向譚云杰老師致以深深的敬意。正是因為大家的感恩心情,使譚老師在軟件技術(shù)的征途上,這三年來更加時刻不敢懈怠;正是因為大家的感恩心情,譚老師又斟出了自己多年來對于面向?qū)ο蟮臄?shù)據(jù)庫的分析、設(shè)計與建模方面的心得,與朋友們共勉。這就有了本書的第二版。
有一點必須聲明,作者本人非常惶恐于拿他與Ivar,James,Grady三位大師相提并論。本人也并沒有任何對三位大師的不恭之意,我只是想說:三位大師在天上,譚老師在人間。
■大象
老子說,大象希形,大音希聲。我的理解大概是,象至極大,形之其次;音至極美,聲之其次;器至極巧,工之其次。能把UML講得如蛋清般清沏,已屬罕見,在讀完這書之后,又突然發(fā)現(xiàn)已然把朝夕膜拜的RUP之精髓收于囊中,同時讓開發(fā)框架、軟件架構(gòu)、設(shè)計模式、分析、設(shè)計與建模等龐大而復(fù)雜的概念,再也不像如梗在喉,真的難以形容這是一種多么美妙的感覺。之余,不得不嘆服作者功力之厚、思想之深、語言之美、構(gòu)思之巧,一切莫不象至極大,故此書及時版,命名為《大象》。
對于本書的第二版,我依然認為這是一個最為貼切的名字。
再版序
《大象—Thinking in UML》自2009年出版以來,已經(jīng)過去了三年。在這三年中,《大象》獲得了我預(yù)期之中的關(guān)注,也獲得了我意料之外的榮譽。
我所預(yù)期的,是我堅信《大象》是我所知道的一本結(jié)合了面向?qū)ο蠓椒ā④浖こ谭椒ā⒒赨ML的建模方法的全程建模的書;我相信也是一本不僅僅是授技,而是試圖論道的書。最重要的是在決定寫作本書時,我便決心不寫那種引用、翻譯、拼湊各種資料的書。因為我在工作中經(jīng)過學(xué)習(xí)、思考和實踐,已經(jīng)形成了一套自己的面向?qū)ο蟮慕!⒎治龊驮O(shè)計方法,至少在我自己的項目中用起來得心應(yīng)手。我覺得應(yīng)該將這套方法傳播開來。既然這套方法能夠讓我自己的項目獲益,我相信也能夠讓更多的IT從業(yè)者獲益。我于是非常用心地寫下每一個字,每一個觀點都是自己的理解和經(jīng)驗總結(jié),幾乎傾盡了工作十年的所有經(jīng)驗和思考。我相信這樣的書一定會獲得讀者的喜愛,所以自寫作時就期望著能得到讀者的肯定。
而意料之外的,則是受歡迎的程度遠遠超過了我的預(yù)期。我沒想到在本書出版的及時年,便在互動網(wǎng)的計算機圖書銷售排行版上沖上了銷售榜的第三名;沒想到在接下來的這三年里,銷售也一直非常好,至今已經(jīng)重印了6次之多;更沒想到的是本書被許多學(xué)校采納為教材或者課外資料。而最讓我欣慰的則是讀者的反饋。讀者購買本書后的每一條反饋我都會看,不論是贊揚的還是批評的。更多的讀者在閱讀后會給我來信,要么詢問書中不太明白的地方,要么指出書中的一些錯誤。甚至有讀者建立了專門的QQ群來討論與本書相關(guān)的一些問題。
與冷冰冰的銷售紀錄相比,我更看重這些熱乎乎的評論、討論。這為《大象》賦予了生命,或者說,之所以會有今天的第二版,它的第二次生命就是由這些讀者給予的。讀者對《大象》的指正都改進到了第二版中;讀者對《大象》更多的期待,更是直接促成了第二版的誕生。
在準備第二版之前,我曾經(jīng)想過要不要大動手術(shù)。但一方面大部分讀者的反饋表明《大象》及時版挺合乎胃口。另一方面,在及時版出版后的這三年里,我應(yīng)邀做了許多演講、培訓(xùn)和公開課,在這些活動中我依據(jù)《大象》的思想和方法來講課,獲得了絕大多數(shù)學(xué)員的認可和肯定。學(xué)員們普遍反映這套方法顛覆了他們的認識,使得他們對面向?qū)ο蠓椒ā⒔7椒ê蚒ML的理解有了質(zhì)的變化,經(jīng)過學(xué)習(xí),對軟件本身也有了全新的認識。這讓我意識到,《大象》里我所傳達的思想和方法是符合現(xiàn)實需要的,目前我沒有足夠的理由對及時版進行大刀闊斧的更改。但及時版也絕不是的,除了錯誤、不嚴謹?shù)牡胤剑灿凶x者確實需要但在及時版中未涉及的內(nèi)容。
因此,第二版我決定維持原有的主體不變化,包括貫穿全書的例子。一方面改正錯誤、完善語言組織,更重要的是補充讀者期望的內(nèi)容。基于此,在第二版中,較大的改變是:及時,應(yīng)許多讀者的要求,專門增加了第13章,深入討論了面向?qū)ο蠓椒ㄅc面向關(guān)系方法的區(qū)別與聯(lián)系,詳細討論了面向?qū)ο蟮臄?shù)據(jù)建模的方法;第二,在第5章中澄清了及時版中所講的"問題領(lǐng)域建模"與大家所熟知的"領(lǐng)域驅(qū)動建模"在概念上的不同,并在第17章中詳細講述了"領(lǐng)域驅(qū)動建模"與"用例驅(qū)動建模"方法的使用。
在第二版即將完成的前夕,我完成了人生另一個重要的轉(zhuǎn)變:隨著小魚魚的出生,我成為了一個父親。喜悅之情自不必多說,盡管兩個月來我再沒睡過完整的一覺。我相信孩子將從此永遠改變我的生活方式,為了與他一起成長,我得把書送給他,并留下這段話。或許以后,他會拿著書說:看,這是爸爸為我寫的,雖然我看不懂,但我知道大象鼻子很長……
再次感謝您關(guān)注和購買本書。您的意見將是我較大的收獲!我將與您一同成長。
譚云杰
2012年03月
寫給讀者的話
近幾年來,面向?qū)ο髱缀醭蔀檐浖夹g(shù)的代名詞。不論是學(xué)校設(shè)置的計算機課程,還是時下流行的編程語言、設(shè)計方法,以及新興的概念、標準和新思想無不被冠以面向?qū)ο蟮臉撕灐6鳸ML是面向?qū)ο蠓椒ǖ囊幻嫫鞄茫劦矫嫦驅(qū)ο蟮姆治龊驮O(shè)計就不能不談到UML。如今UML也成為面向?qū)ο蠓治龊驮O(shè)計事實上的行業(yè)標準。然而什么是UML?怎樣使用UML?UML僅僅是一組符號嗎?可以說,UML是面向?qū)ο笏枷牒头椒ǖ木唧w化和符號化。學(xué)習(xí)UML的過程就是掌握面向?qū)ο笏枷牒头椒ǖ倪^程。相對學(xué)習(xí)UML的符號含義而言,掌握它們背后的方法和思想是更為重要的。古人將知識分為"技"和"道",習(xí)技固然可以成為人杰,而悟道才能羽化升仙。希望讀者不僅僅滿足于學(xué)會使用UML,而應(yīng)該能夠從中悟道。
不論是面向?qū)ο蟮姆椒ǎ€是面向?qū)ο蟮慕艹龃鞺ML,許多朋友在現(xiàn)實中并不能真正掌握它們。雖然用著面向?qū)ο蟮墓ぞ撸捎妹嫦驅(qū)ο蟮恼Z言,卻做不出一個真正符合面向?qū)ο笏枷氲能浖9P者在工作中發(fā)現(xiàn)許多使用了多年UML的人其實并不真正理解UML的意義,常常用著UML卻做出了并非面向?qū)ο蟮脑O(shè)計。就像一個不知道詩歌格律的人,不論采用什么文字都寫不出詩歌一樣;沒有真正理解面向?qū)ο蟮乃枷耄瑳]有真正掌握面向?qū)ο蟮姆椒ǎ瑑H僅使用UML符號并不等于可以做出面向?qū)ο蟮姆治龊驮O(shè)計。
人類自從有思想以來,就在不斷探尋和認識自己所生活的這個世界。從本質(zhì)上說,面向過程和面向?qū)ο蠖际侨藗冋J識這個世界的方法;而具體的技術(shù),則是在采用這種方法認識世界的過程中被發(fā)明、總結(jié)和歸納出來的實踐。對于學(xué)習(xí)者而言,掌握這些技術(shù)是重要的;掌握這些技術(shù)表示你已經(jīng)繼承了前人的經(jīng)驗積累,并且是一個捷徑,一如設(shè)計模式。但是,作者更建議把學(xué)習(xí)提升一個層次,超越具體技術(shù)細節(jié)去思考其背后蘊含的思想和方法。這正是本書要冠名以Thinking in UML的原因。本書并不是一本講述哲學(xué)和方法論的書籍,相反,本書中將以大量的實例進行闡述,同時把作者在面向?qū)ο蠓治龊驮O(shè)計領(lǐng)域的經(jīng)驗融入其中,因此本書更像是一本實戰(zhàn)手冊。本書除了講解面向?qū)ο蟮幕靖拍詈蚒ML語言之外,將采用更大篇幅現(xiàn)身說法,深入淺出地把面向?qū)ο笏枷氲木琛⒎治鏊悸贰⑼茖?dǎo)方法傳授給讀者。本書的講解均來自實際工作,乃作者多年工作經(jīng)驗和實踐的總結(jié)和歸納。這些經(jīng)驗和實踐來源于實際,更貼近于實際。
本書中某些實例或許正好與讀者正面臨的問題相同或相似,讀者當然可以照葫蘆畫瓢,舉一反三地去解決現(xiàn)實中的問題,然而這并非作者的本意。作者在構(gòu)思這本書的時候,是希望以實例為線索,將思考方法和分析過程傳達給讀者,讓讀者理解某個具體解決方案背后的思考過程、分析過程和推導(dǎo)過程。哪怕讀者經(jīng)過思考得出與作者不同的結(jié)果,甚至證明出作者所給出的解決方案并非一個好方案,這也是作者所期望的。
希望讀者在閱讀本書的過程中,關(guān)注并思考作者在面對一個問題領(lǐng)域時的思考和分析過程,而不要沉迷于書中給出的具體實例。本書的核心是Thinking,UML只是表達的載體。如果讀者能從作者的分析方法中獲得靈感,對面向?qū)ο蟮姆治龊驮O(shè)計有所感觸,開始有恍然大悟的感覺,那么作者將感到較大程度的欣慰。另外,作者的分析方法和推導(dǎo)過程只是作者本人在工作中自己總結(jié)出的經(jīng)驗,不是標準答案,更不是圣經(jīng)。期望讀者能夠從作者的這些經(jīng)驗中經(jīng)過思考,結(jié)合自己的實際,獲得自己的方法。如果真是這樣,作者的這些文字工作就真正勞有所值了。
為了讓讀者方便閱讀,本文中的絕大部分示例圖中的UML元素都是用中文命名的。在實際工作中建議除了業(yè)務(wù)模型部分外,其他模型都好使用英文,這是因為一方面Rose對中文的支持不太好,另一方面畢竟最終代碼實現(xiàn)是英文的,模型與實現(xiàn)都用英文會避免很多歧義。
本書為《大象—Thinking in UML》的第二版,在本版中,加入了我近年來對于面向?qū)ο蟮臄?shù)據(jù)庫設(shè)計方面的一些心得體會,與大家共勉。這部分也是及時版不少讀者非常期待學(xué)習(xí)但卻不容易找到相關(guān)主題的內(nèi)容。
,感謝您購買此書,希望在本書中能夠找到那些正在困擾著您的問題的答案。祝大家閱讀愉快!
關(guān)于本書
提到Thinking這個詞,讀者大多會想到一本經(jīng)典技術(shù)書籍《Thinking in Java》。之所以《Thinking in Java》會成為經(jīng)典,原因在于這本書并不是教授讀者Java語言本身,而是透過Java語言深入討論其背后的思想和方法。授人以魚不如授人以漁。
本書是講述UML的。同樣,本書也不是一本純粹教授UML語法的書籍,而是通過UML這個表象來深入探討面向?qū)ο蟮姆治龇椒ǎ煌瑫r將結(jié)合軟件工程,傳達基于對象的思考方法、分析模式和推導(dǎo)過程以及它們在軟件工程的各個階段如何發(fā)揮作用。本書冠以Thinking in UML這一名稱正是為了切合這個主題。作者不敢奢望本書會成為《Thinking in Java》一樣的經(jīng)典書籍,但是作者在本書中傾盡了自己在面向?qū)ο蠓治龊驮O(shè)計領(lǐng)域中的實踐和經(jīng)驗積累。至少對那些尚未能夠深入此領(lǐng)域,感覺面向?qū)ο笕匀凰剖嵌堑呐笥褌儯緯袑⒁獋鬟_的那些思路將會是一條線索,至少能夠幫助你找到通往面向?qū)ο蠓治龅拇箝T。
本書在編寫過程中,以大量實際項目中會遇到的實例引出問題,講述作者對這一問題的分析思路和解決辦法。再進一步升華,通過對實例的評點,分析思路的歸納和擴展,上升到面向?qū)ο蠓椒ɡ碚摗V鸩揭龑?dǎo)讀者由點到面,由表及里,由對工具的使用上升到思想的高度,從而能夠自如地跳出工具使用的局限,真正從方法和思想的高度來看待和解決現(xiàn)實的問題。本書中的很多內(nèi)容和思想將是你在其他書籍中看不到的。
本書為第二版,依然分為四個部分,由淺入深,從基礎(chǔ)到高級,每個章節(jié)都有具體的實例進行說明,同時作者將耗費更多的篇幅來評點和闡述這些實例。在某些章節(jié)還會就一些關(guān)鍵概念和不容易理解的地方提出問題,讓讀者自行思考。與及時版不同的是,本書加入了近年來本人對于"面向?qū)ο蟮臄?shù)據(jù)庫設(shè)計"方面的一些心得體會,這也是及時版的很多讀者非常期待學(xué)習(xí)的。同時,本書的第二版吸收了部分及時版讀者提出的寶貴建議或杰出觀點,在此表示感謝。
及時部分—你需要了解。在這一部分中,作者將從面向?qū)ο蟮睦щy和需要入手,講述面向?qū)ο蠓治龅囊恍┗靖拍睿纱颂岢鰹槭裁葱枰猆ML這一話題。另一方面,也講述了接下來學(xué)習(xí)建模需要了解的一些基本知識。
第二部分—在學(xué)習(xí)中思考。在這一部分中,作者將從實用的角度對UML的基礎(chǔ)概念重新組織和歸納整理,同時進行一些擴展和討論,引申出針對UML的這些概念在面向?qū)ο蠓椒ㄖ袘?yīng)用方法的思考。這些內(nèi)容將覆蓋絕大部分實際工作的需要。通過這一部分的學(xué)習(xí),讀者將從另一個角度了解UML,知道UML能夠做什么。
第三部分—在實踐中思考。在這一部分中,作者將以一個實例貫穿全篇,以軟件過程為綱,闡述在及時部分中學(xué)習(xí)到的那些UML元素和視圖將如何在一個實際的軟件過程中發(fā)揮作用,如何相互配合將一份原始需求經(jīng)過層層分析和推導(dǎo),最終形成可執(zhí)行的代碼。并且這個過程將是可驗證的和可追溯的。讀者在閱讀本部分的時候,應(yīng)關(guān)注分析過程和推導(dǎo)過程,思考從需求到實現(xiàn)是如何保障可驗證性和可追溯性的。通過這一部分的學(xué)習(xí),讀者將能夠?qū)W會如何使用UML來從頭到尾地實施一個項目。
第四部分—在提煉中思考。在這一部分中,每個章節(jié)均會針對一個在現(xiàn)實中經(jīng)常遇到并且較難掌握的問題進行深入的探討。這些探討將有助于提升面向?qū)ο蟮乃伎寄芰ΓA在前兩部分學(xué)習(xí)到的知識。
本書中用到的UML圖使用Rose繪制,完整的工程文件可以從中國水利水電出版社和萬水書苑免費下載,網(wǎng)址為www.waterpub.com.cn/softdown/和www.wsbookshow.com。
由于作者水平有限,很多內(nèi)容是自己的經(jīng)驗總結(jié),出現(xiàn)錯誤在所難免,歡迎廣大讀者批評指正。讀者在閱讀本書的過程中有任何不清楚的問題和批評建議,可以到作者的博客blog.csdn.net/coffeewoo或coffeewoo.itpub.net留言,或者發(fā)郵件到coffeewoo@gmail.com,作者將盡力給您答疑解惑,您的批評建議也將鞭策作者做得更好。
我是一個業(yè)余軟件開發(fā)者,正當我對面向?qū)ο蟾械矫H粺o措的時候,發(fā)現(xiàn)了這本書。一開始,我還在《UML和模式應(yīng)用》和本書之間猶豫,該選哪一本,但當我僅僅拜讀了本書的序言后,就喜歡上他了。 許多我們本土作者的計算機類書籍,讀起來輕松而有親和力,因為經(jīng)歷相似的緣故吧,會讓你感同身受;而一些國外的譯作,總會有一些隔膜。當當網(wǎng)發(fā)貨快速、包裝整潔,很好。
并沒有想象中的好,前幾章的內(nèi)容過于抽象,對于UML初學(xué)者來說并不太好理解,降低了讀者繼續(xù)閱讀的興趣
作為UML類型書籍,這本書的例子很不錯,深入淺出
書是不錯的,就是快遞是什么小紅帽不咋地,周五直接給我扔到前臺了,沒有任何通知。最氣人的是書被摔壞了,書脊居然出現(xiàn)了裂痕,可見用力多么的大啊!
非常好的一本書,作者是CSDN上的專欄作家,期待通過這本書對于軟件開發(fā)有所提高
從理論與實踐的角度來闡述知識,很不錯的一本書
很經(jīng)典的一本書,是一本認識與思維相關(guān)的。非常推薦。
很不錯的uml書籍,主要對自我專業(yè)設(shè)計建模方面提升,好好學(xué)
和網(wǎng)上介紹的一樣。內(nèi)容充實。國外的書籍比國內(nèi)的要好很多。不過,翻譯的還是有一些不順暢的地方。
程序員不能只會寫代碼,分析設(shè)計建模一樣不能少,UML是必須學(xué)的
不愧為國內(nèi)UML第一書,實踐性非常強,的確是學(xué)習(xí)面向?qū)ο蠼5囊槐酒鏁?正如書中所說,這是一本充滿思想與智慧的書!
從拿到這本書,就可以仔細研讀,該書作者將多年的面向?qū)ο蠓治鲈O(shè)計的經(jīng)驗,融入書中,不愧是大師之作。對于立志與面向?qū)ο蠓治鲈O(shè)計的新手來說,可作為寶典放在桌頭。
這本書寫的很好,將UML講解的非常透徹,贊一個~~
從內(nèi)容上看,本書的確是本面向?qū)ο笤O(shè)計的好書,關(guān)于前期分析、中期設(shè)計及后期測試等都有詳盡的講解。不過從可讀性上看,書中大篇幅的文字性敘述,難以讓人理解到其精髓,使人讀著讀著就昏昏欲睡。
內(nèi)容與實踐相結(jié)合,介紹了UML中的元素,然后通過一個實例講述了完整的軟件開發(fā)周期,并對一些問題進行了深入討論
這本書試圖論UML論道,事實上他成功了,講述UML非常到位,是本難得的好書,希望需要的同志們可以仔細研讀,無比有用的經(jīng)典之作。
針對大型的網(wǎng)站,管理系統(tǒng)的設(shè)計而寫成的一本uml書~
這本書對uml建模,對業(yè)務(wù)和系統(tǒng)分析都做了很符合中國人思考的解讀。順便提一下,我是先下載PDF格式讀完讀過之后才決定買紙質(zhì)版好好研讀的哦。
大象——Thinking in UML(第二版)(UML第一書 緊密結(jié)合項目實踐 揭秘軟件的分析、設(shè)計與建模過程)朋友推薦的,不錯
內(nèi)容很豐富,不是簡單的概念的堆砌。作者憑借自己對UML的深刻理解,將各種概念闡述的很明白。很值得一看!
很全面地講解了面向?qū)ο笏枷胍约癠ML工具的使用
我是在尋找設(shè)計類書籍的時候在當當網(wǎng)的推薦上發(fā)現(xiàn)了這本書,它將軟件設(shè)計思想與設(shè)計工具UML很好的結(jié)合在了一起,講解通俗細致深入,給了正在為軟件結(jié)構(gòu)設(shè)計苦惱的我很大啟發(fā)和幫助。原來對象編程是這個意思,需求應(yīng)該這樣來做。感謝作者!
看網(wǎng)上一般討論UML都推薦這本書,所以也決定買來看看,最近做系統(tǒng)分析與設(shè)計需要用到,另外覺得臺灣邱郁惠的基本也很不錯,那幾本書屬于短小精悍類型的,很實用于應(yīng)急,而這本書準備慢慢看。
中國人寫的最好的UML教材,國內(nèi)最好的UML教材,作者是個大牛。這本書深刻透徹的剖析了用UML進行軟件建模的整個流程,解決讀者心中多年的對UML建模的各種疑惑。。。不買你就虧大了。
在當當買書已經(jīng)很多年了,書都是正品,而且出版社選的真不錯。現(xiàn)在的消費都高了,唯有買幾本書是最廉價的投資,而獲得的回報是幾何級增長的。不管是兒童書籍還是經(jīng)典讀本,全都是不錯的。非常感謝當當網(wǎng),讓我一直擁有一個高貴的途徑。