當我們要準備買東西的時候,要考慮家裡有沒有空間,反之在室內設計時預留空間也很重要。
在前端開發包括需求分析、定義用戶流程、確定元件,然後進行系統開發,在系統設計的時候我們又該預留什麼,該依照什麼去進行設計?
分析需求 → 定義 User Flow 和確認元件 → 系統撰寫
做生意的本質是商業,在各個領域中除了技術本身外最重要的就是商業邏輯。
Domain-Driven Design (DDD) 提供了一種軟體設計和開發方法,強調以業務邏輯和領域 (Domain) 為核心基礎來進行軟體開發。
謎之音: 大多數情況實際上是 Deadline Driven Development
Domain Driven Design
Domain Driven Design 分成三個步驟
- 列出需要解決的商業問題
- 進行建模
- 把商業模型變成可以 POC 程式碼
跨部門溝通的目標是建立 Shared Mental Model
利用領域模型 (Domain Model)、領域詞彙 (Domain Terms)、通用語言 (Ubiquitous Language) 來設計和描述系統,進而可以更快的去了解和在各部門同步使用者的流程、商業模式、系統的運行。
Domain Model
定義領域模型,在商業的世界中除了實作的工程師外最重要的就是該領域的專家 (Domain Expert)。
Domain Model 是一種設計方法,主要著重於定義和建立應用程式的領域模型,這個模型反映了應用程式核心概念和實體之間的關係。
建立領域模型的目的是讓系統能在早期就看到全貌,並持續進行細節的設計, 而不是房子蓋到哪裡才想到哪裡。
就像常見的微服務中 API 互相呼叫可能產生複雜的網路結構,並且讓問題處理變得困難,Domain Model 有助於解決複雜的業務邏輯和需求,讓開發團隊更容易理解並實現應用程式的核心功能。
Open-Closed Principle
建模這件事情來說有點像是定義房屋的結構,而建模可以盡可能的遵守開放封閉原則。
對於擴展是開放的,但對於修改是封閉的
某些規劃需要提前考慮,例如在蓋房子時預留冷氣位置和窗戶開口,因為房屋的結構不允許輕易地修改。
- 擴展開放: 可以客製各式的家具
- 修改封閉: 房屋結構更動
有時候老闆可能會覺得只要換個元件就好了,可是其實換元件就等於整個重寫,所以在系統設計時就要以這樣的理念去設計。
API First
API First 單純是一個術語,關鍵還是在要解決的商業問題。
API-First 首先要對資源和 URL 進行建模,建模的內容則是依照剛剛專家所定義出的領域模型,依照商業問題把該做好做對的事情列出來,選擇正確的資源並確保正確的細粒度非常重要,這樣客戶就能夠獲得所需的功能,並實現靈活性和易維護性。
API First 是一種開發方法,API 本身提供了控制反轉的機制,強調在開發應用程式時優先設計和定義應用程式介面 (API),這包括進入點、資料格式、請求和回應等方面的設計,從 API 設計開始,就是從內容出發,然後著手實現前端和後端系統。
- 促進團隊協作:不同的團隊和開發者之間協作可以同時根據 API 規格進行工作
- 支持前後端分離:前後端分離時前端和後端團隊能夠獨立開發
喜歡這篇文章,請幫忙拍拍手喔 🤣