
軟件擴展性與重用性設計培訓
1. 什么是好的設計以及如何預先設計實現
(1)什么是好的設計?
(2)衡量好設計的手段
(3)可擴展性(Extensibility)容易添加新的功能
(4)靈活性(Flexibility)代碼修改平穩地發生
(5)可插入性(Plug ability)容易將一個類抽去-同時也可將相同接口類加入
(6)軟件的變化分析-發現變化/封裝變化/隔離變化
(7)軟件需求的不可預測性-設計師預測式設計與過度設計
(8)軟件演化式設計-敏捷的設計思想
2. 邏輯架構切割
(1)技術切割范式:針對所有業務功能進行技術切割方法論
(2)技術元素的分層組織
(3)技術元素的分包組織
(4)技術元素的相似性與重疊性分析
(5)技術元素的變化性設計
(6)技術元素的性能、可靠、穩定與安全設計
(7)技術元素并行開發與開發管理組織
(8)技術元素難度復雜度與開發者能力關系
(9)動手實踐:面向對象與面向方面的技術切割實踐,評選佳實踐成果
3. 接口設計與解耦
(1)接口設計的基本原則
(2)接口的變化性與穩定性
(3)定義技術元素間相互調用的接口
(4)定義系統外部訪問集成的接口
(5)定義框架管理的接口
(6)注入變化觀察技術元素的波及面-耦合性分析
(7)技術元素職責單一性與松耦合
(8)案例分析:google的MapReduce的接口設計
(9)動手實踐:類庫接口設計實踐,評選佳實踐成果
4. 數據庫結構設計與大數據
(1)數據庫設計的基本原則:適度使用范式原則
(2)實現數據庫結構的彈性設計8種方案
(3)大數據設計:權衡SQL與NoSQL
(4)數據切割:分庫、分區與分布
(5)數據存儲文件系統的彈性設計:MySQL與淘寶TFS
(6)數據性能設計方案:對比MemCached、OceanBase與Spark
(7)數據中的知識與決策
(8)動手實踐:分組實現數據庫彈性設計,評選佳實踐成果
5. 公共組件設計
(1)公共組件結構切割
(2)公共組件接口設計
(3)公共組件的彈性設計
(4)公共組件與功能組件的動態耦合設計
(5)動手實踐:Cache組件設計
(6)動手實踐:現有系統反向工程的公共組件合理性分析
6. 框架平臺設計
(1)UI框架設計
(2)功能邏輯組件集成管理框架設計
(3)數據訪問框架設計
(4)數據存儲框架設計
(5)案例分析:HADOOP框架剖析
(6)動手實踐:現有系統反向工程的自定義框架的合理性分析
7. 非功能性設計
(1)各種質量屬性設計的戰術策略
(2)掌控“相互沖突的質量屬性”設計的平衡點
(3)軟件變化分析與預測
(4)軟件變化設計策略
(5)基于設計模式的變化設計
(6)基于key-value的變化設計
(7)基于邏輯判斷的變化設計
(8)高可靠性設計
(9)案例分析:SAP自我維護設計策略分析
(10)動手實踐:現有系統反向工程的質量設計的合理性分析
8. 部署運行維護設計
(1)規劃系統開發的配置庫結構
(2)規劃系統的編譯方案
(3)規劃系統源代碼的版本方案
(4)規劃系統物理文件的安裝方案
(5)規劃系統中各個技術元素部署方案
(6)系統集成構建方案
(7)注入敏捷思想-持續集成構建
(8)案例分析:微軟的每日構建
(9)標注軟件結構中的“運維點”
(10)制定“運維點”的運行維護策略
(11)軟件結構中內置免疫系統
(12)動手實踐:產品源代碼結構、編譯計劃、版本計劃與部署方案,評選佳實踐成果
9. 架構關鍵點與工程
(1)架構設計與開發效率:簡化開發
(2)架構設計指導詳細設計與代碼編寫
(3)注入敏捷的開發實踐方法:TDD
(4)融合ITIL與DevOps的架構設計
(5)軟件架構與人力組織結構映射
(6)基于“軟件工廠”的開發模式
(7)建立企業級知識庫
(8)軟件動態運行維護規劃
(9)動手實踐:現有系統反向工程的運維設計的合理性分析
10. 架構模式與設計模式
(1)模式的場景、角色、職責
(2)模式應用誤區與風險
(3)設計重構中模式應用
(4)把握模式的使用尺度-過度使用模式與適度使用模式
11. 軟件設計模式的應用(Design Patterns)
(1)建筑模式與設計模式
(2)過度使用設計模式的問題
(3)設計模式如何適應變化和封裝
(4)GRASP設計原則
(5)關于功能與邏輯的分離
(6)設計模式的組合應用方式
(7)Framework設計中設計模式
(8)結合案例進行分析,應用設計模式之前和應用之后的對比
(9)動手實踐:學員依據案例進行設計模式實踐