潛魚在淵

          Concentrating on Architectures.

          posts - 77, comments - 309, trackbacks - 0, articles - 0
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          架構(gòu)師不是建筑師

          Posted on 2005-12-20 23:25 非魚 閱讀(3221) 評(píng)論(6)  編輯  收藏 所屬分類: 面向?qū)ο笤O(shè)計(jì)
              軟件架構(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è)人呢?

          評(píng)論

          # re: 架構(gòu)師不是建筑師  回復(fù)  更多評(píng)論   

          2005-12-21 08:44 by ronghao
          不過感覺還是差不多,都是畫圖紙的。而我則是下面和泥砌磚的:)

          # re: 架構(gòu)師不是建筑師  回復(fù)  更多評(píng)論   

          2005-12-21 10:16 by leondu
          其實(shí)我一直有一個(gè)想法,將軟件開發(fā)和建筑和機(jī)械等類比其實(shí)是不合適的,其實(shí)更應(yīng)該和寫作或者電影拍攝類比。

          因?yàn)檐浖_發(fā)的產(chǎn)品,其實(shí)是人的思想的固化物,是對(duì)人類社會(huì)中的業(yè)務(wù)、規(guī)則、關(guān)系的描述、體現(xiàn)和抽象。所以做一個(gè)好的軟件,其實(shí)就象拍一部好電影一樣難,要有優(yōu)秀的劇本/編劇(架構(gòu)師),卓越的導(dǎo)演/制片(PM),最好還要天才的演員(開發(fā)人員)。

          還沒想好。。。。。。。

          # re: 架構(gòu)師不是建筑師  回復(fù)  更多評(píng)論   

          2005-12-21 12:38 by fisher
          關(guān)于架構(gòu)師更像導(dǎo)演而不是建筑師的問題
          可見《成功的軟件項(xiàng)目管理-銀彈方案》一書
          愛爾蘭作者費(fèi)格斯在其中做了精彩的闡述

          # re: 架構(gòu)師不是建筑師  回復(fù)  更多評(píng)論   

          2005-12-22 11:44 by wfeng007
          我個(gè)人感覺還是,比較接近的。
          之所以現(xiàn)今的軟件架構(gòu)與建筑架構(gòu)有較大差異,主要是因?yàn)檐浖I(lǐng)域和建筑領(lǐng)域的發(fā)展階段不同。一個(gè)幾十年,一個(gè)上千年了。成熟度不一樣。如果類比現(xiàn)今的軟件領(lǐng)域和早期的建筑領(lǐng)域會(huì)發(fā)現(xiàn)很多共同點(diǎn)的。

          # re: 架構(gòu)師不是建筑師  回復(fù)  更多評(píng)論   

          2005-12-24 15:34 by jiniboy
          建筑是一次性的,軟件是演變的。一個(gè)特定的建筑是一個(gè)時(shí)代的象征,它不僅不能變,人們還希望它能以老樣子一直存在下去。我們的故宮,長(zhǎng)城。總不能把故宮再利用成某某步行街,某某大賣場(chǎng)。軟件的關(guān)鍵就在這個(gè)軟字上了。考驗(yàn)?zāi)愕恼媸擒浖膹椥陨稀?/div>

          # re: 架構(gòu)師不是建筑師  回復(fù)  更多評(píng)論   

          2006-06-02 11:34 by 陳明
          軟件架構(gòu)師與建筑架構(gòu)師可以類比,它們之間確有相通之處,類比來(lái)理解有好處;當(dāng)然也有不同之處,等同起來(lái)肯定是錯(cuò)誤的,也沒人會(huì)真這樣等同理解;也許類比會(huì)引起一些誤解,只要澄清和避免就好了,你的觀點(diǎn)不用這么極端。
          該文提出的建筑與軟件的不同點(diǎn),體現(xiàn)在以下方面:
          1)建筑主要是靜態(tài)結(jié)構(gòu)實(shí)體,軟件是靜態(tài)結(jié)構(gòu)與動(dòng)態(tài)行為的結(jié)合體。
          2)建筑是一次性的,可擴(kuò)展性不強(qiáng),建筑完成后只需維護(hù)工作,可能千年以前的建筑至今沒多大變化;軟件是不斷進(jìn)化的,可擴(kuò)展性強(qiáng),在架構(gòu)不變的情況下,還可以對(duì)其修補(bǔ),添加插件增強(qiáng)功能,不斷進(jìn)行升級(jí)換代,最新版相比幾年前的版本可能面目全非。
          3)在標(biāo)準(zhǔn)上,軟件缺乏建筑領(lǐng)域眾多的質(zhì)量標(biāo)準(zhǔn),使得軟件的質(zhì)量保證較難檢驗(yàn)。
          4)在需求分析上,軟件相比建筑較難實(shí)施。建筑的需求通常有定量的數(shù)據(jù)和規(guī)范的說(shuō)明;軟件尤其是應(yīng)用軟件,強(qiáng)烈依賴于用戶個(gè)性化的需求。應(yīng)用軟件的需求分析基本上等同于對(duì)用戶的行為進(jìn)行建模。而用戶行為常常缺乏嚴(yán)格的定義,沒有清晰的描述,給軟件的設(shè)計(jì)與開發(fā)增加了難度。
          以上是不同點(diǎn)的總結(jié)。上述四點(diǎn)中,第一點(diǎn)反映了建筑與軟件內(nèi)在邏輯上的不同;第二點(diǎn)反映了兩者在完成后的發(fā)展的不同;第三點(diǎn)反映了兩者在質(zhì)量保證標(biāo)準(zhǔn)上的不同;第四點(diǎn)反映了兩者在需求分析上的不同。這些不同點(diǎn)是值得注意的地方,但在工程方法論上,軟件可以從建筑領(lǐng)域中借鑒很多。
          作者與該文觀點(diǎn)相悖的是,對(duì)UI的追求,建筑和軟件在理念上是一致的。在滿足質(zhì)量的前提下,為什么不能提供給使用者更友好更美觀的外觀呢。地球上眾多經(jīng)典建筑無(wú)不具有極具特色,飽含藝術(shù)性的特點(diǎn);眾多經(jīng)典軟件的界面也往往得到用戶真心實(shí)意的贊美。我們要避免的是,不要金玉其外,敗絮其中,要把軟件功能的質(zhì)量放在第一位,在高質(zhì)量地實(shí)現(xiàn)軟件功能的同時(shí)也追求最友好最優(yōu)美的用戶使用界面。
          事實(shí)上,建筑與軟件仍具有大量的相通之處,此處不一一贅述。讀過《設(shè)計(jì)模式》的朋友可以發(fā)現(xiàn),GOF從建筑領(lǐng)域得到了大量有益的啟示。另外,建議大家讀一下《建筑的永恒之道》,相信此書會(huì)帶給你一些有益的思考。
          主站蜘蛛池模板: 上林县| 长泰县| 墨脱县| 谢通门县| 白玉县| 兴安县| 伊吾县| 齐齐哈尔市| 应用必备| 乌兰察布市| 平遥县| 胶州市| 乐至县| 泾川县| 乐都县| 云南省| 精河县| 惠东县| 法库县| 无极县| 永福县| 奉节县| 宜兰市| 陆丰市| 墨竹工卡县| 井研县| 嘉荫县| 湟源县| 镇赉县| 荥经县| 土默特右旗| 永平县| 密云县| 上虞市| 和政县| 葫芦岛市| 峨眉山市| 凯里市| 衡南县| 革吉县| 星座|