我們先來看看本人對下面這兩個名詞的個人見解:
- 軟件架構:
幾乎每個軟件系統的架構都是不同的,因為軟件架構的第一步就是根據當前項目的重要需求及約束來制定一個個技術決策。
- 軟件框架:
可以分成行業框架和通用框架。
-
- 通用框架是對大多數軟件項目常用的模塊(底層+高層)進行封裝(同時暴露熱點)的一個集合,能提高開發速度以及質量
- 行業框架是針對某特定領域,把類似領域邏輯提取出來進行封裝(同時暴露熱點)的一個集合,能提高開發速度以及質量
- 行業框架可以是基於通用框架之上的。
站在架構師的角度,針對架構的開發,會慢慢演變為針對框架的開發(由於需要考慮復用以及對開發人員友好API特性)
- 伸縮性:一般是指機器級別的橫向擴展,如:web服務器的橫向擴展、數據庫的讀寫分離、中間件的橫向擴展
- 擴展性:是指當需求變更時,系統能否很容易的進行修改、擴展。
- 簡潔性:直接的觀念是AOP,因為AOP能讓開發人員集中注意力於業務邏輯上,而不需要過多考慮非業務邏輯代碼(比如日志、權限、參數的基本驗證等)
- 性能:與伸縮性、算法優化、充分利用CPU能力有關
由於每個項目都是不同的,因此架構也大多數不同,但是由於人的精力有限,不可能樣樣都精通,因此當架構初始化之后,針對不熟悉的
架構還需要進行架構驗證(如同測試人員的BVT)。因此對架構師而言,個人的學習能力、學習速度以及實踐能力都非常重要。那么如何進行架構驗證呢?
1. 找幾個開發人員評審評審框架提供的API,看看反饋,需要修改則修改,或者通過技術培訓解決
2. 使用AOP技術插入必要的日志、性能計數器、內存占用數(當然也可以用其他技術,並非只有AOP技術)
3. 自己進行性能測試、性能分析;或者找技術性測試人員來做
最后別忘了當項目進行之前先進行技術培訓,講解框架的實現原理以及如何使用。
綜上所述,框架與架構質量的好壞會嚴重影響使用者的效率,如:開發人員的開發效率,架構師責任重大啊。
附上一個架構總覽圖: