国产亚洲免费播放片_日韩欧美中文字幕在线韩免费_亚州在线观看视频在线观看_中文字幕AV熟女_中文高清欧美日本_视频一区二区三卡在线观看免费_日本精品人妻久久久_亚洲日韩另类制服无码AV_777米奇影视狠狠狠_国产成人免费无码精品

?

您好!歡迎來到上海艾縱企業(yè)管理咨詢有限公司!

加入收藏

登錄注冊

400-676-1955

專題課程

軟件重構(gòu)實踐訓(xùn)練營

我要報名

編輯日期 2018-06-13  閱讀次數(shù):885 次


【課程簡介】

軟件重構(gòu)面臨的背景都是相似的,程序員們?yōu)榱丝焖偻瓿尚枨蠛蜕暇€而寫出了最基本的代碼。然后在功能的不斷擴(kuò)充過程中,以打補丁的方式對代碼進(jìn)行擴(kuò)充,中間還會面臨著開發(fā)人員的變更和離職。逐漸地,代碼就會變得越來越臃腫,漸漸地變得難以維護(hù)。

很多開發(fā)人員對重構(gòu)有著嚴(yán)重的誤解,錯誤的認(rèn)為重構(gòu)是專門安排一個階段來進(jìn)行的。但是,我們認(rèn)為重構(gòu)是持續(xù)進(jìn)行的,而不是在項目結(jié)束時、發(fā)布版本時、迭代結(jié)束時,甚至不是每天快下班時才進(jìn)行的。重構(gòu)是我們每隔一個小時或者半個小時就要去做的事情。通過重構(gòu),我們可以持續(xù)地保持代碼盡可能干凈、簡單并且具有表達(dá)力。因此,重構(gòu)成為了每個開發(fā)人員必備的基本技能,可是國內(nèi)的開發(fā)人員卻很少去做。

那么,糟糕的軟件代碼會有什么樣的影響呢?首先是開發(fā)效率的降低,在糟糕架構(gòu)下加入新功能,會受之前代碼的影響,可能存在意想不到的改動點和問題點,開發(fā)和調(diào)試時間都會大大增加;其次是故障率的提升,在質(zhì)量低下的代碼中,總是容易隱藏著很多不易發(fā)現(xiàn)的坑,這些都會成為故障的隱患;同時,架構(gòu)也會使得需求的完成大打折扣,使得設(shè)計好的目標(biāo),因為架構(gòu)限制或者性能等原因,只能完成80%甚至更低。

大多數(shù)軟件開發(fā)方面的培訓(xùn)都是關(guān)于新系統(tǒng)的設(shè)計和開發(fā),講師教你如何從無到有創(chuàng)建出一個新的應(yīng)用來。然而,在真實的項目中,許多產(chǎn)品如今往往依然運行在基于復(fù)雜架構(gòu)設(shè)計和傳統(tǒng)技術(shù)實現(xiàn)的遺留系統(tǒng)上,并依賴著它們。如何摸索出有效方法應(yīng)對這些遺留系統(tǒng),已經(jīng)成為我們最需解決的問題之一。

隨著不同產(chǎn)品的推出,不同客戶、不同版本的發(fā)布,需要維護(hù)的遺留代碼越來越多,重構(gòu)也就在所難免。不僅如此,所有的軟件系統(tǒng),經(jīng)過一段時間的維護(hù),都會逐漸變成遺留系統(tǒng),并且都遭遇了緩慢而不可抗拒的腐化。因此,軟件開發(fā)人員不得不面對既有系統(tǒng)的混亂代碼。而本課程正是告訴你如何重構(gòu)既有的遺留系統(tǒng),如何重構(gòu)代碼、重構(gòu)設(shè)計、重構(gòu)架構(gòu)。

本課程教你如何扭轉(zhuǎn)系統(tǒng)腐化,重構(gòu)復(fù)雜遺留系統(tǒng),減低維護(hù)成本。在面對一個錯綜復(fù)雜的、不透明的、令人費解的系統(tǒng)時如何慢慢地、逐步地將其變成一個簡單的、有良好組織和設(shè)計的系統(tǒng)。

【培訓(xùn)特色】

本課程注重實戰(zhàn),采用案例貫穿方式完成實踐,收集了大量的真實案例,針對項目過程中技術(shù)人員常犯的錯誤進(jìn)行了匯總、研討,并形成培訓(xùn)教程。本次培訓(xùn)從程序員的編程思維開始講解,通過大量的真實案例,詳細(xì)地介紹了重構(gòu)需要注意的要點以及難點,這些知識都是講師十幾年經(jīng)驗的總結(jié)。

本次課程1/3時間講解核心思想,1/3時間動手重構(gòu)實踐,1/3點評分析總結(jié)。

 

【學(xué)員基礎(chǔ)】

學(xué)員學(xué)習(xí)本課程應(yīng)具備下列基礎(chǔ)知識:

l. 目前正在面臨復(fù)雜遺留系統(tǒng),必須需要維護(hù)和重構(gòu)

2. 具有面向?qū)ο蠡靖拍睿煜せ驹O(shè)計模式

 

【培訓(xùn)對象】

各類軟件研發(fā)中心的軟件設(shè)計師、架構(gòu)師、項目經(jīng)理、技術(shù)總監(jiān)、質(zhì)量部門經(jīng)理。對于重構(gòu)技術(shù)懷有疑問和困惑,需要梳理解答的團(tuán)隊和個人,效果更佳。

 

代碼重構(gòu)

設(shè)計重構(gòu)

軟件腐爛監(jiān)控

重構(gòu)管理

程序員

必須精通

需要了解

需要了解

需要了解

設(shè)計師

必須精通

必須精通

需要了解

需要了解

架構(gòu)師

必須精通

必須精通

必須精通

必須精通

數(shù)據(jù)庫工程師

需要了解

需要了解

/

/

質(zhì)量管理

/

/

必須精通

必須精通

管理者

/

/

需要監(jiān)控

需要了解

 

【培訓(xùn)時長】

 

3


【課程大綱】

 

以下大綱內(nèi)容較多,實際授課時根據(jù)學(xué)員課前調(diào)查進(jìn)行調(diào)整,并且實際授課不一定按此順序。

 

?

    
    
    

     

    授課內(nèi)容

    第一部分 為什么軟件需要及時重構(gòu)

    第一單元 剖析軟件質(zhì)量不斷下降的源頭

    質(zhì)量不斷下降的表現(xiàn):

    1.    程序代碼越來越亂

    2.    軟件維護(hù)成本越來越高

    3.    軟件變更越來越困難

    4.    無法進(jìn)行新技術(shù)的改造

    以往采取的措施:

    1.    頭痛醫(yī)頭,腳痛醫(yī)腳

    2.    拋棄掉重新編寫

    3.    因擔(dān)心未來變化而做的過度設(shè)計

    帶來的問題

    1.    團(tuán)隊成員越來越多但效率卻越來越低

    2.    測試變得越來越困難而任務(wù)繁重

    3.    軟件系統(tǒng)越來越笨重而不適應(yīng)未來變化

    分析與反思

     

    案例分析:一個遺留系統(tǒng)的演化過程

    1.    起初的設(shè)計

    2.    隨后的變更

    3.    質(zhì)量不斷下降的過程

    軟件質(zhì)量下降的根源:

    1.    軟件總是因變更而變得越來越復(fù)雜

    2.    軟件結(jié)構(gòu)已經(jīng)不再適應(yīng)復(fù)雜的軟件需求

    3.    必須要調(diào)整軟件結(jié)構(gòu)以適應(yīng)新的軟件需求

     

    軟件是因需求變更而質(zhì)量下降嗎?

    案例分析:推演軟件變更的設(shè)計過程

    應(yīng)對軟件變更的更佳方式:兩頂帽子

    1.    重構(gòu)原有代碼以適應(yīng)新的需求

    2.    實現(xiàn)新的需求

    案例:演示兩頂帽子的設(shè)計過程

    案例:財務(wù)憑證生成程序的設(shè)計過程

     

    第二單元 高質(zhì)量的軟件設(shè)計過程

    以往軟件設(shè)計的過程:

    1.    演示以往軟件設(shè)計的過程

    2.    剖析以往軟件設(shè)計的問題與風(fēng)險

     

    小步快跑模式的開發(fā)過程:

    1.    用較快的速度開發(fā)一個最核心的功能

    2.    讓第一個版本運行起來并可以驗證

    3.    在第一個版本的基礎(chǔ)上不斷添加功能:

    a.     每次只添加一個很簡單、很單一的功能

    b.    每次以兩頂帽子的方式添加新功能

    c.     運行、調(diào)試與驗證

    d.    重復(fù)這個過程添加下一個功能

    4.    復(fù)雜的系統(tǒng)就是由一次次正確開發(fā)的不斷積累而成

     

    案例:演示小步快跑的開發(fā)過程

    小步快跑解決的問題:

    1.    復(fù)雜功能有效地解耦

    2.    代碼編寫總是可測試與驗證

    3.    簡化設(shè)計與思考的復(fù)雜度

    4.    適時重構(gòu)以避免軟件退化

    案例:數(shù)據(jù)推送程序的設(shè)計過程

    案例:標(biāo)簽庫的設(shè)計變更過程

     

    測試驅(qū)動設(shè)計

    1.    TDD vs. 后測試開發(fā)

    2.    案例:演示測試驅(qū)動設(shè)計的過程

    3.    測試驅(qū)動設(shè)計的優(yōu)勢

    4.    實踐測試驅(qū)動設(shè)計的難題

    討論:自動化測試腳本應(yīng)當(dāng)由誰來寫?

     

    第二部分 重構(gòu)的概念

    第三單元 何為重構(gòu)

    軟件重構(gòu)的概念

    1.    重構(gòu)是一系列代碼的等量變換

    案例:一個Hello World重構(gòu)過程

    2.    重構(gòu)的保險索:自動化測試

    案例:Hello World的自動化測試過程

    3.    軟件修改的四種動機(jī)——重構(gòu)的價值

    4.    一個真實的謊言——重構(gòu)的誤區(qū)

    5.    重構(gòu)的主要方法與技巧

     

    案例分析:重構(gòu)一個大型遺留系統(tǒng)

    1.    重構(gòu)第一步:分解大函數(shù)

    超級大函數(shù)及其危害

    案例:演示大函數(shù)產(chǎn)生的過程

    案例:演示抽取方法操作步驟

    實踐抽取方法會遇到的問題和解決方案

    2.    重構(gòu)第二步:拆分大對象

    超級大對象及其危害

    案例:演示超級大對象的產(chǎn)生過程

    案例:演示抽取類的操作步驟

    講解單一職責(zé)設(shè)計原則

    案例:演示“分久必合,合久必分”的重構(gòu)過程

    3.    重構(gòu)第三步:提高復(fù)用率

    講解順序編程及其危害

    “不要重復(fù)代碼”原則

    案例:提高代碼復(fù)用的6個方法

    案例:演示新增代碼時的代碼復(fù)用過程

    用靜態(tài)檢查工具檢查重復(fù)代碼

    4.    重構(gòu)第四步:可擴(kuò)展設(shè)計

    過度設(shè)計 vs. 恰如其分的設(shè)計

    講解“開放-封閉”的設(shè)計原則

    案例:講解可擴(kuò)展設(shè)計的4個方法

    案例:講解新增代碼的可擴(kuò)展設(shè)計過程

    5.    重構(gòu)第五步:降低耦合度

    案例:講解接口、實現(xiàn)與工廠模式

    案例:講解外部接口解耦與適配器模式

    案例:講解繼承泛濫問題與橋接模式

    案例:講解方法解耦與策略模式

    案例:講解過程解耦與命令模式

    案例:講解透明擴(kuò)展與組合模式、裝飾者模式

    6.    重構(gòu)第六步:系統(tǒng)分層

    反思軟件架構(gòu)需要怎樣的分層結(jié)構(gòu)

    遺留系統(tǒng)如何擁抱需求變化

    遺留系統(tǒng)如何應(yīng)對技術(shù)變革

    7.    重構(gòu)第七步:領(lǐng)域驅(qū)動設(shè)計

    領(lǐng)域驅(qū)動設(shè)計的概念

    講解領(lǐng)域模型分析方法

    講解原文分析法與領(lǐng)域驅(qū)動設(shè)計

     

    討論:如何制定重構(gòu)項目計劃

    練習(xí):重構(gòu)一個小程序并編寫測試腳本

     

    第四單元 關(guān)于重構(gòu)的討論

    什么時候重構(gòu)

    1.    重構(gòu)是一種習(xí)慣

    2.    重構(gòu)讓程序可讀

    3.    重構(gòu),才好復(fù)用

    4.    先重構(gòu),再擴(kuò)展

    5.    緊急任務(wù)時的重構(gòu)

     

    測試的困境

    1.    重構(gòu)初期的困局

    2.    解耦與自動化測試

    3.    建立自動化測試體系

     

    重構(gòu)的評價

    1.    評價軟件質(zhì)量的指標(biāo)

    2.    評價軟件質(zhì)量的工具

    第三部分 系統(tǒng)級的重構(gòu)項目

    第五單元 在敏捷框架中開展重構(gòu)

    現(xiàn)在大家都在探討SAFe規(guī)模化敏捷

    1.    以較小的資源投入,創(chuàng)造出更多的價值,及時為用戶提供服務(wù)

    2.    更快地交付,更快地反饋,更早地產(chǎn)生價值

    3.    增量構(gòu)建系統(tǒng),動態(tài)制訂里程碑

     

    企業(yè)敏捷實踐遇到的較大挑戰(zhàn)

    1.    敏捷開發(fā):每個迭代都是在上一個版本的基礎(chǔ)上變更

    2.    軟件退化:

    a)      每變更一次,軟件質(zhì)量就下降一次

    b)     變更得越頻繁,軟件質(zhì)量下降的速度就越快

    c)      敏捷開發(fā)的軟件變更是頻繁的

    結(jié)論:不解決軟件變更的質(zhì)量問題,敏捷開發(fā)就不能真正落地

     

    分析軟件退化的根源

    1.    軟件總是從簡單向復(fù)雜轉(zhuǎn)變

    2.    簡單軟件有簡單軟件的設(shè)計

    3.    復(fù)雜軟件有復(fù)雜軟件的設(shè)計

    4.    當(dāng)軟件由簡單軟件向復(fù)雜軟件轉(zhuǎn)變時,重構(gòu)成為必然

     

    保證高質(zhì)量軟件開發(fā)的關(guān)鍵:兩頂帽子

    1.    高質(zhì)量軟件開發(fā)的關(guān)鍵在于每次變更的設(shè)計