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