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