軟體架構定義的流派

來源:互聯網
上載者:User

什麼是架構?如果你問五個不同的人,可能有會得到五種不同的答案”。這是現代軟體開發之父,整合模組化語言UML的建立者之一Ivar Jacobson博士曾說過的一段話。敏捷專家Martin Folwler在《公司專屬應用程式架構模式》一文中,也表達了類似的看法:“很多人都試圖給架構下定義,而這些定義本身卻很難統一。”現實情況確實如此,我們能查到的關於軟體架構的定義,就有很多種不同的說法,這種混亂的狀態給我們的開發活動和技術交流帶來了一定的麻煩,最為典型的就是很多開發人員往往把楚架構、架構以及類庫混為一談。
    凡是有爭議的東西,凡是遇到誰都不服誰的情況,就一定會出現派別。比如中國武術中的少林、武當、峨眉、崆峒等派別;象西方繪畫藝術有什麼野獸派、印象派還有抽象派。對於軟體架構定義也一直流傳著諸多的版本,我們大體可以把這些版本,最終歸納為兩大流派:組成派和決策派。
    按照組成派的說法:軟體系統的架構就是用來將系統描述為電腦群組件以及組件之間的互動。Mary Shaw和David Garlan給出了更為明確的定義:軟體架構={組件(component),串連件(connector),約束(constrain)}。組件可以是獨立的程式,比如資料庫伺服器,也可是子系統、架構、模組、類等不同粒度的軟體單元,它們共同的特點都是承擔一定的計算職責。串連件可以是程序呼叫、管道、RPC或者Web Service等,用於表示組件之間的相互作用。約束一般為對象串連時的規則,或指明構件串連的形式和條件。例如,上層構件可要求下層構件的服務,反之不行;兩對象不得遞規地發送訊息;代碼複製遷移的一致性約束;什麼條件下此種串連無效等。
    Len Bass是組成派的代表人物。按照我們以往的經驗,但凡高人都有都有其高明之處,Len Bass也不例外,他不僅繼承了組成派的觀點,還在此基礎上發揚光大,又加入了最新的元素。按照他的說法:架構等於多個結構,每個結構又等於組件加互動,加外部可見屬性。這個定義在我們業界當中認可度最高,又稱之為“結構派”。
第二大類決策派的認為:軟體架構是軟體一些重要方面決策的集合。這種說法的典型代表是RUP中對於軟體架構的定義:
軟體架構包含了關於以下問題的重要決策:
1、 軟體系統的組織;
2、 選擇組成系統的結構元素和它們之間的介面,以及當這些元素相互協作時所體現的行為;
3、 如何組合這些元素,使它們逐漸組成更大的子系統;
4、 用於指導這個系統組織的架構風格:這些元素以及他們的介面、協作和組合。
    軟體架構並不僅僅注重軟體本身的結構和行為,還注重其它特性:功能性、效能、可擴充性、可重用性、可理解性以及美學等等。

    其實這兩個流派並不矛盾,只是描述問題的角度不同:結構派是從軟體本身(又稱為軟體客體)的角度出發,用來描述軟體系統是由哪些組件組成,這些組件如何互動;決策派則是從架構師(又稱為軟體主體)的角度出發,明確了架構師需要對哪些事情進行決策,那麼這些的決策結果就構成了軟體系統的架構。

=========================================================
給大家來一道4年紀的數學題,答對有獎:
   一隻小猴摘了300個香蕉,需要搬回家,每次最多搬100個。小猴離家100米,它每走1米,都需要吃掉1個香蕉來補充能量,請問它最多能夠搬回家多少個?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.