本文通過介紹幾種軟件開發(fā)中常見軟件體系結(jié)構(gòu)模型,以及對幾種模型進行分析比較,從而為軟件開發(fā)過程中軟件體系結(jié)構(gòu)的選擇提供一些思路,并減少一些開發(fā)軟件過程中的風(fēng)險。 

  【關(guān)鍵詞】軟件體系結(jié)構(gòu) 結(jié)構(gòu)模型 管道過濾器 MVC模型 

  計算機應(yīng)用越來越廣泛和深入,計算機軟件規(guī)模和種類也變得更為復(fù)雜和多樣化。在軟件開發(fā)過程中,設(shè)計開發(fā)人員所要考慮的,不僅僅是系統(tǒng)的功能需求,還要更多的考慮軟件后期維護和升級等問題,因此軟件體系結(jié)構(gòu)的設(shè)計選擇對于一個軟件開發(fā)過程十分重要。自軟件體系機構(gòu)出現(xiàn)以來,其結(jié)構(gòu)、模式也在不斷變化與發(fā)展,目前,有幾種比較常見的軟件體系結(jié)構(gòu)模型,本文就對這幾種常見的結(jié)構(gòu)模型進行介紹以及對它們進行簡單的比較分析。 

  1 層次體系結(jié)構(gòu)模型 

  層次體系結(jié)構(gòu)模型是一種非常常見的體系結(jié)構(gòu)模型,它的基本思想是將系統(tǒng)在水平方向上劃分為多個抽象層次,中間層(第一層和最后一層除外)既服務(wù)于上層,又被下層服務(wù)。此外,層次之間的通信既可以相鄰層次間進行,也可以通過協(xié)議隔層進行。使用最為廣泛的分層體系結(jié)構(gòu)是分層通信協(xié)議,我們常用的TCP/IP網(wǎng)絡(luò)就是這種模型。這種結(jié)構(gòu)下,與上層的通信都依靠于每一層的一個抽象功能,低層通信定義在低層次上,一般來講,最底層與物理層次相連,其他常見的和最底層連接的有底層數(shù)據(jù)庫連接或者操作系統(tǒng)連接。 

  分層體系結(jié)構(gòu)非常常見,優(yōu)點也非常明顯,有以下幾點: 

 。1)抽象程度遞增。分層體系結(jié)構(gòu)中每層的抽象程度不一樣,遞增的設(shè)計能夠使得系統(tǒng)的復(fù)雜程度更為容易被軟件開發(fā)設(shè)計人員理解和掌握,從而按照復(fù)雜程度分解其功能。 

 。2)支持系統(tǒng)功能增強。由于通信交互通常發(fā)生在每層和上下層之間,對于軟件的全局相對來說更容易把握,因此在面對需求變化或者軟件需要升級時,就可以通過在某一層修改功能或者增加功能來實現(xiàn)。 

 。3)支持功能復(fù)用。一般來說,對于服務(wù)接口的定義不會變,因此,不同接口實現(xiàn)之間交換使用就可以在同一層進行。通常,會定義一個標(biāo)準(zhǔn)接口的不同實現(xiàn)方法。 

  層次結(jié)構(gòu)模型也有以下幾個缺點: 

 。1)更改層麻煩。修改底層對高層產(chǎn)生影響時,則此底層的上層都需要進行修改。 

  (2)效率低。層次之間的通信需要進行各種參數(shù)的傳遞與轉(zhuǎn)換;高層對于底層的一些執(zhí)行并不需要等。 

  (3)層次的粒度難以確定。 

  2 管道與過濾器結(jié)構(gòu)模型 

  過濾器為功能模塊,功能模塊之間的連接(數(shù)據(jù)流的輸入輸出)為通道,兩者共同組成了管道與過濾器結(jié)構(gòu)模型。功能模塊間相互獨立,即過濾器不需要進行狀態(tài)之間的交互為管道過濾器模型的一個重要的特性,其中,若輸入輸出發(fā)生在任兩個過濾器之間則兩個過濾器可以連接使用。管道過濾器結(jié)構(gòu)同時也限制了輸入輸出格式,因此在交互式應(yīng)用中,這種模式是不適用的。其中,常見的管道過濾器模型應(yīng)用之一就是編譯器系統(tǒng)。 

  管道過濾器模型有以下幾個優(yōu)點: 

  (1)中間件可以不再使用,同時也支持使用中間件。 

  (2)靈活性增加。過濾器之間可以進行靈活的連接使用,組件的重用性提高。 

  (3)效率提高?梢赃M行并行處理。 

  管道與過濾器結(jié)構(gòu)模型也有以下幾個缺點: 

 。1)信息共享問題。組件之間狀態(tài)共享信息代價較大。 

 。2)效率高假象。并行處理并沒有真正提高效率。 

 。3)數(shù)據(jù)轉(zhuǎn)換增加開銷。 

  3 面向?qū)ο蠼Y(jié)構(gòu)模型 

  對于處理面向現(xiàn)實世界問題的系統(tǒng),面向?qū)ο蠼Y(jié)構(gòu)模型是最為合理的選擇。在使用面向?qū)ο蟮能浖校岩磺腥鐢?shù)據(jù)、組件模塊都作為對象來處理。對象包括對象的狀態(tài)即數(shù)據(jù)以及對象的行為即操作方法,對象之間通信通過信息傳遞實現(xiàn)。在面向?qū)ο竽P椭,對用戶透明,即用戶不需要知道對象?nèi)部狀態(tài),只需要知道功能及其使用,因而將軟件系統(tǒng)開發(fā)周期和難度盡量減少。 

  面向?qū)ο蠼Y(jié)構(gòu)模型有以下優(yōu)點: 

 。1)對象封裝。用戶不必完全了解對象的數(shù)據(jù)狀態(tài),開發(fā)中可以減少難度和減少時間周期。 

  (2)對象繼承。繼承提高了為代碼的復(fù)用性,減少開發(fā)人員工作量和后期維護等工作量。 

 。3)錯誤修改方便。對象出現(xiàn)錯誤,修改此對象即可,不需要對其他對象進行修改。 

  面向?qū)ο蠼Y(jié)構(gòu)模型有以下缺點: 

  (1)交互要求高。對象間進行交互通過過程調(diào)用進行,調(diào)用對象則是通過對象標(biāo)識來作為通信媒介。 

  (2)修改繁瑣。對象通過標(biāo)識符標(biāo)識,若對象的標(biāo)識符修改了,則必須修改對對象的所有實例,同時需要解決標(biāo)識符修改帶來的副作用。 

  4 MVC體系結(jié)構(gòu)模型 

  MVC體系結(jié)構(gòu)(Model―Visual―Controller即模型―視圖――控制器體系結(jié)構(gòu))也是當(dāng)今應(yīng)用十分廣泛的交互界面結(jié)構(gòu)模型。模型、視圖和控制器是MVC結(jié)構(gòu)模型的三個組成部分,它強制性地將軟件的輸入輸出以及處理三個部分分開進行,每個部分相互獨立,從而使得圖形化用戶交互更為方便。比如,可以使用MVC結(jié)構(gòu)模型構(gòu)建拍賣系統(tǒng),使得處理結(jié)果更為直觀。 

  MVC體系結(jié)構(gòu)模型的優(yōu)點如下: 

  (1)模式復(fù)用性。對于同一個模型,可以有多個視圖進行任務(wù)處理。同一個模式可以開發(fā)多個應(yīng)用程序框架。 

 。2)視圖靈活。可以將視圖同步化,同時可以將視圖和控制器插入。 

  (3)控制器和視圖聯(lián)系緊密。 

  MVC體系結(jié)構(gòu)模型的缺點如下: 

 。1)系統(tǒng)開發(fā)復(fù)雜性增加。同時增加了后期維護以及升級更多的更新因素。 

 。2)高耦合。模型、視圖和控制器之間耦合過于緊密,修改維護工作量大。 

 。3)效率低。視圖中的數(shù)據(jù)訪問效率較低。 

  5 結(jié)束語 

  軟件開發(fā)與以往相比,軟件算法和數(shù)據(jù)結(jié)構(gòu)已經(jīng)不再是最為重要的部分,軟件開發(fā)中軟件體系結(jié)構(gòu)模型的選擇才是目前適應(yīng)軟件開發(fā)最重要的關(guān)注點。軟件體系結(jié)構(gòu)模型的選擇已經(jīng)成為整個軟件系統(tǒng)是否能成功開發(fā)的基礎(chǔ),通過軟件體系結(jié)構(gòu)模型,可以對系統(tǒng)開發(fā)中項目可行性、開發(fā)周期、功能需求分析、項目復(fù)雜程度和風(fēng)險預(yù)測等進行估計預(yù)測。從上文對層次體系結(jié)構(gòu)模型、管道與過濾器結(jié)構(gòu)模型、面向?qū)ο蠼Y(jié)構(gòu)模型和MVC體系結(jié)構(gòu)模型四種軟件體系結(jié)構(gòu)模型進行簡單的總結(jié)介紹以及對其優(yōu)缺點分析,可以發(fā)現(xiàn)每種體系結(jié)構(gòu)都不可避免的在不同方面有強點或者弱點,在實際軟件開發(fā)中,需要根據(jù)項目實際情況綜合分析,從而選用恰當(dāng)合理的軟件體系結(jié)構(gòu)模型,使得軟件開效率和質(zhì)量都有所提高。 

    參考文獻

  [1]楊志明.幾種常見軟件體系結(jié)構(gòu)模型的分析[J].計算機工程與設(shè)計,2004(08):1326-1328. 

  [2]田潤芙,楊旭.常見軟件體系結(jié)構(gòu)分析[J].網(wǎng)絡(luò)財富,2010(01):160-161. 

  [3]侯彬,張立臣.基于中間層的軟件體系結(jié)構(gòu)模型[J].電子設(shè)計工程,2010(11):1-3.