架構和框架的區別


注明:引自http://www.cnblogs.com/jiangyehu1110/p/3197880.html

筆者發現,人們對軟件架構存在非常多的誤解,其中一個最為普遍的誤解就是:將架構(Architecture)和框架(Framework)混為一談。

一圖勝千言,圖2-9切中肯綮地點出了架構和框架的區別。一句話,框架是軟件,架構不是軟件。

框架是一種特殊的軟件,它並不能提供完整無缺的解決方案,而是為你構建解決方案提供良好的基礎。框架是半成品。典型地,框架是系統或子系統的半成品;框架中的服務可以被最終應用系統直接調用,而框架中的擴展點是供應用開發人員定制的可變化點

 

2-9  架構和框架的區別

 

軟件架構不是軟件,而是關於軟件如何設計的重要決策。軟件架構決策涉及到如何將軟件系統分解成不同的部分、各部分之間的靜態結構關系和動態交互關系等。經過完整的開發過程之后,這些架構決策將體現在最終開發出的軟件系統中;當然,引入軟件框架之后,整個開發過程變成了分兩步走,而架構決策往往會體現在框架之中。或許,人們常把架構和框架混為一談的原因就在於此吧!

我們不能指着某些代碼,說這就是軟件架構,因為軟件架構是比具體代碼高一個抽象層次的概念。架構勢必被代碼所體現和遵循,但任何一段具體的代碼都代表不了架構。

2.3.3  架構和框架的聯系

框架技術和架構技術的出現,都是為了解決軟件系統日益復雜所帶來的困難而采取分而治之思維的結果——先大局后局部,就出現了架構;先通用后專用,就出現了框架。2-10很好地揭示了這一點。架構是問題的抽象解決方案,它關注大局而忽略細節;而框架是通用半成品,還必須根據具體需求進一步定制開發才能變成應用系統。

簡而言之,框架和架構的關系可以總結為兩句話:(1)為了盡早驗證架構設計,或者出於支持產品線開發的目的,可以將關鍵的通用機制甚至整個架構以框架的方式進行實現;(2)業界(及公司內部)可能存在大量可供重用的框架,這些框架或者已經實現了軟件架構所需的重要架構機制,或者為未來系統的某個子系統提供了可擴展的半成品,所以最終的軟件架構可以借助這些框架來構造。
2.3.4  框架也有架構

框架作為軟件系統或子系統的半成品,其設計開發過程從總體上來說和系統開發非常類似(是刻意做成半成品的,而不是還沒有做完),框架也是通過架構設計、詳細設計、實現和測試開發出來的。當采用面向對象技術時,框架是一組類和接口,當然還可以包含資源文件和配置文件等等。框架可以很復雜,可以包含成百上千個類,可以划分模塊和子系統。至於框架的具體開發過程,可以參考2.5.3小節框架的開發過程

總之,框架也有架構。圖2-9所示的類圖,其語義也表明了這一點。--------------------------------------------------------------------------------------------------------------------

什么是框架

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

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

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

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

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

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

架構師是軟件行業中一種新興職業,工作職責是在一個軟件項目開發過程中,將客戶的需求轉換為規范的開發計划及文本,並制定這個項目的總體架構,指導整個開發團隊完成這個計划。架構設計是軟件設計過程的早期階段,它把需求分析和設計流程連接在一起。架構師的主要任務不是從事具體的軟件程序的編寫,而是從事更高層次的開發構架工作。他必須對開發技術非常了解,並且需要有良好的組織管理能力。可以這樣說,一個架構師工作的好壞決定了整個軟件開發項目的成敗。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM