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