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

來源:互聯網
上載者:User

標籤:des   style   blog   http   java   color   

軟體架構(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等
出處:http://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等
出處:http://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等
出處:http://jakarta.apache.org/turbine/index.html
簡述:這是APACHE的開源項目。基於SERVLET。據說速度比較快,基於service(pluggable implementation可插拔的動作項目)的方式提供各種服務。
免費。

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

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

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

TCF:
全稱:Thin-Client Framework
主要應用方面:JAVA GUI。
主要應用技術:JAVA application等
出處:http://www.alphaworks.ibm.com/tech/tcf
簡述:這是IBM出的一個架構。基於MVC模式,基於JAVA Application。推薦一篇介紹文章:http://www-900.ibm.com/developerWorks/cn/java/j-tcf1/index.shtml
收費:每個企業對象license:2000美元。 


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


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.