企業管理培訓分類導航
企業管理培訓公開課計劃
企業培訓公開課日歷
2025年
2024年
研發管理培訓公開課
研發管理培訓內訓課程
熱門企業管理培訓關鍵字
軟件重構與軟件設計模式
【課程編號】:MKT049584
軟件重構與軟件設計模式
【課件下載】:點擊下載課程綱要Word版
【所屬類別】:研發管理培訓
【時間安排】:2025年05月27日 到 2025年05月28日5900元/人
2024年11月05日 到 2024年11月07日5900元/人
2024年06月11日 到 2024年06月12日5900元/人
【授課城市】:北京
【課程說明】:如有需求,我們可以提供軟件重構與軟件設計模式相關內訓
【課程關鍵字】:北京軟件重構培訓,北京軟件設計培訓
我要報名
咨詢電話: | |
手 機: | 郵箱: |
內容背景
軟件重構是指在不改變軟件功能和外部可見性的情況下,為了改善軟件的結構,提高清晰性、可擴展性和可重用性而對軟件進行的改造。簡而言之,重構就是改進已經寫好的軟件的設計。在敏捷開發方法學中,重構常常是軟件開發循環的一部分,開發者通過增加新的測試和功能,或者重構代碼來改善內部的一致性和清晰性。重構也是代碼維護中的一部分,既不修正錯誤,又不增加新的功能性,而是用于提高代碼的可讀性或者改變代碼的結構和設計,使其在將來更容易被維護。特別是,在現有的程序的結構下,給一個程序增加一個新的行為會非常困難,因此開發人員可能先重構這部分代碼,使加入新的行為變得容易。
培訓對象
注重實效的各類軟件研發中心的負責人、設計師、架構師、項目經理、技術總監、質量部門經理、開發工程師等。
代碼重構設計重構軟件腐爛監控重構管理
開發工程師精通了解了解了解
設計師精通精通了解了解
架構師精通精通精通精通
數據庫工程師了解了解//
質量管理//精通精通
管理者//監控了解
培訓特色
本課程注重實戰,采用案例貫穿方式完成實踐,針對項目過程中技術人員常遇到的誤區進行匯總、研討,以程序員的編程思維為前提,通過大量的真實案例,詳細地介紹了重構需要注意的要點以及難點,這些全部都是講師十幾年經驗的沉淀及總結。
本課程內容理論性與實踐性都較強,采取講課、討論、實踐三者結合的方式,1/3時間講解核心思想,1/3時間動手重構實踐,1/3點評分析總結,形成一整套解決問題的方法。
培訓要點
軟件重構面臨的背景都是相似的,程序員們為了快速完成需求和上線而寫出了最基本的代碼。然后在功能的不斷擴充過程中,以打補丁的方式對代碼進行擴充,中間還會面臨著開發人員的變更和離職。逐漸地,代碼就會變得越來越臃腫,漸漸地變得難以維護。
糟糕的軟件代碼會帶來開發效率的降低,在糟糕架構下加入新功能,會大大影響新功能的代碼質量,開發和調試時間都會成倍增加;其次是故障率的提升,在質量低下的代碼中,總是容易隱藏著很多不易發現的坑,這些都會成為故障的隱患;同時,架構也會使得需求的完成大打折扣,使得設計好的目標,因為架構限制或者性能等原因,只能完成80%甚至更低。
隨著不同產品的推出,不同客戶、不同版本的發布,需要維護的遺留代碼越來越多,重構也就在所難免。不僅如此,所有的軟件系統,經過一段時間的維護,都會逐漸變成遺留系統,并且都遭遇了緩慢而不可抗拒的腐化。因此,軟件開發人員不得不面對既有系統的混亂代碼。
本課程首先深入剖析軟件質量下降的根源,提出重構是軟件變更中保持高質量的必然,講解如何運用“兩頂帽子”的方式應對變更,拒絕腐化。站在實戰的角度講解高質量軟件設計的“小步快跑”過程。接著,用真實案例講解已經代碼腐化的遺留系統是如何通過“軟件重構七步曲”,由簡入深、循序漸進地重構一個大系統。最后,以重構的角度進行實戰,講解軟件如何在不斷變更的過程中,運用設計模式來降低耦合,保持軟件設計質量不退化。
培訓內容
授課內容
第一部分 為什么軟件需要及時重構
第一單元
剖析軟件質量不斷下降的根源質量不斷下降的表現:
1.程序代碼越來越亂
2.軟件維護成本越來越高
3.軟件變更越來越困難
4.無法進行新技術的改造
以往采取的措施:
1.頭痛醫頭,腳痛醫腳
2.拋棄掉重新編寫
3.因擔心未來變化而做的過度設計
帶來的問題
1.團隊成員越來越多但效率卻越來越低
2.測試變得越來越困難而任務繁重
3.軟件系統越來越笨重而不適應未來變化
分析與反思
案例分析:一個遺留系統的演化過程
1.起初的設計
2.隨后的變更
3.質量不斷下降的過程
軟件質量下降的根源:
1.軟件總是因變更而變得越來越復雜
2.軟件結構已經不再適應復雜的軟件需求
3.必須要調整軟件結構以適應新的軟件需求
軟件是因需求變更而質量下降嗎?
案例分析:推演軟件變更的設計過程
應對軟件變更的最佳方式:兩頂帽子
1.重構原有代碼以適應新的需求
2.實現新的需求
案例:演示兩頂帽子的設計過程
第二單元
高質量的軟件設計過程以往軟件設計的過程:
1.演示以往軟件設計的過程
2.剖析以往軟件設計的問題與風險
小步快跑模式的開發過程:
1.用最快的速度開發一個最核心的功能
2.讓第一個版本運行起來并可以驗證
3.在第一個版本的基礎上不斷添加功能:
a.每次只添加一個很簡單、很單一的功能
b.每次以兩頂帽子的方式添加新功能
c.運行、調試與驗證
d.重復這個過程添加下一個功能
4.復雜的系統就是由一次次正確開發的不斷積累而成
案例:演示小步快跑的開發過程
小步快跑解決的問題:
1.復雜功能有效地解耦
2.代碼編寫總是可測試與驗證
3.簡化設計與思考的復雜度
4.適時重構以避免軟件退化
案例:數據推送程序的設計過程
第二部分 如何進行軟件重構
第三單元
何為重構軟件重構的概念
1.重構是一系列代碼的等量變換
案例:一個Hello World重構過程
2.重構的保險索:自動化測試
案例:Hello World的自動化測試過程
3.軟件修改的四種動機——重構的價值
4.一個真實的謊言——重構的誤區
5.重構的主要方法與技巧
案例分析:重構一個大型遺留系統
1.重構第一步:分解大函數
超級大函數及其危害
案例:演示大函數產生的過程
案例:演示抽取方法操作步驟
實踐抽取方法會遇到的問題和解決方案
2.重構第二步:拆分大對象
超級大對象及其危害
案例:演示超級大對象的產生過程
案例:演示抽取類的操作步驟
講解單一職責設計原則
案例:演示“分久必合,合久必分”的重構過程
3.重構第三步:提高復用率
講解順序編程及其危害
“不要重復代碼”原則
案例:提高代碼復用的6個方法
案例:演示新增代碼時的代碼復用過程
用靜態檢查工具檢查重復代碼
4.重構第四步:可擴展設計
過度設計 vs. 恰如其分的設計
講解“開放-封閉”的設計原則
案例:講解可擴展設計的4個方法
案例:講解新增代碼的可擴展設計過程
5.重構第五步:降低耦合度
案例:講解接口、實現與工廠模式
案例:講解外部接口解耦與適配器模式
案例:講解繼承泛濫問題與橋接模式
案例:講解方法解耦與策略模式
案例:講解過程解耦與命令模式
案例:講解透明擴展與組合模式、裝飾者模式
6.重構第六步:系統分層
反思軟件架構需要怎樣的分層結構
遺留系統如何擁抱需求變化
遺留系統如何應對技術變革
7.重構第七步:領域驅動設計
領域驅動設計的概念
講解領域模型分析方法
講解原文分析法與領域驅動設計
討論:如何制定重構項目計劃
練習:重構一個小程序并編寫測試腳本
第四單元
關于重構的討論什么時候重構
1.重構是一種習慣
2.重構讓程序可讀
3.重構,才好復用
4.先重構,再擴展
5.緊急任務時的重構
測試的困境
1.重構初期的困局
2.解耦與自動化測試
3.建立自動化測試體系
重構的評價
1.評價軟件質量的指標
2.評價軟件質量的工具
第三部分 運用設計模式實戰軟件重構
第五單元
適配器模式適配器模式的應用
1.適配器模式解決第三方框架帶來的難題
案例:Hibernate適配器的設計
2.適配器模式解決外部接口的設計難題
案例:第三方支付接口的設計
案例:財務數據接口的設計
第六單元
策略模式策略模式的應用
1.案例:工資發放功能設計改進的過程
1)工資發放功能的Java實現
2)工資發放功能的C++實現
2.案例:數據導出功能的設計實現
1)深入理解開放-封閉原則
2)數據導出功能的變更與改進過程
3.案例:財務憑證生成功能的設計過程
1)財務憑證生成功能的初始需求與設計
2)財務憑證生成功能的擴展與分析過程
3)財務憑證生成功能的最終設計
4)深入理解單一職責原則
5)學習“兩頂帽子”的設計方式
練習:財務憑證生成功能的設計與實現
第七單元
工廠模式探討軟件設計中遇到的難題
1.依賴反轉原則的設計難題
2.開放-封閉原則的設計難題
3.探討工廠模式的本質
簡單工廠模式
1.簡單工廠模式的C++實現
2.基于配置的簡單工廠模式
3.剖析簡單工廠如何實現依賴反轉原則
案例:剖析Spring的beanFactory
4.解讀工廠模式對設計的重大意義
5.講解如何創建一個工廠
1)創建工廠的步驟與關鍵點
2)利用Spring框架簡化工廠類的設計
案例:數據導出功能的工廠實現
工廠方法模式
1.工廠方法模式的概念
2.工廠方法模式的應用
案例:SAX框架的工廠類設計
抽象工廠模式
1.抽象工廠模式的概念
抽象工廠模式的實現
案例:標簽庫的設計改進過程
1)最初的標簽庫設計
2)運用簡單工廠的標簽庫設計
3)運用工廠方法的標簽庫設計
4)運用抽象工廠的標簽庫設計
5)最終基于配置的標簽庫設計
第八單元
單例模式和原型模式單例模式的應用
1.單例模式帶來的設計變革
1)充血模型vs.貧血模型
2)探討單例模式與性能問題
2.單例模式改變了很多軟件的設計
原型模式的應用
1.工廠類在提供產品時遇到的設計問題
2.原型模式及其概念
原型模式的設計實現
案例:函數調用的無副作用問題
案例:JavsScript中的原型模式
第九單元
模板方法模式模板方法模式的作用與技巧
案例:一個工廠模板的設計與實現
深入理解不要重復自己原則
1.重復代碼帶來的嚴重后果
2.散彈式修改及其解決思路
3.探討實現代碼復用的難題
4.代碼復用在不同場合采用的方法
5.模板方法模式在代碼復用中的作用
第十單元
裝飾者模式及橋接模式裝飾者模式的應用
案例:多數據源的設計實現
1.多數據源問題的分析設計過程
2.多數據源的設計與實現
案例:商城收銀系統的設計變更過程
1.商城收銀系統期初的設計
2.混合策略的設計與實現
3.多層裝飾者的設計與實現
重新理解里氏替換原則
1.透明的功能擴展
2.里氏替換原則
練習:商場收銀系統的2種設計與實現
橋接模式的應用
案例:員工管理與工資發放的設計
1.員工管理與工資發放帶來的繼承泛濫問題
2.采用橋接模式的設計與實現
案例:查詢支持類的設計
1.查詢支持類遭遇的繼承泛濫問題
2.查詢支持類的解決方案
3.單例模式下查詢支持類的設計
深入體會單一職責原則
范老師
航天信息前首席架構師,暢銷書籍《大話重構》作者,規模化敏捷SPC,軟件架構及重構的客座講師,獨立咨詢顧問。先后參與了數十個國內大型軟件項目,涉及國家財政、軍工、稅務、醫療等領域的大數據建設、風險防控與人工智能研究,互聯網及大數據轉型的實踐者與倡導者