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