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