“系統是一個個有機的生命。跟企業一樣,系統也需要施肥澆水,需要健康的成長。與企業一樣,一個系統可能會在短期內被濫用(比如在需要短期內快速盈利的驅使下),不過如果濫用的時間過長,系統最終將會無法支持。與CEO一樣,一個架構師對系統的這個特性了如指掌。他們能夠識別什么是濫用,系統能夠承受的限度,并將系統引回到健康的道路上。”
上面是一段架構師對于構建優美系統的描述。這段話的主人說,“架構師是使用代碼作畫的大師。”——在他看來,架構師最大的價值在于藝術。這并非是 Fred George自家的看法,高級架構師王翔先生也表示“好的A(編者注:A即Architect,架構師的簡稱)需要有些藝術氣質”。
什么是優美的系統?
商業軟件項目的首要目標是實現來自客戶或公司的商業需求。然而,在架構過程中僅僅考慮到實現商業需求而建立的系統往往缺乏伸縮性、安全性、可維護性、可靠性、可移植性等等,導致其在短短數年內便因無法與時俱進而被拋棄。這一點幾乎每一位維護過項目的程序員應該都能夠體會到:面對著缺乏文檔、不知所云的代碼,想要修改或添加一個功能卻無從下手。
而一個優美的系統則是可以像有機的生命一樣成長的,這是因為從系統開始架構的那一刻起,架構師就考慮到這個系統以后將會面臨的挑戰,為系統的成長預留好空間。項目經理經常會對這位架構師提出的看似理想化的要求不置可否——項目經理只想著能夠盡快以比較低的成本實現客戶的需求,然而這些充滿藝術美感的想法其實是打造健康——因而優美——的系統的根本因素。
架構師的藝術氣質使其站在了與項目經理不同的立場上:項目經理從商業需求的方向考慮,而架構師則從系統本身的方向考慮。在商業氣息很濃的項目中這會引發一些沖突,這也是為什么最出色的系統往往出自學院,而商業項目中的架構師必須具備權衡取舍及妥協能力的原因(參考架構師十大技能之權衡取舍篇)。
藝術氣質的另一體現就是對簡約的追求,這在Google或Apple的大部分產品上有很好的體現??雌饋硎莾苫厥?,不過系統的簡約與系統的健康往往是相輔相成的。
架構師的藝術氣質
在軟件開發產業發展的過程中逐漸建立起了一些行業準則和參考標準,這些將有助于架構師在面對復雜需求時仍然能夠保持清晰地頭腦來思考問題。學習前人總結的軟件與架構方面的知識,遵循既定的指導標準——比如,按照模版編寫軟件架構文檔——看似死板,卻是必要的修煉。這些架構師的基本功是全面的、抽象的、深層次的。沒有這些基礎,那么架構師連實現商業需求都會感到吃力,更不要說去顧及需求之外的東西。另外我們提到過架構師需要有前瞻性:超前的眼光是架構師實現其藝術追求的彈藥。
閱讀公開的軟件架構文檔(Software Architecture Document)是一個很好的學習途徑(在Google上能夠找到很多)。軟件架構文檔是架構師在項目早期階段對于系統的一個描述性概覽,這份文檔提供了這個系統預計實現功能的概述,這個系統將會使用什么技術以及可能存在的技術局限,以及最重要的部分:視圖模型。
視圖模型是業內在20世紀90年代開始逐步建立起來的一套規范(IEEE 1471),不同的視圖從不同的角度對系統的不同方面進行關注。之前所提到的項目經理注重商業需求而架構師注重系統健康的矛盾,其實在這個視圖模型中都有相應的描述,為架構師開展思路提供了很好的指引。
過去的十多年間出現了很多指引性的視圖以及框架,一些常見的包括:
用例視圖(Use-Case View):這是業務需求的角度。
邏輯視圖(Logical View):這是功能實現的角度,用例執行的流程圖。
上面兩個視圖是必需的,也往往是項目經理最關注的部分。如果只考慮這兩個角度,系統可以被建立,但正如之前所描述的那樣,是不可能優美的。架構師還需要視情況考慮下面這些視圖:
進程視圖(Process View):如果系統是多線程的,高并發的,則需要考慮線程的角度。
部署視圖(Deployment View):如果系統分布在多節點,則需要考慮服務器端和客戶端節點等硬件映射的角度。
數據視圖(Data View):如果持久層在系統中很重要,則需要考慮數據的角度。
還有很多其他的視圖,在這里就不一一列舉了。這些視圖都是從系統的角度來看問題。有些視圖框架有一定通用性,比如業內廣為流傳的4+1模型、RM-ODP 模型等等;但是對于每一個系統需要考慮哪些視圖,則需要架構師去摸索、去感覺、去研究;況且現在新技術層出不窮,一個比較前沿的項目需要從前人沒有考慮過的角度看問題也不是沒有可能。如果架構師沒有一定的藝術氣質來指引方向,那么一味的照搬現有的模式可能會水土不服而使系統變得臃腫復雜,而完全不考慮商業需求之外的因素則會讓系統先天不足而夭折。
不過正如之前所提到的,如果沒有扎實的技術基礎,如果架構師缺乏全局觀、抽象思維能力以及透過問題看本質的能力,那么他僅僅為了實現客戶需求都會感到力不從心,更不用說發揮自己的藝術氣質云云了。
從另一個角度來講,做藝術的架構師們也都是行業里大師級別的人物了,這也是架構師們的終極目標吧!
it知識庫:優美的系統與架構師的藝術氣質,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。