魏強(qiáng)
【摘要】模式(Pattern)的定義最開始由建筑之神Christopher Alexander于二十世紀(jì)七十年代明確提出,運(yùn)用于工程建筑行業(yè),八十年代中后期由WardCunningham和 Kent Beck將其觀念引進(jìn)到手機(jī)軟件行業(yè)。伴隨著軟件開發(fā)的深層次、各種各樣技術(shù)性的與時俱進(jìn),軟件系統(tǒng)的經(jīng)營規(guī)模越來越大、特性愈來愈繁雜,涉及到的技術(shù)性也愈來愈多,從而引起了軟件開發(fā)工作中的重心點(diǎn)由原先重視編碼的撰寫逐漸轉(zhuǎn)為開發(fā)設(shè)計早期的系統(tǒng)架構(gòu)設(shè)計方案上。軟件開發(fā)技術(shù)性的發(fā)展趨勢規(guī)定大家務(wù)必提升設(shè)計方案和點(diǎn)評大中型的、繁雜的軟件系統(tǒng)的工作能力。
【關(guān)鍵詞】模式設(shè)計;軟件架構(gòu);軟件設(shè)計;架構(gòu)模式
1軟件架構(gòu)產(chǎn)生的背景
模式是表明周境、動因﹑解決方法三個層面關(guān)聯(lián)的一個標(biāo)準(zhǔn),每一個模式敘述了一個在某類周境下持續(xù)反復(fù)產(chǎn)生的難題,及其該難題解決方法的關(guān)鍵所屬,模式既是一個事物( thing)又是一個全過程(process),不但敘述該事物自身,并且明確提出了根據(jù)如何的全過程來造成該事物。在不一樣的層面上,模式給予不一樣層面的具體指導(dǎo)。依據(jù)解決難題的粒度分布不一樣,從高到低,模式分成3個層級:構(gòu)架模式(ArchitecturalPattern)、設(shè)計方案模式(Design Pattern)、完成模式(Implementation Pattern)。這三者中間的差別取決于他們存有于分別的抽象層次和實(shí)際層級上。構(gòu)架模式是一個系統(tǒng)軟件的高端對策,牽涉到超大尺度的部件及其總體特性和結(jié)構(gòu)力學(xué)。設(shè)計方案模式是中等水平限度的構(gòu)造對策。這種中等水平限度的構(gòu)造完成了一些超大尺度組件的個人行為和他們中間的關(guān)聯(lián)。模式的優(yōu)劣不容易危害到系統(tǒng)軟件的空間布局和整體架構(gòu)。設(shè)計方案模式定義出分系統(tǒng)或組件的外部經(jīng)濟(jì)結(jié)構(gòu)。編碼模式(或成例)是特殊的案例和與特殊語言表達(dá)相關(guān)的程序編寫方法。編碼模式的優(yōu)劣會危害到一個中等水平限度組件的內(nèi)部、外界的結(jié)構(gòu)或個人行為的最底層關(guān)鍵點(diǎn),但不容易危害到一個構(gòu)件或分系統(tǒng)的中等水平限度的結(jié)構(gòu),更不容易危害到系統(tǒng)軟件的空間布局和超大尺度架構(gòu)。
2構(gòu)建軟件架構(gòu)中模式的作用
系統(tǒng)架構(gòu)的搭建一直是軟件開發(fā)全過程中的一項(xiàng)關(guān)鍵工作中,與此同時也是一項(xiàng)很艱難的工作中,就算針對很有工作經(jīng)驗(yàn)的系統(tǒng)架構(gòu)師也是這般。幸運(yùn)的是,模式及其模式語言表達(dá)的明確提出得出了一條搭建系統(tǒng)架構(gòu)的重要途徑。
全部結(jié)構(gòu)優(yōu)良的面向?qū)ο缶幊誊浖到y(tǒng)構(gòu)架上都包括了很多模式。事實(shí)上,當(dāng)評定一個面向?qū)ο缶幊滔到y(tǒng)軟件的品質(zhì)時,所應(yīng)用的方式之一就是要判斷系統(tǒng)的設(shè)計者是否強(qiáng)調(diào)了對象之間的公共協(xié)同關(guān)系。
3軟件設(shè)計模式和架構(gòu)模式的對比分析
軟件設(shè)計模式和架構(gòu)模式是目前軟件開發(fā)領(lǐng)域中最常用和最實(shí)用的兩種模式,這兩種模式都各具優(yōu)勢。就設(shè)計模式而言,其是一種側(cè)重于系統(tǒng)動態(tài)行為特征分析的模式,注重對象的組合而不是復(fù)制,是在重組的基礎(chǔ)上加以創(chuàng)新。以往的模式側(cè)重于類繼承,設(shè)計模式通過類的層次和數(shù)量使得設(shè)計更加簡潔且具有較好的擴(kuò)展性。另外,設(shè)計模式能有效地指導(dǎo)類繼承的層次劃分。類的層次劃分對于面向?qū)ο笤O(shè)計是十分重要的,類的層次劃分過多會使得軟件程序變得笨重,而如果類的層次過少會使得設(shè)計的封裝性變差,因此,類的層次劃分必須要十分嚴(yán)謹(jǐn)。在類的層次劃分上,設(shè)計模式從系統(tǒng)動態(tài)行為特征的角度,將類分層包裝在合理分配各方法屬性。而就架構(gòu)模式而言,其是一個可以重復(fù)使用的小型體系結(jié)構(gòu),在一個指定的范圍內(nèi)為一組軟件抽象產(chǎn)物提供能夠通用的結(jié)構(gòu)。一般情況下,架構(gòu)不是一個完整的應(yīng)用系統(tǒng),它主要是規(guī)定應(yīng)用系統(tǒng)的體系結(jié)構(gòu),并提供一系列規(guī)定的插口或配置點(diǎn)來供使用者生成其所需要的應(yīng)用軟件。
軟件設(shè)計模式和軟件架構(gòu)模式之間存在著一定的區(qū)別,這種區(qū)別主要體現(xiàn)三個方面:1.應(yīng)用范圍。就應(yīng)用范圍而言,軟件設(shè)計模式的范圍更加廣泛。當(dāng)今,軟件設(shè)計模式被廣泛運(yùn)用到制造業(yè)、行政機(jī)構(gòu)、金融業(yè)、餐飲業(yè)和建筑業(yè)等領(lǐng)域,幾乎適用于任何應(yīng)用類型。但架構(gòu)模式一般會限制在某個指定的應(yīng)用區(qū)域;2.表達(dá)方面。架構(gòu)可以通過代碼來具體表達(dá),但是設(shè)計模式則不能,只有設(shè)計模式實(shí)例才能轉(zhuǎn)化為代碼。在表達(dá)方面,架構(gòu)模式的優(yōu)勢在于它能夠用編程語言程序書寫出來,可以運(yùn)行直接重復(fù)使用。而軟件設(shè)計模式在每次應(yīng)用之前都需要將其實(shí)現(xiàn),這樣才能啟動運(yùn)用;3.設(shè)計模式是一種比架構(gòu)模式更小的結(jié)構(gòu)型元素。一個架構(gòu)必須包含若干個設(shè)計模式,因此設(shè)計模式是一種更小的結(jié)構(gòu)型元素。
軟件設(shè)計模式和架構(gòu)模式都各具優(yōu)勢,在軟件開發(fā)時,軟件工程師通過考慮到軟件自身的需要來選擇軟件模式,這樣才能設(shè)計出更實(shí)用的軟件程序。
參考文獻(xiàn):
[1]陳世平,饒凱華,趙磊,李濤,李園.企業(yè)關(guān)鍵績效系統(tǒng)的軟件架構(gòu)設(shè)計與實(shí)現(xiàn)[J].微計算機(jī)信息,2009,25(15):25-27.
[2]曹敢,王莉莉.基于目標(biāo)和模式的軟件體系結(jié)構(gòu)設(shè)計[J].江蘇科技大學(xué)學(xué)報(自然科學(xué)版),2007(S1):53-57+69.
[3]楊秀杰,段立娜.基于模式設(shè)計軟件架構(gòu)的研究[J].科技信息(科學(xué)教研),2007(32):75.
[4]夏光明.淺談軟件開發(fā)過程中的體系結(jié)構(gòu)設(shè)計[J].岳陽職業(yè)技術(shù)學(xué)院學(xué)報,2007(01):76-78.
[5]戎左峻,戎凱倫.論工程設(shè)計軟件的最佳架構(gòu)模式[J].工程設(shè)計CAD及自動化,1997(06):15-17.
[6]戎左峻,戎凱倫.論工程設(shè)計軟件的最佳架構(gòu)模式[J].給水排水,1997(12):39-41+4.