本課程不僅講解高質(zhì)量軟件設計的理論知識,更關鍵是將這些知識投放到各個真實的設計場景中。在這些場景中,可以看到我們要面對的設計難題,通過對設計難題的深入剖析,尋找問題的根源,對癥下藥,從而制訂出正確的設計方案。課程的案例選取了許多在需求變更中不斷變化的設計過程,從而用慢動作的手法展現(xiàn)了,最初的需求與設計是怎樣,第一次變更的設計,第二層變更的設計,第三次變更的設計…這樣的過程展示了,如何在需求變更的過程中,通過每一次正確的設計,不讓軟件退化,來保證高質(zhì)量的軟件設計。
首先深入剖析軟件質(zhì)量下降的根源,提出重構(gòu)是軟件變更中保持高質(zhì)量的必然,講解如何運用“兩頂帽子”的方式應對變更,拒絕腐化。站在實戰(zhàn)的角度講解高質(zhì)量軟件設計的“小步快跑”過程。接著,用真實案例講解已經(jīng)代碼腐化的遺留系統(tǒng)是如何通過“軟件重構(gòu)七步曲”,由簡入深、循序漸進地重構(gòu)一個大系統(tǒng)。課程的最后,更加深層次地講解軟件重構(gòu)面臨的難題,以及有效地解決之道。
初中高級工程師、企業(yè)架構(gòu)師、軟件設計師;
各類軟件研發(fā)中心的軟件設計師、架構(gòu)師、項目經(jīng)理、技術總監(jiān)、質(zhì)量部門經(jīng)理;
對于重構(gòu)技術懷有疑問和困惑,需要梳理解答的團隊和個人;
學員基礎:
目前面臨復雜遺留系統(tǒng),必須要維護和重構(gòu);
具有面向?qū)ο蟮幕靖拍?,熟悉基本設計模式。
通過大量的真實案例,詳細地介紹軟件設計過程中需要注意的要點以及難點;
課程1/3時間講解核心思想,1/3時間動手重構(gòu)實踐,1/3點評分析總結(jié);
從而切實有效地提高學員的設計開發(fā)水平,有效地改善軟件設計質(zhì)量。
-- 什么是高質(zhì)量的軟件設計;
-- 軟件設計原則;
-- 適配器模式;
-- 策略模式;
-- 工廠模式;
-- 單例模式;
-- 原型模式;
-- 模板方法模式;
-- 裝飾者模式;
-- 橋接模式;
-- 享元模式;
-- 其它設計模式;
-- 剖析軟件質(zhì)量不斷下降的根源;
-- 高質(zhì)量的軟件設計過程;
-- 何為重構(gòu);
-- 關于重構(gòu)的討論。
學習內(nèi)容
軟件設計模式
第一部分 高質(zhì)量軟件設計
第一章:什么是高質(zhì)量的軟件設計
情景?。很浖O計焦慮癥
1)上次的設計太糟糕了,痛下決心以后要好好設計
2)再次進行軟件設計時卻不知道該怎樣設計
探討:如何進行高質(zhì)量的軟件設計
1)軟件的質(zhì)量保證:內(nèi)部質(zhì)量與外部質(zhì)量
2)高質(zhì)量軟件設計的標準:易讀、易于維護、易于變更
第二章:軟件設計原則
易于閱讀:
易于維護與變更
探討軟件設計模式:
1)設計模式的由來
2)設計模式的發(fā)展
3)設計模式對高質(zhì)量軟件設計的作用
第二部分 軟件設計模式
第三章:適配器模式
什么是適配器模式
適配器模式的應用
1)適配器模式解決第三方框架帶來的難題
案例:Hibernate適配器的設計
2)適配器模式解決外部接口的設計難題
案例:第三方支付接口的設計
案例:財務數(shù)據(jù)接口的設計
第四章:策略模式
什么是策略模式
策略模式的應用
案例:工資發(fā)放功能設計改進的過程
案例:數(shù)據(jù)導出功能的設計實現(xiàn)
案例:財務憑證生成功能的設計過程
練習:財務憑證生成功能的設計與實現(xiàn)
第五章:工廠模式
探討軟件設計中遇到的難題
簡單工廠模式
案例:數(shù)據(jù)導出功能的工廠實現(xiàn)
工廠方法模式
案例:SAX框架的工廠類設計
抽象工廠模式
案例:標簽庫的設計改進過程
第六章:單例模式
什么是單例模式
單例模式的應用
1)單例模式帶來的設計變革
2)單例模式改變了很多軟件的設計
第七章:原型模式
什么是原型模式
1)工廠類在提供產(chǎn)品時遇到的設計問題
2)原型模式及其概念
原型模式的設計實現(xiàn)
案例:函數(shù)調(diào)用的無副作用問題
案例:JavsScript中的原型模式
第八章:模板方法模式
什么是模板方法模式
1)煮咖啡給我們的啟示
2)設計工廠類的新思路
3)模板方法模式及其概念
模板方法模式的作用與技巧
案例:一個工廠模板的設計與實現(xiàn)
深入理解不要重復自己原則
第九章:裝飾者模式
什么是裝飾者模式
1)業(yè)務量增長帶來的多數(shù)據(jù)源問題
2)運用裝飾者模式巧妙解決多數(shù)據(jù)源問題
3)裝飾者模式及其概念
裝飾者模式的應用
案例:多數(shù)據(jù)源的設計實現(xiàn)
案例:商城收銀系統(tǒng)的設計變更過程
重新理解里氏替換原則
1)透明的功能擴展
1)里氏替換原則
練習:商場收銀系統(tǒng)的2種設計與實現(xiàn)
第十章:橋接模式
什么是橋接模式
1)對象繼承的泛濫
2)橋接模式及其概念
橋接模式的應用
案例:員工管理與工資發(fā)放的設計
案例:查詢支持類的設計
深入體會單一職責原則
第十一章:享元模式
什么是享元模式
1)Hibernate是怎樣訪問數(shù)據(jù)的
2)享元模式及其概念
享元模式的應用
案例:數(shù)據(jù)緩存的設計實現(xiàn)
案例:享元模式在大數(shù)據(jù)中的應用
第十二章:其它設計模式
觀察者模式:JobHunter的情景劇
代理模式:老板與秘書的差異
命令模式:像工作流一樣處理業(yè)務
外觀模式:超級家庭影院的煩惱
構(gòu)建器模式:SQL Builder的設計
組合模式:如何構(gòu)建一棵樹
中介者模式:QQ在溝通中的作用
迭代器模式:如何順序訪問一個集合
軟件重構(gòu)實戰(zhàn)
第一部分 為什么軟件需要及時重構(gòu)
第一單元:剖析軟件質(zhì)量不斷下降的根源
質(zhì)量不斷下降的表現(xiàn)/以往采取的措施/帶來的問題/分析與反思
案例分析:一個遺留系統(tǒng)的演化過程
軟件質(zhì)量下降的根源
1)軟件總是因變更而變得越來越復雜
2)軟件結(jié)構(gòu)已經(jīng)不再適應復雜的軟件需求
3)必須要調(diào)整軟件結(jié)構(gòu)以適應新的軟件需求
軟件是因需求變更而質(zhì)量下降嗎?
案例分析:推演軟件變更的設計過程
應對軟件變更的最佳方式:兩頂帽子
案例:演示兩頂帽子的設計過程
案例:財務憑證生成程序的設計過程
第二單元:高質(zhì)量的軟件設計過程
案例講解軟件設計原則
1)低耦合
案例:購票業(yè)務類與數(shù)據(jù)訪問類
案例:需求變更與可擴展點設計
案例:Rectangle/Square的問題
案例:查詢參數(shù)傳遞類的問題
2)高內(nèi)聚
案例:財務憑證變更帶來的問題
案例:超級大函數(shù)與大對象的難題
案例:MySQL讀寫分離的改造過程
以往軟件設計的過程
1)演示以往軟件設計的過程
2)剖析以往軟件設計的問題與風險
小步快跑模式的開發(fā)過程
案例:演示小步快跑的開發(fā)過程
案例:數(shù)據(jù)推送程序的設計過程
第二部分 如何進行軟件重構(gòu)
第三單元:何為重構(gòu)
軟件重構(gòu)的概念
1)重構(gòu)是一系列代碼的等量變換
案例:一個Hello World重構(gòu)過程
2)重構(gòu)的保險索:自動化測試
案例:Hello World的自動化測試過程
3)軟件修改的四種動機——重構(gòu)的價值
4)一個真實的謊言——重構(gòu)的誤區(qū)
5)重構(gòu)的主要方法與技巧
案例分析:重構(gòu)一個大型遺留系統(tǒng)
1)重構(gòu)第一步:分解大函數(shù)
案例:演示大函數(shù)產(chǎn)生的過程
案例:演示抽取方法操作步驟
2)重構(gòu)第二步:拆分大對象
案例:演示超級大對象的產(chǎn)生過程
案例:演示抽取類的操作步驟
案例:演示“分久必合,合久必分”的重構(gòu)過程
3)重構(gòu)第三步:提高復用率
案例:提高代碼復用的6個方法
案例:演示新增代碼時的代碼復用過程
4)重構(gòu)第四步:可擴展設計
案例:講解可擴展設計的4個方法
案例:講解新增代碼的可擴展設計過程
5)重構(gòu)第五步:降低耦合度
案例:講解接口、實現(xiàn)與工廠模式
案例:講解外部接口解耦與適配器模式
6)重構(gòu)第六步:系統(tǒng)分層
反思軟件架構(gòu)需要怎樣的分層結(jié)構(gòu)
遺留系統(tǒng)如何擁抱需求變化
遺留系統(tǒng)如何應對技術變革
7)重構(gòu)第七步:領域驅(qū)動設計
案例:智能溫控器分析設計過程(嵌入式+物聯(lián)網(wǎng))
練習:重構(gòu)一個小程序并編寫測試腳本
第四單元:關于重構(gòu)的討論
什么時候重構(gòu)
測試的困境
重構(gòu)的評價
無認證考試
暫無開班信息
ES6開發(fā)實戰(zhàn)課程
本課程全面介紹ES6中常見的技術及性能問題,教會學習者掌握ES6核心技術和技術原理,能夠快速完成ES6語言的特點和使用。
開課時間:暫無
Springboot框架高級整合
本課程全面深入講解Spring Boot框架及Spring MVC,涵蓋自動裝配、依賴管理、數(shù)據(jù)訪問、日志測試等各個方面,幫助學員掌握基于Spring Boot的開發(fā)和測試技術。
開課時間:暫無
軟件工程造價師
本課程被納入到工業(yè)和信息化人才培養(yǎng)工程課程體系,考試合格者將獲得 “軟件工程造價師”證書,學員信息將被錄入到工業(yè)和信息化技術技能人才庫。
開課時間:暫無