軟件架構(software architecture)是一系列相關的抽象模式,用于指導大型軟件系統(tǒng)各個方面的設計。 軟件架構是一個系統(tǒng)的草圖。軟件架構描述的對象是直接構成系統(tǒng)的抽象組件。各個組件之間的連接則明確和相對細致地描述組件之間的通訊。在實現(xiàn)階段,這些抽象組件被細化為實際的組件,比如具體某個類或者對象。在面向?qū)ο箢I域中,組件之間的連接通常用接口_(計算機科學)來實現(xiàn)。
軟件體系結構是構建計算機軟件實踐的基礎。與建筑師設定建筑項目的設計原則和目標,作為繪圖員畫圖的基礎一樣,一個軟件架構師或者系統(tǒng)架構師陳述軟件構架以作為滿足不同客戶需求的實際系統(tǒng)設計方案的基礎。
軟件構架是一個容易理解的概念,多數(shù)工程師(尤其是經(jīng)驗不多的工程師)會從直覺上來認識它,但要給出精確的定義很困難。特別是,很難明確地區(qū)分設計和構架:構架屬于設計的一方面,它集中于某些具體的特征。
在“軟件構架簡介”中,David Garlan 和 Mary Shaw 認為軟件構架是有關如下問題的設計層次:“在計算的算法和數(shù)據(jù)結構之外,設計并確定系統(tǒng)整體結構成為了新的問題。結構問題包括總體組織結構和全局控制結構;通信、同步和數(shù)據(jù)訪問的協(xié)議;設計元素的功能分配;物理分布;設計元素的組成;定標與性能;備選設計的選擇。”【GS93】
但構架不僅是結構;IEEE Working Group on Architecture 把其定義為“系統(tǒng)在其環(huán)境中的最高層概念”【IEEE98】。構架還包括“符合”系統(tǒng)完整性、經(jīng)濟約束條件、審美需求和樣式。它并不僅注重對內(nèi)部的考慮,而且還在系統(tǒng)的用戶環(huán)境和開發(fā)環(huán)境中對系統(tǒng)進行整體考慮,即同時注重對外部的考慮。
在 Rational Unified Process 中,軟件系統(tǒng)的構架(在某一給定點)是指系統(tǒng)重要構件的組織或結構,這些重要構件通過接口與不斷減小的構件與接口所組成的構件進行交互。
從和目的、主題、材料和結構的聯(lián)系上來說,軟件架構可以和建筑物的架構相比擬。一個軟件架構師需要有廣泛的軟件理論知識和相應的經(jīng)驗來事實和管理軟件產(chǎn)品的高級設計。軟件架構師定義和設計軟件的模塊化,模塊之間的交互,用戶界面風格,對外接口方法,創(chuàng)新的設計特性,以及高層事物的對象操作、邏輯和流程。
是一般而言,軟件系統(tǒng)的架構(Architecture)有兩個要素: