多年以來,參與過幾個軟體專案,歷練過程式設計師、系統分析師、系統架構師,甚至專案經理。這段時間以來,系統設計與開發多以OOAD與之前的經驗為依據,雖然沒有什麼大問題,但也總覺得沒有太多系統性的思考與規劃,甚至以不同角度規劃的系統,會出現矛盾的情況,只好折衷與取捨之後,才能往下,更別說時常會糾結在使用什麼前端技術、框架與資料庫等。
簡稱 DDD的領域驅動設計(Domain Driven Design)提供了許多的建模建議,與簡潔架構(Clean Architecture) 闡述了如何讓軟體架構層次分明、更易於維護與發展,引起我莫大的興趣;雖然看過一些書籍、聽過一些演講與自己公司相關文件,但沒有機會推展到實作階段,總有些隔靴搔癢與遺珠之憾。Pivotal 有一群具有實戰經驗的服務團隊,無奈我尚未等到他們來到台灣服務客戶。
泰迪軟體一直在這些主題有許多的闡述與課程,這次終於有時間可以參加,實在幸運,也重新審視自己已知或是誤認的知識。趁著這次課程結束與工作調整的機會,正好可以再次閱讀相關書籍,找幾個過去參與過的專案進行驗證實作,並寫下心得筆記,當作迎接未來挑戰的準備。期待在這一連串的驗證過程,除了前述的兩個方法論納入,也將設計模式、無暇的程式碼與設計驅動開發等加入,讓過去看起來片段的知識,更加有連貫性。
簡單說明我的計畫,以下圖所示的虛擬訂單系統為目標:

- 以Event Storming 為系統建模
- 使用 Clean Architecture 設計系統架構
- 導入TDD、BDD
- 部署至容器平台
- 以上述步驟,再為之前參與的交易系統做一次
我喜歡Head First 一系列的書籍,他們總能以說故事的方式,去迭代與演進書中的範例程式,因此,我做的這些筆記、建模、程式碼會以迭代演進的方式進行。我打算運用Git的機制,進行版本控管,可以記錄下我的摸索過程,也算是對自己職業生涯的回顧與展望。