l

2018年2月28日 星期三

軟體架構課程的準備

Feb. 28 23:24~23:59

螢幕截圖 2018-02-28 23.56.55


今天是2月最後一天,這整個月一篇部落格文章都沒寫,實在是有點不好意思。不過Teddy也沒閒著,因為這學期在北科大資工所兼任一門新的「軟體架構」課程,所以這幾個月花了大部分的時間與腦力在準備新課程。看了十幾本軟體架構的書,好不容易決定使用使用《Clean Architecture》當作教科書,接著又花時間用力地把書本內容看懂、吸收,想辦法用簡單易懂的方式講給學生聽。

這門課打算用一個小專案來反映Clean Architecture,光是專案要做什麼也想了一陣子。題目不能太大,因為這門課的重點不是coding,不需要也不應該花太多時間在撰寫過於複雜的軟體功能。但專案也不能太小,否則就無法表達Clean Architecture的Entity、Use Case、Controller、Gateway、Presenter以及串接Database、Web、UI等外部系統的架構。

想來想去想到以前研究過的一個開放原始碼監控軟體:Nagios,這個軟體有詳細的說明文件,Domain Model(領域模型)也很清楚,因此學生只需要專注在如何從軟體架構的角度,開發一個微小版的Nagios,然後把它的軟體架構採用Clean Architecture即可。


▼超簡化版的Nagios領域模型。

螢幕截圖 2018-02-28 19.47.31


***

Teddy會採用迭代與增量的方法,讓學生分組逐一把Clean Architecture的每個階層(Layer)都實作過,這樣子會比較有感覺,也不容易忘記,日後也可以直接在新專案中使用此架構。

為了驗證這個方法可行,這幾天Teddy都在寫程式,進度完成了Entity、Use Case、Controller、Gateway,剩下Presenter還沒接上去。俗話說,魔鬼藏在細節中,《Clean Architecture》這本書,光是用看的,就可以學到很多實務上非常有用的觀念。自己實作一次,則可以讓觀念變成實際解決問題的能力。


▼Teddy目前的專案進度

螢幕截圖 2018-02-28 23.52.00


在實作範例的過程中,發現之前研究的Domain-Driven Design(DDD)也可以與Clean Architecture相輔相成,不過DDD本身有點複雜,Teddy還要花點時間融合這兩者,等過一陣子弄得比較清楚之後再跟鄉民們報告。

活到這把年紀,要偷懶也沒人會罵你,靠教新的課程來督促自己重新學習也是挺好的一件事。


***

友藏內心獨白:突破關卡之後還滿有趣的說。