軟件結構風格的定義:軟件結構風格是描述某一特定應用領域中系統組織方式的慣用模式(idiomatic paradigm)。體系結構風格定義了一個系統家族,即一個體系結構定義一個詞匯表和一組約束。詞匯表中包含一些構件和連接件組合起來的。體系結構風格反映了領域中眾多系統所共有的結構和語義特性,並指導如何將各個模塊和子系統有效地組織成一租個完整的系統。按這種方式理解,軟件體系結構風格定義了用於描述系統的術語表和一組指導構件系統的規則。
構件的定義:構件是具有某種功能的可重用的軟件模板單元,表示了系統中主要的計算元素和數據存儲。構件有兩種:復合構件和原子構件,復合構件由其他復合構件和原子構件通過連接而成;原子構件是不可再分的構件,底層由實現該構件的類組成,這種構件的划分提供了體系結構的分層表示能力,有助於簡化體系結構的設計。
連接件的定義:連接件表示了構件之間的交互,簡單的連接件如管道(pipe)、過程調用(proceduce call)、事件廣播(event broadcast)等,更為復雜的交互如客戶-服務器(client-server)通信協議,數據庫和應用之間的SQL連接等。
軟件體系結構風格的四要素:(1)提供一個詞匯表;
(2)定義一套配置規則;
(3)定義一套語義解釋規則;
(4)定義對基於這種風格的系統所進行的分析。
軟件體系結構風格的目的:軟件體系結構風格為大粒度的軟件重用提供了可能。
幾種軟件體系結構風格的分類:
(1)管道與過濾器:在管道與過濾器風格的軟件體系結構中,每個構件都有一組輸入和輸出,構件讀輸入的數據流,經過內部處理,然后產生輸出數據流。這個過程通常通過對輸入流的變換及增量計算來完成,所以在輸入被完成消費之前,輸出便產生了。因此,這里的構件被稱為過濾器,這種風格的連接件就像是數據流傳輸的管道,將一個過濾器的輸出傳到另一個過濾器的輸入。此風格特別重要的過濾器必須是獨立的實體,它不能與其他的過濾器共享數據,而且一個過濾器不知道它上游和下游的標識。一個管道與過濾器網格輸出的正確性並不依賴於過濾器進行增量計算過程的順序。
管道與過濾器風格的特點:
優點:使得構件具有良好的隱蔽性和高內聚、低耦合的特點;允許設計師將整個系統的輸入/輸出行為看成是多個過濾器的行為的簡單合成;支持軟件重用;系統維護和增強系統性能簡單;允許對一些如吞吐量、死鎖等屬性的分析;支持並行執行。
缺點:通常導致進程成為批處理結構;不適合處理交互的應用;因為在數據傳輸上沒有通用的標准,每個過濾器都增加了解析和合成數據的工作,這樣就導致了系統性能下降,並增加了編寫過濾器的復雜性。
(2)客戶/服務器:C/S軟件體系結構是基於資源不對等,且為實現共享而提出來的,是20世紀90年代成熟起來的技術,C/S體系結構定義了工作站如何與服務器相連,以實現數據和應用分布到多個處理機上。C/S體系結構有三個主要組成部分:數據庫服務器、客戶應用程序和網絡。
服務器負責有效地管理系統的資源,其任務主要集中於:數據庫安全性的要求;數據庫訪問並發性的控制;數據庫前端的客戶應用程序的全局數據完整性規則;數據庫的備份與恢復。
客戶應用程序的主要任務是:提供用戶與數據庫交互的界面;向數據庫服務器提交用戶請求並接收來自數據庫服務器的信息;利用客戶應用程序對存在於客戶端的數據執行邏輯要求。
客戶/服務器體系風格的特點:
優點:C/S體系結構的優點主要在於系統的客戶應用程序和服務器構件分別運行在不同的計算機上,系統中每台服務器都可以適合各構件的要求,這對於硬件和軟件的變化顯示出極大的適應性和靈活性,而且易於對系統進行擴充和縮小。在C/S體系結構中,系統中的功能構件充分分離,客戶應用程序的開發集中於數據的顯示和分析,而數據庫服務器的開發則集中於數據的管理,不必在每一個新的應用程序中都要對一個DBMS進行編碼。將大的應用處理任務分布到許多通過網絡連接低成本計算機上,以節約大量費用;C/S體系結構具有強大的數據操作和事務處理能力,模型思想簡單,易於人們理解和接受。
缺點:開發成本較高;客戶端程序設計復雜;信息內容和形式單一,因為傳統應用一般為事務處理,界面基本遵循數據庫的字段解釋,開發之初就已確定,而且不能隨時截取辦公信息和檔案等外部信息,用戶獲得的只是單純的字符和數字,既枯燥又死板;用戶界面風格不一,使用復雜,不利於推廣使用;軟件移植困難;軟件維護和升級困難;新技術不能輕易應用。
(3)瀏覽/服務器風格:B/S體系結構主要是利用不成熟的WWW瀏覽器技術。結合瀏覽器的多種腳本語言,用通過瀏覽器就實現了原來需要復雜的專用軟件才能實現的強大功能,並節約了開發成本。從某種程度上來說,B/S結構是一種全新的軟件體系結構。
C/S體系結構的風格特點:
優點:B/S結構的”零客戶端“方式,使組織的供應商和客戶的計算機方便地成為管理信息系統的客戶端,進而在限定的功能范圍內查詢組織相關信息,完成與組織的各種業務往來的數據交換和處理工作,擴大了組織計算機應用系統的功能覆蓋范圍,可以更加充分利用網絡上的各種資源,同時應用程序維護的工作量也大大減少。
缺點:B/S體系結構缺乏對動態頁面的支持能力,沒有集成有效的數據庫處理功能;B/S體系結構的系統擴展能力差,安全性難以控制;采用B/S體系結構的應用系統,在數據查詢等響應速度上,要遠遠低於C/S體系結構;B/S體系結構的數據提交一般以頁面為單位,數據的動態交互性不強,不利於在線事務處理。