<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 軟件架構設計的三個(gè)維度

軟件架構設計的三個(gè)維度

作者: 時(shí)間:2011-06-27 來(lái)源:網(wǎng)絡(luò ) 收藏

是一個(gè)非常大的話(huà)題,不管寫(xiě)幾篇文章,接觸到的始終只是冰山一角,更多的是實(shí)踐中去體會(huì )。這篇文章主要介紹面向對象OO、面向方面AOP和面向服務(wù)SOA這要素在中的位置與作用。

本文引用地址:http://dyxdggzs.com/article/150561.htm

  ,或者說(shuō)是我們在考慮架構時(shí)需要思考方向。

  這三個(gè)分別為面向對象、面向方面、面向服務(wù)。

  這三個(gè)可以看作是正交的,但不同維度會(huì )互相印證,互相支撐,整個(gè)架構的示意圖如圖所示。

  

  圖:架構三維度結構圖

  面向對象

  面向對象技術(shù)最初是從面向對象的程序設計開(kāi)始的,它的出現以上世紀60年代Simula語(yǔ)言為標志,并在Smalltalk語(yǔ)言的完善和標準化過(guò)程中得到更多的擴展和對以前思想的重新注解。

  上世紀80年代中后期,面向對象程序設計逐漸成熟,被計算機界理解和接受,人們又開(kāi)始進(jìn)一步考慮面向對象的開(kāi)發(fā)問(wèn)題。直到現在,面向對象已經(jīng)成為一種非常流行的編程方式,以及設計的架構。

  面向對象提出有三個(gè)主要目標:重用性、靈活性和擴展性,強調對象的“抽象”、“封裝”、“繼承”和“多態(tài)”。它能讓人們以更加接近于現實(shí)世界的方式來(lái)思考程序,這點(diǎn)可以說(shuō)是面向對象最大的進(jìn)步。

  在OO思想的運用上,業(yè)界出現了很多好的經(jīng)驗與技巧,從而涌現出大量的設計模式,可以說(shuō)面向對象是系統分析與設計時(shí)的一個(gè)很重要的方面。面向方面

  面向方面最初來(lái)源于hook技術(shù),本質(zhì)上就是滿(mǎn)足擴展的需求,可以在程序中自由擴展功能。

  面向方面不僅僅是一門(mén)編程技術(shù),同樣也是一種架構設計的思路。如果說(shuō)OO是縱向地分析、切割整個(gè)系統,那么可以認為AOP是橫向地對系統作切片。

  簡(jiǎn)單地理解,OO與AOP分別從兩個(gè)不同的角度給我們提供了分析系統的思路。面向方面可以彌補面向對象的缺陷,兩種方式有機的結合在一起,可以更加有效地對系統進(jìn)行分析。

  我們認為OO是接近于人類(lèi)認識自然的思維方式,但對于東方而言卻并不一定是這樣的。

  當西方人看到一個(gè)復雜系統的時(shí)候,只會(huì )有一種思路,就是“分解”,將系統分解成一塊一塊,然后每個(gè)部分進(jìn)行研究。

  當東方人看到一個(gè)復雜系統的時(shí)候,更多地會(huì )關(guān)注系統中存在的關(guān)系,將系統作為一個(gè)有機的整體進(jìn)行研究,這也是東方和西方在事物看法上存在的差異。

  這兩種思維方式都沒(méi)有問(wèn)題,如果結合起來(lái)分析問(wèn)題,解決問(wèn)題會(huì )更好。面向對象與面向方面也同樣如此,都能對應到人類(lèi)認識自然的思維方式上。

  面向服務(wù)

  面向服務(wù)可以說(shuō)是最近炒得比較火熱的概念。包括現在提到的SaaS(Software as a service),即服務(wù)。準確而言,面向服務(wù)不僅僅是行業(yè)的概念,這個(gè)要從社會(huì )的產(chǎn)業(yè)結構說(shuō)起。

  社會(huì )產(chǎn)業(yè)總共分為三個(gè),第一產(chǎn)業(yè)農業(yè),第二產(chǎn)業(yè)工業(yè),第三產(chǎn)業(yè)服務(wù)業(yè)。最早社會(huì )的主要產(chǎn)業(yè)是第一產(chǎn)業(yè)農業(yè),將近有幾萬(wàn)年的歷史。

  十八世紀下半葉在英國開(kāi)始的工業(yè)革命,對人們的生活產(chǎn)生了根本性的影響,社會(huì )的主要產(chǎn)業(yè)成了第二產(chǎn)業(yè)工業(yè)。

  現在仍然屬于工業(yè)時(shí)代,或者有人說(shuō)的“后工業(yè)時(shí)代”。而在后工業(yè)時(shí)代,社會(huì )的經(jīng)濟體制必定要向第三產(chǎn)業(yè)服務(wù)業(yè)逐漸轉型。面向服務(wù)其實(shí)是社會(huì )經(jīng)濟體制重心的一種遷移。

  還是說(shuō)回到軟件行業(yè),社會(huì )的主要產(chǎn)業(yè)將轉變成服務(wù)業(yè),自然軟件行業(yè)也會(huì )出現對應的變化,那就是這里提到的面向服務(wù)。面向服務(wù)今后會(huì )影響到軟件的交付模式,會(huì )對整個(gè)軟件行業(yè)的體制產(chǎn)生影響。

  而說(shuō)到架構層面,面向服務(wù)是系統發(fā)布功能的一種方式。并且基于這種方式下不同的系統之間能有效地通信、協(xié)作。常見(jiàn)的實(shí)現技術(shù)就是Web Service。

  軟件全局觀(guān)

  軟件架構設計的三個(gè)維度:面向對象、面向方面、面向服務(wù)。

  最年長(cháng)的一個(gè)維度就是面向對象,發(fā)展了好幾十年,也是相對而言比較成熟的一個(gè)維度。它解決的問(wèn)題是系統內部結構的設計。

  面向方面思想的提出能夠彌補面向對象的缺陷。面向對象的方式不能實(shí)現橫切關(guān)注點(diǎn)的分離,而面向方面正是為了解決這個(gè)問(wèn)題。面向方面與面向對象一樣都是解決系統內部結構的設計。

  面向服務(wù)更多的是涉及到系統的外部,簡(jiǎn)單地說(shuō)就是發(fā)布功能。它并不關(guān)注系統內部結構的實(shí)現,所以說(shuō)面向服務(wù)與面向對象或者面向方面并不沖突。

  這三個(gè)維度并不是絕對孤立的,它們之間會(huì )互相影響、制約,相互發(fā)展的。我們在分析架構的時(shí)候需要同時(shí)考慮到這三個(gè)維度的問(wèn)題,這樣有助于我們設計出更加優(yōu)秀的架構。



關(guān)鍵詞: 維度 三個(gè) 設計 架構 軟件

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>