認識基于中間件的軟件開發方法
中間件是位于平臺(硬件和操作系統)和應用之間的通用服務。
為什么要使用中間件呢?具體地說,中間件屏蔽了底層操作系統的復雜性,使程序開發人員面對一個簡單而統一的開發環境,減少程序設計的復雜性,將注意力集中在自己的業務上,不必再為程序在不同系統軟件上的移植而重復工作,從而大大減少了技術上的負擔。中間件帶給應用系統的,不只是開發的簡便、開發周期的縮短,也減少了系統的維護、運行和管理的工作量,還減少了計算機總體費用的投入。
一、體系結構
軟件體系結構代表了系統公共的高層次的抽象,它是系統設計成敗的關鍵。其設計的核心是能否使用重復的體系模式。傳統的應用系統體系結構從基于主機的集中式框架,到在網絡的客戶端上通過網絡訪問服務器的框架,都不能適應目前企業所處的商業環境,原因是:
企業過分地依賴于某個供應商的軟件和硬件產品。這種單一供應商使得企業難以利用計算供應商的免費市場,將計算基礎設施的重要決定交給第三方處理,這顯然不利于企業在合作伙伴之間共享信息。
不能適應遠程訪問的分布式、多層次異構系統。
封裝的應用系統在出現某種組織需要時,難以用定制來維護系統,從而難以滿足多變的需求。
不能實現分析、設計核心功能重用,最多只能實現代碼重用。
如今,應用系統已經發展成為在Intranet和Internet上的各種客戶端可遠程訪問的分布式、多層次異構系統。CBSD為開發這樣的應用系統提供了新的系統體系結構。它是標準定義的、分布式、模塊化結構,使應用系統可分成幾個獨立部分開發,可用增量方式開發。
這樣的體系結構實現了CBSD的以下幾點目標:
能夠通過內部開發的、第三方提供的或市場上購買的現有中間件,來集成和定制應用軟件系統。
鼓勵在各種應用系統中重用核心功能,努力實現分析、設計的重用。
系統都應具有靈活方便的升級和系統模塊的更新維護能力。
封裝最好的實踐案例,并使其在商業條件改變的情況下,還能夠被采用,并能保留已有資源。
由此看出,CDSD從系統高層次的抽象上解決了復用性與異構互操作性,這正是分布式網絡系統所希望解決的難題。
二、開發過程
傳統的軟件開發過程在重用元素、開發方法上都與CBSD有很大的不同。雖然面向對象技術促進了軟件重用,但是,只實現了類和類繼承的重用。在整個系統和類之間還存在很大的缺口。為填補這個缺口,人們曾想了許多方法,如系統體系結構、框架、設計模式等。
自從中間件出現以來,軟件的重用才得到了根本改變。CBSD實現了分析、設計、類等多層次上的重用。圖1顯示了它的重用元素分層實現。在分析抽象層上,重用元素有子系統、類;在設計層上重用元素有系統體系結構、子系統體系結構、設計模式、框架、容器、中間件、類庫、模板、抽象類等。
在軟件開發方法上,CBSD引導軟件開發從應用系統開發轉變為應用系統集成。建立一個應用系統需要重用很多已有的中間件模塊,這些中間件模塊可能是在不同的時間、由不同的人員開發的,并有各種不同的用途。在這種情況下,應用系統的開發過程就變成對中間件接口、中間件上下文以及框架環境一致性的逐漸探索過程。例如,在J2EE平臺上,用EJB框架開發應用系統,主要工作是將應用邏輯,按session Bean、entity Bean設計開發,并利用JTS事務處理的服務實現應用系統。其主要難點是事務劃分、中間件的部署與開發環境配置。概括地說,傳統的軟件開發過程是串行瀑布式、流水線的過程;而CBSD是并發進化式,不斷升級完善的過程。圖2顯示了它們的不同。
三、軟件方法學
軟件方法學是從各種不同角度、不同思路去認識軟件的本質。傳統的軟件方法學是從面向機器、面向數據、面向過程、面向功能、面向數據流、面向對象等不斷創新的觀點反映問題的本質。整個軟件的發展歷程使人們越來越認識到應按客觀世界規律去解決軟件方法學問題。直到面向對象方法的出現,才使軟件方法學邁進了一大步。但是,高層次上的重用、分布式異構互操作的難點還沒有解決。CBSD發展到今天,才在軟件方法學上為解決這個難題提供了機會。它把應用業務和實現分離,即邏輯與數據的分離,提供標準接口和框架,使軟件開發方法變成中間件的組合。因此,軟件方法學是以接口為中心,面向行為的設計。圖3是其開發過程。
歸納起來,CBSD的軟件開發方法學應包括下面幾方面:
對中間件有明確的定義。
基于中間件的概念需要有中間件的描述技術和規范,如UML、JavaBean、EJB、Servlet規范等。
開發應用系統必須按中間件裁剪劃分組織,包括分配不同的角色。
有支持檢驗中間件特性和生成文檔的工具,確保中間件規范的實現和質量測試。
總之,傳統的軟件方法學從草稿自頂向下進行,對重用沒有提供更多的輔助。CBSD的軟件方法學要豐富得多,它是即插即用,基于體系結構,以接口為中心,將中間件有機組合,它把自頂向下和自底向上方法結合起來進行開發。
四、開發組織機構
傳統軟件的開發組織一般由分析員、設計員、程序員和測試員組成。對一個小的應用系統來說,一個熟練的開發人員,可能兼顧以上多個角色。但對CBSD來說,因為中間件開發與應用系統集成往往是分開進行的,因此整個開發過程由六個角色來完成,他們是:
中間件開發者 也是中間件供貨商,這些大多數是中間件中間件提供者。
應用中間件集成者 針對某應用領域將已有中間件組合成更大的中間件模塊或容器, 作為系統部署的基本單元。
應用系統部署者 將系統部署基本單元放入選定的平臺環境或基本框架中,完成軟件定制的要求。
開發平臺服務器供應商 提供服務器、操作系統和數據庫等基本軟件。
應用系統開發工具供應商 提供中間件公共設施服務。
系統管理員 配置硬件、網絡和操作系統,監督和維護應用系統者。
這六個角色的工作專業性很強,要兼顧成為多面手很不容易。目前已形成中間件開放市場,而且還很火紅。這也是當今軟件人才大戰所遇的一個困惑。因此,在CBSD中,如何組織好開發隊伍尤為重要,必須按本企業所具備人才來組織。特別重要的是:開發初期必須選好標準框架,以及統一的開發指導方針,保證在整個開發過程中,各角色能隨時互相溝通。一般來說,CBSD的人員素質決定了中間件的重用率。
五、構造方法
傳統應用軟件的構造是用白盒子方法,應用系統的實現全在代碼中,應用邏輯和數據粘結在一起。而CBSD 的構造是用白盒子和黑盒子相結合的方法。基于中間件的框架是用兩個概念來支持演變:第一個概念是中間件有很強的性能接口,使中間件邏輯功能和中間件模型的實現都隱藏起來。這樣,只要接口相同,中間件就可以被替換。
第二個概念是隱式調用,即在基于中間件的框架中,從來不直接給中間件的接口分配地址,只在識別中間件用戶后才分配地址。因此,中間件用戶只要了解接口要求和為中間件接口提供的引用后的返回信息 (該引用可能是一個中間件,也可能是一個中間件代理。對中間件用戶來說,中間件代理就是中間件,不用區分) 。
中間件接口的信息并不存入中間件內,而是存入中間件倉庫或注冊處。這樣才能保證中間件替換靈活,并很容易利用隱式調用去重新部署中間件。由于中間件的實現對用戶透明,因此也使中間件能適應各種不同的個性化要求。為此,中間件提供自檢和規范化兩個機制。自檢保證在不了解中間件的具體實現時,就能獲得中間件接口信息。
例如,JavaBean提供的自檢機制是Reflection和BeanInfo, 通過Reflection 可直接獲得Bean中間件的全部方法,通過BeanInfo可直接獲得中間件的許多復雜信息。
規范化允許不訪問中間件就可以修改它,如JavaBean提供的規范化是property sheet和customizer(定制器)。 通過property sheet提供一組簡單參數,修改Bean的屬性。復雜的修改由用戶通過定制器設置參數完成。
【編輯推薦】