軟件架構(gòu)(software architecture)是一系列相關(guān)的抽象模式,用于指導(dǎo)大型軟件系統(tǒng)各個(gè)方面的設(shè)計(jì)。 軟件架構(gòu)是一個(gè)系統(tǒng)的草圖。軟件架構(gòu)描述的對(duì)象是直接構(gòu)成系統(tǒng)的抽象組件。各個(gè)組件之間的連接則明確和相對(duì)細(xì)致地描述組件之間的通訊。在實(shí)現(xiàn)階段,這些抽象組件被細(xì)化為實(shí)際的組件,比如具體某個(gè)類或者對(duì)象。在面向?qū)ο箢I(lǐng)域中,組件之間的連接通常用接口_(計(jì)算機(jī)科學(xué))來(lái)實(shí)現(xiàn)。
軟件體系結(jié)構(gòu)是構(gòu)建計(jì)算機(jī)軟件實(shí)踐的基礎(chǔ)。與建筑師設(shè)定建筑項(xiàng)目的設(shè)計(jì)原則和目標(biāo),作為繪圖員畫圖的基礎(chǔ)一樣,一個(gè)軟件架構(gòu)師或者系統(tǒng)架構(gòu)師陳述軟件構(gòu)架以作為滿足不同客戶需求的實(shí)際系統(tǒng)設(shè)計(jì)方案的基礎(chǔ)。來(lái)源:www.examda.com
軟件構(gòu)架是一個(gè)容易理解的概念,多數(shù)工程師(尤其是經(jīng)驗(yàn)不多的工程師)會(huì)從直覺(jué)上來(lái)認(rèn)識(shí)它,但要給出精確的定義很困難。特別是,很難明確地區(qū)分設(shè)計(jì)和構(gòu)架:構(gòu)架屬于設(shè)計(jì)的一方面,它集中于某些具體的特征。
在“軟件構(gòu)架簡(jiǎn)介”中,David Garlan 和 Mary Shaw 認(rèn)為軟件構(gòu)架是有關(guān)如下問(wèn)題的設(shè)計(jì)層次:“在計(jì)算的算法和數(shù)據(jù)結(jié)構(gòu)之外,設(shè)計(jì)并確定系統(tǒng)整體結(jié)構(gòu)成為了新的問(wèn)題。結(jié)構(gòu)問(wèn)題包括總體組織結(jié)構(gòu)和全局控制結(jié)構(gòu);通信、同步和數(shù)據(jù)訪問(wèn)的協(xié)議;設(shè)計(jì)元素的功能分配;物理分布;設(shè)計(jì)元素的組成;定標(biāo)與性能;備選設(shè)計(jì)的選擇?!盵GS93]
但構(gòu)架不僅是結(jié)構(gòu);IEEE Working Group on Architecture 把其定義為“系統(tǒng)在其環(huán)境中的層概念”[IEEE98]。構(gòu)架還包括“符合”系統(tǒng)完整性、經(jīng)濟(jì)約束條件、審美需求和樣式。它并不僅注重對(duì)內(nèi)部的考慮,而且還在系統(tǒng)的用戶環(huán)境和開(kāi)發(fā)環(huán)境中對(duì)系統(tǒng)進(jìn)行整體考慮,即同時(shí)注重對(duì)外部的考慮。
在 Rational Unified Process 中,軟件系統(tǒng)的構(gòu)架(在某一給定點(diǎn))是指系統(tǒng)重要構(gòu)件的組織或結(jié)構(gòu),這些重要構(gòu)件通過(guò)接口與不斷減小的構(gòu)件與接口所組成的構(gòu)件進(jìn)行交互。
從和目的、主題、材料和結(jié)構(gòu)的聯(lián)系上來(lái)說(shuō),軟件架構(gòu)可以和建筑物的架構(gòu)相比擬。一個(gè)軟件架構(gòu)師需要有廣泛的軟件理論知識(shí)和相應(yīng)的經(jīng)驗(yàn)來(lái)事實(shí)和管理軟件產(chǎn)品的高級(jí)設(shè)計(jì)。軟件架構(gòu)師定義和設(shè)計(jì)軟件的模塊化,模塊之間的交互,用戶界面風(fēng)格,對(duì)外接口方法,創(chuàng)新的設(shè)計(jì)特性,以及高層事物的對(duì)象操作、邏輯和流程。
一般而言,軟件系統(tǒng)的架構(gòu)(Architecture)有兩個(gè)要素:
·它是一個(gè)軟件系統(tǒng)從整體到部分的層次的劃分。
一個(gè)系統(tǒng)通常是由元件組成的,而這些元件如何形成、相互之間如何發(fā)生作用,則是關(guān)于這個(gè)系統(tǒng)本身結(jié)構(gòu)的重要信息。
詳細(xì)地說(shuō),就是要包括架構(gòu)元件(Architecture Component)、聯(lián)結(jié)器(Connector)、任務(wù)流(Task-flow)。所謂架構(gòu)元素,也就是組成系統(tǒng)的核心"磚瓦",而聯(lián)結(jié)器則描述這些元件之間通訊的路徑、通訊的機(jī)制、通訊的預(yù)期結(jié)果,任務(wù)流則描述系統(tǒng)如何使用這些元件和聯(lián)結(jié)器完成某一項(xiàng)需求。
·建造一個(gè)系統(tǒng)所作出的層次的、以后難以更改的,商業(yè)的和技術(shù)的決定。
在建造一個(gè)系統(tǒng)之前會(huì)有很多的重要決定需要事先作出,而一旦系統(tǒng)開(kāi)始進(jìn)行詳細(xì)設(shè)計(jì)甚至建造,這些決定就
很難更改甚至無(wú)法更改。顯然,這樣的決定必定是有關(guān)系統(tǒng)設(shè)計(jì)成敗的最重要決定,必須經(jīng)過(guò)非常慎重的研究和考察。
歷史
早在1960年代,諸如E·W·戴克斯特拉就已經(jīng)涉及軟件架構(gòu)這個(gè)概念了。自1990年代以來(lái),部分由于在Rational Software Corporation 和Microsoft內(nèi)部的相關(guān)活動(dòng),軟件架構(gòu)這個(gè)概念開(kāi)始越來(lái)越流行起來(lái)。
卡內(nèi)基梅隆大學(xué)和加州大學(xué)埃爾文分校在這個(gè)領(lǐng)域作了很多研究??▋?nèi)基·梅隆大學(xué)的Mary Shaw和David Garlan于1996年寫了一本叫做 Software Architecture perspective on an emerging discipline的書,提出了軟件架構(gòu)中的很多概念,例如軟件組件、連接器、風(fēng)格等等。 加州大學(xué)埃爾文分校的軟件研究院所做的工作則主要集中于架構(gòu)風(fēng)格、架構(gòu)描述語(yǔ)言以及動(dòng)態(tài)架構(gòu)。
計(jì)算機(jī)軟件的歷史開(kāi)始于五十年代,歷史非常短暫,而相比之下建筑工程則從石器時(shí)代就開(kāi)始了,人類在幾千年的建筑設(shè)計(jì)實(shí)踐中積累了大量的經(jīng)驗(yàn)和教訓(xùn)。建筑設(shè)計(jì)基本上包含兩點(diǎn),一是建筑風(fēng)格,二是建筑模式。獨(dú)特的建筑風(fēng)格和恰當(dāng)選擇的建筑模式,可以使一個(gè)獨(dú)一無(wú)二。
軟件體系結(jié)構(gòu)是構(gòu)建計(jì)算機(jī)軟件實(shí)踐的基礎(chǔ)。與建筑師設(shè)定建筑項(xiàng)目的設(shè)計(jì)原則和目標(biāo),作為繪圖員畫圖的基礎(chǔ)一樣,一個(gè)軟件架構(gòu)師或者系統(tǒng)架構(gòu)師陳述軟件構(gòu)架以作為滿足不同客戶需求的實(shí)際系統(tǒng)設(shè)計(jì)方案的基礎(chǔ)。來(lái)源:www.examda.com
軟件構(gòu)架是一個(gè)容易理解的概念,多數(shù)工程師(尤其是經(jīng)驗(yàn)不多的工程師)會(huì)從直覺(jué)上來(lái)認(rèn)識(shí)它,但要給出精確的定義很困難。特別是,很難明確地區(qū)分設(shè)計(jì)和構(gòu)架:構(gòu)架屬于設(shè)計(jì)的一方面,它集中于某些具體的特征。
在“軟件構(gòu)架簡(jiǎn)介”中,David Garlan 和 Mary Shaw 認(rèn)為軟件構(gòu)架是有關(guān)如下問(wèn)題的設(shè)計(jì)層次:“在計(jì)算的算法和數(shù)據(jù)結(jié)構(gòu)之外,設(shè)計(jì)并確定系統(tǒng)整體結(jié)構(gòu)成為了新的問(wèn)題。結(jié)構(gòu)問(wèn)題包括總體組織結(jié)構(gòu)和全局控制結(jié)構(gòu);通信、同步和數(shù)據(jù)訪問(wèn)的協(xié)議;設(shè)計(jì)元素的功能分配;物理分布;設(shè)計(jì)元素的組成;定標(biāo)與性能;備選設(shè)計(jì)的選擇?!盵GS93]
但構(gòu)架不僅是結(jié)構(gòu);IEEE Working Group on Architecture 把其定義為“系統(tǒng)在其環(huán)境中的層概念”[IEEE98]。構(gòu)架還包括“符合”系統(tǒng)完整性、經(jīng)濟(jì)約束條件、審美需求和樣式。它并不僅注重對(duì)內(nèi)部的考慮,而且還在系統(tǒng)的用戶環(huán)境和開(kāi)發(fā)環(huán)境中對(duì)系統(tǒng)進(jìn)行整體考慮,即同時(shí)注重對(duì)外部的考慮。
在 Rational Unified Process 中,軟件系統(tǒng)的構(gòu)架(在某一給定點(diǎn))是指系統(tǒng)重要構(gòu)件的組織或結(jié)構(gòu),這些重要構(gòu)件通過(guò)接口與不斷減小的構(gòu)件與接口所組成的構(gòu)件進(jìn)行交互。
從和目的、主題、材料和結(jié)構(gòu)的聯(lián)系上來(lái)說(shuō),軟件架構(gòu)可以和建筑物的架構(gòu)相比擬。一個(gè)軟件架構(gòu)師需要有廣泛的軟件理論知識(shí)和相應(yīng)的經(jīng)驗(yàn)來(lái)事實(shí)和管理軟件產(chǎn)品的高級(jí)設(shè)計(jì)。軟件架構(gòu)師定義和設(shè)計(jì)軟件的模塊化,模塊之間的交互,用戶界面風(fēng)格,對(duì)外接口方法,創(chuàng)新的設(shè)計(jì)特性,以及高層事物的對(duì)象操作、邏輯和流程。
一般而言,軟件系統(tǒng)的架構(gòu)(Architecture)有兩個(gè)要素:
·它是一個(gè)軟件系統(tǒng)從整體到部分的層次的劃分。
一個(gè)系統(tǒng)通常是由元件組成的,而這些元件如何形成、相互之間如何發(fā)生作用,則是關(guān)于這個(gè)系統(tǒng)本身結(jié)構(gòu)的重要信息。
詳細(xì)地說(shuō),就是要包括架構(gòu)元件(Architecture Component)、聯(lián)結(jié)器(Connector)、任務(wù)流(Task-flow)。所謂架構(gòu)元素,也就是組成系統(tǒng)的核心"磚瓦",而聯(lián)結(jié)器則描述這些元件之間通訊的路徑、通訊的機(jī)制、通訊的預(yù)期結(jié)果,任務(wù)流則描述系統(tǒng)如何使用這些元件和聯(lián)結(jié)器完成某一項(xiàng)需求。
·建造一個(gè)系統(tǒng)所作出的層次的、以后難以更改的,商業(yè)的和技術(shù)的決定。
在建造一個(gè)系統(tǒng)之前會(huì)有很多的重要決定需要事先作出,而一旦系統(tǒng)開(kāi)始進(jìn)行詳細(xì)設(shè)計(jì)甚至建造,這些決定就
很難更改甚至無(wú)法更改。顯然,這樣的決定必定是有關(guān)系統(tǒng)設(shè)計(jì)成敗的最重要決定,必須經(jīng)過(guò)非常慎重的研究和考察。
歷史
早在1960年代,諸如E·W·戴克斯特拉就已經(jīng)涉及軟件架構(gòu)這個(gè)概念了。自1990年代以來(lái),部分由于在Rational Software Corporation 和Microsoft內(nèi)部的相關(guān)活動(dòng),軟件架構(gòu)這個(gè)概念開(kāi)始越來(lái)越流行起來(lái)。
卡內(nèi)基梅隆大學(xué)和加州大學(xué)埃爾文分校在這個(gè)領(lǐng)域作了很多研究??▋?nèi)基·梅隆大學(xué)的Mary Shaw和David Garlan于1996年寫了一本叫做 Software Architecture perspective on an emerging discipline的書,提出了軟件架構(gòu)中的很多概念,例如軟件組件、連接器、風(fēng)格等等。 加州大學(xué)埃爾文分校的軟件研究院所做的工作則主要集中于架構(gòu)風(fēng)格、架構(gòu)描述語(yǔ)言以及動(dòng)態(tài)架構(gòu)。
計(jì)算機(jī)軟件的歷史開(kāi)始于五十年代,歷史非常短暫,而相比之下建筑工程則從石器時(shí)代就開(kāi)始了,人類在幾千年的建筑設(shè)計(jì)實(shí)踐中積累了大量的經(jīng)驗(yàn)和教訓(xùn)。建筑設(shè)計(jì)基本上包含兩點(diǎn),一是建筑風(fēng)格,二是建筑模式。獨(dú)特的建筑風(fēng)格和恰當(dāng)選擇的建筑模式,可以使一個(gè)獨(dú)一無(wú)二。