March 06 14:00~16:20
今年泰迪軟體新規畫一門兩天課程:【Clean Architecture實作班】(簡潔架構實作班),這是去年「Clean Architecture嘴砲班」的進化版。今年的新課程,打嘴砲練練嘴上功夫還是必要的,此外增加了一個完整的實作練習,讓大家動動腦與練練手上功夫。
關於這個練習題目Teddy規劃了超過一整年,去年設計好的題目經過實驗發現整體來說有點太難。於是今年Teddy從新設計一個練習範例,除了學習Clean Architecture以外,還同時兼顧TDD/BDD/SBE,並借用DDD(領域驅動設計)的Ubiquitous Language(通用語言)、Event Storming(事件風暴)、Aggregate與Entity來幫助學員分析domain model(領域模型)的物件邊界。
今天簡短介紹一下課程範例。
***
看板系統需求
課程範例要開發一個看板系統(Kanban System),稱為cleanKanban。看板範例如下所示,由不同工作階段所組成,以下圖為例,有待辦事項、分析、實作、測試、可佈署等五個工作階段。
▲看板範例
每個工作階段還可以分為子工作階段,以上圖為例,待辦事項細分成「想法」與「Top 6」,分析階段細分成「進行中」與「完成」。
使用者將工作項目移入不同的工作階段,以視覺化方式追蹤工作進度。每個工作階段可以設定WIP上限(Work In Progress Limit),當工作項目已達WIP上限時,就不可以再拉入工作到該工作階段。
最後,系統要計算工作項目在每個工作階段所停留的時間,稱為Cycle Time,以及Lead Time。
結論就是,cleanKanban系統要支援看板系統三原則:
- 視覺化(工作流程)
- 限制WIP
- 管理工作流
***
測試驅動開發/行為驅動開發
Clean Architecture的重點之一就是將系統分層,如下圖所示,由內而外分別是:Entity(Domain Model)、Use Case、Interface Adapter、Framework and Driver。
▲Clean Architecture,圖片來源在此
課程採取測試驅動開發(TDD/BDD/SBE)方式,首先寫出規則(Specification)與例子(Example)。
看到這裡鄉民們可能會想:「要用BDD或Specification by Example方法,需要使用Cucumber或SpecFlow工具嗎?」
答案是:可以使用但先不要。用工具之前,先練習用腦,以免在學習過程中被工具綁住。本練習只需要最簡單的xUnit單元測試工具即可 。
▲用JUnit撰寫第一個失敗的驗收測試
▲因為要套用Clean Architecture,最後的驗收測試長成這樣,直接呼叫use case。
***
事件風暴(Event Storming)
Clean Architecture非常重視領域模型的建立,如果有學過物件導向分析與設計(OOAD)的朋友,可以沿用原本OOAD的技巧來建立領域模型。在這門課中,Teddy將介紹在領域驅動設計很流行的事件風暴,來協助建立領域模型與通用語言。
***
專案結構
最後開發出來的專案結構,反應Clean Architecture的三大原則:
- 分層原則
- 相依性原則
- 跨層原則
***
課程費用
- 原價$22,000元。
- 早鳥優惠: NT$18,900/人(2019年3月19日前報名並完成繳費。)
- 2人團報:$17,900 元/人。
- 嘴砲班舊生優惠:$9,900 元/人(僅限五名)。
課程網址:http://teddysoft.tw/courses/clean-architecture/
上課地點:台北市(近台北車站)。2019年4月19、20日(五、六),09:30-16:30,共12小時 。
***
友藏內心獨白:一個課程三種享受—Clean Architecture、TDD與DDD。
這文章的圖都看不到了
回覆刪除