一、培訓背景
軟件重構面臨的背景都是相似的,程序員們為了快速完成需求和上線而寫出了最基本的代碼。然后在功能的不斷擴充過程中,以打補丁的方式對代碼進行擴充,中間還會面臨著開發人員的變更和離職。逐漸地,代碼就會變得越來越臃腫,漸漸地變得難以維護。
糟糕的軟件代碼會帶來開發效率的降低,在糟糕架構下加入新功能,會大大影響新功能的代碼質量,開發和調試時間都會大大增加,接著是故障率的提升。隨著不同產品的推出,不同客戶、不同版本的發布,需要維護的遺留代碼越來越多,重構也就在所難免。然而,采用傳統的方式進行重構,周期長、成本高。
隨著人工智能大模型DeepSeek的迅速發展,AI也逐漸具備了推理與編程的能力。AI的發展不是為了替代人,而是替代不會用AI的人。通過DeepSeek的輔助,可以幫助開發人員快速理解代碼,重構與優化代碼,運用設計模式進行設計,建立自動化測試體系,用更低的成本長期持續地維護與變更系統。
本課程首先深入剖析軟件質量下降的根源,提出重構是軟件變更中保持高質量的必然,講解如何運用“兩頂帽子”的方式應對變更,拒絕腐化。接著,用真實案例講解已經代碼腐化的遺留系統是如何通過“軟件重構七步曲”,由簡入深、循序漸進地重構一個大系統。演練在整個過程中,如何通過AI編程,更加快速而高效地優化代碼、軟件重構、建立自動化測試,保持代碼整潔。
二、培訓對象
Ø 初中高級工程師、企業架構師、軟件設計師等。
Ø 各類軟件研發中心的軟件設計師、架構師、項目經理、技術總監、質量部門經理。
Ø 對于重構技術懷有疑問和困惑,需要梳理解答的團隊和個人,效果最佳。
代碼重構 | 設計重構 | 軟件腐爛監控 | 重構管理 | |
程序員 | 必須精通 | 需要了解 | 需要了解 | 需要了解 |
設計師 | 必須精通 | 必須精通 | 需要了解 | 需要了解 |
架構師 | 必須精通 | 必須精通 | 必須精通 | 必須精通 |
數據庫工程師 | 需要了解 | 需要了解 | / | / |
質量管理 | / | / | 必須精通 | 必須精通 |
管理者 | / | / | 需要監控 | 需要了解 |
三、培訓收益
Ø 提高軟件開發效率
在編碼之前制定設計方案,避免在開發過程中頻繁修改代碼,提高軟件開發效率。
Ø 提高軟件綜合質量
編碼之前進行全面的需求分析和規劃,從而設計出更加優秀的軟件架構和模塊設計,提高軟件的質量和可靠性。
Ø 方便軟件維護和升級
設計出易于維護和升級的軟件系統,減少維護成本和升級難度。
Ø 減少軟件開發成本
在開發過程中發現問題和缺陷,避免在后期進行大量的修改和調整,從而減少軟件開發成本。
四、培訓信息
1)培訓方式:
培訓采用線下專家面授+同步直播的形式。所有課程均贈送學習教材、視頻回放、答疑交流群、促學服務等。并對考生提供專人報考、考試指導、證書郵寄等。多維度精細化教學,一站式報考服務,滿足不同企業及學員的學習需求。
2)培訓班次:
2025年04月20-23日 上海
2025年06月23-26日 武漢
2025年09月25-28日 成都
五、培訓內容
培訓共計4天,每天6小時,具體日程安排如下:
章節 | 內容 |
第一單元 剖析軟件退化的根源 | 軟件開發的輪回: 1. 起初客戶提出的需求并不復雜 2. 隨著日后的變更,系統開始變得越來越復雜 3. 激烈的市場要求快速交付 4. 越來越復雜的系統交付速度會越來越慢 5. 越來越快的技術發展要求技術架構不斷更迭 帶來的問題: 1. 系統交付速度越來越慢而不能適應市場變化 2. 技術架構不斷更迭越來越困難而不能適應技術發展 3. 測試變得越來越困難而任務繁重 4. 軟件系統越來越笨重而不適應未來變化 分析與反思 探討軟件退化的根源 案例分析:演示電商網站付款功能代碼質量下降的過程 1. 起初的設計 2. 隨后的變更 3. 質量不斷下降的過程 軟件質量下降的根源: 1. 軟件總是因變更而變得越來越復雜 2. 軟件結構已經不再適應復雜的軟件需求 3. 必須要調整軟件結構以適應新的軟件需求 4. 重構是保持高質量軟件設計的習慣 兩頂帽子的設計方式 軟件是因需求變更而質量下降嗎? 案例分析:推演軟件變更的設計過程 應對軟件變更的最佳方式:兩頂帽子 1. 重構原有代碼以適應新的需求 2. 實現新的需求 案例:演示兩頂帽子的設計過程 |
第二單元 高質量的軟件設計 | 準確理解高質量代碼 1. 剖析高質量代碼設計的本質 2. 軟件的質量保證:內部質量與外部質量 3. 高質量軟件設計的標準:易于閱讀、易于維護、易于變更 準確理解代碼整潔之道 1. 什么時候應該代碼整潔 2. 函數代碼整潔應當遵循的原則 3. 類與接口代碼整潔應當遵循的原則 4. 注釋代碼的整潔之道 5. 異常處理的代碼整潔之道 案例:實戰項目的整潔代碼展示 案例分析軟件設計原則及其本質 1. 低耦合 1) 依賴反轉原則(DIP) 案例:購票業務類與數據訪問類 2) 開放-封閉原則(OCP) 案例:需求變更與可擴展點設計 案例:Square/Circle的解決方案 2. 高內聚 1) 單一職責原則(SRP) 案例:財務憑證變更帶來的問題 案例:超級大函數與大對象的難題 案例:MySQL讀寫分離的改造過程 2) 不要重復自己原則(DRY) 典型的代碼重復案例與散彈式修改 探討代碼復用的設計難題與軟件重構 案例講解:代碼復用的常用方法 利用DeepSeek進行代碼的優化 1. 國產智能大模型DeepSeek的13個應用場景: 代碼改寫、代碼解釋、代碼生成、中英文翻譯,等等 2. 智能大模型核心應用的精華: 提示詞工程、文檔上傳、搭建本地知識庫 3. AI自動化編程帶來的挑戰: 1)不能交給AI過于復雜的任務 2)AI編寫的代碼如何規范編程,基于某個平臺進行編程 3)AI編寫的代碼,日后如何變更維護 解決方案:以知識庫作為規范指導AI編程 1. 通過知識庫制定DeepSeek軟件開發的模板與規范: 1)文檔模板:架構設計的模板、用例模型的模板、領域模型的模板 2)開發規范:領域對象、服務接口、DSL配置、測試用例的開發規范 2. 基于知識庫進行的DeepSeek軟件開發: 1)基于業務需求進行分析設計 2)將大任務拆分成無數個小任務 3)基于知識庫的規范進行AI編程 4)基于知識庫的規范AI編寫測試用例 |
第三單元 基于DeepSeek的軟件重構 | 軟件重構的概念與設計思想 1. 重構是一系列代碼的等量變換 案例:一個Hello World重構過程 2. 重構的保險索:自動化測試 案例:Hello World的自動化測試過程 3. 軟件修改的四種動機——重構的價值 4. 一個真實的謊言——重構的誤區 5. 重構的主要方法與技巧 重構是高質量編碼的實現方式 1. 重構是代碼整潔與高質量編碼的實現方式 1) 準確理解軟件重構 2) 每次變更的時候,先重構再實現需求 3) 每過一段時間就通過重構整理一次代碼 2. 基于AI的軟件重構思路 1)用AI進行原始代碼的理解 2)用AI進行代碼的改寫與優化 3)用AI編寫測試用例 3. 案例:演練Hello World的維護變更過程 1) 最初的軟件設計 2) 第一次變更:抽取方法與抽取類 3) 第二次變更:抽取接口與系統分層 4)重構完成以后,用測試用例進行驗證 演練一個完整的重構過程 案例分析:重構一個大型遺留系統 1. 重構第一步:分解大函數 超級大函數及其危害 案例:演示大函數產生的過程 案例:演示抽取方法操作步驟 實踐抽取方法會遇到的問題和解決方案 演練AI編程在抽取方法中的應用 2. 重構第二步:拆分大對象 超級大對象及其危害 案例:演示超級大對象的產生過程 案例:演示抽取類的操作步驟 講解單一職責設計原則 案例:演示“分久必合,合久必分”的重構過程 演練AI編程在抽取類中的應用 3. 重構第三步:提高復用率 講解順序編程及其危害 “不要重復代碼”原則 案例:提高代碼復用的6個方法 案例:演示新增代碼時的代碼復用過程 用靜態檢查工具檢查重復代碼 4. 重構第四步:可擴展設計 過度設計 vs. 恰如其分的設計 講解“開放-封閉”的設計原則 案例:講解可擴展設計的4個方法 案例:講解新增代碼的可擴展設計過程 5. 重構第五步:降低耦合度 案例:講解接口、實現與工廠模式 案例:講解外部接口解耦與適配器模式 演練用AI編程進行設計模式的設計 6. 重構第六步:系統分層 反思軟件架構需要怎樣的分層結構 遺留系統如何擁抱需求變化 遺留系統如何應對技術變革 7. 重構第七步:領域驅動設計 領域驅動設計的概念 講解領域模型分析方法 演練一個完整的DeepSeek開發過程 1. 通過知識庫制定DeepSeek軟件開發的模板與規范: 1)文檔模板:架構設計的模板、用例模型的模板、領域模型的模板 2)開發規范:領域對象、服務接口、DSL配置、測試用例的開發規范 2. 基于知識庫進行的DeepSeek軟件開發: 1)DeepSeek輔助的軟件需求探索與編寫需求文檔 2)DeepSeek輔助編寫用例模型 3)DeepSeek輔助編寫領域模型 4)DeepSeek輔助形成數據庫設計,編寫SQL腳本 5)DeepSeek輔助編寫領域對象與服務接口代碼,進行DSL配置 6)DeepSeek輔助,基于某個平臺進行業務代碼的編寫 7)DeepSeek輔助創建測試用例代碼 |
第四單元 設計模式 | 1. 設計模式的由來 2. 設計模式的發展 3. 設計模式對高質量軟件設計的作用 適配器模式及其實戰應用 1. 軟件設計中外部接口的難題 2. 第三方框架帶來的設計難題 3. 適配器模式及其概念 4. 實戰演練AI的設計編碼 適配器模式的應用 1. 適配器模式解決第三方框架帶來的難題 案例:Hibernate適配器的設計 2. 適配器模式解決外部接口的設計難題 案例:第三方支付接口的設計 案例:財務數據接口的設計 策略模式及其實戰應用 1. 工資發放功能遇到的難題 1) 工資發放功能最初的設計及其問題 2) 對問題的分析過程及其新的設計思路 2. 策略模式及其概念 3. 實戰演練AI的設計編碼 策略模式的應用 1. 案例:工資發放功能設計改進的過程 1) 工資發放功能的Java實現 2) 工資發放功能的C++實現 2. 案例:折扣功能的設計實現 1) 深入理解開放-封閉原則 2) 折扣功能的變更與改進過程 工廠模式及其實戰應用 探討軟件設計中遇到的難題 1. 依賴反轉原則的設計難題 2. 開放-封閉原則的設計難題 3. 探討工廠模式的本質 簡單工廠模式的設計實現 1. 簡單工廠模式的C++實現 2. 基于配置的簡單工廠模式 3. 剖析簡單工廠如何實現依賴反轉原則 案例:剖析Spring的beanFactory 4. 解讀工廠模式對設計的重大意義 5. 講解如何創建一個工廠 1) 創建工廠的步驟與關鍵點 2) 利用Spring框架簡化工廠類的設計 6. 實戰演練用AI設計一個工廠 單例模式及其實戰應用 什么是單例模式 1. 設計工廠類面臨的問題 2. 單例模式及其概念 3. 如何實現單例模式 單例模式的應用 1. 用單例模式設計工廠 2. 用單例模式提高性能 原型模式及其實戰應用 什么是原型模式 1. 工廠類在提供產品時遇到的設計問題 2. 原型模式及其概念 原型模式的設計實現 案例:函數調用的無副作用問題 案例:JavsScript中的原型模式 模板方法模式及其實戰應用 什么是模板方法模式 1. 煮咖啡給我們的啟示 2. 設計工廠類的新思路 3. 模板方法模式及其概念 模板方法模式的作用與技巧 案例:一個工廠模板的設計與實現 深入理解不要重復自己原則 1. 重復代碼帶來的嚴重后果 2. 散彈式修改及其解決思路 3. 探討實現代碼復用的難題 4. 代碼復用在不同場合采用的方法 5. 模板方法模式在代碼復用中的作用 裝飾者模式及其實戰應用 1. 業務量增長帶來的多數據源問題 2. 運用裝飾者模式巧妙解決多數據源問題 3. 裝飾者模式及其概念 4. 實戰演練用AI進行設計變更 裝飾者模式的應用 案例:多數據源的設計實現 1. 多數據源問題的分析設計過程 2. 多數據源的設計與實現 案例:商城收銀系統的設計變更過程 1. 商城收銀系統期初的設計 2. 混合策略的設計與實現 3. 多層裝飾者的設計與實現 橋接模式及其實戰應用 1. 對象繼承的泛濫 2. 橋接模式及其概念 3. 實戰演練用AI進行設計變更 橋接模式的應用 案例:員工管理與工資發放的設計 1. 員工管理與工資發放帶來的繼承泛濫問題 2. 采用橋接模式的設計與實現 案例:查詢支持類的設計 1. 查詢支持類遭遇的繼承泛濫問題 2. 查詢支持類的解決方案 3. 單例模式下查詢支持類的設計 深入體會單一職責原則 享元模式及其實戰應用 什么是享元模式 1. Hibernate是怎樣訪問數據的 2. 享元模式及其概念 享元模式的應用 案例:數據緩存的設計實現 案例:享元模式在大數據中的應用 其它設計模式及其實戰應用 用一個情景劇秒懂其它設計模式 觀察者模式:JobHunter的情景劇 代理模式:老板與秘書的差異 命令模式:像工作流一樣處理業務 外觀模式:超級家庭影院的煩惱 構建器模式:SQL Builder的設計 組合模式:如何構建一棵樹 中介者模式:QQ在溝通中的作用 迭代器模式:如何順序訪問一個集合 |
第五單元 關于重構的深度討論 | 什么時候重構 1. 重構是一種習慣 2. 重構讓程序可讀 3. 重構,才好復用 4. 先重構,再擴展 5. 緊急任務時的重構 自動化測試的困境 1. 重構初期的困局 2. 解耦與自動化測試 3. 建立自動化測試體系 4. 通過AI建立自動化測試體系 關于重構效果的評價 1. 評價軟件質量的指標 2. 評價軟件質量的工具 |
六、講師團隊
Ø 范老師 | 業界頂級技術峰會技術分享者
獨立咨詢顧問,暢銷書籍《架構真意》與《大話重構》的作者,規模化敏捷SPC。曾任航天信息首席架構師,哈工大軟件工程碩士,軟件架構及重構的客座講師。從事軟件研發工作近二十年,并且現在一直堅守在大型軟件架構設計一線工作。從需求分析、軟件開發到項目管理、架構設計都有豐富的從業經驗。先后參與了數十個國內大型軟件項目,涉及國家財政、軍工、稅務、醫療等領域的大數據中臺建設、風險防控與人工智能研究。互聯網轉型、微服務轉型及大數據轉型的實踐者與倡導者。同時,還是大型遺留系統改造專業戶,多次參與大型遺留系統改造、軟件系統重構等重大項目,長期關注大型業務系統的品質保證、防止腐化以及技術改造等困擾軟件企業的問題,在遺留系統優化與改造方面有豐富的經驗。
Ø 張老師 | 高級系統架構師、資深IT培訓專家
碩士學歷,資深IT培訓專家,百度、阿里、騰訊等特邀講師。在多年從事的軟件開發和教學領域工作中,先后擔任過高級軟件開發工程師,系統架構師,高級講師。具備豐富的軟件開發經驗和教學經驗。累計授課課時超過9000學時。同時有豐富的企業內訓經驗,從開發到講師到管理,對于軟件培訓有自己獨到的見解,擅長啟蒙教育,通過啟發式的講解,讓學員具備獨立自主的思考并解決問題的能力,培養良好的自學方法和習慣。精通企業級的Android6.0/IOS9.2/webAPP/Cordova、Sql Server 2014、Oracle12C、MySql5.7、mariaDB10.1、VB.net、C#、WCF、Delphi、Powerbuilder、VB、SharePoint2013、Windows Server 2012、RHCE7.2(企業級應用)、NodeJS +ExpressJS+AngularJS+MongoDB+H5+jQuery等。
七、相關證書
參加培訓并通過考試的學員,將獲得由工業和信息化部教育與考試中心統一頒發的《軟件設計模式與重構技術(高級)》職業能力證書。證書長期有效,相關信息可隨時登錄中心官網查詢。