架构之美第十三章-美丽的架构
所有前面的方法都有助于我們判斷一個架構(gòu)是否“足夠好”—也就是說,是否有可能指導(dǎo)開發(fā)者和測試者構(gòu)建一個系統(tǒng),并滿足系統(tǒng)的利益相關(guān)人的功能和質(zhì)量關(guān)注點。在我們每天使用的系統(tǒng)中存在著許多好的架構(gòu)。
? ? ? ?但是,超越足夠好的架構(gòu)是怎樣的呢?如果有一個“軟件架構(gòu)名人堂”,那會怎樣?哪些架構(gòu)會陳列在這個藝術(shù)館的墻上?這個想法可能沒有你想象的那么遙遠(yuǎn)—在軟件產(chǎn)品線領(lǐng)域,這樣的“名人堂”的確存在。(注1)進(jìn)入“軟件產(chǎn)品線名人堂”的條件包括獲得商業(yè)上的成功、影響其他產(chǎn)品線的架構(gòu)(其他產(chǎn)品線可能“借用、復(fù)制、竊取”這個架構(gòu))、擁有足夠的文檔從而讓其他人“不必通過道聽途說”就能夠理解該架構(gòu)。我們將為更一般的“架構(gòu)名人堂”或“美麗架構(gòu)藝術(shù)館”的候選者設(shè)立怎樣的條件呢?首先我們應(yīng)該認(rèn)識到,這是一個軟件系統(tǒng)的藝術(shù)館,而不是其他藝術(shù)館,我們的系統(tǒng)構(gòu)建的目的是為了使用。所以,我們也許從一開始就應(yīng)該關(guān)注該架構(gòu)的實用性:它應(yīng)該每天被許多人使用。
? ? ? ? ? ? ?但是,在使用架構(gòu)之前,它必須先構(gòu)建,所以我們應(yīng)該關(guān)注該架構(gòu)的可構(gòu)建性。我們會尋找那些具有定義良好的使用結(jié)構(gòu)的架構(gòu),它們支持增量式構(gòu)建,這樣,通過每次構(gòu)建迭代我們都能得到一個有用的、可測試的系統(tǒng)。我們也會尋找那些具有定義良好的模塊接口、本來就很好測試的架構(gòu),這樣,構(gòu)建的過程就是透明的、可見的。
? ? ? ? 接來下,我們想尋找那些展示了持久性的架構(gòu)—也就是說,那些經(jīng)過了時間考驗的架構(gòu)。我們生活在一個技術(shù)環(huán)境以從未有過的加速度變化的年代。美麗的架構(gòu)應(yīng)該預(yù)期到
變更的需要,允許期望的修改能夠容易而有效地進(jìn)行。我們想尋找那些避免了“衰老地平線”(Klein 2005)的架構(gòu),超過了這條“衰老地平線”,維護(hù)將變得代價極大,以至于不可能進(jìn)行。
? ? ? ? ?最后,我們還想尋找這樣一些架構(gòu),它們的特征讓使用、構(gòu)建、測試這些架構(gòu)的開發(fā)人員和測試人員,以及由它而形成的系統(tǒng)的用戶感到由衷的高興。為什么開發(fā)人員會高興?因為它讓他們的工作變得容易,而且更有可能得到一個高品質(zhì)的系統(tǒng)。為什么測試人員會高興?作為測試過程的一部分,他們必須嘗試模擬用戶的行為。如果他們高興,可能用戶也會感到高興。如果廚師對他的烹調(diào)的菜品感到不高興,那么品嘗這些菜品的顧客也可能會感到不高興。
? ? ? ? ?不同的系統(tǒng)和應(yīng)用領(lǐng)域為這些架構(gòu)提供了許多機(jī)會,展示它們特有的令人高興的特征,但概念完整性是一項跨越所有領(lǐng)域的特征,并且總是讓人感到高興。一致的架構(gòu)學(xué)習(xí)起來更容易、更快,當(dāng)知道了一點之后,你就可以開始預(yù)測其余的部分。不需要記住并處理特殊的情況,代碼更干凈,測試集更小。一致的架構(gòu)不會為做同一件事情提供兩種(或更多)方法,不會讓用戶浪費時間進(jìn)行選擇。正如Ludwig Mies van der Rohe所說的,好的設(shè)計,“少即是多”。愛因斯坦可能會說,美麗的架構(gòu)就是盡可能簡單,但不要過于簡單。
? ? ? ? ?有了這些判別條件,我們推薦第一批進(jìn)入“美麗架構(gòu)藝術(shù)館”的候選者。
? ? ? ? ?第一個是A-7E艦載飛行處理器(Onboard Flight Processor,OFP)的架構(gòu),它由海軍研究實驗室(Naval Research Laboratory,NRL)在20世紀(jì)70年代后期開發(fā),在(Bass、Clements和Kazman 2003)有介紹。盡管這個系統(tǒng)從未實現(xiàn)量產(chǎn),但它滿足了所有其他的判別條件。這個架構(gòu)對軟件架構(gòu)的實踐曾經(jīng)產(chǎn)生了巨大的影響,它展示在真實世界的系統(tǒng)中,將設(shè)計時的信息隱藏模塊和使用結(jié)構(gòu)與運行時的進(jìn)程結(jié)構(gòu)分離。因為美國政府資助并開發(fā)了這個架構(gòu),所以所有項目文檔都提供給了公共領(lǐng)域。(注2)這個架構(gòu)具有定義良好的使用結(jié)構(gòu),促進(jìn)了系統(tǒng)的增量式構(gòu)建。最后,信息隱藏模塊結(jié)構(gòu)為分解系統(tǒng)提供了清晰一致的準(zhǔn)則,實現(xiàn)
了很強的概念完整性。作為嵌入式系統(tǒng)軟件架構(gòu)的榜樣,A-7E OFP當(dāng)然屬于我們的藝術(shù)館。
? ? ? ? ?我們想放入藝術(shù)館的另一個架構(gòu)是朗訊5ESS電話交換機(jī)的軟件架構(gòu)(Carney等1985)。5ESS取得了全球范圍的商業(yè)成功,為世界各國的網(wǎng)絡(luò)提供了核心電話網(wǎng)絡(luò)交換。它成為性能和可靠性的標(biāo)準(zhǔn),每個單元每小時能處理超過100萬次的連接,平均每年非計劃宕機(jī)時間少于10秒鐘(Alcatel-Lucent 1999)。該架構(gòu)的一些統(tǒng)一概念,如管理電話連接的“半通話模型”,已經(jīng)成為電話和網(wǎng)絡(luò)協(xié)議領(lǐng)域的標(biāo)準(zhǔn)模式(Hanmer 2001)。除了保持必須處理的通話類型的數(shù)目為2n(其中n是通話協(xié)議的數(shù)目)之外,半通話模式還在操作系統(tǒng)的進(jìn)程概念和電話的通話類型概念之間建立起了聯(lián)系,從而提供了簡單的設(shè)計原則,引入了漂亮的架構(gòu)一致性。在過去的25年中,開發(fā)團(tuán)隊涉及多達(dá)3000個人,他們發(fā)展并增強該系統(tǒng)。基于它的商業(yè)成功、持久性和影響,5ESS架構(gòu)是我們藝術(shù)館的一件好藏品。
? ? ? ??還有一個我們想放入美麗架構(gòu)藝術(shù)館的系統(tǒng),它就是萬維網(wǎng)(World Wide Web,WWW)的架構(gòu)。它由Tim Berners-Lee在CERN創(chuàng)建,在(Bass、Clements和Kazman 2003)中有介紹。萬維網(wǎng)當(dāng)然已經(jīng)取得了商業(yè)上的成功,它轉(zhuǎn)變了人們使用因特網(wǎng)的方式。即使創(chuàng)建了新的應(yīng)用、引入了新的功能,它的架構(gòu)仍然保持不變。該架構(gòu)的整體簡單性促成了它的概念完整性,但有一些決定導(dǎo)致了該架構(gòu)的完整性保持不變,如客戶端和服務(wù)器端使用同一個庫,創(chuàng)建分層架構(gòu)以實現(xiàn)分離關(guān)注點等。核心萬維網(wǎng)架構(gòu)的持久性和它對新擴(kuò)展、新功能持續(xù)支持的能力,使它當(dāng)之無愧地進(jìn)入了我們的藝術(shù)館。
什么是建筑師? 夏天很熱的一個日子里,一個外鄉(xiāng)人沿著一條路在行走。他走著走著,來 到一個人跟前,此人正在路邊敲碎石頭。 “你在做什么?”他問那個人。 那個人抬頭看著他;“我在敲碎石頭。你以為我看起來像在干什么?現(xiàn)在 不要妨礙我,讓我繼續(xù)干活。” 這個外鄉(xiāng)人繼續(xù)沿著路走,不久他遇到了第二個在大太陽下敲碎石頭的人。 這個人正努力工作,汗滴如雨。 “你在做什么?”外鄉(xiāng)人問道。 這個人抬頭看他,露出微笑。 “我在為謀生而工作,”他說,“但這個工作太辛苦了。也許你能給我一份更 好的工作?” 外鄉(xiāng)人搖了搖頭,繼續(xù)前行。沒多久,他遇到了第三個敲碎石頭的人。太 陽正是最炙熱的時候,這個人非常賣力,汗流如注。 “你在做什么?”外鄉(xiāng)人問道。 這個人停了一下,喝了一口水,微笑著抬起他的手,指向天空。 “我在建一座大教堂。”他喘著氣說。 外鄉(xiāng)人看了他一會兒,說:“我們正打算開一家新公司。你來做我們的總建 筑師怎么樣?”
? ? ? ? ? ? 我們的最后一個例子是UNIX系統(tǒng),它展示了概念完整性,使用廣泛,擁有巨大的影響力。管道和過濾器的設(shè)計是討人喜歡的抽象,允許我們快速構(gòu)建新的應(yīng)用。在描述架構(gòu)、架構(gòu)師的角色和創(chuàng)建架構(gòu)時的考慮等方面,我們已經(jīng)談了很多,我們也簡
單介紹了一些美麗架構(gòu)的例子。接下來我們邀請你閱讀后續(xù)章節(jié)中詳細(xì)的例子,這些例子來自于那些技藝精湛的架構(gòu)師,本書介紹了他們創(chuàng)建并使用過的那些美麗架構(gòu)。
總結(jié)
以上是生活随笔為你收集整理的架构之美第十三章-美丽的架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装SQL server显示重新启动计算
- 下一篇: 【阿里技术】2019年开发者必读!20位