嵌入式軟件架構設計:方法與實踐
白瑩婷
- 出版商: 機械工業
- 出版日期: 2026-09-01
- 售價: $594
- 語言: 簡體中文
- 頁數: 246
- ISBN: 7111816625
- ISBN-13: 9787111816621
-
相關分類:
Design Pattern 、Object-oriented
下單後立即進貨 (約4週~6週)
相關主題
商品描述
這是一本為嵌入式軟件工程師量身打造的架構設計指南,手把手帶你從“實現功能”走向“設計系統”,建立駕馭覆雜嵌入式軟件的架構思維與方法體系,讓你在智能汽車、機器人、芯片自研的浪潮中具備不可替代的系統級設計能力。 書中不僅有系統的架構設計方法論,更有超多拿來就能用的實戰工具。從架構師的思維建立到軟硬件整合設計,從多視圖建模到模塊化與設計模式,從產品族架構到底層模塊抽象,全方位解鎖嵌入式軟件架構設計的完整能力棧 讀完這本書,你將收獲以下8項核心能力提升: (1)架構思維重塑:理解“架構是面向長期業務發展的重要決策”,完成從開發思維到架構思維的轉變-不再只盯著眼前的功能實現,而是站在系統演進的高度做決策。 (2)軟硬件整合設計能力:掌握從系統級邏輯分解到軟硬件邊界劃分的完整方法,破解“先硬件後軟件”的傳統困局,讓硬件變更不再是軟件開發的噩夢。 (3)多視圖建模能力:熟練運用邏輯視圖、開發視圖、過程視圖、部署視圖分離關註點,學會用多維度描述駕馭覆雜系統,不再“一張架構圖走天下” (4)架構設計全流程能力:掌握從需求分析(識別架構重要性需求)、架構設計到架構評估(一致性與完整性檢驗)的完整閉環,讓架構設計有章法、可驗證。 (5)模塊化與接口設計能力:學會功能分解與分層設計、抽象接口定義、依賴方向確定的系統方法,從根本上解決“高耦合、低內聚”的代碼頑疾。 (6)產品族架構設計能力:掌握共性與差異識別的三個層次、產品族架構的工作量評估方法與常見陷阱,從容應對多型號、多版本產品的代碼覆用與維護挑戰。 (7)底層模塊抽象能力:通過I2C驅動、持久化存儲、音視頻編解碼等真實案例,理解“底層視角”與“高層視角”的差異,知道何時該統一抽象、何時該差異化對待。 (8)從面向過程到面向對象演化的能力:理清面向過程與面向對象的邏輯關系,掌握在嵌入式覆雜代碼中基於原有過程與數據進行封裝、平滑演化至面向對象的實戰方法
作者簡介
白瑩婷,資深嵌入式軟件架構專家,擁有超過18年嵌入式軟件研發經驗。曾在華為公司工作16年,擔任處理器技術部技術專家,在自研ARN芯片SDK、智能終端、服務器管理軟件等底層軟件研發方面,擁有豐富的實戰經驗。擅長底層軟件架構設計與存量系統重構,長期致力於通過架構設計和重構提升軟件開發效率和質量、降低維護成本。在軟硬件整合、模塊化設計、代碼歸一化方面,沈澱了成熟的方法論。
目錄大綱
前 言
基 礎 篇
第1章 什麼是軟件架構設計 3
1.1 軟件架構的定義 3
1.2 軟件開發中重要的事情 5
1.2.1 支撐業務的發展 5
1.2.2 面向長期的設計 5
1.3 再看軟件架構的定義 6
1.4 架構設計工作的邊界和程度 7
1.4.1 架構設計與普通開發設計的
區別 7
1.4.2 架構設計做得越詳細越好嗎 7
1.5 從普通開發人員到架構師的思想
轉變 8
1.5.1 養成業務導向型思維方式 8
1.5.2 看清理想與現實的落差 10
第2章 嵌入式軟件需要架構
設計嗎 12
2.1 什麼是嵌入式軟件 12
2.2 現狀:很多嵌入式軟件沒有架構
設計 13
2.3 嵌入式軟件的發展趨勢和挑戰 14
2.4 嵌入式軟件工程師的應對之道 16
方 法 篇
第3章 本書的方法論是如何
形成的 19
3.1 通用軟件架構設計的方法論 19
3.1.1 IEEE 1471—2000《軟件密集型
系統架構描述的推薦實踐》 19
3.1.2 “4+1”視圖模型 21
3.1.3 屬性驅動設計 22
3.1.4 《架構整潔之道》之設計原則
和組件構建原則 23
3.2 本書的方法論介紹 24
第4章 軟硬件整合設計 27
4.1 從長期視角看軟硬件變更:
誰更容易被修改 27
4.2 傳統設計方法 28
4.2.1 傳統設計方法簡介 28
4.2.2 傳統設計方法的適用性 29
4.2.3 傳統設計方法面臨的挑戰 30
4.3 軟硬件整合設計方法 32
4.3.1 軟硬件整合設計方法的目標
和關鍵措施 32
4.3.2 軟硬件整合設計方法的過程 32
4.3.3 軟硬件整合設計方法與傳統
設計方法的比較匯總 36
4.3.4 關於軟硬件整合設計方法的
常見疑問 37
第5章 多視圖方法 38
5.1 多視圖方法簡介 38
5.1.1 多視圖方法描述架構的核心
動因 39
5.1.2 多視圖方法的必要性和作用 40
5.2 常用的四個視圖 41
5.2.1 邏輯視圖 42
5.2.2 開發視圖 45
5.2.3 過程視圖 47
5.2.4 部署視圖 49
5.2.5 各視圖間的關系 52
5.2.6 關於視圖的表示法 53
5.3 視圖的選擇與設計過程 53
5.3.1 邏輯、開發、過程、部署
四個視圖並非架構描述的
唯一選擇 53
5.3.2 視圖的選擇與設計 54
第6章 架構設計過程 56
6.1 架構設計過程概述 56
6.1.1 過程模型 56
6.1.2 架構設計過程和版本開發
過程的關系 58
6.2 需求分析 59
6.2.1 架構設計過程和版本開發過程
中的需求分析有什麼區別 59
6.2.2 哪些需求屬於架構重要性
需求 60
6.2.3 長期業務目標對架構重要性
需求的影響 61
6.2.4 識別架構重要性需求 63
6.2.5 正確理解需求 67
6.3 架構設計 68
6.4 架構評估 71
6.4.1 設計一致性評估 72
6.4.2 完整性評估 73
第7章 面向過程和面向對象 74
7.1 面向過程和面向對象的關系 74
7.1.1 什麼是面向過程,什麼是
面向對象 75
7.1.2 面向過程和面向對象的區別、
聯系及適用場景 75
7.2 面向過程和面向對象的分解 77
7.2.1 面向對象的分解 77
7.2.2 面向過程的分解 80
7.2.3 從面向過程到面向對象 83
7.3 案例:將處理過程和數據封裝為
對象 85
第8章 模塊化 94
8.1 模塊化概述 94
8.1.1 模塊化、組件化、插件化的
關系 95
8.1.2 模塊化的本質:關註點分離 95
8.1.3 模塊化的步驟 97
8.2 如何進行模塊劃分 98
8.2.1 功能分解 98
8.2.2 分層 98
8.2.3 綜合功能分解和分層的
結果 102
8.2.4 進一步審視模塊劃分的
情況 103
8.3 如何定義抽象接口 105
8.3.1 引子:OSAL的案例 105
8.3.2 什麼是抽象 107
8.3.3 抽象接口與依賴反轉 107
8.4 如何確定依賴方向 111
8.4.1 傳統的上層依賴下層 111
8.4.2 向穩定的模塊依賴 111
8.4.3 向關鍵業務模塊依賴 112
8.4.4 結合多視圖方法判斷關鍵
業務模塊 113
8.4.5 幾種依賴方向的方案選擇 114
8.5 典型案例和問題 115
8.5.1 案例:依賴方向與接口
穩定性 115
8.5.2 回顧:OSAL的案例 119
8.5.3 一個可實現性的問題 120
8.5.4 “萬能”的中間層 121
8.5.5 不同視角下的業務邏輯模塊 122
8.5.6 案例:從用戶配置模塊依賴
Flash驅動模塊到Flash驅動
模塊依賴用戶配置模塊 124
第9章 如何應用設計模式 130
9.1 設計模式概述 131
9.1.1 什麼是設計模式 131
9.1.2 針對設計模式的常見疑問 131
9.2 設計模式在架構設計中的作用 132
9.3 應用設計模式時的常見問題及其
解決方法 133
9.3.1 問題及其解決方法概述 133
9.3.2 靈活應用設計模式:以在宏
內核中應用微內核模式為例 134
9.3.3 結合實際案例理解設計模式:
以簡單工廠模式和工廠方法
模式為例 136
第10章 以案例串聯:本篇所述
方法的整合應用 143
10.1 案例背景描述 143
10.2 需求分析 144
10.3 架構設計 145
10.3.1 系統級邏輯視圖 145
10.3.2 系統級開發視圖和部署
視圖 148
10.3.3 相框端軟件子系統的需求 152
10.3.4 相框端軟件子系統的邏輯
視圖 153
10.3.5 相框端軟件子系統的過程
視圖 153
10.3.6 相框端軟件子系統的開發
視圖 155
實 踐 篇
第11章 產品族軟件架構設計 159
11.1 產品族軟件架構概述 159
11.1.1 什麼是產品族軟件架構 159
11.1.2 產品族軟件架構設計的
目標 162
11.2 識別、處理共性和差異 162
11.2.1 根據大粒度需求識別、處理
共性和差異 163
11.2.2 根據功能邏輯識別、處理
共性和差異 164
11.2.3 識別、處理實現細節的共性
和差異 166
11.2.4 針對差異的代碼實現
方案 167
11.3 警惕:代碼表面相似 172
11.4 警惕:耦合 173
11.5 采用產品族軟件架構後的
工作量分析 175
11.5.1 想象中的場景 175
11.5.2 存在的問題 176
11.5.3 幾種常見的方案 177
第12章 底層模塊軟件架構設計 184
12.1 底層模塊軟件架構概述 184
12.2 底層模塊的分層設計 185
12.2.1 I2C驅動的案例:嘗試
進一步分離底層模塊的
關註點 185
12.2.2 擴展:如何處理更底層的
模塊 186
12.3 不同視角下的底層模塊架構
設計 188
12.3.1 概念:底層視角與高層視角、
系統邊界與設計邊界 188
12.3.2 底層視角下的設計 190
12.3.3 高層視角下的設計 191
12.3.4 如何選擇:底層視角與高層
視角 193
第13章 硬件差異管理 194
13.1 陷阱:用抽象層屏蔽硬件
差異 194
13.2 硬件差異的合理性 196
13.2.1 識別方法和管理思路 196
13.2.2 arch/arm目錄下代碼的
案例 197
13.3 不合理硬件差異及其管理的
案例 198
13.3.1 提前參與,提前制定
規則 198
13.3.2 軟硬件的版本演進計劃
相互配合 199
13.3.3 結合人員和團隊的實際
情況 203
第14章 設計案例:從單一產品到
產品族的設計 204
14.1 背景描述 204
14.2 需求分析 205
14.3 架構設計 206
14.3.1 系統級邏輯視圖 206
14.3.2 系統級開發視圖和部署
視圖 212
14.3.3 相框端軟件子系統的
需求 216
14.3.4 相框端軟件子系統的邏輯
視圖 217
14.3.5 相框端軟件子系統的過程
視圖 220
14.3.6 相框端軟件子系統的開發
視圖 221
第15章 設計案例:產品族底層
模塊的設計 223
15.1 背景描述 223
15.2 持久化存儲相關需求的分析與
設計 225
15.2.1 需求分析 225
15.2.2 系統級邏輯視圖和開發
視圖 226
15.2.3 軟件子系統的邏輯視圖
和開發視圖 227
15.3 音視頻編解碼相關需求的分析
與設計 230
附 錄
附錄A 本書使用的軟硬件建模
語言 234
附錄B C語言面向對象編程 240
