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