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