軟件架構(gòu)師不是建筑架構(gòu)師。他們之間除了名字,沒有任何的共同之處。把軟件架構(gòu)師和建筑架構(gòu)師類比,甚至把他們等同起來,是一種錯誤的觀念。
建筑是實體的,軟件是形式的。實體的建筑以結(jié)構(gòu)為其主要內(nèi)容,輔以少量動態(tài)的考慮(給水、排水及其他)。軟件則是靜態(tài)的結(jié)構(gòu)和動態(tài)的行為的結(jié)合體。從這個 角度,建筑師的建模主要是靜態(tài)的建模,比一個機械工程師,他多了藍圖的繪制的工作;而一個軟件架構(gòu)師不僅要對軟件的結(jié)構(gòu)進行建模,還要對軟件的運行時刻的 行為建模。
建筑是一次性的,軟件是演變的。雖然我們也說“舊城改造”,但那是拆了重建,而不是在原基礎(chǔ)上改造。一棟造好的樓房,是不能在上面再增加一層的。軟件則是 在原基礎(chǔ)上修改,以滿足用戶需要。在這個前提下,建筑的架構(gòu)是不會改變的;而軟件在多次修改的情況下很可能觸及架構(gòu)上的變動。所以軟件架構(gòu)師必須在軟件的 整個生命周期中時刻注意架構(gòu)是否會變化,并且可能會主動調(diào)整它。
在建筑設(shè)計中,必須滿足結(jié)構(gòu)力學(xué)等基本原理,否則生產(chǎn)出來的建筑本身的使用質(zhì)量沒有保證,這是一個強制的要求,也存在相關(guān)標準。而軟件在設(shè)計上只有一堆原 則,指導(dǎo)我們設(shè)計。即使你沒有遵循這些原則,生產(chǎn)出來的產(chǎn)品一般也是可用的,具有使用質(zhì)量,但產(chǎn)品改進的質(zhì)量就難說了。因此軟件的設(shè)計也比較難以把握,生 產(chǎn)一堆可用的垃圾的情況比較普遍。
建筑投資商往往給出一些量化的數(shù)據(jù),建筑師把這些量化的數(shù)據(jù)轉(zhuǎn)變成一個實際的建筑,在這個過程中一般不會有大的偏差。而軟件尤其是應(yīng)用軟件,強烈依賴于用 戶的需求。我們設(shè)計應(yīng)用軟件,基本上等同于對用戶的行為進行建模,在目前對于人類行為的研究遠遠低于對于基礎(chǔ)數(shù)學(xué)、物理學(xué)研究的情況下,一次成型的軟件是 不可能存在的。應(yīng)用軟件的開發(fā),基本可以描述為“在變化的基礎(chǔ)上工作”。
在滿足使用質(zhì)量的前提下,建筑師極力追求建筑的外形。而軟件也有這樣做的(國產(chǎn)的一些網(wǎng)頁,大家是否也覺得惡心呢?)。但一般用戶在滿足其開始的外在表現(xiàn) 的要求之后,慢慢就越來越關(guān)注軟件的內(nèi)容,關(guān)注軟件是否真的幫助到了他們的生活,并且開始發(fā)起一次次的修改請求。
綜上所述,軟件架構(gòu)師和建筑師的差別巨大,試圖以建筑師的角度解釋軟件架構(gòu)師,甚至想找到一個類似的解決之道,是不可行的。而對于初步接觸架構(gòu)師的人來 說,總是把架構(gòu)師和建筑師對比也很容易誤導(dǎo)他們。類比固然可以幫助理解,但也可能造成誤解。
從另一個角度考慮,假設(shè)軟件架構(gòu)師和建筑師確實可以互通,那么如果存在一個既是軟件架構(gòu)師又是建筑師的人,他就可以領(lǐng)導(dǎo)軟件產(chǎn)業(yè)一往無前 了。可是這么多年來,為什么沒有這樣一個人呢?
建筑是實體的,軟件是形式的。實體的建筑以結(jié)構(gòu)為其主要內(nèi)容,輔以少量動態(tài)的考慮(給水、排水及其他)。軟件則是靜態(tài)的結(jié)構(gòu)和動態(tài)的行為的結(jié)合體。從這個 角度,建筑師的建模主要是靜態(tài)的建模,比一個機械工程師,他多了藍圖的繪制的工作;而一個軟件架構(gòu)師不僅要對軟件的結(jié)構(gòu)進行建模,還要對軟件的運行時刻的 行為建模。
建筑是一次性的,軟件是演變的。雖然我們也說“舊城改造”,但那是拆了重建,而不是在原基礎(chǔ)上改造。一棟造好的樓房,是不能在上面再增加一層的。軟件則是 在原基礎(chǔ)上修改,以滿足用戶需要。在這個前提下,建筑的架構(gòu)是不會改變的;而軟件在多次修改的情況下很可能觸及架構(gòu)上的變動。所以軟件架構(gòu)師必須在軟件的 整個生命周期中時刻注意架構(gòu)是否會變化,并且可能會主動調(diào)整它。
在建筑設(shè)計中,必須滿足結(jié)構(gòu)力學(xué)等基本原理,否則生產(chǎn)出來的建筑本身的使用質(zhì)量沒有保證,這是一個強制的要求,也存在相關(guān)標準。而軟件在設(shè)計上只有一堆原 則,指導(dǎo)我們設(shè)計。即使你沒有遵循這些原則,生產(chǎn)出來的產(chǎn)品一般也是可用的,具有使用質(zhì)量,但產(chǎn)品改進的質(zhì)量就難說了。因此軟件的設(shè)計也比較難以把握,生 產(chǎn)一堆可用的垃圾的情況比較普遍。
建筑投資商往往給出一些量化的數(shù)據(jù),建筑師把這些量化的數(shù)據(jù)轉(zhuǎn)變成一個實際的建筑,在這個過程中一般不會有大的偏差。而軟件尤其是應(yīng)用軟件,強烈依賴于用 戶的需求。我們設(shè)計應(yīng)用軟件,基本上等同于對用戶的行為進行建模,在目前對于人類行為的研究遠遠低于對于基礎(chǔ)數(shù)學(xué)、物理學(xué)研究的情況下,一次成型的軟件是 不可能存在的。應(yīng)用軟件的開發(fā),基本可以描述為“在變化的基礎(chǔ)上工作”。
在滿足使用質(zhì)量的前提下,建筑師極力追求建筑的外形。而軟件也有這樣做的(國產(chǎn)的一些網(wǎng)頁,大家是否也覺得惡心呢?)。但一般用戶在滿足其開始的外在表現(xiàn) 的要求之后,慢慢就越來越關(guān)注軟件的內(nèi)容,關(guān)注軟件是否真的幫助到了他們的生活,并且開始發(fā)起一次次的修改請求。
綜上所述,軟件架構(gòu)師和建筑師的差別巨大,試圖以建筑師的角度解釋軟件架構(gòu)師,甚至想找到一個類似的解決之道,是不可行的。而對于初步接觸架構(gòu)師的人來 說,總是把架構(gòu)師和建筑師對比也很容易誤導(dǎo)他們。類比固然可以幫助理解,但也可能造成誤解。
從另一個角度考慮,假設(shè)軟件架構(gòu)師和建筑師確實可以互通,那么如果存在一個既是軟件架構(gòu)師又是建筑師的人,他就可以領(lǐng)導(dǎo)軟件產(chǎn)業(yè)一往無前 了。可是這么多年來,為什么沒有這樣一個人呢?