要開發(fā)復(fù)雜的企業(yè)應(yīng)用,先要為業(yè)務(wù)領(lǐng)域建立準(zhǔn)確而深刻的分析模型。本書不是通過簡化的案例講述抽象的理論,而是直接給出來自真實項目的復(fù)雜模型,并以“模式”的方式進行歸納。本書不僅包括這些模式本身,還體現(xiàn)了作者豐富的實踐經(jīng)驗和對建模技術(shù)的深入洞見。本書主要包括兩部分:第一部分介紹來自人員與組織管理、觀察與測量、存貨與會計、計劃、金融衍生品交易等多個業(yè)務(wù)領(lǐng)域的“分析模式”;第二部分則給出一系列“支持模式”,用于將分析模型實現(xiàn)為具體的軟件。
具有一定經(jīng)驗的架構(gòu)師、業(yè)務(wù)分析師以及高級開發(fā)人員通過研讀本書可以很快將書中的模式和思路應(yīng)用于實踐,有效提高開發(fā)水平。軟件開發(fā)的入門者閱讀本書盡管未必能立刻領(lǐng)悟其全部內(nèi)涵,但也足以打開一扇通向新境界的窗戶,為日后的提高奠定基礎(chǔ)。
典型的方法論書籍只關(guān)注工具和技術(shù),面向?qū)ο笊鐓^(qū)期望有一本書能夠突破這一局限,而這本開創(chuàng)性的著作正好滿足了這一需求。在本書中,作者關(guān)注的是面向?qū)ο蠓治龊驮O(shè)計的最終結(jié)果,也就是模型本身。作者在本書中分享了豐富的對象建模經(jīng)驗,以及識別重復(fù)問題并將其轉(zhuǎn)化為可復(fù)用的模型的敏銳洞察力,并給出了一系列來自不同領(lǐng)域(包括交易、測量、會計和組織關(guān)系等)的模式。
概念模式無法孤立地存在,基于這一認(rèn)識,作者還給出了一系列“支持模式”。這些模式探討了如何將概念模型轉(zhuǎn)化為軟件,并使其適合于大型信息系統(tǒng)的架構(gòu)。對每種模式的講解都包含了其背后的設(shè)計思路、應(yīng)該(或不應(yīng)該)使用這些模式的時機以及實現(xiàn)中的訣竅。本書中展示的例子構(gòu)成了一本實用手冊,既包含有用的模型,又涵蓋對復(fù)用技能的深刻洞見,這些都有助于改進分析、建模和實現(xiàn)。
馬丁·福勒(Martin Fowler)世界軟件開發(fā)大師,ThoughtWorks首席科學(xué)家。他是一位作家、演說者、咨詢師和泛軟件開發(fā)領(lǐng)域的意見領(lǐng)袖。他致力于改善企業(yè)級的軟件設(shè)計,對優(yōu)秀的設(shè)計以及支撐優(yōu)秀設(shè)計的工程實踐孜孜以求。他在重構(gòu)、面向?qū)ο蠓治鲈O(shè)計、模式、XP和UML等領(lǐng)域都有卓越貢獻,著有《重構(gòu):改善既有代碼的設(shè)計》《分析模式:可復(fù)用的對象模型》《領(lǐng)域特定語言》《企業(yè)應(yīng)用架構(gòu)模式》等經(jīng)典著作。
第1章 緒論 1
1.1 概念模型 1
1.2 模式的世界 4
1.3 本書中的模式 7
1.4 概念模型與業(yè)務(wù)過程再造 9
1.5 模式和框架 9
1.6 模式的使用 10
參考文獻 12
第一部分 分析模式
第2章 責(zé)任 15
2.1 參與方(Party)模式 16
2.2 組織層級(Organization Hierarchies)模式 17
2.3 組織結(jié)構(gòu)(Organization Structure)模式 18
2.4 責(zé)任(Accountability)模式 20
2.5 責(zé)任知識層(Accountability Knowledge Level)模式 21
2.6 參與方類型泛化(Party Type Generalizations)模式 23
2.7 分層責(zé)任(Hierarchic Accountability)模式 24
2.8 運作范圍(Operating Scopes)模式 26
2.9 崗位(Post)模式 27
參考文獻 28
第3章 觀察和測量 29
3.1 數(shù)量(Quantity)模式 30
3.2 換算率(Conversion Ratio)模式 31
3.3 復(fù)合單位(Compound Units)模式 32
3.4 測量(Measurement)模式 34
3.5 觀察(Observation)模式 35
3.6 子類型化觀察概念(Subtyping Observation Concepts)模式 38
3.7 規(guī)程(Protocol)模式 38
3.8 雙重時間記錄(Dual Time Record)模式 39
3.9 被否決觀察(Rejected Observation)模式 40
3.10 有效觀察、假定和推測(Active Observation, Hypothesis, and Projection)模式 40
3.11 關(guān)聯(lián)觀察(Associated Observation)模式 41
3.12 觀察過程(Process of Observation)模式 42
參考文獻 45
第4章 在企業(yè)財務(wù)領(lǐng)域使用觀察模式 46
4.1 企業(yè)片段(Enterprise Segment)模式 47
4.2 測量規(guī)程(Measurement Protocol)模式 53
4.3 范圍(Range)模式 61
4.4 有范圍現(xiàn)象(Phenomenon with Range)模式 62
4.5 使用結(jié)果框架(Using the Resulting Framework)模式 66
參考文獻 67
第5章 引用對象 68
5.1 名稱(Name)模式 69
5.2 標(biāo)識方案(Identification Scheme)模式 70
5.3 對象合并(Object Merge)模式 72
5.4 對象等價關(guān)系(Object Equivalence)模式 74
參考文獻 75
第6章 存貨和會計 76
6.1 賬戶(Account)模式 78
6.2 會計事項(Transactions)模式 79
6.3 匯總賬戶(Summary Account)模式 81
6.4 備忘賬戶(Memo Account)模式 83
6.5 過賬規(guī)則(Posting Rules)模式 84
6.6 單實例方法(Individual Instance Method)模式 85
6.7 過賬規(guī)則執(zhí)行(Posting Rule Execution)模式 90
6.8 多賬戶過賬規(guī)則(Posting Rules for Many Accounts)模式 94
6.9 選擇分錄(Choosing Entries)模式 96
6.10 會計實務(wù)(Accounting Practice)模式 97
6.11 分錄來源(Sources of an Entry)模式 99
6.12 資產(chǎn)負(fù)債表和損益表(Balance Sheet and Income Statement)模式 99
6.13 對應(yīng)賬戶(Corresponding Account)模式 100
6.14 特化賬戶模型(Specialized Account Model)模式 101
6.15 將分錄記錄到多個賬戶(Booking Entries to Multiple Accounts)模式 103
擴展閱讀 106
參考文獻 107
第7章 使用會計模型 108
7.1 結(jié)構(gòu)模型 109
7.2 實現(xiàn)該結(jié)構(gòu) 111
7.3 新建電話服務(wù) 113
7.4 建立通話 115
7.5 實現(xiàn)基于賬戶的觸發(fā) 116
7.6 劃分日間和夜間通話 117
7.7 按時間收費 119
7.8 計稅 122
7.9 結(jié)論和思考 123
參考文獻 127
第8章 計劃 128
8.1 提議活動和已實施活動(Proposed and Implemented Action)模式 129
8.2 已完成活動和已放棄活動(Completed and Abandoned Actions)模式 130
8.3 暫停(Suspension)模式 131
8.4 計劃(Plan)模式 132
8.5 規(guī)程(Protocol)模式 134
8.6 資源分配(Resource Allocation)模式 137
8.7 結(jié)果函數(shù)和啟動函數(shù)(Outcome and Start Functions)模式 140
參考文獻 142
第9章 交易 143
9.1 合同(Contract)模式 143
9.2 組合(Portfolio)模式 147
9.3 報價(Quote)模式 150
9.4 場景(Scenario)模式 153
參考文獻 160
第10章 衍生合同 161
10.1 遠期合同(Forward Contracts)模式 162
10.2 期權(quán)(Options)模式 163
10.3 產(chǎn)品(Product)模式 168
10.4 子類型狀態(tài)機(Subtype State Machines)模式 172
10.5 并列的應(yīng)用和領(lǐng)域?qū)蛹壗Y(jié)構(gòu)(Parallel Application and Domain Hierarchies)模式 177
參考文獻 182
第11章 交易包 183
11.1 包的多重訪問級別(Multiple Access Levels to a Package)模式 183
11.2 相互可見性(Mutual Visibility)模式 186
11.3 包的子類型化(Subtyping Packages)模式 189
11.4 結(jié)論和思考 190
參考文獻 190
第二部分 支持模式
第12章 信息系統(tǒng)分層架構(gòu) 193
12.1 兩層架構(gòu)(Two-Tier Architecture)模式 194
12.2 三層架構(gòu)(Three-Tier Architecture)模式 195
12.3 展示層和應(yīng)用邏輯層(Presentation and Application Logic)模式 198
12.4 數(shù)據(jù)庫交互(Database Interaction)模式 203
12.5 結(jié)論和思考 206
參考文獻 206
第13章 應(yīng)用門面 208
13.1 一個醫(yī)療衛(wèi)生領(lǐng)域的例子 208
13.2 門面的內(nèi)容 209
13.3 通用方法 213
13.4 操作 213
13.5 類型轉(zhuǎn)換 214
13.6 多個門面 216
參考文獻 217
第14章 類型模型設(shè)計模板模式 218
14.1 實現(xiàn)關(guān)聯(lián)(Implementing Associations)模式 220
14.2 實現(xiàn)泛化(Implementing Generalization)模式 226
14.3 對象創(chuàng)建(Object Creation)模式 232
14.4 對象銷毀(Object Destruction)模式 233
14.5 入口點(Entry Point)模式 234
14.6 實現(xiàn)約束(Implementing Constraints)模式 236
14.7 其他技術(shù)的設(shè)計模板 237
參考文獻 238
第15章 關(guān)聯(lián)模式 239
15.1 關(guān)聯(lián)類型(Associative Type)模式 240
15.2 鍵控映射(Keyed Mapping)模式 242
15.3 歷史映射(Historic Mapping)模式 243
參考文獻 247
第16章 后記 248
參考文獻 249
附錄A 技術(shù)和表示法 250
A.1 類型圖 250
A.2 交互圖 259
A.3 事件圖 260
A.4 狀態(tài)圖 261
A.5 包圖 262
參考文獻 263
附錄B 模式一覽表 265