【一階技能】貫通需求分析
? 需求 = 功能需求 + 質量需求 + 約束需求
? 功能 = 接口需求 + 系統能力 + 處理流程
? 需求分析前期任務、用例圖、案例
? 需求分析后期任務、用例規約、案例
【二階技能】精通需求文檔
? 需求內容、模型總覽
? 管理軟件《需求書》實例 and 佳模板
? 嵌 入 式《需求書》實例 and 佳模板
? 嵌入式軟件的接口需求、算法需求刻畫
? 接口需求,要充分體現軟件與傳感器、
執行器、其他系統的雙向對接要求
? 處理流程,往往涉及操作、處理、控制
過程的專業算法,也應分析并歸檔
【三階技能】讓《SRS》成為分析和識別需求變更的工具
? 需求變更分析:How to
? 需求變更分析:示范案例
? 傳統“輸入-處理-輸出”分析方式的改進
在課堂上練會、夯實的技能,將在工作中直接發揮價值
【實戰】分組實戰,老師會給《需求書.doc》
? 任務:電梯控制板需求變更分析、及如何將變更歸檔
? 貫穿案例推進……
嵌入式架構的重中之重——控制結構設計
設計師設計嵌入式軟件時,有三種控制結構可供選擇
1. 死循環
實現代碼分析……
2. 事件驅動多任務(event-driven multitask)
實現代碼分析……
3. 時間片輪詢架構(time-slice polling)
實現偽代碼分析……
設計師設計嵌入式軟件時,可參考的優秀范例二則
1. 著名飛行器開源產品——多任務架構
主要收獲:入口主程序、Task的劃分、Task間的同步
主要收獲:中斷函數在多任務架構下的經典寫法
2. 某硬實時單板控制器——時間片輪詢架構
主要收獲:入口主程序代碼骨架
主要收獲:中斷函數在時間片輪詢架構下的經典寫法
設計師設計嵌入式軟件時,根據性能選擇架構
1. 嵌入式性能:
? 速 度:響應時間長短?
? 效 率:任務切換過頻怎么辦?
? 吞吐量:每秒處理事件數等
2. 三種控制結構的適用場景
? 事件率高低
? 事件率波動規律、峰值
3. 案例故事:某單板程序,高事件率下CPU占用率100%
? 設計一:事件驅動多任務架構(有OS)
? 設計二:時間片輪詢架構(無需OS)
? 設計優劣對比
? 任務:多任務or時間片輪詢架構的選擇
? 貫穿案例推進……
重用關鍵——模塊劃分
設計師劃分模塊時,代碼結構的全局劃分方法
1. 從模式開始——巧妙的“五橫一縱”分層模式
2. 模塊劃分——覆蓋上下文圖定義的接口需求
3. 模塊劃分——運用用例驅動設計思維
3.1. 起步:分析用例規約,識別實現用例的那些代碼塊
3.2. 后續:協作設計,即用序列圖串起這些代碼
設計師劃分模塊時,注意幾個基本原則
1. 通用-專用分離:提煉應用無關的Library、或選擇三方庫
2. 通用-專用分離:機制與策略分離,開發或選擇Framework
3. 隔離外部交互:僅UI層“知道”操作細節和展現格式
4. 隔離外部交互:僅SI層“知道”和外部部件通信的細節
5. 隔離外部交互:僅DM層“知道”數據存儲格式
設計師劃分模塊時,可參考的優秀范例一則
1. 著名開源產品套件——Mumble
主要收獲:模塊的劃分、通用庫的提煉、三方框架…
實戰演練
1. 任務:模塊劃分
(必須覆蓋代碼結構全局、不能漏模塊)
2. 貫穿案例推進……
隔離變化——模塊接口設計
設計師設計接口時,考慮的三件事兒
1. 技術選擇:接口設計容易?做漂亮難!
2. 機制選擇:調用/回調/同步/異步/輪詢/超時
3. 格式定義:函數風格 vs.報文或消息風格
設計師設計接口時,可參考的優秀范例一則
4. 某通用產品——漂亮的C語言接口、方便的配置
主要收獲:圍繞Domain Type定義模塊的核心接口
主要收獲:在核心接口基礎上,可定義便捷接口
注?英文術語為Core Interface、Convenience Interface
設計師設計接口時,這些經驗可以用
1. 基于代碼:專項練習一
2. 基于代碼:專項練習二
3. 基于代碼:專項練習三
4. 原則與“坑”總結
1. 任務1:接口的命令化(Command)支持可擴展
2. 任務2:讓接口包含回調(Callback)使模塊通用化
3. 貫穿案例設計推進……
自控方案設計——單板軟件架構師的下一步
架構師設計自控方案時,工作內容有哪些?
1. 邏輯設計 = 分層設計 + 功能子系統劃分
2. 物理設計 = 硬件拓撲 + 軟組件分布設計
3. 技術選型 = 開發技術 + 運行環境選型
4. 接口設計 = 接口技術選擇 + 接口協議定義
架構師設計自控方案時,需求文檔怎么寫?
1. 《需求規格書》模板解讀
2. 《需求規格書》實際范例分析
架構師設計自控方案時,架構文檔怎么寫?
1. 《GB SSDD》文檔模板解讀
2. 《GB架構書》實際范例分析 |