1. 程式人生 > >軟體構架、架構和框架的區別

軟體構架、架構和框架的區別

軟體框架(Software Framework)介紹 
面向某領域(包括業務領域,如ERP,和計算領域,如GUI)的、可複用的“半成品”軟體,它實現了該領域的共性部分,並提供一系列定義良好的可變點以保證靈活性和可擴充套件性。可以說,軟體框架是領域分析結果的軟體化,是領域內最終應用系統的模板。 
隨著軟體規模的擴大、應用的廣泛和軟體複用技術的發展,以子程式或類(Class)為單位的軟體複用有許多不足:(1)子程式庫日趨其龐大以致於使用人員難以掌握,(2)大多數類粒度很小,且其自身往往不能完成有用的功能。這一問題迫使人們在複用中將一組類(或模組)及其互動作為一個整體來考慮,由此出現了軟體框架。 
軟體框架至少包含以下組成部分: 
(1) 一系列完成計算的模組,在此稱為構件。 
(2) 構件之間的關係與互動機制。 
(3) 一系列可變點(也稱熱點,Hot-spots,或調整點)。 
(4) 可變點的行為調整機制。 
開發人員通過軟體框架的行為調整機制,將領域中具體應用所特有的軟體模組繫結到該軟體框架的可變點,從而得到最終應用系統,這一過程稱為軟體框架的例化(instantiation)。通過軟體框架的使用,開發人員可將主要精力放在應用所特有的模組的開發上,從而大大提高了軟體生產率和質量。 
軟體框架的行為調整機制是指如何針對具體的應用調整該框架的可變部分、如何在可變點加入特定應用模組所採用的方法和規則。行為調整機制可分為四種: 
(1) 模板引數化。軟體框架提供程式碼自動生成工具,該工具根據使用者設定的引數自動生成所需的程式碼。 
(2) 繼承和多型。通過面向物件中的子類繼承和過載,在子類中加入新的功能或改變父類的行為。 
(3) 動態繫結。在執行時刻動態繫結所需的物件服務,可通過軟體模式技術實現。 
(4) 構件替換。通過替換框架中可插拔的構件來加入業務特定的功能, 
不同於一般的可複用軟體製品,軟體框架的一個顯著特點是逆向控制(Inversion of Control),在複用過程中,前者需被顯式呼叫,控制是在應用特定的模組中,軟體框架則不然,應用開發人員只要將應用特定的模組繫結到框架內,框架則根據自己的互動機制自動呼叫該模組,控制由框架負責。 
軟體框架有很多種。按其應用的範圍可分為: 
(1) 系統基礎設施框架。用於簡化系統級軟體的開發,如作業系統、使用者介面、語言處理等,典型例子為MacApp, Microsoft’s MFC等。 
(2) 中介軟體整合框架。用於組裝分散式應用和構件,典型例子為Microsoft’s DCOM, JavaSoft’s RMI, OMG’s CORBA等 
(3) 企業應用框架。用於各類應用領域,如電信、製造業、金融等。 
按其表現形態可分為: 
(1) 白盒框架。支援白盒複用,大型的類庫或子程式庫通常均提供白盒框架來協助複用。 
(2) 黑盒框架。支援黑盒複用。中介軟體整合框架一般為黑盒框架。

構架和架構也就是通常所說的軟體體系結構(software architecture).體系結構一般包括三個部分:構件,用於描述計算;聯結器,用於描述構件的連線部分;配置,將構件和聯結器組成一個有機整體.對體系結構比較嚴謹比較認可的定義可參見<軟體工程技術概論>(科學出版社).體系結構與框架(Framework)的區別與聯絡如下: 
1.呈現形式不同.體系結構的呈現形式是一個設計規約,而框架則是程式程式碼. 
2.目的不同.體系結構的首要目的大多是指導一個軟體系統的實施與開發;而框架的首要目的是為複用.因此,一個框架可有其體系結構,用於指導該框架的開發,反之不然. 
3.有種特殊的體系結構,DSSA(領域特定體系結構)其首要目的也是為了複用. 
4.有個叫體系結構風格的東西,將它用程式程式碼實現後就成了Corba,COM之類的東西,它們倆叫體系結構框架,也叫中介軟體整合框架,又有人願意叫它物件中介軟體

什麼是模式?什麼是框架?(簡述)
                                        ――UB ([email protected]) 2003-6-6
   現在軟體設計裡到處都是模式,框架。有次朋友問什麼是模式?我也在學習中,就我的學習經驗,給出以下小結。(注意:個人觀點,僅供參考,歡迎指正。)

1.什麼是模式?
模式,即pattern。其實就是解決某一類問題的方法論。你把解決某類問題的方法總結歸納到理論高度,那就是模式。
Alexander給出的經典定義是:每個模式都描述了一個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心。通過這種方式,你可以無數次地使用那些已有的解決方案,無需在重複相同的工作。
模式有不同的領域,建築領域有建築模式,軟體設計領域也有設計模式。當一個領域逐漸成熟的時候,自然會出現很多模式。

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

2.為什麼要用模式?
因為模式是一種指導,在一個良好的指導下,有助於你完成任務,有助於你作出一個優良的設計方案,達到事半功倍的效果。而且會得到解決問題的最佳辦法。

為什麼要用框架?
因為軟體系統發展到今天已經很複雜了,特別是伺服器端軟體,設計到的知識,內容,問題太多。在某些方面使用別人成熟的框架,就相當於讓別人幫你完成一些基礎工作,你只需要集中精力完成系統的業務邏輯設計。而且框架一般是成熟,穩健的,他可以處理系統很多細節問題,比如,事物處理,安全性,資料流控制等問題。還有框架一般都經過很多人使用,所以結構很好,所以擴充套件性也很好,而且它是不斷升級的,你可以直接享受別人升級程式碼帶來的好處。
框架一般處在低層應用平臺(如J2EE)和高層業務邏輯之間的中間層。

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

3. 以下所述主要是JAVA,J2EE方面的模式和框架:
  常見的設計模式有什麼?
   首先,你要了解的是GOF的《設計模式--可複用面向物件軟體的基礎》一書(這個可以說是程式設計師必備的了),注意:GOF不是一個人,而是指四個人。它的原意是Gangs Of Four,就是“四人幫”,就是指此書的四個作者:Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides。這本書講了23種主要的模式,包括:抽象工廠、介面卡、外觀模式等。
還有其他的很多模式,估計有100多種。
軟體設計模式太多,就我的理解簡單說一下最常見的MVC模式。
MVC模式是1996年由Buschmann提出的:
  模型(Model):就是封裝資料和所有基於對這些資料的操作。
  檢視(View):就是封裝的是對資料顯示,即使用者介面。
  控制器(Control):就是封裝外界作用於模型的操作和對資料流向的控制等。

另外:
RUP(Rational Unified Process)軟體統一過程,XP(Extreme Programming)極端程式設計,這些通常被叫做“過程方法”,是一種軟體專案實施過程的方法論,它是針對軟體專案的實施過程提出的方法策略。也是另一個角度的模式。

4. 常見的JAVA框架有什麼?
WAF:
全稱:WEB APPLICATION FRAMEWORK
主要應用方面:EJB層,(WEB層也有,但是比較弱)。
主要應用技術:EJB等
出處:url.gifhttp://java.sun.com/blueprints/code/index.html
簡述:這是SUN在展示J2EE平臺時所用的例子PetStore(寵物商店系統)裡面的框架。是SUN藍皮書例子程式中提出的應用框架。它實現了 MVC和其他良好的設計模式。SUN的網站上有技術資料,最好下載PetStore來研究,WEBLOGIC裡自帶此係統,原始碼在bea/weblogic700/samples/server/src/petstore。這是學習瞭解J2EE的首選框架。
免費。

Struts:
主要應用方面:WEB層。
主要應用技術:JSP,TagLib,JavaBean,XML等
出處:url.gifhttp://jakarta.apache.org/struts/index.html
簡述:這是APACHE的開源專案,目前應用很廣泛。基於MVC模式,結構很好,基於JSP。Jbuilder8裡已經集成了STRUTS1.02的製作。
免費。

簡述WAF+STRUTS結合的例子:WEB層用STRUTS,EJB層用WAF:
JSP(TagLib)――>ActionForm――>Action  ――>
  Event――>EJBAction――>EJB    ――>DAO――>Database  
JSP(TagLib) (forward) <――Action  <――EventResponse<――                 

Turbine:
主要應用方面:WEB層。
主要應用技術:servlet等
出處:url.gifhttp://jakarta.apache.org/turbine/index.html
簡述:這是APACHE的開源專案。基於SERVLET。據說速度比較快,基於service(pluggable implementation可插拔的執行元件)的方式提供各種服務。
免費。

COCOON:
主要應用方面:WEB層。
主要應用技術:XML,XSP,servlet等
出處:url.gifhttp://cocoon.apache.org/2.0/
簡述:這是APACHE的一個開源專案。基於XML,基於XSP(通俗地說,XSP是在XML靜態文件中加入Java程式段後形成的動態XML文件。)。特點是可以與多種資料來源互動,包括檔案系統,資料庫,LDAP,XML資源庫,網路資料來源等。
免費。

ECHO:
主要應用方面:WEB層。
主要應用技術:servlet等
出處:url.gifhttp://www.nextapp.com/products/echo/
簡述:nextapp公司的一個開源專案。基於SERVLET。頁面可以做的很漂亮,結合echopoint,可以作出很多圖形效果(裡面用了jfreechart包)。使用SWING的思想來作網頁,把HTML當作JAVA的類來做。但是大量使用Session,頁面分幀(Frame)很多,系統資源消耗很大。
免費。

JATO:
全稱:SUN ONE Application Framework
主要應用方面:WEB層。
主要應用技術:JSP,TagLib,JavaBean等
出處:url.gifhttp://www.sun.com
簡述:這是SUN推出的一個商業性框架,一看名字就知道是結合SUN ONE的平臺推出的。我下載了JATO2.0看了一下,感覺有些簡單,使用了JSP+TagLib+JavaBean。如他的DOC所說JATO是適合用在小的WEB應用裡。
免費。


5.其實本文的目的在於“拋磚引玉”,希望各路高手請你們把各種框架的特點和出處羅列一下 ,供大家參考,選用。

相關推薦

軟體構架架構框架區別

軟體框架(Software Framework)介紹 面向某領域(包括業務領域,如ERP,和計算領域,如GUI)的、可複用的“半成品”軟體,它實現了該領域的共性部分,並提供一系列定義良好的可變點以保證靈活性和可擴充套件性。可以說,軟體框架是領域分析結果的軟體化,是領域內最終應

架構框架區別

必須 成了 分而治之 專用 系列 半成品 框架 目的 關於 http://blog.csdn.net/liuguobo/article/details/43451129 人們對軟件架構存在非常多的誤解,其中一個最為普遍的誤解就是:將架構(Architecture)和框架(F

JavaEE軟體三層架構MVC的區別

JavaEE軟體三層機構是由sun公司提供JavaEE開發規範的: Web層(表現層)、業務邏輯層、資料持久層。【其中WEB層會使用前端控制器模式】 MVC是一種思想,是一種模式: 將軟體分

架構框架區別,你是如何理解的?

人們對軟體架構存在非常多的誤解:   其中一個最為普遍的誤解就是:將架構和框架混為一談,其實很簡單,一句話:框架就是軟體,架構不是軟體。框架落腳在“架”字上,可以理解成名詞性的,是一個客觀性的名稱存在,如:.NetFromework;而架構體現在“構”字上,理解成為構造,是一個動詞性的,是一系列動作發生的策略

JS中constvarlet區別

方法 pre 命令 con 使用 它的 comm 作用 影響 在JavaScript中有三種聲明變量的方式:var、let、const。 1.const 聲明創建一個只讀的常量。這不意味著常量指向的值不可變,而是變量標識符的值只能賦值一次,必須初始化。 const b

列表表格框架

ble center row tab spa str color 內容 出現 一.列表 1.無序列表: 語法:<ul> <li></li>(列表聲明項) </ul

pageContextrequestsessionapplication區別

一個 斷網 發出 可能 使用 -s size ssi attr pageContext,request,session,application是指變量(對象)的生命周期,它們都可以通過setAttribute()和getAttribute()來設定或讀取屬性。 pageCo

wmain _tmain()main()區別

語言 dos 16bit 函數 argv clu main 找到 ron _tmain()是unicode版本的的main() _tmain這個符號多見於VC++創建的控制臺工程中,這個是為了保證移植unicode而加入的(一般_t、_T、T()這些東西都和unico

HSSFXSSFSXSSF區別以及Excel導出優化

基本 per springmvc linu cell exce 功能 pch 臨時文件   之前有寫過運用POI的HSSF方式導出數據到Excel(見:springMVC中使用POI方式導出excel至客戶端、服務器實例),但這種方式當數據量大到一定程度時容易出現內存溢出等

makefile中=:=+=的區別

有感 分析 eight c語言 區別 all ont 總結 mil 經常有人分不清= 、:=和+=的區別 這裏我總結下做下詳細的分析: 首先你得清楚makefile的運行環境,因為我是linux系統,那麽我得運行環境是shell 在Linux的shell裏,shell

類成員函數的重載覆蓋隱藏區別

c/c++1.重載是指允許存在多個同名函數,而這些函數的參數表不同(或許參數個數不同,或許參數類型不同,或許兩者都不同)。實現原理上:編譯器根據函數不同的參數表,對同名函數的名稱做修飾,然後這些同名函數就成了不同的函數(至少對於編譯器來說是這樣的)。如,有兩個同名函數:function func(p:inte

HashMapTreeMapHashtableHashSetConcurrentHashMap區別

擴展性 navig shc .net ica fin details blank table 一、HashMap和TreeMap區別 1、HashMap是基於散列表實現的,時間復雜度平均能達到O(1)。 TreeMap基於紅黑樹(一種自平衡二叉查找樹)實現的,時

CommonJSAMDCMD區別

環境 add 編程 style script webp git 加載模塊 AS 本文參考自:https://www.cnblogs.com/chenguangliang/p/5856701.html 1、CommonJS NodeJS是CommonJS規範的實現,web

epoch iterationbatchsize區別

大小 tails 集中 tps bsp 樣本 一次 size sdn 轉自: https://blog.csdn.net/qq_27923041/article/details/74927398 深度學習中經常看到epoch、 iteration和batchsize,下面按

聯機分析處理ROLAPMOLAPHOLAP區別(轉)

BE 屬性 工具 rolap oss 數據 裏的 目標 銷售 OLAP(on-Line Analysis Processing)是使分析人員、管理人員或執行人員能夠從多角度對信息進行快速、一致、交互地存取,從而獲得對數據的更深入了解的一類軟件技術。OLAP的目標是滿足決策支

CSS的position之absolutefixedrelative區別

abs 當前 splay body left position borde ati aud 首先,我們應了解position的默認值——static static 默認值,沒有定位,元素出現在正常的流中,即忽略 top, bottom, left, right 或者 z-

PAASIAASSAAS區別

時間 每天 應用 娛樂 應用設計 辦公 分類 平臺 一個 IaaS: Infrastructure-as-a-Service(基礎設施即服務) 有了IaaS,你可以將硬件外包到別的地方去。IaaS公司會提供場外服務器,存儲和網絡硬件,你可以租用。節省了維護成本和辦

spring定時器使用註解@Scheduled執行任務,fixedDelayfixedRatecron區別

 註解@Scheduled 可以作為一個觸發源新增到一個方法中,例如,以下的方法將以一個固定延遲時間5秒鐘呼叫一次執行,這個週期是以上一個呼叫任務的 完成時間 為基準,在上一個任務完成之後,5s後再次執行:

ApplicationSessionCookie區別

1.Application物件      Application用於儲存所有使用者的公共的資料資訊,如果使用Application物件,一個需要考慮的問題是任何寫操作都要在Application_OnStart事件(global.asax)中完成.儘

為什麼結構化程式設計面向物件程式設計軟體工程架構設計最後沒有成為軟體領域的銀彈

為什麼結構化程式設計、面向物件程式設計、軟體工程、架構設計最後沒有成為軟體領域的銀彈? 從計算機語言開始講,一步一步的概述和講解,最終會有一個結論,大家往後看,即可明白。 1.機器語言(1940年之前) 機器語言,直接使用二進位制碼0和1來表示機器可以識別的指令和資料。 比如0100011111000