習得前端的相關知識之後,通常會轉往後端nodejs做一個全端的應用。原因在於語言上都是使用Javascript,基本上沒有語言與語法上的門檻。但在此時會遇到兩個問題:程式專案管理以及系統設計的問題。程式專案管理涉及單資料夾儲存架構(monorepo),而此篇探討的是系統設計與分析的議題。
由於前端Angular框架有很明確的規範,個人認為除非在多處元件共用Interface或是內部服務時,才需要特地分析、建構前端共用的程式。電商的商業邏輯相對簡單,因此本篇探討後端與資料庫而言,系統架構分析的重要性與益處。
使用任何關聯式資料庫(relational database),與其對接的軟體的錯誤不容易發現,尤其資料庫有上百個表格時,程式碼的維護會越顯困難。本專案只有六個表格,相當簡單。
先註明表格關係,待之後分析程式碼時對照。
下圖是後端的UML分析,紅線部分是經過資料庫與實作比對之後,關係遺漏或是不一致。在系統規模越大時,除錯會日益困難,僅六個表格就有一定的複雜程度。
在程式追蹤時,其實很難發現系統的設計或實作缺失,這也是UML的系統分析圖展現出效益的時機,簡而言之,UML有以下幾項優點:
1. UML可與領域專用物件圖相互轉換,例如金融商業上使用的零用金、損益表、資產負債表等。因此易於與非技術人員進行系統開發的溝統及相關知識的視覺化。
2. 與技術人員在協作上,可依此作為共識;在程式碼的審查與開發上,能據此安排任務的優先順序。同時,面對不斷變更的需求,能於製圖後實作。後續若有大型系統開發,更能展現使用UML做系統分析的好處。
3. 與業主而言,使用UML更能在敏捷開發的步調中,適應快速更改的功能與實作。