基於構件開發的應用框架設計

做者:謝曉芹 柳西玲 來源:計算機世界報  [url]http://www.csai.cn[/url] 2005年1月1日
  框架必須是健壯的、可擴展的、靈活的,且支持動態內容,它要求基於開放或共享標準。框架的設計要力求作到:完備性、靈活性、可擴展性、可理解性,同時抽象能用於不一樣的場合;用戶能輕鬆地添加和修改功能,定製框架;用戶和框架的交互清晰,文檔齊全。框架設計的一個核心問題就是發現可重用的設計和「熱點」,以保證框架具有充分的靈活性,使用戶能在已有構件的基礎上生成應用程序,實現「零代碼編寫」的理想目標。
1、如何設計應用框架?
  目前在框架設計方面成熟的技術較少,大致可分爲兩類:實踐法與系統法。
1. 實踐法
  許多專家甚至認爲框架不多是系統設計的結果,而只是在從底向上設計中的一個結果。實踐法也能夠說是實例(Example)驅動的設計方法,它是從若干個具體的典型應用中,抽象出類似點來構建框架,框架反過來又應用於不一樣的問題,並在解決不一樣問題的過程當中獲得更新,在框架的設計和實現的兩步中,不斷反覆。等到框架逐漸成熟時,須要修改和反覆的內容就會愈來愈少。
  具體步驟爲:
  分析問題領域,肯定所需框架。從一類應用而不是單個的程序去分析、比較各類不一樣的軟件解決方案,尋求這些方案的共性和每一個程序的惟一性特徵。這些共性,尤爲是那些常常被多個程序使用的部分將成爲框架的基礎。而後定義框架體系結構並設計,包括設計用戶與框架間的交互、給用戶提供的最終工具等。
  框架的實現。包括框架核心類的實現、框架的測試、框架的試運行、框架的反覆更新。
  框架的部署。包括文檔的提供、分發過程,爲用戶提供技術支持,維護和更新框架。
  這種方法也就是先在具體類基礎上進行泛化,提取出抽象類。抽象化也是框架開發的一個關鍵。不過,根據這種方法設計出的框架的可適用性很大程度上依賴於其基於的具體應用。
  因爲框架的開發具備反覆性,且須要深刻了解應用領域,所以框架的開發很難按進度表進行。框架的設計者也須要和應用開發者緊密合做,由於框架只有在使用它開發應用的過程當中才能發現其哪些部分有待改進。
2. 系統法
  因爲有人認爲框架的設計也能夠經過系統的方法獲得,所以人們提出了逐步泛化的框架設計方法。此時框架的設計分兩步:
  第一步是問題的泛化。它要求解決以下問題:問題領域中的哪些概念能夠表現爲變量,而且須要統一處理?是否能夠發現一些具體的概念,它們能被泛化爲一個更抽象的概念?
  第二步是框架的設計。在這一步中,泛化是從反向考慮,以實現每一級的框架。換言之,最早實現最通用的框架,而後實現次通用的框架,以此類推。如圖1所示, 其中,框架0就是最終要實現的框架。
  這一步須要解決以下問題:系統的哪一部分可能須要改變?用戶須要在什麼地方向框架中加入本身的代碼?
  採用兩步的設計方法能夠避免在早期的開發過程當中侷限於應用專用的類和體系結構,而且有利於使用通用的設計模式。
  框架的設計是一個反覆的過程,在這個過程當中須要領域和設計兩方面的專家意見,框架用戶和框架開發者之間的交流對框架的設計也很重要,由於框架是在不斷反覆的過程當中逐步成熟的。
3. 框架設計與應用設計
  框架的設計和應用的設計到底有何不一樣?通常而言,二者的側重點不一樣。設計應用系統時,要求對專用領域的重要概念有深刻的瞭解。這些概念經過建模演變成類,並做爲實現整個應用的構建塊。而設計框架時,重點在識別出必須具有靈活性的地方,也就是「熱點」,這也是框架的關鍵所在。
  構件庫系統基於框架而不是具體的類,使得構件庫系統的使用更具靈活性。但在框架基礎上構建具體的應用時, 類的使用和開發老是隨之而來,在框架上生成應用能夠經過建立子類、配置各構件對象、調整實例等來得到。
4. 框架文檔
  文檔必須包括以下內容:框架的目的,如何使用框架,框架的設計細節等。
2、框架採用哪些支持工具?
  通常而言,沒有支持工具的框架很難被使用。任何一個框架的提出老是配有一系列工具軟件,這樣基於框架的應用開發才切實可行。這些工具容許用戶與應用框架交互、配置和構築新的應用。下列工具一般被使用:
  瀏覽工具 用戶能夠利用它瀏覽框架的類層次結構等信息。
  編輯工具 用戶用來調整和修改框架元素的屬性等,如修改類或構件等。
  幫助系統 爲用戶使用本框架系統提供嚮導功能,如能夠採用HTML格式。
  測試系統 用來測試生成的應用系統,一般支持仿真操做。
  文檔工具 幫助建立應用系統的文檔,如Javadoc工具。理解並學會使用框架是一件費時的工做,這也是框架設計方法的惟一不足之處,所以要求框架的文檔必須齊備。
  配置管理工具 使用框架而不是具體的對象雖然提供了複用性,但它同時也帶來了開發上的複雜性。框架內包含各類構件或構件庫,一個框架可能須要和其餘框架通訊。一個框架也可能由其餘子框架系統組成,這樣一種組成結構必然提出配置管理的問題。例如,如何在多個框架內共享構件?如何由構件或子框架組裝新框架?框架內的構件如何通訊與協做?不一樣的框架間如何交互?
  使用這些高級工具的最終目的就是減小編碼和記憶的工做量,簡化用戶的操做。理想狀況下,用戶能夠不用編一句代碼而實現新系統的構建。例如,在一可視化界面上,經過選取一些圖標就能生成可執行程序。目前已有一些相似的工具,如University of Geneva開發的Vista系統。
3、都有哪些著名的框架系統?
  目前有許多框架系統,例如用戶界面方面的框架有MVC、ET++等,其中ET++採用C++語言實現,運行於Unix等系統中;針對其餘領域的則有FOIBLE、MacApp、FACE (Framework Adaptive Composition Environment)等。
  早期一些框架系統多采用傳統的面向過程語言實現,如今面嚮對象語言爲軟件和設計的重用提供了更強有力的支持。因爲框架開發的學習曲線較複雜,所以框架開發的語言最好能對框架的文檔創建提供有效的方法;框架的使用要求開發語言具有高可移植性;框架的設計其實也是一些高層的決策,很天然採用高級語言來實現。Java語言因爲具備平臺獨立性以及輕量級的連接過程、自動垃圾回收、簡單語言結構、標準軟件包、面向對象等特性,所以能夠說Java是進行框架構築的合適語言。如今市場上已出現了許多采用Java語言編寫的框架系統。
  LEC India Software Centre Pvt. Ltd.公司研製了一個面向EJB 構件的應用框架系統。它主要面向基於EJB的應用程序,是一個服務器端的框架,能在EJB構件的開發中解決穩定性以及其餘一些企業級的特性等問題。
  如今又出現了許多采用J2EE編程環境的應用框架,如Pacific技術服務公司開發的一套多層框架,能用來開發Web應用服務器;Jcorporate公司開發的Expresso Framework是一使用java來建造分佈式、重用、基於構件的安全的Web應用程序的應用框架。
4、 如何設計知識工程應用框架?   在知識爆炸的時代,如何從數據中提取信息,從信息中提取知識已成爲一個重要的應用領域。愈來愈多的知識處理應用系統急待開發,若能有一個成熟可靠的知識處理框架系統,將大大加快此類應用系統的開發。針對這種狀況,清華大學知識工程研究室結合本身的經驗,目前提出了在知識工程應用領域的框架,主要針對網絡計算模式下的知識獲取、傳輸、管理和應用,基於Web的數據挖掘與知識發現等內容,全部的代碼均採用Java實現。   將應用框架結構化爲框架的框架,劃分爲以下三個子框架:   (1) 領域專用構件框架:提供領域專用的構件模型集合,併爲分層的構件模型提供統一接口。   (2) 可視化組裝框架:提供整個框架系統的圖形化界面,併爲可視化組裝和操做構件提供工具。   (3) 鏈接框架:爲構件間的交互、通訊提供機制。   框架內各構件的分佈如圖2所示。   創建的基於框架的構件系統具備以下性能:   實現面向產品化、實用性的構件庫系統,並具開放性、可擴展性;   支持異構環境中的框架、構件的互聯和通訊;   實現新舊系統的兼容性;   提供一致的接口分配;   遵循重要構件標準(如CORBA);   構件具備透明本地化、平臺無關性特色;   系統的配置、數據交換基於XML和Java的標準化格式;   支持個性化信息服務定製和可重構。   良好的用戶學習曲線。   框架的設計自己也是一個循環迭代的過程,它在不斷應用於實踐的過程當中,獲得更新和提升。咱們也在不斷的完善這套系統。目前一些公用構件如電子表單自動生成系統、數據提取和文件轉換系統等做爲大粒度構件已獲得普遍使用。   框架能使應用程序的開發簡單,價格低廉,可是開發框架不是一件容易的事。它是一個須要領域和設計經驗的反覆過程。爲了保證框架的靈活性,必須提取和發現熱點。設計模式能夠簡化這個過程,由於它提供了對過去經驗的抽象。應用框架能高度抽象同一領域內的問題,進而下降開發難度和強度。雖然框架和構件技術已經出現許多年了,開始走入實用,但還不成熟,有大量問題有待研究。
相關文章
相關標籤/搜索