BlogJava 首頁 新隨筆 聯系 聚合 管理
            37 Posts :: 64 Stories :: 21 Comments :: 0 Trackbacks

           框架(Framework)是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法;另一種定義認為,框架是可被應用開發者定制的應用骨架。前者是從應用方面而后者是從目的方面給出的定義。

            可以說,一個框架是一個可復用的設計構件,它規定了應用的體系結構,闡明了整個設計、協作構件之間的依賴關系、責任分配和控制流程,表現為一組抽象類以及其實例之間協作的方法,它為構件復用提供了上下文(Context)關系。因此構件庫的大規模重用也需要框架。

            構件領域框架方法在很大程度上借鑒了硬件技術發展的成就,它是構件技術、軟件體系結構研究和應用軟件開發三者發展結合的產物。在很多情況下,框架通常以構件庫的形式出現,但構件庫只是框架的一個重要部分。框架的關鍵還在于框架內對象間的交互模式和控制流模式。

            框架比構件可定制性強。在某種程度上,將構件和框架看成兩個不同但彼此協作的技術或許更好。框架為構件提供重用的環境,為構件處理錯誤、交換數據及激活操作提供了標準的方法。

            應用框架的概念也很簡單。它并不是包含構件應用程序的 小片程序,而是實現了某應用領域通用完備功能(除去特殊應用的部分)的底層服務。使用這種框架的編程人員可以在一個通用功能已經實現的基礎上開始具體的系 統開發。框架提供了所有應用期望的默認行為的類集合。具體的應用通過重寫子類(該子類屬于框架的默認行為)或組裝對象來支持應用專用的行為。

            應用框架強調的是軟件的設計重用性和系統的可擴充性,以縮短大型應用軟件系統的開發周期,提高開發質量。與傳統的基于類庫的面向對象重用技術比較,應用框架更注重于面向專業領域的軟件重用。應用框架具有領域相關性,構件根據框架進行復合而生成可運行的系統。框架的粒度越大,其中包含的領域知識就更加完整。

            框架,即framework.其實就是某種應用的半成品,就是一組組件,供你選用完成你自己的系統。簡單說就是使用別人搭好的舞臺,你來做表演。而且,框架一般是成熟的,不斷升級的軟件。

            框架的概念最早起源于Smalltalk環境,其中最著名的框架是Smalltalk 80的用戶界面框架MVC(Model -View-Controller)。隨著用戶界面框架Interviews [Linton 89]和ET++ [Weinand 89] 的開發和發布,框架研究越來越受到研究人員的重視。雖然框架研究最初起源于用戶界面領域,但它還被成功地應用到其他領域中,如操作系統[Russo 90]、火警系統 [Molin 96a,Molin 96b] 等。Taligent公司于1992年成立后,框架研究受到了廣泛的重視。該公司計劃基于框架來開發一個完整的面向對象操作系統。另外,該公司還發布了一 套支持快速應用開發的工具集CommonPoint,其中包括了上百個面向對象框架 [Andert 94,Cotter 95].框架目前還沒有統一的定義,其中Ralph Johnson所給出的定義基本上為大多數研究人員所接受:一個框架是一個可復用設計,它是由一組抽象類及其實例間協作關系來表達的 [Johnson 98].這個定義是從框架內涵的角度來定義框架的,當然也可以從框架用途的角度來給出框架的定義:一個框架是在一個給定的問題領域內,一個應用程序的一部分設計與實現[Bosch 97].從以上兩個定義可以看出,框架是對特定應用領域中的應用系統的部分設計和實現,它定義了一類應用系統(或子系統)的整體結構。框架將應用系統劃分為類和對象,定義類和對象的責任,類和對象如何互相協作,以及對象之間的控制線程。這些共有的設計因素由框架預先定義,應用開發人員只須關注于特定的應用系統特有部分。框架刻畫了其應用領域所共有的設計決策,所以說框架著重于設計復用,盡管框架中可能包含用某種程序設計語言實現的具體類。

            一個基于框架開發的應用系統包含一個或多個框架,與框架相關的構件類,以及與應用系統相關的功能擴展。與應用系統相關的擴展包括與應用系統相關的類和對象。應用系統可能僅僅復用了面向對象框架的一部分,或者說,它可能需要對框架進行一些適應性修改,以滿足系統需求。

            面向對象的框架作為一種可復用的軟件,在基于框架的軟件開發過程中會涉及到框架的開發和利用兩個方面的工作。框架的開發階段在于產生領域中可復用的設計。 該階段的主要結果是框架以及與框架相關的構件類。該階段的一個重要活動是框架的演變和維護。象所有軟件一樣,框架也易于變化。產生變化的原因很多,如應用 出錯,業務領域變化,等等。

            不論是哪一種技術,最終都是為業務發展而服務的。從業務的角度來講。首先,框架的是為了企業的業務發展和戰略規劃而服務的,他服從于企業的愿景 (vision);其次,框架最重要的目標是提高企業的競爭能力,包括降低成本、提高質量、改善客戶滿意程度,控制進度等方面。最后,框架實現這一目標的 方式是進行有效的知識積累。軟件開發是一種知識活動,因此知識的聚集和積累是至關重要的。框架能夠采用一種結構化的方式對某個特定的業務領域進行描述,也 就是將這個領域相關的技術以代碼、文檔、模型等方式固化下來。

            一、框架要解決的問題框架要解決的最重要的一個問題是技術整合的問題,在J2EE的 框架中,有著各種各樣的技術,不同的軟件企業需要從J2EE中選擇不同的技術,這就使得軟件企業最終的應用依賴于這些技術,技術自身的復雜性和技術的風險 性將會直接對應用造成沖擊。而應用是軟件企業的核心,是競爭力的關鍵所在,因此應該將應用自身的設計和具體的實現技術解耦。這樣,軟件企業的研發將集中在 應用的設計上,而不是具體的技術實現,技術實現是應用的底層支撐,它不應該直接對應用產生影響。

            要理解這一點,我們來舉一些例子:一個做視頻流應用的軟件企業,他為電廣行業提供整體的解決方案。他的優勢在于將各種各樣的視頻硬件、服務器、和管理結合起來,因此他扮演的是一個集成商的 角色。因此他的核心價值在于使用軟件技術將不同的硬件整合起來,并在硬件的整合層面上提供一個統一的管理平臺。所以他的精力應該放在解決兩個問題:如何找到一種方法,將不同的硬件整合起來,注意,這里的整合并不是技術整合,而是一種思路上的整合。首先要考慮的絕對不是要使用什么技術,而是這些硬件需 要提供哪些服務,需要以什么樣的方式進行管理。因此,這時候做的事情實際上是對領域進行建模。例如,我們定義任何一種硬件都需要提供兩種能力,一種是統一 的管理接口,用于對所有硬件統一管理;另一種是服務接口,系統平臺可以查詢硬件所能夠提供的服務,并調用這些服務。所以,設計的規范將會針對兩種能力進 行。

            另一個問題是如何描述這個管理系統的規范。你需要描述各種管理活動,以及管理中所涉及的不同實體。因為管理系統是針對硬件的管理,所以它是構架在硬件整合平臺之上的。

            在完成業務層面的設計之后,我們再來看看具體的技術實現。光有規范和設計是不夠的,我們還需要選擇一個優秀的技術。由于是對不同硬件的整合,我們想到采用Java提供的JMX技術。JMX技術適合用來進行系統整合,它定義了一個通用的規范,并給出了遠程管理端口的一些默認實現。JMX已經經過了實踐的檢驗,不少的應用服務器都采用了以JMX為基礎的結構,例如有名的JBoss.JMX已經是一個很好的開始了,但是我們還需要在JMX的基礎上再做一些工作。

            二、什么要用框架?

            因為軟件系統發展到今天已經很復雜了,特別是服務器端軟件,設計到的知識,內容,問題太多。在某些方面使用別人成熟的框架,就相當于讓別人幫你完成一些基 礎工作,你只需要集中精力完成系統的業務邏輯設計。而且框架一般是成熟,穩健的,他可以處理系統很多細節問題,比如,事物處理,安全性,數據流控制等問 題。還有框架一般都經過很多人使用,所以結構很好,所以擴展性也很好,而且它是不斷升級的,你可以直接享受別人升級代碼帶來的好處。

            框架一般處在低層應用平臺(如J2EE)和高層業務邏輯之間的中間層。

            軟件為什么要分層?

            為了實現“高內聚、低耦合”。把問題劃分開來各個解決,易于控制,易于延展,易于分配資源…總之好處很多啦:)。

           

          本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/whhpaccp2008/archive/2009/09/21/4576616.aspx

          posted on 2009-09-22 10:45 xiachang88 閱讀(185) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 沾化县| 苍溪县| 祥云县| 卓尼县| 内江市| 孟村| 峡江县| 永平县| 乐亭县| 隆回县| 镇康县| 永州市| 潮州市| 天峨县| 松潘县| 蒙阴县| 盘山县| 林西县| 长武县| 湘乡市| 台安县| 巴马| 信宜市| 康平县| 丘北县| 南安市| 泸西县| 阿拉善左旗| 保德县| 浠水县| 吴旗县| 邯郸市| 上犹县| 贺兰县| 花莲县| 庆元县| 江阴市| 义乌市| 济宁市| 桐乡市| 黎城县|