這個定義側重於區分處理組件、數據組件和連接組件,其他定義和方法中基本維持這個方法。與“軟件架構”相比,“軟件架構”壹詞多用於學術研究領域,“軟件架構”多用於工程實踐領域。兩者在外文中都稱為“軟件架構”,在IEEE中定義為:“系統的基本組織,包括組件和環境之間的關系,以及指導其設計和演化的原則。”
雖然軟件體系結構已經廣泛應用於軟件工程領域,但是至今還沒有壹個公認的定義。許多專家學者從不同的角度和側面對軟件架構進行了描述。典型的定義是:
(1)瑪麗·肖和大衛·加蘭認為,軟件架構是軟件設計過程中的壹個層次,超越了計算過程中的算法設計和數據結構設計。架構問題包括整體組織和全局控制、通信協議、同步、數據訪問、為設計元素分配特定功能、設計元素的組織、規模和性能,以及在各種設計方案中進行選擇。軟件體系結構處理基於算法和數據結構的總體系統結構的設計和描述的壹些問題,例如全局組織和全局控制結構、關於通信、同步和數據訪問的協議、設計組件的功能定義、物理分布和綜合、設計方案的選擇、評估和實施等。
(2)Kruchten指出軟件體系結構有四個視角,分別從不同的方面描述系統:從概念的角度描述系統的主要組件及其關系;模塊角度包括功能分解和層次結構;運行角度描述了系統的動態結構;代碼視點描述了開發環境中各種代碼和庫函數的組織。
(3)Hayes Roth認為軟件體系結構是壹種抽象的系統規範,主要包括功能組件及其行為所描述的組件之間的互連、接口和關系。
(4)David Garlan和Dewne Perry在1995年的《IEEE軟件工程雜誌》中采用了以下定義:軟件架構是壹個程序/系統的各個組件的結構,它們之間的關系,設計的原則和隨時間演進的指導原則。
(5)Barry Boehm和他的學生提出,壹個軟件體系結構包括壹組軟件和系統組件、互連和約束;系統需求的集合;用壹個基本原理來說明這個組件、互連和約束能滿足系統要求。
(6)1997年,Bass、Ctements和Kazman在《使用軟件體系結構》壹書中給出了如下定義:壹個程序或計算機系統的軟件體系結構包括壹個或壹組軟件構件、軟件構件的外部可見特征及其關系。其中,“軟件的可見特征”是指軟件組件提供的服務、性能、特性、錯誤處理、資源利用等。