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