課程簡介
1、代碼分層設(shè)計
2、可移植性、可維護性
3、開發(fā)視圖
4、邏輯視圖
5、自動化測試
6、Cruise Control
7、gTest
目標收益
讓程序員開發(fā)出來的嵌入式軟件,具有高移植性、高復用性和可測試性。
讓嵌入式軟件能進行測試自動化,減少低效率的重復回歸測試。
讓設(shè)計人員寫出能指導開發(fā)人員工作的文檔,而不是寫出僅僅能歸檔的文檔。
培訓對象
培訓面向人群:開發(fā)嵌入式產(chǎn)品的軟件架構(gòu)師、軟件設(shè)計師、程序員、測試人員。
該培訓對于開發(fā)以下類型嵌入式產(chǎn)品特別有幫助:
1、 業(yè)務邏輯特別復雜
2、 集成功能繁多
3、 測試環(huán)境/條件難以創(chuàng)造
課程大綱
第1部分內(nèi)容 嵌入式架構(gòu)設(shè)計理論篇 第1章 架構(gòu)設(shè)計步驟 |
1、 架構(gòu)設(shè)計步驟 (1) 考慮驅(qū)動因素 (2) 設(shè)計基礎(chǔ)架構(gòu) (3) 輸出設(shè)計結(jié)果 (4) 跟隨項目持續(xù)優(yōu)化 (5) 輸出優(yōu)化代碼 2、 架構(gòu)設(shè)計的驅(qū)動因素 (1) 軟件質(zhì)量模型 (2) 質(zhì)量屬性間的互斥 (3) 性能與其他屬性的取舍 |
第2章 模塊化程序設(shè)計思想 |
1、 模塊化設(shè)計的目的 2、 模塊化程序設(shè)計方法 (1) 什么是模塊? (2) 什么是好模塊?--“最少知道原則” (3) 模塊接口設(shè)計 3、 “C語言”模塊怎么組織包結(jié)構(gòu) |
第3章 組包原則與單一職責原則 |
該單元講解如何劃分模塊,介紹5大組包原則以及單一職責設(shè)計原則。 1、 組包的設(shè)計原則 2、 低耦合組包原則 (1) 無環(huán)依賴原則 (2) 穩(wěn)定依賴原則 3、 高內(nèi)聚組包原則 (1) 重用發(fā)布原則 (2) 共同重用原則 (3) 共同封閉原則 4、 單一職責設(shè)計原則 (1) 單一職責的思考 (2) 單一抽象層次原則 (3) 單一職責原則 |
第4章 基礎(chǔ)架構(gòu)級模塊劃分--架構(gòu)風格 |
1、 哲學層次的架構(gòu)設(shè)計 2、 架構(gòu)風格定義與分類 3、 常用風格的模塊劃分 (1) “層次結(jié)構(gòu)”--平臺設(shè)計思想 (2) “面向?qū)ο蟆保瑢幽K劃分 (3) “批處理序列”和“管道-過濾器” (4) “黑板系統(tǒng)” (5) “數(shù)據(jù)庫系統(tǒng)” (6) “進程通信” (7) “事件驅(qū)動” |
第5章 模塊殺手--代碼壞味道 |
1、 模塊第1大殺手--全局變量 (1) 全局變量的缺點 (2) 減少全局變量使用 (3) 限制全局變量范圍 2、 模塊第2大殺手--循環(huán)依賴 (1) 次晨綜合癥 (2) 分層設(shè)計思想 (3) 反轉(zhuǎn)逆向依賴--回調(diào)函數(shù) 3、 其他模塊殺手--代碼壞味道 (1) 散彈式修改 (2) 發(fā)散式變化(違背了共同封閉原則) (3) 不恰當?shù)谋┞叮ㄟ`背了最少知道原則) (4) 狎昵關(guān)系(有可能違背了無環(huán)依賴原則) (5) 依戀情節(jié) (6) 被拒絕的饋贈(違背了共同重用原則) |
第6章 架構(gòu)設(shè)計文檔 |
1、 架構(gòu)視圖 (1) 開發(fā)視圖 (2) 邏輯視圖 (3) 4+1視圖 (4) 4+1視圖在架構(gòu)文檔中的取舍 2、 架構(gòu)設(shè)計文檔 (1) 架構(gòu)文檔的價值 (2) 架構(gòu)文檔的撰寫原則 3、 平臺接口說明文檔 (1) 平臺架構(gòu)思想 (2) 平臺接口約束文檔 |
第2部分內(nèi)容 嵌入式架構(gòu)設(shè)計實例篇 第1章 嵌入式分層設(shè)計實例 |
該單元展示2個嵌入式架構(gòu)設(shè)計的文檔案例。 1、 架構(gòu)設(shè)計實例 (1) 架構(gòu)設(shè)計文檔實例 (2) 可讀性設(shè)計 (3) 可移植性設(shè)計 2、 硬件接口設(shè)計實例 (1) 提取硬件抽象 (2) 接口設(shè)計文檔實例 (3) 可靠性設(shè)計 (4) 現(xiàn)場可維護性設(shè)計 (5) 兼容性設(shè)計 |
第2章 底層硬件API封裝模板 |
該單元主要介紹硬件封裝的代碼架構(gòu)模板。 該模板的目的是提高底層硬件代碼的可維護性,以及一致性的統(tǒng)一模板對可讀性的提升。 然后通過多個實現(xiàn)案例,講解了幾種特殊硬件封裝的解耦辦法。 最后總結(jié)幾個模板的分類。 1、 模板結(jié)構(gòu) (1) 設(shè)備硬件結(jié)構(gòu)體類型定義 (2) 設(shè)備結(jié)構(gòu)體配置 (3) 設(shè)備個數(shù)宏定義 (4) 設(shè)備實現(xiàn)需要的全局變量 (5) 設(shè)備功能實現(xiàn)代碼 2、 中斷處理的封裝--回調(diào)函數(shù) 3、 上層不可見封裝 (1) 硬件復用設(shè)備對上層的不可見封裝 (2) 硬件耦合設(shè)備對上層的不可見封裝 (3) 上層不可見封裝總結(jié) 4、 模板的分類 |
第3章 底層硬件驅(qū)動實例 |
1、 回調(diào)函數(shù)實現(xiàn)Timer定時器驅(qū)動實例 2、 帶緩存的串口驅(qū)動實例 |
第3部分內(nèi)容 自動化測試篇 第1章 PC模擬底層硬件 |
該單元講解如何在PC上實現(xiàn)一套假硬件設(shè)備,為業(yè)務層在PC上運行和自動化測試做準備。 1、 PC版與真實硬件環(huán)境的不同 2、 PC版測試接口 3、 PC版模擬中斷接口 4、 PC版線程互斥處理 |
第2章 PC模擬運行業(yè)務層與自動化測試 |
講解測試封裝設(shè)計。 演示業(yè)務層代碼在PC上的模擬運行。演示如何讓業(yè)務層代碼進行自動化測試。 講解測試用例撰寫的方式方法。 1、 測試封裝 (1) 增加測試代碼的可讀性封裝 (2) 增加測試代碼的易用性封裝 (3) 利用測試接口定位問題 2、 自動化測試 (1) 自動化測試原理 (2) 自動化測試演示 3、 測試用例流程 4、 測試用例文檔撰寫 5、 測試用例代碼撰寫 |
第3章 自動化測試工具 |
介紹測試斷言工具gTest、測試打樁工具mockcpp等測試工具的使用。 介紹自動化測試持續(xù)集成工具CruiseControl的安裝和配置方法。 1、 自動化測試工具gTest (1) gTest的斷言 (2) gTest的測試結(jié)果文件 2、 打樁工具mockcpp 3、 持續(xù)集成工具CruiseControl (1) 什么是持續(xù)集成 (2) CruiseControl的工作原理 (3) CruiseControl的配置腳本 |
第4部分內(nèi)容 收尾篇 第1章 架構(gòu)師如何工作 |
1、 和團隊一起工作 2、 代碼走讀 3、 結(jié)對編程 4、 加強學習 |
第1部分內(nèi)容 嵌入式架構(gòu)設(shè)計理論篇 第1章 架構(gòu)設(shè)計步驟 1、 架構(gòu)設(shè)計步驟 (1) 考慮驅(qū)動因素 (2) 設(shè)計基礎(chǔ)架構(gòu) (3) 輸出設(shè)計結(jié)果 (4) 跟隨項目持續(xù)優(yōu)化 (5) 輸出優(yōu)化代碼 2、 架構(gòu)設(shè)計的驅(qū)動因素 (1) 軟件質(zhì)量模型 (2) 質(zhì)量屬性間的互斥 (3) 性能與其他屬性的取舍 |
第2章 模塊化程序設(shè)計思想 1、 模塊化設(shè)計的目的 2、 模塊化程序設(shè)計方法 (1) 什么是模塊? (2) 什么是好模塊?--“最少知道原則” (3) 模塊接口設(shè)計 3、 “C語言”模塊怎么組織包結(jié)構(gòu) |
第3章 組包原則與單一職責原則 該單元講解如何劃分模塊,介紹5大組包原則以及單一職責設(shè)計原則。 1、 組包的設(shè)計原則 2、 低耦合組包原則 (1) 無環(huán)依賴原則 (2) 穩(wěn)定依賴原則 3、 高內(nèi)聚組包原則 (1) 重用發(fā)布原則 (2) 共同重用原則 (3) 共同封閉原則 4、 單一職責設(shè)計原則 (1) 單一職責的思考 (2) 單一抽象層次原則 (3) 單一職責原則 |
第4章 基礎(chǔ)架構(gòu)級模塊劃分--架構(gòu)風格 1、 哲學層次的架構(gòu)設(shè)計 2、 架構(gòu)風格定義與分類 3、 常用風格的模塊劃分 (1) “層次結(jié)構(gòu)”--平臺設(shè)計思想 (2) “面向?qū)ο蟆保瑢幽K劃分 (3) “批處理序列”和“管道-過濾器” (4) “黑板系統(tǒng)” (5) “數(shù)據(jù)庫系統(tǒng)” (6) “進程通信” (7) “事件驅(qū)動” |
第5章 模塊殺手--代碼壞味道 1、 模塊第1大殺手--全局變量 (1) 全局變量的缺點 (2) 減少全局變量使用 (3) 限制全局變量范圍 2、 模塊第2大殺手--循環(huán)依賴 (1) 次晨綜合癥 (2) 分層設(shè)計思想 (3) 反轉(zhuǎn)逆向依賴--回調(diào)函數(shù) 3、 其他模塊殺手--代碼壞味道 (1) 散彈式修改 (2) 發(fā)散式變化(違背了共同封閉原則) (3) 不恰當?shù)谋┞叮ㄟ`背了最少知道原則) (4) 狎昵關(guān)系(有可能違背了無環(huán)依賴原則) (5) 依戀情節(jié) (6) 被拒絕的饋贈(違背了共同重用原則) |
第6章 架構(gòu)設(shè)計文檔 1、 架構(gòu)視圖 (1) 開發(fā)視圖 (2) 邏輯視圖 (3) 4+1視圖 (4) 4+1視圖在架構(gòu)文檔中的取舍 2、 架構(gòu)設(shè)計文檔 (1) 架構(gòu)文檔的價值 (2) 架構(gòu)文檔的撰寫原則 3、 平臺接口說明文檔 (1) 平臺架構(gòu)思想 (2) 平臺接口約束文檔 |
第2部分內(nèi)容 嵌入式架構(gòu)設(shè)計實例篇 第1章 嵌入式分層設(shè)計實例 該單元展示2個嵌入式架構(gòu)設(shè)計的文檔案例。 1、 架構(gòu)設(shè)計實例 (1) 架構(gòu)設(shè)計文檔實例 (2) 可讀性設(shè)計 (3) 可移植性設(shè)計 2、 硬件接口設(shè)計實例 (1) 提取硬件抽象 (2) 接口設(shè)計文檔實例 (3) 可靠性設(shè)計 (4) 現(xiàn)場可維護性設(shè)計 (5) 兼容性設(shè)計 |
第2章 底層硬件API封裝模板 該單元主要介紹硬件封裝的代碼架構(gòu)模板。 該模板的目的是提高底層硬件代碼的可維護性,以及一致性的統(tǒng)一模板對可讀性的提升。 然后通過多個實現(xiàn)案例,講解了幾種特殊硬件封裝的解耦辦法。 最后總結(jié)幾個模板的分類。 1、 模板結(jié)構(gòu) (1) 設(shè)備硬件結(jié)構(gòu)體類型定義 (2) 設(shè)備結(jié)構(gòu)體配置 (3) 設(shè)備個數(shù)宏定義 (4) 設(shè)備實現(xiàn)需要的全局變量 (5) 設(shè)備功能實現(xiàn)代碼 2、 中斷處理的封裝--回調(diào)函數(shù) 3、 上層不可見封裝 (1) 硬件復用設(shè)備對上層的不可見封裝 (2) 硬件耦合設(shè)備對上層的不可見封裝 (3) 上層不可見封裝總結(jié) 4、 模板的分類 |
第3章 底層硬件驅(qū)動實例 1、 回調(diào)函數(shù)實現(xiàn)Timer定時器驅(qū)動實例 2、 帶緩存的串口驅(qū)動實例 |
第3部分內(nèi)容 自動化測試篇 第1章 PC模擬底層硬件 該單元講解如何在PC上實現(xiàn)一套假硬件設(shè)備,為業(yè)務層在PC上運行和自動化測試做準備。 1、 PC版與真實硬件環(huán)境的不同 2、 PC版測試接口 3、 PC版模擬中斷接口 4、 PC版線程互斥處理 |
第2章 PC模擬運行業(yè)務層與自動化測試 講解測試封裝設(shè)計。 演示業(yè)務層代碼在PC上的模擬運行。演示如何讓業(yè)務層代碼進行自動化測試。 講解測試用例撰寫的方式方法。 1、 測試封裝 (1) 增加測試代碼的可讀性封裝 (2) 增加測試代碼的易用性封裝 (3) 利用測試接口定位問題 2、 自動化測試 (1) 自動化測試原理 (2) 自動化測試演示 3、 測試用例流程 4、 測試用例文檔撰寫 5、 測試用例代碼撰寫 |
第3章 自動化測試工具 介紹測試斷言工具gTest、測試打樁工具mockcpp等測試工具的使用。 介紹自動化測試持續(xù)集成工具CruiseControl的安裝和配置方法。 1、 自動化測試工具gTest (1) gTest的斷言 (2) gTest的測試結(jié)果文件 2、 打樁工具mockcpp 3、 持續(xù)集成工具CruiseControl (1) 什么是持續(xù)集成 (2) CruiseControl的工作原理 (3) CruiseControl的配置腳本 |
第4部分內(nèi)容 收尾篇 第1章 架構(gòu)師如何工作 1、 和團隊一起工作 2、 代碼走讀 3、 結(jié)對編程 4、 加強學習 |