會議詳情 菜單
2019軟件重構實戰訓練營(11月成都班)

2019軟件重構實戰訓練營(11月成都班)

2019-11-23 08:00 至 2019-11-24 18:00

成都  

麥思博(北京)軟件技術有限公司(msup)   

報名截止

推薦會議:CDEC2020中國數字智能生態大會暨第十三屆中國軟件渠道大會 深圳站

發票類型:增值稅普通發票 增值稅專用發票

-會議內容-

課程簡介

這就是本課程所要講述的內容---重構。簡言之,該課程教你如何扭轉系統腐化,重構復雜遺留系統,減低維護成本。在面對一個錯綜復雜的,不透明的,令人費解的系統時如何慢慢地,逐步地將其變成一個簡單的,有良好組織和設計的系統。

目標收益

你們是否已經存在如下現象,如果有,請參加我們課程,我們給你最佳實踐:
a)遺留系統的文檔已經部分丟失和殘缺,甚至沒有
b)研發團隊對系統的認識非常有限.包括對需求,架構,設計和代碼
c)每當修改系統Bug時,莫名其妙的新bug就會屢次出現
d)增加新功能十分困難,即使簡單新特性都需要很久時間才能完成
e)研發人員非常辛苦加班,并且沒有成就感,沒有工程師愿意維護老代碼,甚至為了逃離維護工作,采取離職
f)如果仔細分析當前系統代碼,就會發現代碼關系是否混亂且難以維護
g)即使意思到重構的重要性,誰應該負責重構,如何開始,哪些需要重構

培訓對象

各類軟件研發中心的軟件設計師、架構師, 項目經理,技術總監,質量部門經理。對于重構技術懷有疑問和困惑,需要梳理解答的團隊和個人,效果最佳。

-主辦方介紹-

 麥思博(北京)軟件技術有限公司(msup) 麥思博(北京)軟件技術有限公司(msup)

麥思博(msup)有限公司發源美國西雅圖,2007年創辦,是一家面向技術型組織的培訓咨詢機構,服務于技術團隊的技能提升、軟件工程的實際應用和產品品質的創新與超越。強調人員、技術、流程和管理的有機結合,注重角色崗位的技能提升與職業發展,以及技術團隊復合管理與協作。每年超過1000家企業續單參與msup旗下公開課、工作坊、案例研究、國際游學等培訓項目。

課程大綱

第一部分 為什么軟件需要及時重構
第一單元 軟件代碼腐爛

內容一:軟件業者的反思: 軟件腐爛
1.軟件腐爛(Software rot),也叫做代碼腐爛(code rot)或軟件腐朽(software decay)。它描述了隨著時間的逝去感知到軟件的緩慢衰退,其將最終導致它變得不完善、不可使用或難以維護。
2.軟件腐爛(Software rot)有兩種形式:
3.1)隱匿的腐爛:軟件逐漸不再(仍)被使用隨著剩余的應用程序的改變變得不能用。它已經被觀察到不再被使用的軟件有可能一年的半衰期;
4.2) 活動的腐爛:軟件隨著不斷地被修改趨向于失去它的完整性。
5.破窗效應與技術債務
6.案例演示1-通過演示大型項目,隨著客戶需求的變化,導致軟件結構混亂,大家反思,為什么? 你認為軟件腐爛的原因? 反思你們公司的軟件系統也面臨這樣的問題嗎?

第二部分 重構基本概念
第二單元 何為重構

內容一:重構
1.重構概述
2.何時重構
3.重構的誤區
4.重構是持續進行的,不要先編寫爛代碼,再抽出重構
5.如何發現哪些地方需要重構
6.如何保證重構的正確
7.如何測試重構
8.通過一個小案例演示重構的基本思想(什么時間重構,如何發現重構點,如何保證重構的正確性,最后如何驗收)

內容二:案例—通過實際項目演示重構
1.介紹項目需求情況,進行設計
2.閱讀代碼指出代碼壞癥狀
3.通過重構逐步改善代碼質量
4.通過該案例演示重構的過程,我們遇到的難處,如何解決?

內容三:重構關鍵—代碼的壞味道?
1.代碼壞味道概述
2.代碼壞味道的分類
3.識別代碼壞味道,是重構的最重要一步
4.所謂重構,無非就是嗅到壞味道,然后,一小步一小步的改了它。問題是,很多人對壞味道的容忍度讓他們嗅不到壞味道,
5.案例分析—通過真實項目的代碼,分析代碼壞味道

內容四:代碼壞味道—代碼的質量底線
1.代碼壞味道概述
2.代碼壞味道的分類
3.代碼壞味道----低級篇(重復的代碼、過長的函數、過大的類、過長的參數列表、發散式變化、分散的修改)
4.代碼壞味道----中級篇(偽面向對象的調用、數據泥團、基本類型的誤用、switch-case結構的誤用、平行繼承體系、過薄的類、只有局部意義的成員變量)
5.代碼壞味道----高級篇
6.通過案例,讓學員尋找代碼壞味道
7.可以根據客戶現在的項目作為案例進行現場分析,找出相應的代碼壞味道

內容五:某項目分析----重點了解現實項目代碼的充斥大量壞味道
1.介紹項目需求情況,閱讀現有代碼指出代碼壞癥狀
2.不看不知道,代碼到底有多爛—觸目驚心的代碼
3.通過重構逐步改善代碼質量
4.本案例學習多種重構方式

第三單元 重構

內容一:重構
1.重構手法概述
2.簡要演示重構的主要手法
3.使用IDE重構工具進行重構
4.通過案例演示如何通過重構工具完成重構

內容二:Rhythm of Refactoring -baby step
1.Baby steps involve making a few code changes and then checking your work by running tests. Typical refactorings take seconds or minutes to perform
2.The Rhythm of Refactoring goes like this:
a)Verify that all automated tests (microtests) pass?
b)Decide what code to change?
c)Implement one or more refactorings carefully?
d)Run the microtests whenever you wish to confirm that changes have not altered system behavior?
e)Repeat until the refactoring is complete or revert to an earlier state?

內容三: Refactoring Strategies & Tactics?
1.Refactoring Strategy: Piecemeal Refactoring?
2.Refactoring Strategy:Divide & Conquer?
3.Refactoring Strategy:Narrowed Change?
4.Refactoring Strategy:Parallel Change?
5.Refactoring Strategy:Unified Methods?
6.Refactoring Strategy:Evolved Target?
7.Refactoring Strategy: Graceful Retreat?
8.Refactoring Strategy: Gradual Cutover?
9.Refactoring Strategy: Preparing for Change?
10.Refactoring Tactic: Rejected Parameter?
11.Refactoring Tactic: Caller Swap?
12.Refactoring Tactic:Encapsulated Dependency

第四單元 重構難題

內容一:重構技術難題
1.如何發現重構點
2.知道重構的目標(結果)
3.如何去重構—重構實踐
4.如何保證重構的正確性-單元測試

內容二:重構業務難題
1.重構手法概述
2.簡要演示重構的主要手法

第三部分 重構實戰一函數相關重構
第五單元 函數相關重構

內容一:函數的重構
1.函數的重構
2.巨型函數的種類
a)項目列表式巨型方法
b)鋸齒狀巨型方法
3.分解函數
4.助手方法提取
5.利用自動重構對付巨型方法
6.利用手工重構對付巨型方法
7.引入感知變量
8.函數依賴收集
9.分解助手方法和方法對象
10.通過案例介紹長函數的重構最佳實踐

內容二:高質量函數/過程
1.為什么需要函數
2.函數復雜度度量
3.函數圈復雜度以及度量
4.函數抽象層次-單一抽象層次原則SLAP(Single Level of Abstrction Principle)
5.函數實現模式之—組合函數(Composed Method)
6.萬惡之源—函數過長
7.函數的單一職責
8.函數第一原則:是要短小,函數第二原則:是還要短小,函數第三原則:是必須短小
9.函數重構之道—抽取方法(Extract Method)和抽取對象函數
10.函數命名—怎樣取好的函數名
11.通過大量項目代碼分析,函數的遇到的各種問題,如何編程高質量函數

內容三:函數易理解與溝通
1.函數主體流
2.函數的異常處理
3.函數主題流程簡化方法1-助手方法
4.助手方法的應用場景
5.助手方法的效果
6.函數主題流程簡化方法2-函數對象(MethodObject)
通過真實項目代碼進行分析,如果提高代碼的可讀性

內容四:函數10個一
1.每個變量只用于單一用途
2.每一個行代碼只表達一件事
3.一個循環只做一件事
4.單一抽象層次原則
5.代碼組織得一次只做一件事情
6.函數體內只關注一種變化的原因(動機)
7.函數應該遵守單一職責
8.函數圈復雜應該小于一十
9.函數第一原則是必須要短小
10.編寫函數時必須一心一意,專注,懷有謙卑的心態

第四部分 重構實戰4一模塊/架構重構
第六單元 重構模式

內容一:重構到模式
1.軟件設計的基本原則
2.設計模式概述
3.設計模式的本質論
4.設計模式如何適應變化和封裝
5.重構到模式的思路

內容二:案例---重點介紹重構基本類型依賴和對應模式
1.通過案例學習以下重構到模式手段
2.以State取代狀態改變條件語句
3.以Strategy取代條件邏輯
4.以Composite取代隱含樹
5.以Interpreter取代隱式語言
6.轉移裝飾功能到Decorator
7.用Builder封裝Composite
8.重點學習案例的重構到模式的過程

內容三:案例---重點介紹重構代碼重復和對應模式
1.通過案例學習以下重構到模式手段
2.構造Template Method
3.以Composite取代一/多之分
4.引入Null Object
5.用Adapter統一接口
6.用Fatory Method引入多態創建
7.重點學習案例的重構到模式的過程

第七單元 模塊重構

內容一:模塊重構?
1.結合以下問題進行分析,具體內容還在整理之中
2.由于有些同事不會去分析數據流,不會去根據數據流去抽象和設計,從而導致了數據流的不少處理環節的代碼互相耦合嚴重,公有變量不合理。建議去談談從數據流進行抽象和設計的方法。
3.我們提供給客戶的軟件產品,二次開發不太方便(可讀性差,可擴展性差,可維護性差)。如何通過重構去達成更好的二次開發便利性?
4.如何通過合理的調整,確保迭代開發的過程真正做到“增量開發”,而不是“修改”已有代碼?
5. 如何屏蔽硬件變化導致的軟件系統需要大幅度的修改?
6.分析某項目,演示模塊重構,如何在大型應用系統進行模塊重構

第八單元 架構重構

內容一: 架構重構
1.軟件架構概述
2.遺留系統的軟件架構恢復
3.軟件架構的重構時機
4.軟件架構的重構步驟
5.架構壞味道
6.架構重構策略


內容二:案例分析—某互聯網項目架構重構(根據時間調整)
1.項目背景以及相關需求
2.軟件架構的演進與重構過程
3.質量屬性對軟件架構的驅動
4.架構的可擴展性架構
5.緩存技術在架構之中的應用
6.Web層的架構策略
7.中間層的架構和集群策略
8.大型并發系統Session的復制和容錯架構策略
9.數據的架構
10.該案例主要演示軟件架構的重構策略

第九單元 重構管理

內容一:安全重構?
1.重構的恐懼心里
2.重構勇氣
3.安全重構和祈禱式重構
4.安全重構保證
5.通過案例如何保證重構的正確性

劉捷

咨詢公司曾任職BEA(中國)資深軟件架構

曾任職BEA(中國)資深軟件架構師,十余年的企業軟件架構、開發和管理經驗,側重于企業應用軟件架構設計.主要負責客戶大型項目的架構設計和研發。

作為技術專家保證項目的成功實施,運行和維護。參加過全國/全省多個大型的計算機應用項目,擅長的領域包括電信,金融、稅務,大型互聯網web2.0應用等。

此前就職于IBM,任軟件架構師。在此之前曾任日本東京一家軟件企業的資深技術顧問。

-會議門票-

會務費:6800元/人,僅參會,住宿交通自理

會議標簽:

軟件 軟件架構 軟件重構

溫馨提示
酒店與住宿: 異地參會客戶請注意,為防止會議臨時變動,建議您先與活動家客服確認參會信息,再安排出行與住宿事宜。
退款規則: 活動各項資源需提前采購,購票后不支持退款,可以換人參加。

相關會議

分享到

QQ好友 QQ空間 微博 ×
成年免费三级视频-成年大片免费视频播放