一個軟件架構是一個軟件系統在其某個階段運行時(run-time)所有元素的抽
象。一個系統可能由很多層抽象和很多個操作階段組成,每個抽象和操作階段都
有自己的軟件架構。
軟件架構的核心是抽象原則:通過封裝來隱藏系統的一些細節,從而更好地識別和支持系統的屬性
現代軟件架構的核心是:組件、連接器、數據。組件是在運行時執行某種功能的軟件單元。這樣的例子有程序、對象、進程、過濾器。
軟件架構(software architecture)是軟件系統在運行時的抽象,而軟件結構(software structure)則是靜態源代碼的屬性.將軟件架構和源代碼結構分離開來是為了更好的關注軟件運行時的特性,這些特性不依賴于一個特定的組件實現.
設計文檔是運行時系統的一部分?系統運行起來后,設計文檔在軟件架構中不扮演任何角色。大樓的圖紙燒毀了,但是大樓還在。
對于基于網絡的應用而言,數據元素在系統中的位置和移動常常是系統行為唯一至
關重要的決定因素.
組件
一個組件是軟件指令和內部狀態的一個抽象單元,通過其接口提供對于數據的轉
換。軟件組件就是擁有接口、其接口形式對外表現或者展示的一個具有一定獨立功能的軟件單元。軟件組件必須擁有接口,否則不能成為組件,或者這樣的組件是沒有任何用處的。
組件是軟件指令和內部狀態的一個抽象單元,通過其接口提供對于數據的轉換。轉換的例子包括從二級存儲將數據加載到內存、執行一些運算、轉換為另外一種格式、使用其他數據來封裝等等。每個組件的行為是架構的一部分,能夠被其他組件觀察到(observed)或看到(discerned)換句話說,組件應該由它為其他組件提供的接口和服務來定義,而不第1章軟件架構12由它在接口之后的實現來定義。Parnas 將此定義為其他架構元素能夠對該組件作出的一組假設。
連接器 一個連接器是對于組件之間的通訊、協調或者合作進行仲裁的一種抽象機制。 連接器的例子包括共享的表述、遠程過程調用、消息傳遞協議和數據流。 連接器通過將數據元素從它的一個接口轉移(transferring)到另一個接口而不改變數據,來支持組件之間的通信。在其內部,一個連接器可以包含一個由組件組成的子系統,為了轉移的目的對數據進行某種轉換、執行轉移、然后做相反的轉換并交付與原始數據相同的結果。
傳輸數據應該是鏈接器最重要的任務。包括客戶有意義的實體數據、組件交互的交互協議數據。對于數據傳輸方向的選擇和目的數據方向的不同,連接器可以對接受的數據進行不同的轉換。這個轉換應該由連接器內部的組件來完成。
數據 數據是組件通過一個連接器接收或發送的信息元素。數據的例子包括字節序列、消息、編碼過的參數、以及序列化過的對象,但是不包括那些永久駐留或隱藏在組件中的信息。 在軟件架構中,數據其實是一種流動的消息。在基于網絡結構的設計中,數據是最重要的概念。你要選擇兩種模式:是在遠程直接連接組件進行交互,還是將組件傳遞到本地在本地空間中進行交互。
|