軟件設計與體系結構

王華,岑躍峰

  • 出版商: 電子工業
  • 出版日期: 2025-12-01
  • 售價: $408
  • 語言: 簡體中文
  • 頁數: 316
  • ISBN: 712152029X
  • ISBN-13: 9787121520297
  • 相關分類: Design Pattern
  • 下單後立即進貨 (約4週~6週)

相關主題

商品描述

本書全面講解了軟件設計與體系結構的基本概念、核心思想、基本原則、基本過程和方法,以及主要工具和技術,主要內容包括:軟件工程與軟件設計、軟件設計基礎、軟件復用與基於架構的軟件設計、設計可復用的類、設計原則、設計模式、成為架構師、軟件架構、五視圖架構設計法、領域建模、微服務架構、大數據架構。本書在闡述軟件設計相關知識時,輔以源程序代碼作為示例進行講解,聚焦軟件開發,旨在培養學生的軟件設計能力和軟件架構設計能力。本書源程序代碼貼合生活和工作實際,易於理解。本書可作為大學本科的軟件工程、計算機科學與技術等專業的“軟件設計與體系結構”“軟件體系結構”“軟件架構”等課程的教材,也可作為程序員、架構師的技術參考書。

目錄大綱

第1章 軟件工程與軟件設計 1
1.1 軟件工程的目標 2
1.2 軟件工程模型 4
1.3 軟件開發的基本策略 5
1.3.1 復用 5
1.3.2 分而治之 6
1.3.3 優化和折衷 7
1.4 軟件設計 7
1.4.1 什麼是軟件設計 7
1.4.2 軟件設計的切入點 9
1.4.3 軟件設計如何落地 10
1.4.4 軟件設計的基本流程 10
1.5 軟件架構 12
1.5.1 軟件架構出現的歷史背景 12
1.5.2 軟件架構出現的原因 14
1.5.3 軟件架構的重要性 15
1.6 習題 15
第2章 軟件設計基礎 17
2.1 軟件設計的基本概念 17
2.1.1 軟件設計的關註點 18
2.1.2 軟件設計案例 18
2.1.3 軟件設計在軟件工程中所處的位置 19
2.2 軟件設計的範疇與內容 21
2.2.1 軟件架構設計 22
2.2.2 接口設計 22
2.2.3 數據設計 24
2.2.4 過程設計 25
2.3 軟件設計的質量評估指標 25
2.3.1 程序代碼復用 25
2.3.2 可擴展性 26
2.4 軟件架構的概念與範疇 26
2.4.1 軟件設計的過程 26
2.4.2 常見架構 27
2.4.3 軟件架構的定義 27
2.4.4 軟件架構的目標與作用 28
2.4.5 軟件架構設計中典型的軟件質量屬性 28
2.5 高可用設計 34
2.5.1 解剖高可用設計 34
2.5.2 高可用,不只是一個“設計問題” 35
2.5.3 高可用設計,意味著“為失敗而設計” 36
2.6 習題 36
第3章 軟件復用與基於架構的軟件設計 37
3.1 軟件復用 37
3.1.1 軟件復用的不同形式 39
3.1.2 重要誤區:軟件復用可以提高效率 39
3.2 構件技術 41
3.2.1 構件標準規範 42
3.2.2 軟件應用系統簇與構件系統 43
3.2.3 基於軟件復用的開發組織結構 43
3.3 基於架構的軟件設計 44
3.3.1 基於架構的軟件設計方法與軟件開發生命周期 44
3.3.2 基於架構的軟件設計模型 46
3.4 “不要臉”的業務構件 49
3.4.1 “不要臉”的建築 49
3.4.2 “不要臉”的業務構件接口 50
3.4.3 “不要臉”的業務構件對象 52
3.5 習題 53
第4章 設計可復用的類 54
4.1 基本的原則 55
4.1.1 協變原則 55
4.1.2 逆變原則 56
4.1.3 泛型中的裏氏代換原則 56
4.1.4 通配符原則 57
4.1.5 PECS 59
4.2 委  托 60
4.2.1 委托與繼承 60
4.2.2 合成復用原則 60
4.3 可復用模塊的演化之路 62
4.3.1 運用重構思維,按需創建可復用模塊 62
4.3.2 可復用模塊的演化 63
4.4 提高程序代碼可復用性的方法 66
4.5 習題 66
第5章 設計原則 68
5.1 SOLID設計原則 68
5.1.1 單一職責原則 69
5.1.2 開閉原則 72
5.1.3 裏氏代換原則 74
5.1.4 迪米特法則 79
5.1.5 接口隔離原則 82
5.1.6 依賴反轉原則 86
5.2 其他設計原則 89
5.2.1 KISS原則 90
5.2.2 YAGNI原則 93
5.2.3 DRY原則 93
5.3 習題 96
第6章 設計模式 99
6.1 設計模式之創建型 99
6.1.1 單例模式 99
6.1.2 工廠模式 103
6.1.3 原型模式 107
6.2 設計模式之結構型 111
6.2.1 代理模式 111
6.2.2 橋接模式 117
6.2.3 裝飾器模式 120
6.2.4 適配器模式 122
6.2.5 門面模式 124
6.2.6 組合模式 126
6.2.7 享元模式 129
6.3 設計模式之行為型 132
6.3.1 觀察者模式 132
6.3.2 模板方法模式 135
6.3.3 策略模式 138
6.3.4 職責鏈模式 140
6.3.5 疊代器模式 143
6.3.6 狀態模式 145
6.3.7 訪問者模式 148
6.3.8 備忘錄模式 151
6.3.9 命令模式 154
6.3.10 解釋器模式 157
6.3.11 中介者模式 159
6.4 習題 163
第7章 成為架構師 164
7.1 架構師的職責 164
7.1.1 從產品和需求視角看架構師 164
7.1.2 從技術視角看架構師 165
7.2 架構師的分類 167
7.3 架構師的主要工作 168
7.4 架構師的必備技能 168
7.4.1 設計能力 169
7.4.2 決策能力 169
7.4.3 簡化能力 170
7.4.4 編程能力 170
7.4.5 記錄能力 170
7.4.6 溝通能力 172
7.4.7 評估能力 172
7.4.8 權衡能力 172
7.5 向架構師轉型的方法 173
7.5.1 適合向架構師發展的特質 173
7.5.2 “三步走”轉型策略 173
7.5.3 架構師必備技術技能 174
7.5.4 打造屬於自己的技術體系 175
7.6 習  題 175
第8章 軟件架構 176
8.1 認識軟件架構 176
8.1.1 軟件架構的理解 176
8.1.2 軟件架構的分類 177
8.2 軟件架構風格 177
8.2.1 分層架構 178
8.2.2 事件驅動架構 180
8.2.3 微(內)核架構 183
8.2.4 微服務架構 185
8.2.5 雲架構 187
8.3 SOA與微服務架構 190
8.3.1 從SOA到微服務架構 191
8.3.2 ESB和API網關 192
8.3.3 全微服務化應用構建場景 194
8.3.4 SOA思想沒有過時 195
8.4 習題 197
第9章 五視圖架構設計法 198
9.1 邏輯架構 198
9.1.1 自底向上或者自頂向下的邏輯架構 199
9.1.2 對業務概念模型進行歸納 200
9.1.3 邏輯架構的生成 201
9.2 數據架構 203
9.2.1 設計內容及原則 204
9.2.2 設計數據架構的要素 205
9.2.3 兩種數據架構設計模式 206
9.2.4 數據中臺 209
9.3 開發架構 213
9.3.1 開發架構是必需的 214
9.3.2 設計原則 214
9.3.3 設計步驟 215
9.4 運行架構 216
9.4.1 設計要點 216
9.4.2 運行架構的演化 217
9.5 物理架構 222
9.5.1 物理架構的設計思維 223
9.5.2 物理架構的演化 223
9.6 架構重構 230
9.6.1 架構重構的12條規則 230
9.6.2 系統重構技術 233
9.6.3 架構重構技術 234
9.7 習題 237
第10章 領域建模 238
10.1 使用DDD的意義 238
10.1.1 實現業務的3種常見方式 239
10.1.2 基於業務的分包 240
10.1.3 事務腳本和領域模型 241
10.1.4 不以數據模型為起點 244
10.2 DDD中的關鍵概念 244
10.2.1 領域模型的門面—應用服務 244
10.2.2 業務的載體—聚合根 246
10.2.3 實體與值對象 248
10.2.4 聚合根的家—資源庫 249
10.2.5 必要的妥協—領域服務 250
10.2.6 Command對象 251
10.2.7 DDD中的讀操作 252
10.3 CQRS 254
10.3.1 CQRS的優點 256
10.3.2 CQRS實現模式 257
10.3.3 選型建議 263
10.4 習題 264
第11章 微服務架構 265
11.1 微服務架構與微服務 265
11.1.1 微服務架構的優點 267
11.1.2 微服務架構帶來的挑戰 267
11.1.3 適用微服務架構的軟件系統 268
11.2 拆解服務 268
11.3 微服務的關鍵技術 271
11.3.1 服務治理 271
11.3.2 服務網關 273
11.3.3 服務容錯 274
11.4 微服務的設計模式 276
11.4.1 獨享數據庫 276
11.4.2 事件源 277
11.4.3 Saga 278
11.4.4 BFF 279
11.4.5 Strangler模式 280
11.5 微服務項目實戰 281
11.6 習題 282
第12章 大數據架構 283
12.1 大數據技術體系 283
12.2 企業級大數據技術實現方案 285
12.2.1 Google大數據技術棧 285
12.2.2 Hadoop與Spark開源大數據技術棧 286
12.3 大數據采集與預處理 288
12.3.1 數據采集工具 289
12.3.2 數據預處理 293
12.4 大數據治理 297
12.5 大數據展示 298
12.5.1 大數據多維分析平臺 298
12.5.2 HBase 301
12.6 習題 303