在不同的人眼裡「架構」一詞的意思大相逕庭,互聯網上對架構的定義也多如牛毛。過去幾年裡我問過上百人同一個問題,在他們看來「架構」意味著什麼。得到的答案概括如下(排名不分先後):
- 模塊、連接、依賴和接口;
- 大局觀;
- 改變成本很高的事情;
- 難以改變的事情;
- 更加兼顧全局的設計;
- 接口而非實現;
- 審美(比如:藝術般的整潔代碼);
- 概念模型;
- 滿足非功能需求/質量屬性;
- 每件事都有「架構」;
- 溝通能力(抽像、語言、詞彙);
- 計劃;
- 一定程度的嚴格和可靠性;
- 藍圖;
- 系統、子系統、交互和接口;
- 管理;
- 戰略決策的產出;
- 必要的約束;
- 結構(組件和交互);
- 技術方向;
- 戰略和願景;
- 結構單元;
- 實現目標的過程;
- 標準和準則;
- 整個系統;
- 工具和方法;
- 從需求到最終產品的道路;
- 指導原則;
- 技術領導力;
- 構成產品的元素之間的關係;
- 對環境約束和限制的意識;
- 基礎;
- 抽像的觀點;
- 把問題化整為零的過程;
- 產品的骨架、支柱。
難怪找不到一個合適的定義!好在還可以分為名詞和動詞兩大類。無論我們談論的是建造一個物理建築或一個軟件系統,都適用。