課程費用

6800.00 /人

課程時長

3

成為教練

課程簡介

無數(shù)軟件企業(yè)及其研發(fā)團隊都面臨著,大量初級程序開發(fā)人員低質(zhì)量軟件開發(fā)帶來的嚴重問題,即使那些工作多年的高級程序員也存在著對提高軟件設(shè)計質(zhì)量認識不深的問題。正是由于以上的問題,造成許多公司對運行了多年的核心業(yè)務(wù),運行維護成本越來越高,卻不能更換、一直維護下去的惡性循環(huán)。如何通過培訓(xùn),切實有效地提高員工設(shè)計開發(fā)水平,從而有效地改善軟件設(shè)計質(zhì)量,成為越來越多的軟件企業(yè)迫切需要解決的問題。
本課程不僅在講解高質(zhì)量軟件設(shè)計的理論知識,更關(guān)鍵是將這些知識投放到各個真實的設(shè)計場景中。在這些場景中,我們可以看到我們要面對的設(shè)計難題,通過對設(shè)計難題的深入剖析,尋找問題的根源,對癥下藥,從而制訂出正確的設(shè)計方案。

目標(biāo)收益

本課程不僅在講解高質(zhì)量軟件設(shè)計的理論知識,更關(guān)鍵是將這些知識投放到各個真實的設(shè)計場景中。在這些場景中,我們可以看到我們要面對的設(shè)計難題,通過對設(shè)計難題的深入剖析,尋找問題的根源,對癥下藥,從而制訂出正確的設(shè)計方案。
不僅如此,本課程的案例選取了許多在需求變更中不斷變化的設(shè)計過程,從而用慢動作的手法展現(xiàn)了,最初的需求與設(shè)計是怎樣,第一次變更的設(shè)計,第二層變更的設(shè)計,第三次變更的設(shè)計……這樣的過程展示了,如何在需求變更的過程中,通過每一次正確的設(shè)計,不讓軟件退化,來保證高質(zhì)量的軟件設(shè)計。
課程的最后,更加深入地探討軟件退化的原因,及其正確的應(yīng)對策略:兩頂帽子與小步快跑的開發(fā)過程。

培訓(xùn)對象

初中高級工程師、企業(yè)架構(gòu)師、軟件設(shè)計師、技術(shù)決策/解決方案人員等。

課程大綱

第一部分 高質(zhì)量軟件設(shè)計

第一章什么是高質(zhì)量的軟件設(shè)計
情景劇:軟件設(shè)計焦慮癥
1. 上次的設(shè)計太糟糕了,痛下決心以后要好好設(shè)計
2. 再次進行軟件設(shè)計時卻不知道該怎樣設(shè)計
1) 思考了很多,不知如何下手
2) 需求一變更,重新回到了糟糕的狀態(tài)
探討:如何進行高質(zhì)量的軟件設(shè)計

什么是高質(zhì)量的軟件設(shè)計
1. 軟件的質(zhì)量保證:內(nèi)部質(zhì)量與外部質(zhì)量
2. 高質(zhì)量軟件設(shè)計的標(biāo)準:易讀、易于維護、易于變更
第二章 軟件設(shè)計原則 易于閱讀:
1. 規(guī)范代碼、編寫注釋與表明動機
案例:代碼編寫范例與簡便易行的方法
2. 領(lǐng)域驅(qū)動設(shè)計

易于維護與變更
1. 互聯(lián)網(wǎng)+帶來的挑戰(zhàn)
1) 系統(tǒng)需要不斷地技術(shù)升級與改造
2) 傳統(tǒng)行業(yè)必須向互聯(lián)網(wǎng)轉(zhuǎn)型
3) 但技術(shù)變革不是換零件那么簡單
4) 剖析應(yīng)對技術(shù)變革的方案
2. 案例講解軟件設(shè)計原則
1) 低耦合
a. 依賴反轉(zhuǎn)原則(DIP)
案例:購票業(yè)務(wù)類與數(shù)據(jù)訪問類
b. 開放-封閉原則(OCP)
案例:需求變更與可擴展點設(shè)計
案例:Square/Circle的解決方案
c. 里氏替換原則(LSP)
案例:Rectangle/Square的問題
案例:查詢參數(shù)傳遞類的問題
2) 高內(nèi)聚
案例:評審系統(tǒng)的設(shè)計
a. 單一職責(zé)原則(SRP)
案例:財務(wù)憑證變更帶來的問題
案例:超級大函數(shù)與大對象的難題
案例:MySQL讀寫分離的改造過程
b. 信息專家模式
c. 不要重復(fù)自己原則(DRY)
典型的代碼重復(fù)案例
探討代碼復(fù)用的難題

探討軟件設(shè)計模式:
1. 設(shè)計模式的由來
2. 設(shè)計模式的發(fā)展
3. 設(shè)計模式對高質(zhì)量軟件設(shè)計的作用
第二部分 軟件設(shè)計模式

第三章 適配器模式
什么是適配器模式
1. 軟件設(shè)計中外部接口的難題
2. 第三方框架帶來的設(shè)計難題
3. 適配器模式及其概念

適配器模式的應(yīng)用
1. 適配器模式解決第三方框架帶來的難題
案例:Hibernate適配器的設(shè)計
2. 適配器模式解決外部接口的設(shè)計難題
案例:第三方支付接口的設(shè)計
案例:財務(wù)數(shù)據(jù)接口的設(shè)計
第四章 策略模式 什么是策略模式
1. 工資發(fā)放功能遇到的難題
1) 工資發(fā)放功能最初的設(shè)計及其問題
2) 對問題的分析過程及其新的設(shè)計思路
2. 策略模式及其概念

策略模式的應(yīng)用
1. 案例:工資發(fā)放功能設(shè)計改進的過程
1) 工資發(fā)放功能的Java實現(xiàn)
2) 工資發(fā)放功能的C++實現(xiàn)
2. 案例:數(shù)據(jù)導(dǎo)出功能的設(shè)計實現(xiàn)
1) 深入理解開放-封閉原則
2) 數(shù)據(jù)導(dǎo)出功能的變更與改進過程
3. 案例:財務(wù)憑證生成功能的設(shè)計過程
1) 財務(wù)憑證生成功能的初始需求與設(shè)計
2) 財務(wù)憑證生成功能的擴展與分析過程
3) 財務(wù)憑證生成功能的最終設(shè)計
4) 深入理解單一職責(zé)原則
5) 學(xué)習(xí)“兩頂帽子”的設(shè)計方式
練習(xí):財務(wù)憑證生成功能的設(shè)計與實現(xiàn)
第五章 工廠模式 探討軟件設(shè)計中遇到的難題
1. 依賴反轉(zhuǎn)原則的設(shè)計難題
2. 開放-封閉原則的設(shè)計難題
3. 探討工廠模式的本質(zhì)

簡單工廠模式
1. 簡單工廠模式的C++實現(xiàn)
2. 基于配置的簡單工廠模式
3. 剖析簡單工廠如何實現(xiàn)依賴反轉(zhuǎn)原則
案例:剖析Spring的beanFactory
4. 解讀工廠模式對設(shè)計的重大意義
5. 講解如何創(chuàng)建一個工廠
1) 創(chuàng)建工廠的步驟與關(guān)鍵點
2) 利用Spring框架簡化工廠類的設(shè)計
案例:數(shù)據(jù)導(dǎo)出功能的工廠實現(xiàn)

工廠方法模式
1. 工廠方法模式的概念
2. 工廠方法模式的應(yīng)用
案例:SAX框架的工廠類設(shè)計

抽象工廠模式
1. 抽象工廠模式的概念
2. 抽象工廠模式的實現(xiàn)
案例:標(biāo)簽庫的設(shè)計改進過程
1) 最初的標(biāo)簽庫設(shè)計
2) 運用簡單工廠的標(biāo)簽庫設(shè)計
3) 運用工廠方法的標(biāo)簽庫設(shè)計
4) 運用抽象工廠的標(biāo)簽庫設(shè)計
5) 最終基于配置的標(biāo)簽庫設(shè)計
第六章 單例模式 什么是單例模式
1. 設(shè)計工廠類面臨的問題
2. 單例模式及其概念
3. 如何實現(xiàn)單例模式

單例模式的應(yīng)用
1. 單例模式帶來的設(shè)計變革
1) 充血模型vs.貧血模型
2) 探討單例模式與性能問題
2. 單例模式改變了很多軟件的設(shè)計
第七章 原型模式 什么是原型模式
1. 工廠類在提供產(chǎn)品時遇到的設(shè)計問題
2. 原型模式及其概念

原型模式的設(shè)計實現(xiàn)
案例:函數(shù)調(diào)用的無副作用問題
案例:JavsScript中的原型模式
第八章 模板方法模式 什么是模板方法模式
1. 煮咖啡給我們的啟示
2. 設(shè)計工廠類的新思路
3. 模板方法模式及其概念

模板方法模式的作用與技巧
案例:一個工廠模板的設(shè)計與實現(xiàn)
深入理解不要重復(fù)自己原則
1. 重復(fù)代碼帶來的嚴重后果
2. 散彈式修改及其解決思路
3. 探討實現(xiàn)代碼復(fù)用的難題
4. 代碼復(fù)用在不同場合采用的方法
5. 模板方法模式在代碼復(fù)用中的作用
第九章 裝飾者模式 什么是裝飾者模式
1. 業(yè)務(wù)量增長帶來的多數(shù)據(jù)源問題
2. 運用裝飾者模式巧妙解決多數(shù)據(jù)源問題
3. 裝飾者模式及其概念

裝飾者模式的應(yīng)用
案例:多數(shù)據(jù)源的設(shè)計實現(xiàn)
1. 多數(shù)據(jù)源問題的分析設(shè)計過程
2. 多數(shù)據(jù)源的設(shè)計與實現(xiàn)
案例:商城收銀系統(tǒng)的設(shè)計變更過程
1. 商城收銀系統(tǒng)期初的設(shè)計
2. 混合策略的設(shè)計與實現(xiàn)
3. 多層裝飾者的設(shè)計與實現(xiàn)
重新理解里氏替換原則
1. 透明的功能擴展
2. 里氏替換原則
練習(xí):商場收銀系統(tǒng)的2種設(shè)計與實現(xiàn)
第十章 橋接模式 什么是橋接模式
1. 對象繼承的泛濫
2. 橋接模式及其概念

橋接模式的應(yīng)用
案例:員工管理與工資發(fā)放的設(shè)計
1. 員工管理與工資發(fā)放帶來的繼承泛濫問題
2. 采用橋接模式的設(shè)計與實現(xiàn)
案例:查詢支持類的設(shè)計
1. 查詢支持類遭遇的繼承泛濫問題
2. 查詢支持類的解決方案
3. 單例模式下查詢支持類的設(shè)計
深入體會單一職責(zé)原則
第十一章 享元模式 什么是享元模式
1. Hibernate是怎樣訪問數(shù)據(jù)的
2. 享元模式及其概念

享元模式的應(yīng)用
案例:數(shù)據(jù)緩存的設(shè)計實現(xiàn)
案例:享元模式在大數(shù)據(jù)中的應(yīng)用
第十二章 其它設(shè)計模式 觀察者模式:JobHunter的情景劇
代理模式:老板與秘書的差異
命令模式:像工作流一樣處理業(yè)務(wù)
外觀模式:超級家庭影院的煩惱
構(gòu)建器模式:SQL Builder的設(shè)計
組合模式:如何構(gòu)建一棵樹
中介者模式:QQ在溝通中的作用
迭代器模式:如何順序訪問一個集合
第三部分 基于模式的重構(gòu)

第十三章 小步快跑的開發(fā)模式
關(guān)于設(shè)計模式的思考
1. 開發(fā)新項目敢于運用設(shè)計模式設(shè)計
2. 維護老項目不敢運用設(shè)計模式設(shè)計

問題的分析與思考
1. 對傳統(tǒng)軟件開發(fā)模式過程的梳理
2. 傳統(tǒng)軟件開發(fā)模式的風(fēng)險與問題

什么是小步快跑
1. 小步快跑開發(fā)模式的步驟與特點
2. 小步快跑開發(fā)模式的應(yīng)用
案例:數(shù)據(jù)推送程序的開發(fā)過程
總結(jié):小步快跑如何能解決問題
第十四章 如何防止軟件退化 軟件如何會退化
1. 軟件工業(yè)時代的特點
2. 軟件工業(yè)時代的軟件研發(fā)問題
案例:演示一個遺留系統(tǒng)的退化過程
1) 軟件最初的設(shè)計
2) 軟件不斷變更與退化過程
結(jié)論:重構(gòu)是軟件發(fā)展的必然

軟件重構(gòu)的正確方法
1. 軟件重構(gòu)面臨的問題
2. 軟件重構(gòu)的原則與思路
3. 軟件重構(gòu)的正確步驟
案例:演示一個遺留系統(tǒng)的重構(gòu)過程
1) 運用“抽取方法”解決大函數(shù)問題
2) 運用“抽取類”解決大對象問題
3) 運用“抽取父類”提高代碼復(fù)用
4) 運用“兩頂帽子”解決新功能的擴展
5) 運用設(shè)計模式降低代碼耦合
6) 建立合理的分層結(jié)構(gòu)
7) 運用“領(lǐng)域驅(qū)動設(shè)計”擁抱變化
4. 評估軟件重構(gòu)的效果
第一部分 高質(zhì)量軟件設(shè)計

第一章什么是高質(zhì)量的軟件設(shè)計
情景劇:軟件設(shè)計焦慮癥
1. 上次的設(shè)計太糟糕了,痛下決心以后要好好設(shè)計
2. 再次進行軟件設(shè)計時卻不知道該怎樣設(shè)計
1) 思考了很多,不知如何下手
2) 需求一變更,重新回到了糟糕的狀態(tài)
探討:如何進行高質(zhì)量的軟件設(shè)計

什么是高質(zhì)量的軟件設(shè)計
1. 軟件的質(zhì)量保證:內(nèi)部質(zhì)量與外部質(zhì)量
2. 高質(zhì)量軟件設(shè)計的標(biāo)準:易讀、易于維護、易于變更
第二章 軟件設(shè)計原則
易于閱讀:
1. 規(guī)范代碼、編寫注釋與表明動機
案例:代碼編寫范例與簡便易行的方法
2. 領(lǐng)域驅(qū)動設(shè)計

易于維護與變更
1. 互聯(lián)網(wǎng)+帶來的挑戰(zhàn)
1) 系統(tǒng)需要不斷地技術(shù)升級與改造
2) 傳統(tǒng)行業(yè)必須向互聯(lián)網(wǎng)轉(zhuǎn)型
3) 但技術(shù)變革不是換零件那么簡單
4) 剖析應(yīng)對技術(shù)變革的方案
2. 案例講解軟件設(shè)計原則
1) 低耦合
a. 依賴反轉(zhuǎn)原則(DIP)
案例:購票業(yè)務(wù)類與數(shù)據(jù)訪問類
b. 開放-封閉原則(OCP)
案例:需求變更與可擴展點設(shè)計
案例:Square/Circle的解決方案
c. 里氏替換原則(LSP)
案例:Rectangle/Square的問題
案例:查詢參數(shù)傳遞類的問題
2) 高內(nèi)聚
案例:評審系統(tǒng)的設(shè)計
a. 單一職責(zé)原則(SRP)
案例:財務(wù)憑證變更帶來的問題
案例:超級大函數(shù)與大對象的難題
案例:MySQL讀寫分離的改造過程
b. 信息專家模式
c. 不要重復(fù)自己原則(DRY)
典型的代碼重復(fù)案例
探討代碼復(fù)用的難題

探討軟件設(shè)計模式:
1. 設(shè)計模式的由來
2. 設(shè)計模式的發(fā)展
3. 設(shè)計模式對高質(zhì)量軟件設(shè)計的作用
第二部分 軟件設(shè)計模式

第三章 適配器模式
什么是適配器模式
1. 軟件設(shè)計中外部接口的難題
2. 第三方框架帶來的設(shè)計難題
3. 適配器模式及其概念

適配器模式的應(yīng)用
1. 適配器模式解決第三方框架帶來的難題
案例:Hibernate適配器的設(shè)計
2. 適配器模式解決外部接口的設(shè)計難題
案例:第三方支付接口的設(shè)計
案例:財務(wù)數(shù)據(jù)接口的設(shè)計
第四章 策略模式
什么是策略模式
1. 工資發(fā)放功能遇到的難題
1) 工資發(fā)放功能最初的設(shè)計及其問題
2) 對問題的分析過程及其新的設(shè)計思路
2. 策略模式及其概念

策略模式的應(yīng)用
1. 案例:工資發(fā)放功能設(shè)計改進的過程
1) 工資發(fā)放功能的Java實現(xiàn)
2) 工資發(fā)放功能的C++實現(xiàn)
2. 案例:數(shù)據(jù)導(dǎo)出功能的設(shè)計實現(xiàn)
1) 深入理解開放-封閉原則
2) 數(shù)據(jù)導(dǎo)出功能的變更與改進過程
3. 案例:財務(wù)憑證生成功能的設(shè)計過程
1) 財務(wù)憑證生成功能的初始需求與設(shè)計
2) 財務(wù)憑證生成功能的擴展與分析過程
3) 財務(wù)憑證生成功能的最終設(shè)計
4) 深入理解單一職責(zé)原則
5) 學(xué)習(xí)“兩頂帽子”的設(shè)計方式
練習(xí):財務(wù)憑證生成功能的設(shè)計與實現(xiàn)
第五章 工廠模式
探討軟件設(shè)計中遇到的難題
1. 依賴反轉(zhuǎn)原則的設(shè)計難題
2. 開放-封閉原則的設(shè)計難題
3. 探討工廠模式的本質(zhì)

簡單工廠模式
1. 簡單工廠模式的C++實現(xiàn)
2. 基于配置的簡單工廠模式
3. 剖析簡單工廠如何實現(xiàn)依賴反轉(zhuǎn)原則
案例:剖析Spring的beanFactory
4. 解讀工廠模式對設(shè)計的重大意義
5. 講解如何創(chuàng)建一個工廠
1) 創(chuàng)建工廠的步驟與關(guān)鍵點
2) 利用Spring框架簡化工廠類的設(shè)計
案例:數(shù)據(jù)導(dǎo)出功能的工廠實現(xiàn)

工廠方法模式
1. 工廠方法模式的概念
2. 工廠方法模式的應(yīng)用
案例:SAX框架的工廠類設(shè)計

抽象工廠模式
1. 抽象工廠模式的概念
2. 抽象工廠模式的實現(xiàn)
案例:標(biāo)簽庫的設(shè)計改進過程
1) 最初的標(biāo)簽庫設(shè)計
2) 運用簡單工廠的標(biāo)簽庫設(shè)計
3) 運用工廠方法的標(biāo)簽庫設(shè)計
4) 運用抽象工廠的標(biāo)簽庫設(shè)計
5) 最終基于配置的標(biāo)簽庫設(shè)計
第六章 單例模式
什么是單例模式
1. 設(shè)計工廠類面臨的問題
2. 單例模式及其概念
3. 如何實現(xiàn)單例模式

單例模式的應(yīng)用
1. 單例模式帶來的設(shè)計變革
1) 充血模型vs.貧血模型
2) 探討單例模式與性能問題
2. 單例模式改變了很多軟件的設(shè)計
第七章 原型模式
什么是原型模式
1. 工廠類在提供產(chǎn)品時遇到的設(shè)計問題
2. 原型模式及其概念

原型模式的設(shè)計實現(xiàn)
案例:函數(shù)調(diào)用的無副作用問題
案例:JavsScript中的原型模式
第八章 模板方法模式
什么是模板方法模式
1. 煮咖啡給我們的啟示
2. 設(shè)計工廠類的新思路
3. 模板方法模式及其概念

模板方法模式的作用與技巧
案例:一個工廠模板的設(shè)計與實現(xiàn)
深入理解不要重復(fù)自己原則
1. 重復(fù)代碼帶來的嚴重后果
2. 散彈式修改及其解決思路
3. 探討實現(xiàn)代碼復(fù)用的難題
4. 代碼復(fù)用在不同場合采用的方法
5. 模板方法模式在代碼復(fù)用中的作用
第九章 裝飾者模式
什么是裝飾者模式
1. 業(yè)務(wù)量增長帶來的多數(shù)據(jù)源問題
2. 運用裝飾者模式巧妙解決多數(shù)據(jù)源問題
3. 裝飾者模式及其概念

裝飾者模式的應(yīng)用
案例:多數(shù)據(jù)源的設(shè)計實現(xiàn)
1. 多數(shù)據(jù)源問題的分析設(shè)計過程
2. 多數(shù)據(jù)源的設(shè)計與實現(xiàn)
案例:商城收銀系統(tǒng)的設(shè)計變更過程
1. 商城收銀系統(tǒng)期初的設(shè)計
2. 混合策略的設(shè)計與實現(xiàn)
3. 多層裝飾者的設(shè)計與實現(xiàn)
重新理解里氏替換原則
1. 透明的功能擴展
2. 里氏替換原則
練習(xí):商場收銀系統(tǒng)的2種設(shè)計與實現(xiàn)
第十章 橋接模式
什么是橋接模式
1. 對象繼承的泛濫
2. 橋接模式及其概念

橋接模式的應(yīng)用
案例:員工管理與工資發(fā)放的設(shè)計
1. 員工管理與工資發(fā)放帶來的繼承泛濫問題
2. 采用橋接模式的設(shè)計與實現(xiàn)
案例:查詢支持類的設(shè)計
1. 查詢支持類遭遇的繼承泛濫問題
2. 查詢支持類的解決方案
3. 單例模式下查詢支持類的設(shè)計
深入體會單一職責(zé)原則
第十一章 享元模式
什么是享元模式
1. Hibernate是怎樣訪問數(shù)據(jù)的
2. 享元模式及其概念

享元模式的應(yīng)用
案例:數(shù)據(jù)緩存的設(shè)計實現(xiàn)
案例:享元模式在大數(shù)據(jù)中的應(yīng)用
第十二章 其它設(shè)計模式
觀察者模式:JobHunter的情景劇
代理模式:老板與秘書的差異
命令模式:像工作流一樣處理業(yè)務(wù)
外觀模式:超級家庭影院的煩惱
構(gòu)建器模式:SQL Builder的設(shè)計
組合模式:如何構(gòu)建一棵樹
中介者模式:QQ在溝通中的作用
迭代器模式:如何順序訪問一個集合
第三部分 基于模式的重構(gòu)

第十三章 小步快跑的開發(fā)模式
關(guān)于設(shè)計模式的思考
1. 開發(fā)新項目敢于運用設(shè)計模式設(shè)計
2. 維護老項目不敢運用設(shè)計模式設(shè)計

問題的分析與思考
1. 對傳統(tǒng)軟件開發(fā)模式過程的梳理
2. 傳統(tǒng)軟件開發(fā)模式的風(fēng)險與問題

什么是小步快跑
1. 小步快跑開發(fā)模式的步驟與特點
2. 小步快跑開發(fā)模式的應(yīng)用
案例:數(shù)據(jù)推送程序的開發(fā)過程
總結(jié):小步快跑如何能解決問題
第十四章 如何防止軟件退化
軟件如何會退化
1. 軟件工業(yè)時代的特點
2. 軟件工業(yè)時代的軟件研發(fā)問題
案例:演示一個遺留系統(tǒng)的退化過程
1) 軟件最初的設(shè)計
2) 軟件不斷變更與退化過程
結(jié)論:重構(gòu)是軟件發(fā)展的必然

軟件重構(gòu)的正確方法
1. 軟件重構(gòu)面臨的問題
2. 軟件重構(gòu)的原則與思路
3. 軟件重構(gòu)的正確步驟
案例:演示一個遺留系統(tǒng)的重構(gòu)過程
1) 運用“抽取方法”解決大函數(shù)問題
2) 運用“抽取類”解決大對象問題
3) 運用“抽取父類”提高代碼復(fù)用
4) 運用“兩頂帽子”解決新功能的擴展
5) 運用設(shè)計模式降低代碼耦合
6) 建立合理的分層結(jié)構(gòu)
7) 運用“領(lǐng)域驅(qū)動設(shè)計”擁抱變化
4. 評估軟件重構(gòu)的效果

課程費用

6800.00 /人

課程時長

3

預(yù)約體驗票 我要分享

近期公開課推薦

近期公開課推薦

活動詳情

提交需求