讀古今文學網 > 程序員必讀之軟件架構 > 通用的抽像集合 >

通用的抽像集合

如果軟件架構是關於軟件系統的結構,那就有必要理解哪些是主要結構單元,以及它們如何在不同的抽像層次上相互融合。

架構結構的簡單模型

假設一個軟件使用了面向對象的編程語言,我喜歡用如下方式來思考它的結構:軟件系統由多個容器構成,容器又由多個組件構成,組件由一個或多個類實現。大多數軟件系統都可以用這種簡單的邏輯結構單元的層級關係來建模。

  • 類 :對我們大多數人來說,在一個面向對象的世界裡,類是軟件系統的最小結構單元。
  • 組件 :組件可以想像成一個或多個類組成的邏輯群組。比如,其他組件可以使用審計組件或認證服務,來確定對特定資源的請求是否放行。組件通常由多個類在更高層次的約束下組合而成。
  • 容器 :容器是指一個在其內部可以執行組件或駐留數據的東西。它可以是從網絡或應用服務器直到富客戶端應用或數據庫的任何東西。作為整個系統的一部分,容器通常是可執行文件,但未必是各自獨立的流程。比如,我把每個Java EE網絡應用或.NET網站都看作一個獨立的容器,不管它們是否運行在同一個物理服務器流程中。從容器的角度理解一個軟件系統的關鍵在於,任何容器間的通信可能都需要一個遠程接口,比如SOAP網絡服務、RESTful接口、Java RMI、Microsoft WCF、報文,等等。
  • 系統 :系統是最高的抽像層次,代表了能夠提供價值的東西。一個系統由多個獨立的容器構成,例如金融風險管理系統、網絡網銀行系統、網站等。

通過精確定義各種結構單元並特化它們之間的聯繫,我們不難看出如何更進一步。但是我不確定這會特別有用,因為它會限制和複雜化我們的目標:理解軟件系統的結構,並建立能描述它的、簡單的抽像集合。