一、軟件架構定義
軟件架構(SoftWare Architectur)定義較多,簡單來說SA可以看作是一系列有關軟件整體結構與組成的抽象描述和建模,用于說明軟件需求,為軟件開發的全過程提供指導,為參與軟件開發的各個團隊和組織提供一致的溝通語言,貫穿于軟件生命周期的全過程。
二、軟件架構種類
軟件架構按照種類可以分為邏輯架構、物理架構、系統架構。邏輯架構描述軟件的功能組成,物理架構描述軟件的各個功能組件如何在現實網絡中的硬件上進行部署,系統架構描述性能、可靠性、可擴展性等非功能特征。
三、如何描述軟件架構
使用圖形方式最能直觀表達各種思想,軟件架構也不例外。用來表達軟件架構的圖形叫視圖,包括業務用例視圖、邏輯視圖、實施視圖、進程視圖、配置視圖等,使用圖形方式對軟件架構進行描述的語言中最為常用的是UML。
雖然圖形表示簡潔、易懂,且廣泛使用,但以矩形框與線段等圖形為基礎的表達方法和方式,在術語和表達語義上存在著不規范和不準確的缺點。
架構描述語言ADL(Architecture Description Language)是一種形式化語言,在底層語義模型支持下,為軟件架構提供了語法和語義框架,ADL還在研究和發展過程中。
四、軟件架構模式
架構模式也叫架構風格,是描述某一特定領域中軟件的結構和特征,提供特定領域內一種高層的軟件復用模版,通過軟件體系級的復用提高軟件開發效率,降低軟件開發風險。
MVC(Model View Controler)設計模式就是架構模式中的一種,其它還有面向對象風格、SOA風格等,各種風格之間還會交叉影響。
五、軟件框架
軟件框架是半成品,是針對特定領域中軟件結構,從代碼層面提取共性的部分,提供底層代碼級的復用。
從軟件框架和軟件架構模式的定義可以看出,軟件具有不同的架構模式,同一架構模式也可以由不同的框架來實現。SSH(Struts+Spring+Hibernate)就是實現MVC模式的一種輕量級軟件框架。
六、微服務架構
在微服務概念提出后,SOA出現了新的解決方案,服務的構建也不再完全依靠ESB來完成。特別在Docker技術逐漸普及之后,輕量級微服務架構也在更多被運用在企業系統的構建中。
微服務也是一種軟件架構模式,當然也有支持微服務開發的框架,例如SpringBoot就可以作為微服務開發框架。在此框架中可以用SpringBoot開發服務運行在Tomcat上,并用Docker進行封裝;使用Jenkins進行服務部署;使用Zookeeper進行服務注冊和發現;使用Node.js作為服務網關調用服務。 ? ?