[系統設計]- 容易產生設計盲點
正確的設計: 理應是設計出一個不是最差的架構,而不是要試圖設計一個最好的架構 (Never shoot for the best architecture, but rather the least worst architecture)。
錯誤:用越多 Pattern 就越猛
正確的設計: 理應是設計出一個不是最差的架構,而不是要試圖設計一個最好的架構 (Never shoot for the best architecture, but rather the least worst architecture)。
在工作上時常會遇到 JR. 工程師剛上工就想要導入各種系統設計,但往往都無法被接受。原因通常不外乎是沒有延續本來系統的架構為理由,缺乏一制性等等。
要避免這種狀況,會有三個考慮的準則:
對於實際 feature 無關的考量特徵:
指一些明確的設計特徵,像是 “效能,擴充性...” ,且通常會載明載 Spec 中
會直接影響到系統架構的考量特徵:
指的是一些隱含式考量特徵,但這些不一定會被載明 spec 中,像是 安全性
達成系統運行
這一類型是實際撰寫系統採用的設計,但原則上架構越簡單越好,只包含必要的架構
實際操作的時候,應該參考下列流程:
Read Requirements -> Extract needs characteristics -> pick must do characteristics
Read Requirements
閱讀 Feature Requirements(實際商業需求) / non-feature (實際技術需求) 的需求,也或許可以產出隱含的需求。
ex: non-feature 需求是像是 performance 等, 隱含需求像是 security 等等的
Extract needs characteristics
除了要達到商業的目的之外,以及明確的需求之外,隱含的需求未必都要實作
pick must do characteristics
常用的系統Characteristics
System Domain Concern | Architecture characteristics |
---|---|
Mergers and acquisitions | Interoperability, scalability, adaptability, extensibility |
Time to market | Agility, testability, deployability |
User satisfaction | Performance, availability, fault tolerance, testability, deployability, agility, security |
Competitive advantage | Agility, testability, deployability, scalability, availability, fault tolerance |
Time and budget | Simplicity, feasibility |
Reference
[1] Fundamentals of Software Architecture: An Engineering Approach, Mark Richards & Neal Ford
Last updated