演講嘉賓:姜志輝 - IBM中國杰出講師
2005年IBM開發(fā)者大會最佳講師、最佳講義 獲得者;2007年度開源項目之一AgileUML的主架設(shè)計師。更重要的是他是一位快樂的實用主義程序員。雖然他熱衷于軟件開發(fā)技術(shù)與敏捷開發(fā)實踐。但 是能真正吸引他的是程序與使用者交流和溝通的能力。Jobs是實用開發(fā)的“永久消費者”,幾乎在任何地方,都可以找到軟件開發(fā)哲學的靈感。當不沉浸在編程之樂時,他喜歡在DotA世界里充當一名戰(zhàn)隊的組織者,在那里,人們叫他Rails!
課程簡介:
本課程培訓(xùn)周期為2天
設(shè)計匠藝對每一位軟件開發(fā)人員都應(yīng)該掌握的核心技能和技術(shù)進行了深入的探討,總結(jié)出了大量的最佳實踐,提供了一整套最精煉的技術(shù)集合,通過接近于“近身肉搏”的方式“手把手”傳遞,可以幫助開發(fā)者在開發(fā)中變得游刃有余,極大地提高開發(fā)效率和軟件質(zhì)量。該模塊可以幫助團隊成員掌握以下關(guān)鍵實踐:
•用例驅(qū)動開發(fā)(UDD)
•基于UML的體驗式設(shè)計
•驗收測試驅(qū)動開發(fā)(ATDD)
•測試驅(qū)動開發(fā)(TDD)
•領(lǐng)域驅(qū)動設(shè)計(DDD)
•掌握CleanCode的核心原則與實現(xiàn)方法
•熟練使用結(jié)對編程、單元測試、重構(gòu)與設(shè)計模式的良性閉環(huán)
•對模式的了解更加深入
如Frederick P.Brooks,Jr.所說,我們可以將設(shè)計分為結(jié)果、過程和手法三個部分。
以我個人的經(jīng)歷而言,軟件的設(shè)計結(jié)果可以總結(jié)為三個詞:角色、職責、協(xié)作。設(shè)計的手法同樣可以總結(jié)為三個詞:抽象、封裝、多態(tài)。主流的設(shè)計過程則可以總結(jié)為三個方法:UDD、TDD、DDD。
作為入行15年的總結(jié),這大概就是我對于設(shè)計了解的全部了。
訓(xùn)練營大綱
主題課程地圖
設(shè)計三要素1.設(shè)計的過程
2.設(shè)計的手法
3.設(shè)計的結(jié)果
設(shè)計知識體系圖1.道(設(shè)計的世界觀)
2.法(原則)
a) ISOLD原則(Single Responsibility原則,Open Closed原則,Liskov Substitution原則,Interface Segregation原則,Dependency Inversion原則)
b) DRY原則
c) GRASP原則
d) …
3.術(shù)(模式與方法)
a) 模式(架構(gòu)模式、分析模式、設(shè)計模式、實現(xiàn)模式)
b) 方法:TDD、UDD、DDD、FDD、BDD…
4.器(實踐與工具)
a) 實踐(Pair Programming、Unit Test、Refactor…)
b) 工具(XUnit、Mock、Git、Maven、Jenkins…)
設(shè)計的過程
各種設(shè)計風格1.散彈式設(shè)計
2.撞大運式設(shè)計
3.防御式設(shè)計
4.屠宰式設(shè)計
用例驅(qū)動設(shè)計1.UML統(tǒng)一建模語⾔言
2.UP與OOAD
3.用例與場景
4.ICONIX方法
5.6個W
6.設(shè)計其實可以很簡單
7.可視化設(shè)計畫布
8.用例與場景
9.一起設(shè)計
10.角色、職責、協(xié)作
WorkShop:設(shè)計畫布實戰(zhàn)演練
行為驅(qū)動設(shè)計1.學會講故事
2.活的文檔
3.用正確的方法做正確的事
4.可運行的用戶故事
5.正確的格式
6.基于文本的自動化
7.使用ATDD滿足客戶需求
8.演化出文檔系統(tǒng)
Code Kata:Cucumber
測試驅(qū)動設(shè)計1.用戶故事與場景
2.怎么固定需求
3.代碼未動、測試先行
4.結(jié)對編程、簡單設(shè)計、重構(gòu)
5.保持節(jié)奏
6.可視化設(shè)計
7.角色、職責、協(xié)作
Code Kata: TDD
領(lǐng)域驅(qū)動設(shè)計1.分離領(lǐng)域
2.一個團隊,一種語言
3.模型屬于領(lǐng)域?qū)?br>4.領(lǐng)域?qū)ο蟮?#12131;生命周期
5.領(lǐng)域設(shè)計模式
6.保持可視
7.角色、職責、協(xié)作
WorkShop:DDD實戰(zhàn)演練
設(shè)計的結(jié)果
設(shè)計的三個結(jié)果1.角色
2.職責
3.協(xié)作
職責1.職責是核心
2.職責的抽象
3.職責的封裝
4.職責的粒度
5.職責分類
角色與職責1.GRASP
2.信息專家
3.構(gòu)造者
4.服務(wù)提供者
5.協(xié)調(diào)者
6.控制器
角色的表現(xiàn)形式1.函數(shù)
2.對象
3.類
4.包
5.子系統(tǒng)
6.構(gòu)件
協(xié)作1.協(xié)作的表現(xiàn)形式
2.由協(xié)作決定的職責
3.協(xié)作與角色劃分
設(shè)計的附產(chǎn)品1.經(jīng)驗的總結(jié):模式
2.方法的沉淀:OOAD方法
設(shè)計的手法
設(shè)計的三種⼿手法1.抽象
2.封裝
3.多態(tài)
抽象1.職責的抽象
2.識別變化點
3.關(guān)注點分離
封裝1.封裝不那么簡單
2.封裝職責
3.封裝的層次
4.三種封裝手法
多態(tài)1.依賴解耦
2.組合還是多態(tài)
3.多態(tài)的示例:行為型模式
解構(gòu)模式1.創(chuàng)建型模式的抽離
2.行為型模式中的封裝與多態(tài)
3.結(jié)構(gòu)型模式與協(xié)作
設(shè)計的原本
對此課程感興趣的學員。