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