韓山師范學院計算機與信息工程學院 胡能發
隨著軟件系統規模與復雜度的加劇、軟件系統的結構顯得越來越重要。特別是對于大規模的軟件系統而言,好的軟件結構可以大大降低系統的復雜性,提高軟件生產效率,方便軟件維護,控制軟件開發風險。因此,如何確定軟件系統框架尤為重要。近年來,軟件開發技術不斷成熟,各種面向對象的軟件開發工具,已經成為人們的首方法,已經取代了傳統的軟件開發方法。基于面向對象的軟件體系結構技術已廣泛應用于各類軟件的開發之中。
軟件體系結構模型中最常用的模型是結構模型與動態模型,共分為5種類型,主要有:結構模型、框架模型、動態模型、過程模型及其功能模型。
結構模型是一種最能用的模型,也是一種最直觀的建模方法。這種建模方法以軟件系統結構的構件、連接件及其他概念來表達軟件的體系結構,其結構模型的核心是軟件體系結構描述語言,它是通過結構建模來反映系統的重要語義內容,包括系統的配置、約束條件、隱含的假設條件、軟件風格、屬性等等。
軟件框架模型主要側重于描述系統的整體結構,與結構模型類似,也是一種直觀的建模方法,但它對軟件結構的細節描述不太深入。因此框架模型重點是對一些特殊的問題建模,以適應問題域本身的結構。
軟件系統的”大顆粒”的行為往往具有動態性,這種動態建模方法是對結構模型及框架模型的補充。有些軟件系統結構本身就具有動態。例如,在軟件助手的設計中,由于用戶角色發生變化,造成了用戶對軟件助手產生不同的體驗,因此,軟件體系結構的配置、建立或刪除、更新是具有動態性的,這種模型描述了系統的重新配置或演化。
軟件過程模型是一種軟件開發策略,這種策略為軟件工程的提供了一套系統開發范形,以方便對軟件開發過程進行監控。任何不同種類的系統,都需要建立相應的軟件過程模型,確定項目與應用的性質、開發方式及需要控制的過程。
該模型將軟件結構看成是一組功能構件的集成,它描述了軟件系統從輸入到輸出的加工過程,該模型著重描述了系統的控制結構,并將系統的控制性質作出行為化的描述。在UML中主要采用用例圖來表達,在結構化分析方法中則采用數據流圖來描述軟件系統的功能需求。
以上這5種模型各有各的優缺點,從軟件開發的不同視角來看,將這5種模型按一定的方式進行整合集成,將形成一個從不同視角來刻畫軟件體系結構的完整模型。最典型的模型是Kr ucht en于1995年提出的“4+1”的視圖模型。該模型從5個不同的視角來刻畫軟件的體系結構,類似于從不同方向觀察某一物體的形態等。“4+1”的視圖模型包括邏輯視角、過程視角、物理視角、開發視角及場景視角,每一個視角只描述軟件系統的一個側面,只有將5個視角全部結合在一起,才能全面反映出軟件系統體系結構的所有內容。
面向對象方法來源于人們的自然思維方式,是人們認識自然最直觀也是最直接的方法。人們通過對現實世界中客觀存在的事物進行抽象,規范,將現實世界中的物理模型轉換為計算機能夠識別的邏輯模型,最終構造出軟件系統。面向對象方法在分析系統結構時,以問題域中的事物作為分析的依據,從中發現對象、發現對象屬性及服務,以對象作為軟件系統的最基本的構成單元,所有對象的集合集成在一起,并以一定的方式描述各對象的關系,最終形成對象層、特征層以及關系層結構,從而完整地形成整個軟件。面向對象方法所設計的軟件,可以看成問題域物理模型到軟件系統邏輯模型的映射。
軟件體系結構實際上是構件的集成,其組成元素具有一定形式化的結構,主要包括處理構件、數據構件以擴連接構件等。其中對數據的加工處理由處理構件來完成,數據構件是被處理的對象,將軟件體系結構中不同部分組組合連接起來,則是由連接構件完成。
軟件體系結構是一個程序或系統的構件的組織結構,它們之間的關聯關系以及支配系統設計和演變的原則和方針。一般地,一個系統的軟件體系結構描述了該系統中的所有計算構件,構件之間的交互、連接件以及如何將構件和連接件結合在一起的約束。研究軟件體系結構的首先要解如何將軟件體系結構表達出來,即通過結構建模來表示軟件體系結構。
一個軟件系統的綜合性能往往與軟件系統的開放性具有一定的關聯,軟件系統可擴充性強,數據的開放性、功能的開放性好,對將系統的升級與維護十分重要。而軟件結構是否具備良好的開放性,最關鍵的是采用什么樣的模型來開發軟件系統。如果模型不合理甚至沒有模型,就有可能出現象60年代一樣軟件危機,造成軟件性能下降,甚至開發失敗。軟件各模塊獨立開發完成后,其系統的集成則是整個軟件能否高效運行的關鍵。將各功能子系統統一集成到同一個環境后,其性能的好壞取決于開發系統所采用的模型。
開放性對于應用軟件休系結構而,一般與社會技術發展水平有關。從1946年第一臺計算機出現以來,計算機硬件技術以驚人的速度向前發展,同時各種計算機軟件開發工具、開發方法與技術層出不窮,面向對象開發工具與技術已非黨成熟,曾先后出現了許多類系統模型,引頷著軟件技術的不同以展階段。其模型主要有4種,它們是以數據為中心的系統模型、以執行為中心的系統模型、面向對象的系統模型、基于總線的系統模型。
以數據為中心的系統模型,在軟件系統的核心層中共享數據,系統中各部份采用統一的數據格式來描述,以方便各子系統部件交互。各子系統獨立完全開發,模塊之間耦合度低,獨立性強。這類系統具有良好的擴充性,數據開放性好,方便系統維護與升級,是面向對象方法主要特點。
以執行為中心的系統模型,通過將可執行的代碼放在一個執行中,來實現用戶或對象對代碼的共享房問,避免了代碼冗余,數據與界面具有一致性。例如目前流行的3D游戲開發工具Unit y3d軟件,其開發的軟件就具有這種類似結構。這類模型將執行功能從各對象的服務功能中分離出來,放在執行中心共享。這類模型可擴充性好,具有數據開放性以及功能開放性,整體上比以數據為中心的系統模型要好。
由于面向對象技術的發展,各種面向對象的編程工具、分析與設計技術及軟件已非常成熟,出現了面向對象的軟件體系結構模型。該模型強調對象封裝,用戶操作界面、共享的數據及相應的操作,都被封裝在所在的對象中。從軟件系統結構來看,這種模型沒有中心,沒有順序,系統完成由各對象組成。面向對象主要特點是封裝、繼承與多態,這各模型結構與以數據為中心及以執行為中心的模型完成不同,主要優點在于,數據和功能的合理封裝降低系統復雜性,從整體上看,優于前兩類模型。
基于總線的軟件系統模型,是在面向對象為基礎上發展而來,由于組件與中間件技術,是面象對象技術發展的結果,因此在建立軟件系統結構模型時引入了新的思想,產生了新的軟件工程技術,即基于總線的軟件系統模型。這種技術是面向對象技術的產物,采用這種技術開發軟件,需要建立一種高效的總線結構,規范的一致接口,使得不同組件之間通過公共的接口集成起來。這種結構極大地降低了各組件通訊的復雜度,提高了組件的互操作性。
面向對象技術具有易維護、可讀性高、可重用好、易擴展、開發效率高的優點,其開發方法接近于日常生活和自然的思考方式,由于面向對象技術主要特征是繼承、封裝與多態,其模型所設計的軟件體系結構獨立性高,使得系統更靈活、更容易擴展,因此,該方法已成為當下軟件系統首選的開發方法。
[1]馬亮,孫春艷.軟件構件概念變遷[J].計算機科學,2002,29(4):28-30.
[2]李千目.軟件體系結構設計[M].北京:清華大學出版社,2008.