軟件架構從微觀到宏觀
- 出版商: 清華大學
- 出版日期: 2025-10-01
- 售價: $768
- 語言: 簡體中文
- ISBN: 7302700842
- ISBN-13: 9787302700845
-
相關分類:
Microservices 微服務
下單後立即進貨 (約4週~6週)
商品描述
作者簡介
目錄大綱
目 錄
第1部分 軟件架構概述
第1章 軟件架構是什麼 2
1.1 難以定義的軟件架構 2
1.1.1 針對軟件架構定義的不同觀點 2
1.1.2 不同視角的軟件架構 3
1.1.3 不同層次的軟件架構 4
1.1.4 不同開發階段的軟件架構 4
1.1.5 不斷發展變化的軟件架構理論 5
1.2 軟件架構的範圍 5
1.2.1 使用鴨子理論劃定軟件架構範圍 6
1.2.2 軟件架構描述了軟件的結構 6
1.2.3 軟件架構的關鍵技術和支撐技術 8
1.2.4 軟件架構決定了軟件的質量屬性 9
1.3 軟件架構的作用 9
1.3.1 體現軟件開發的早期設計決策 10
1.3.2 用於溝通與交流 10
1.3.3 軟件質量屬性的保證 10
1.3.4 軟件工程管理的抓手 10
1.4 軟件架構和軟件架構模式(風格) 10
1.5 軟件架構和軟件框架 11
1.6 本章小結 12
第2章 軟件結構 13
2.1 軟件的結構 13
2.1.1 開發邊界、運行邊界和部署邊界 13
2.1.2 架構的三種結構 15
2.1.3 軟件結構和軟件邊界的變化 15
2.1.4 軟件的範圍和規模與軟件架構 16
2.2 軟件結構的描述方法 16
2.2.1 架構藍圖 16
2.2.2 “構件”和“連接器” 17
2.2.3 圖形化建模語言 18
2.3 軟件架構模式與軟件架構風格 20
2.4 示例1—Docker的軟件架構分析 20
2.4.1 Docker的作用 20
2.4.2 Docker的頂層架構 21
2.4.3 頂層架構的展開 22
2.4.4 組件架構 23
2.4.5 Docker架構分析總結 26
2.5 示例2——設計時結構與運行時結構的關系 27
2.6 本章小結 30
第3章 關鍵技術、支撐技術與技術路線 31
3.1 關鍵技術 31
3.1.1 什麼是關鍵技術 31
3.1.2 關鍵技術的確定與識別 33
3.1.3 關鍵技術的驗證 33
3.2 支撐技術 33
3.2.1 軟件架構落地需要特定的軟件技術作為支撐 33
3.2.2 軟件技術對軟件架構設計的剛性約束 34
3.2.3 軟件架構設計與軟件技術選擇 34
3.3 技術路線 35
3.3.1 什麼是技術路線 35
3.3.2 確定技術路線時需要考慮的因素 36
3.3.3 技術路線與架構設計落地 36
3.4 關鍵技術和支撐技術的區別和聯系 37
3.5 示例1——Docker的關鍵技術 37
3.5.1 Docker關鍵技術概述 37
3.5.2 關鍵技術在架構中的位置 38
3.5.3 是否可以替換關鍵技術之外的部分 39
3.6 示例2——圖形展示軟件:關鍵技術與支撐技術的區別 39
3.7 本章小結 40
第4章 質量屬性 41
4.1 什麼是軟件的質量屬性 41
4.2 軟件質量屬性的內容 42
4.2.1 可用性 43
4.2.2 性能 43
4.2.3 安全性 44
4.2.4 可部署性 44
4.2.5 易用性 44
4.2.6 可修改性 45
4.2.7 可集成性 46
4.2.8 可測試性 46
4.2.9 能源效率 47
4.3 軟件架構設計與質量屬性 47
4.3.1 從宏觀和微觀兩個層面解決質量屬性問題 47
4.3.2 可修改性是滿足質量屬性需求的重要抓手 48
4.3.3 使用針對質量屬性需求的通用解決方案 49
4.3.4 使用針對特定質量屬性的成熟方案 50
4.3.5 關註與架構沒有直接關聯的質量屬性 52
4.4 本章小結 53
第5章 軟件架構設計的原則 54
5.1 設計原則概述 54
5.2 基本技術原理 54
5.2.1 抽象 55
5.2.2 封裝 56
5.2.3 信息隱藏 57
5.2.4 模塊化 60
5.2.5 職責分離 60
5.2.6 耦合和內聚 60
5.2.7 策略和實現分離 61
5.2.8 接口和實現分離 61
5.2.9 分而治之 62
5.3 SOLID原則 62
5.3.1 單一職責原則 62
5.3.2 開閉原則 64
5.3.3 裏氏替換原則 64
5.3.4 接口隔離原則 66
5.3.5 依賴反轉原則 67
5.4 接口設計原則 67
5.4.1 無狀態原則 67
5.4.2 明確性與一致性原則 68
5.5 組件開發原則 68
5.5.1 復用/發布等同原則 69
5.5.2 共同閉包原則 69
5.5.3 共同復用原則 69
5.6 本章小結 69
第6章 如何完成軟件架構設計 70
6.1 架構設計的前期工作 70
6.1.1 確定軟件的商業目標 70
6.1.2 確定軟件的業務目標 72
6.1.3 劃分軟件的業務範圍 73
6.1.4 確定軟件的開發和使用環境 74
6.1.5 確定軟件開發的組織結構 75
6.2 遵守軟件開發的一般規律 75
6.2.1 遵守設計原理與原則 75
6.2.2 在開發過程中進行疊代 75
6.2.3 根據實際情況使用正向過程與逆向過程 76
6.3 設計可以落地的軟件架構 77
6.3.1 明確概念設計與概要設計的區別 77
6.3.2 避免“空中樓閣”式的架構設計 78
6.3.3 架構設計需要提供微觀設計規範 79
6.4 架構設計中的框架 79
6.4.1 是否使用重量級框架 80
6.4.2 降低業務模型與框架的耦合度 80
6.4.3 減少軟件架構對框架的依賴 81
6.5 軟件架構設計的交付物 82
6.5.1 軟件架構說明 82
6.5.2 關鍵技術解決方案和技術路線說明 83
6.5.3 確保重要質量屬性的解決方案 83
6.5.4 必要的代碼 83
6.6 架構設計中的非技術因素 85
6.6.1 利益攸關者的目標不一致 85
6.6.2 局部利益和整體利益不一致 85
6.6.3 項目的長期目標與短期目標不一致 85
6.6.4 預算與進度陷阱 86
6.7 本章小結 86
第2部分 微觀層面的架構設計
第7章 微觀層面的架構設計概述 88
7.1 軟件架構設計為什麼要深入微觀層面 88
7.1.1 關鍵技術需要在微觀層面實現 88
7.1.2 支撐技術需要在微觀層面實現 89
7.1.3 滿足質量屬性的機制在微觀層面的實現 90
7.1.4 底層架構是頂層架構的實現基礎 90
7.1.5 業務模型存在於微觀層面 90
7.2 與微觀層面架構設計相關的技術 91
7.2.1 編程範式 91
7.2.2 設計模式 91
7.2.3 多任務與異步編程 91
7.2.4 業務模型 92
7.2.5 質量屬性相關機制 92
7.2.6 組件與組件封裝 92
7.2.7 協作模式 92
7.2.8 完成軟件架構的代碼骨架 92
7.3 Log4j漏洞的架構分析 93
7.3.1 Log4j漏洞 93
7.3.2 架構分析 93
7.3.3 需要重視的微觀架構設計 96
7.3.4 從架構設計角度看如何避免Log4j漏洞 96
7.4 本章小結 97
第8章 編程範式 98
8.1 編程範式概述 98
8.2 結構化編程與結構化設計 99
8.2.1 基本概念 99
8.2.2 結構化編程的技術難點——如何實現模塊間解耦 100
8.2.3 結構化編程和結構化設計的不足 102
8.3 面向對象編程與面向對象設計 102
8.3.1 面向對象的特點 103
8.3.2 面向對象的基本概念 103
8.3.3 面向對象設計的使用場景 108
8.3.4 面向對象編程的難點 108
8.4 函數式編程 109
8.4.1 基本概念 109
8.4.2 常見模式 110
8.4.3 函數式編程設計使用場景 114
8.4.4 函數式編程的難點 115
8.5 編程範式與軟件架構 115
8.6 本章小結 116
第9章 設計模式 117
9.1 設計模式概述 117
9.1.1 模式與設計模式 117
9.1.2 與設計模式相關的常見問題 118
9.1.3 設計模式在軟件架構設計中的作用 119
9.2 軟件架構設計中常用的設計模式 119
9.2.1 模板方法模式 119
9.2.2 策略模式 120
9.2.3 適配器模式 121
9.2.4 橋接模式 122
9.2.5 代理模式 124
9.2.6 中介者模式 125
9.2.7 觀察者模式 126
9.2.8 命令模式 126
9.2.9 組合模式 127
9.2.10 外觀模式 128
9.3 依賴註入模式 128
9.3.1 依賴反轉原則 129
9.3.2 控制反轉與依賴註入 130
9.3.3 依賴註入框架 130
9.4 設計模式的函數編程實現方式 133
9.4.1 模板方法 134
9.4.2 策略模式 135
9.4.3 適配器模式 136
9.4.4 橋接模式 136
9.4.5 代理模式 137
9.4.6 命令模式 138
9.4.7 外觀模式 139
9.4.8 依賴註入 140
9.5 示例——適配器模式與橋接模式的組合模式 141
9.5.1 適配器與橋接的區別和聯系 141
9.5.2 適配器與橋接聯合工作 142
9.5.3 示例總結 144
9.6 本章小結 144
第10章 多任務與異步編程 145
10.1 多任務的實現方式 145
10.2 異步編程 146
10.2.1 異步編程的難點 146
10.2.2 采用Promise模式簡化異步編程 147
10.2.3 不同編程語言的異步實現 148
10.3 並行的實現方式 150
10.3.1 Node.js 150
10.3.2 .NET(C#) 151
10.3.3 Python 152
10.3.4 Java 152
10.4 同時使用並發與並行——模擬大仲馬烹飪 154
10.5 工作模式總結 156
10.5.1 語義上的串行模式 156
10.5.2 使用異步編程的並發模式 157
10.5.3 並行模式 157
10.6 進一步研究函數式編程 157
10.6.1 高階函數 157
10.6.2 閉包 158
10.7 多任務、異步編程與軟件架構設計 159
10.8 本章小結 159
第11章 業務模型 160
11.1 業務邏輯的存在形式 160
11.2 數學模型 161
11.2.1 計算模型 161
11.2.2 狀態機 162
11.2.3 決策表 164
11.2.4 數學模型在架構中的位置 165
11.3 數據模型 165
11.3.1 事務腳本 166
11.3.2 表模塊 168
11.3.3 活動記錄 170
11.3.4 數據模型在架構中的位置 170
11.4 領域模型 171
11.4.1 領域模型的定義和特點 171
11.4.2 領域模型的主要概念 171
11.4.3 領域模型與存儲庫模式 173
11.4.4 領域模型在架構中的位置 173
11.5 領域特定語言 173
11.5.1 DSL的定義和特點 174
11.5.2 DSL示例 174
11.5.3 DSL在架構中的位置 177
11.6 業務模型與軟件架構的關系 177
11.6.1 業務模型在架構中的位置 177
11.6.2 關註業務模型對軟件架構的影響 178
11.6.3 防止業務邏輯碎片化 179
11.7 本章小結 180
第12章 質量屬性相關的機制 181
12.1 通用機制 181
12.1.1 日誌 181
12.1.2 監控 182
12.1.3 緩存 183
12.1.4 冗余設計 185
12.2 可修改性 187
12.2.1 接口和實現分離 187
12.2.2 延遲綁定 188
12.3 可用性 189
12.3.1 心跳 189
12.3.2 時間戳 190
12.4 性能 191
12.4.1 限流 191
12.4.2 設置超時控制 192
12.4.3 請求排隊 193
12.4.4 數據庫分表 194
12.5 安全性 195
12.5.1 加密 195
12.5.2 訪問控制 196
12.5.3 防止SQL註入 198
12.5.4 防止跨站腳本攻擊 199
12.6 可測試性 200
12.6.1 沙箱 201
12.6.2 spy 202
12.6.3 stub 203
12.6.4 mock 204
12.7 本章小結 206
第13章 組件與組件封裝 207
13.1 組件簡介 207
13.1.1 組件的發展 208
13.1.2 組件的形式 208
13.1.3 程序包與程序包管理器 208
13.2 組件的開發原則 209
13.2.1 復用/發布等同原則 209
13.2.2 共同閉包原則 210
13.2.3 共同復用原則 210
13.2.4 組件開發原則之間的矛盾與平衡 210
13.3 組件封裝的目的 211
13.4 組件封裝示例 212
13.5 組件封裝與頁面架構 216
13.5.1 組件封裝方式對頁面架構的影響 217
13.5.2 帶數據源的下拉框 220
13.5.3 帶有數據源的表格 221
13.5.4 頁面組裝 222
13.6 進一步討論封裝組件的目的 223
13.7 本章小結 225
第14章 協同工作模式 226
14.1 協同工作模式概述 226
14.2 數據共享模式 227
14.2.1 數據共享模式的工作過程 227
14.2.2 數據共享模式的優勢和使用的註意事項 227
14.2.3 數據共享模式應用示例 228
14.2.4 防止讀寫沖突 228
14.2.5 使用分布式協同服務 229
14.3 消息隊列模式 232
14.3.1 消息隊列模式的工作過程 232
14.3.2 消息隊列模式的優勢和使用時的註意事項 233
14.3.3 消息隊列的通信模式 234
14.3.4 消息隊列示例——Kafka 234
14.4 事件驅動模式 237
14.4.1 事件驅動模式的工作過程 237
14.4.2 事件驅動模式與消息隊列模式的區別和聯系 238
14.4.3 事件驅動的幾種模式 238
14.5 請求應答模式 238
14.5.1 請求應答模式的工作過程 239
14.5.2 請求應答模式的使用場景和註意事項 239
14.5.3 請求應答模式相關的架構風格 240
14.5.4 請求應答模式示例——gRPC 240
14.6 集成方式 242
14.6.1 已發布語言 242
14.6.2 開放主機服務 242
14.6.3 客戶-供應商 242
14.6.4 跟隨者 242
14.7 示例—兩階段提交協議 243
14.7.1 兩階段提交協議 243
14.7.2 示例構建 244
14.7.3 示例討論 248
14.8 本章小結 248
第3部分 軟件架構模式
第15章 軟件架構模式與風格 250
15.1 概述 250
15.1.1 軟件架構模式 251
15.1.2 軟件架構風格 251
15.1.3 軟件架構模式和軟件架構風格的作用 252
15.1.4 軟件架構模式與軟件架構風格的區別和聯系 252
15.1.5 如何使用軟件架構模式與軟件架構風格 252
15.2 單體應用 254
15.2.1 單體的定義 254
15.2.2 單體應用的優勢與不足 254
15.3 單體相關的架構風格 255
15.3.1 管道-過濾器架構風格 255
15.3.2 插件(微內核)架構風格 255
15.3.3 分層架構風格 256
15.4 分布式應用 257
15.4.1 分布式應用的優勢與代價 257
15.4.2 一致性的挑戰 257
15.4.3 一致性協議與算法 258
15.5 分布式應用相關的架構風格 260
15.5.1 基於服務的架構風格 260
15.5.2 微服務架構風格 260
15.5.3 事件驅動架構 261
15.6 本章小結 262
第16章 插件式軟件架構 263
16.1 插件式架構概述 263
16.1.1 插件架構與微內核架構 263
16.1.2 插件式架構與軟件設計原則 264
16.1.3 插件式架構的組成 264
16.2 VSCode的擴展方式 265
16.3 編寫VSCode的簡單插件 266
16.4 在應用軟件中使用插件式架構 271
16.4.1 需求描述 271
16.4.2 確定內核接口 272
16.4.3 組裝插件 273
16.4.4 完整的插件式架構 275
16.5 基於微服務的插件式架構實現 276
16.6 本章小結 277
第17章 管道-過濾器 278
17.1 管道-過濾器概述 278
17.2 框架內置的管道-過濾器 279
17.2.1 Node.js中的管道-過濾器示例 279
17.2.2 .NET中的管道-過濾器示例 279
17.3 管道-過濾器的實現 280
17.3.1 使用面向對象方式創建管道-過濾器 280
17.3.2 使用函數式編程實現管道-過濾器 282
17.4 應用場景示例 286
17.4.1 身份驗證和授權 287
17.4.2 訪問控制 288
17.4.3 異常處理 290
17.5 本章小結 291
第18章 分層架構 292
18.1 分層架構概述 292
18.1.1 拓撲結構 292
18.1.2 傳統三層架構示例 293
18.1.3 使用場景 296
18.2 分層架構的衍生模式 296
18.2.1 客戶機/服務器 296
18.2.2 多層客戶機/服務器結構 297
18.2.3 瀏覽器/服務器模式 297
18.2.4 前後端分離架構 297
18.3 分層架構的不足 298
18.3.1 技術對齊而非業務對齊 298
18.3.2 難以保證業務可測試性 298
18.3.3 汙水池反模式 298
18.4 分層架構的發展——領域驅動設計相關的架構風格 299
18.4.1 領域驅動設計四層架構 299
18.4.2 六邊形架構 299
18.4.3 洋蔥圈架構 301
18.4.4 整潔架構 301
18.5 層次依賴關系倒置 302
18.6 領域驅動設計的四層架構示例 303
18.6.1 環境準備 303
18.6.2 創建領域層 303
18.6.3 創建存儲庫 309
18.6.4 創建應用層 312
18.6.5 使用Swagger模擬表示層 315
18.6.6 創建MongoDB存儲庫 317
18.6.7 層次之間的依賴關系 319
18.7 在微服務架構中使用分層模式 320
18.7.1 微服務頂層架構采用分層模式 320
18.7.2 微服務內部采用分層模式 320
18.8 本章小結 321
第19章 事件驅動架構 322
19.1 概述 322
19.2 事件驅動相關模式 323
19.2.1 事件通知 323
19.2.2 事件攜帶的狀態轉移 323
19.2.3 事件溯源 324
19.3 事件驅動架構的拓撲結構 325
19.3.1 基本結構 325
19.3.2 代理拓撲結構 326
19.3.3 中介拓撲結構 327
19.4 事件驅動架構的要點 327
19.4.1 事件驅動流程的描述 327
19.4.2 事件類型與事件數據結構的定義 328
19.4.3 框架無感設計 328
19.5 事件驅動架構的實現 328
19.6 事件驅動架構示例 331
19.6.1 需求分析——為什麼使用事件驅動 331
19.6.2 內部事件的發布與處理 332
19.6.3 使用消息中間件對外發布事件 339
19.7 本章小結 341
第20章 微服務架構 342
20.1 概述 342
20.1.1 微服務的來歷 342
20.1.2 對微服務的理解 343
20.1.3 微服務相關的技術 344
20.2 何時使用以及如何使用微服務 345
20.2.1 微服務架構的優勢與代價 345
20.2.2 何時引入微服務架構 346
20.2.3 如何使用微服務架構 346
20.3 微服務架構設計的內容 347
20.3.1 確定服務 347
20.3.2 確定服務集成方式 348
20.3.3 服務內部架構設計 348
20.3.4 微服務運行環境設計 348
20.4 微服務內部架構的代碼骨架示例 348
20.4.1 需求 349
20.4.2 創建骨架中的文件 349
20.4.3 應用程序主幹app.js 350
20.4.4 Swagger支持 351
20.4.5 RESTful API接口 352
20.4.6 業務邏輯 353
20.4.7 單元測試 354
20.4.8 Docker支持 354
20.5 微服務架構示例 355
20.5.1 搭建項目結構 355
20.5.2 實現服務邏輯 356
20.5.3 使用docker compose編排微服務 361
20.5.4 Docker網絡架構 362
20.6 本章小結 363
第21章 表示層與軟件架構 364
21.1 表示層概述 364
21.1.1 表示層設計的特殊性 364
21.1.2 表示層技術的發展 365
21.1.3 表示層需要解決的問題 366
21.2 表示層技術 366
21.2.1 單頁面應用 366
21.2.2 響應式設計 367
21.2.3 Web組件 367
21.2.4 富互聯網應用 367
21.2.5 MV*模式 367
21.3 服務端渲染相關模式 368
21.3.1 MVC模式 368
21.3.2 模板視圖 370
21.3.3 領域負載對象 371
21.4 前後端分離架構的表示層 371
21.4.1 前端直接訪問後端服務 372
21.4.2 視圖模型 373
21.4.3 領域層業務規則映射 374
21.5 單頁面前端分層架構示例 374
21.6 滿足模塊化開發的單頁面架構 377
21.6.1 前端頁面的構成 378
21.6.2 按業務模塊開發前端 379
21.7 本章小結 380
第4部分 軟件架構實踐
第22章 使用測試驅動開發輔助軟件架構設計 382
22.1 可測試性與架構的關系 382
22.2 測試驅動開發 383
22.3 使用測試驅動開發完成架構原型設計 383
22.3.1 從零開始 384
22.3.2 重構 388
22.3.3 組件的創建 391
22.3.4 工廠創建與集成測試 395
22.4 本章小結 398
第23章 微服務劃分 399
23.1 微服務劃分原則與難點 399
23.2 “設備運行績效指標系統”需求 400
23.2.1 設備運行績效指標的作用 400
23.2.2 設備運行績效指標的計算算法 401
23.2.3 指標計算變量的數據來源 401
23.2.4 功能需求 401
23.2.5 質量屬性需求 402
23.3 面向技術的服務劃分和面向業務的服務劃分 402
23.4 以計算為核心的服務劃分 403
23.4.1 確定服務 403
23.4.2 確定服務之間的集成方式 404
23.4.3 服務內部的架構設計 405
23.4.4 架構落地涉及的技術 406
23.5 以指標為核心的服務劃分 408
23.5.1 確定服務 409
23.5.2 服務內部的架構設計 409
23.6 兩種服務類型結合使用 410
23.7 本章小結 410
第24章 領域驅動設計中的軟件架構設計 411
24.1 領域驅動設計簡介 411
24.2 “社交小組”需求分析 412
24.2.1 需求說明 412
24.2.2 識別子域 412
24.2.3 確定限界上下文 414
24.3 架構風格的比較與選擇 414
24.3.1 單體架構 414
24.3.2 前後分離的應用架構 415
24.3.3 分布式應用架構 417
24.3.4 微服務架構 419
24.3.5 應用系統架構的選擇 420
24.4 架構設計演變過程 420
24.5 限界上下文內部的架構設計 423
24.6 支撐技術解決方案 426
24.6.1 集成認證服務 426
24.6.2 使用測試驅動開發創建領域模型 426
24.6.3 存儲庫實現 426
24.6.4 領域事件發布與處理 427
24.7 本章小結 427
第25章 選擇合適的架構模式 428
25.1 “後臺任務管理”的業務需求 428
25.2 架構選擇 429
25.2.1 概念模型 429
25.2.2 使用插件式架構的單體應用 430
25.2.3 基於消息中間件的分布式架構 431
25.3 架構詳細設計 432
25.3.1 對外接口 432
25.3.2 任務執行時序方案 433
25.3.3 任務的創建與存儲 434
25.3.4 任務執行 434
25.3.5 架構概覽 435
25.4 架構原型實現 436
25.4.1 概述 436
25.4.2 采用node-config讀取配置文件 437
25.4.3 采用Express創建API接口 437
25.4.4 使用node-schedule實現任務的時序類型 438
25.4.5 使用RabbitMQ作為消息中間件 438
25.4.6 使用MongoDB保存數據 439
25.4.7 任務執行部分示例 440
25.4.8 管理任務的用戶界面 441
25.5 架構分析 441
25.5.1 單體架構和分布式架構 441
25.5.2 分布式應用的部署方式 442
25.5.3 設計模式的靈活使用 442
25.6 本章小結 442
第26章 嵌套架構示例—多租戶架構模式 443
26.1 概述 443
26.1.1 多租戶的概念 444
26.1.2 多租戶模式的特點 444
26.1.3 多租戶模式的使用場景 445
26.2 多租戶總體架構 445
26.3 多租戶模式的關鍵技術 446
26.3.1 多租戶的資源共享方式 446
26.3.2 共享應用軟件和數據的多租戶系統 447
26.3.3 應用軟件與數據物理隔離的多租戶系統 448
26.4 共享應用軟件和數據的多租戶示例 450
26.5 應用軟件與數據物理隔離的多租戶示例 451
26.6 本章小結 453
第27章 遺留系統改造中的架構演化 454
27.1 遺留系統改造與新系統建設的區別 454
27.1.1 業務需求 454
27.1.2 歷史數據 455
27.1.3 基礎設施 455
27.2 遺留系統改造策略—重建或重構 455
27.3 單體應用到分布式應用的重構過程 456
27.4 單體應用到分布式應用的重建過程 459
27.5 本章小結 463
第28章 企業級應用架構簡介 464
28.1 企業級應用架構參考模型 464
28.2 標準和規範體系 465
28.3 信息門戶 466
28.4 運行管理體系 466
28.5 業務系統 467
28.6 技術支撐平臺 467
28.7 安全保障體系 468
28.8 企業應用軟件的架構設計 469
28.8.1 充分了解標準和規範體系 469
28.8.2 充分利用企業架構提供的各種資源 470
28.8.3 盡量使用企業架構推薦的軟件技術 470
28.8.4 充分了解與項目相關的其他應用軟件 470
28.9 本章小結 470
後記 471
附錄一 參考文獻 473
附錄二 開發環境與工具軟件 475
附錄三 詞匯說明 478