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