[系統設計]- 容易產生設計盲點

正確的設計: 理應是設計出一個不是最差的架構,而不是要試圖設計一個最好的架構 (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. 工程師剛上工就想要導入各種系統設計,但往往都無法被接受。原因通常不外乎是沒有延續本來系統的架構為理由,缺乏一制性等等。

要避免這種狀況,會有三個考慮的準則:

  1. 對於實際 feature 無關的考量特徵:

    指一些明確的設計特徵,像是 “效能,擴充性...” ,且通常會載明載 Spec 中

  2. 會直接影響到系統架構的考量特徵:

    指的是一些隱含式考量特徵,但這些不一定會被載明 spec 中,像是 安全性

  3. 達成系統運行

    這一類型是實際撰寫系統採用的設計,但原則上架構越簡單越好,只包含必要的架構

實際操作的時候,應該參考下列流程:

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

Reference

[1] Fundamentals of Software Architecture: An Engineering Approach, Mark Richards & Neal Ford

Last updated