潛魚在淵

          Concentrating on Architectures.

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

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

          Posted on 2005-12-20 23:25 非魚 閱讀(3224) 評論(6)  編輯  收藏 所屬分類: 面向?qū)ο笤O(shè)計
              軟件架構(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è)一往無前 了。可是這么多年來,為什么沒有這樣一個人呢?

          評論

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

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

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

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

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

          還沒想好。。。。。。。

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

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

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

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

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

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

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

          2006-06-02 11:34 by 陳明
          軟件架構(gòu)師與建筑架構(gòu)師可以類比,它們之間確有相通之處,類比來理解有好處;當(dāng)然也有不同之處,等同起來肯定是錯誤的,也沒人會真這樣等同理解;也許類比會引起一些誤解,只要澄清和避免就好了,你的觀點不用這么極端。
          該文提出的建筑與軟件的不同點,體現(xiàn)在以下方面:
          1)建筑主要是靜態(tài)結(jié)構(gòu)實體,軟件是靜態(tài)結(jié)構(gòu)與動態(tài)行為的結(jié)合體。
          2)建筑是一次性的,可擴展性不強,建筑完成后只需維護工作,可能千年以前的建筑至今沒多大變化;軟件是不斷進化的,可擴展性強,在架構(gòu)不變的情況下,還可以對其修補,添加插件增強功能,不斷進行升級換代,最新版相比幾年前的版本可能面目全非。
          3)在標準上,軟件缺乏建筑領(lǐng)域眾多的質(zhì)量標準,使得軟件的質(zhì)量保證較難檢驗。
          4)在需求分析上,軟件相比建筑較難實施。建筑的需求通常有定量的數(shù)據(jù)和規(guī)范的說明;軟件尤其是應(yīng)用軟件,強烈依賴于用戶個性化的需求。應(yīng)用軟件的需求分析基本上等同于對用戶的行為進行建模。而用戶行為常常缺乏嚴格的定義,沒有清晰的描述,給軟件的設(shè)計與開發(fā)增加了難度。
          以上是不同點的總結(jié)。上述四點中,第一點反映了建筑與軟件內(nèi)在邏輯上的不同;第二點反映了兩者在完成后的發(fā)展的不同;第三點反映了兩者在質(zhì)量保證標準上的不同;第四點反映了兩者在需求分析上的不同。這些不同點是值得注意的地方,但在工程方法論上,軟件可以從建筑領(lǐng)域中借鑒很多。
          作者與該文觀點相悖的是,對UI的追求,建筑和軟件在理念上是一致的。在滿足質(zhì)量的前提下,為什么不能提供給使用者更友好更美觀的外觀呢。地球上眾多經(jīng)典建筑無不具有極具特色,飽含藝術(shù)性的特點;眾多經(jīng)典軟件的界面也往往得到用戶真心實意的贊美。我們要避免的是,不要金玉其外,敗絮其中,要把軟件功能的質(zhì)量放在第一位,在高質(zhì)量地實現(xiàn)軟件功能的同時也追求最友好最優(yōu)美的用戶使用界面。
          事實上,建筑與軟件仍具有大量的相通之處,此處不一一贅述。讀過《設(shè)計模式》的朋友可以發(fā)現(xiàn),GOF從建筑領(lǐng)域得到了大量有益的啟示。另外,建議大家讀一下《建筑的永恒之道》,相信此書會帶給你一些有益的思考。
          主站蜘蛛池模板: 中阳县| 克山县| 辽源市| 百色市| 连江县| 康乐县| 永安市| 县级市| 兴宁市| 南开区| 河东区| 本溪| 金华市| 瑞昌市| 肇庆市| 绥阳县| 饶平县| 兖州市| 扶余县| 秦安县| 灵山县| 海口市| 白山市| 堆龙德庆县| 丰台区| 宁明县| 石柱| 天台县| 达州市| 湾仔区| 湖州市| 郓城县| 贞丰县| 永宁县| 平泉县| 迁安市| 长兴县| 抚顺县| 阳泉市| 平湖市| 富裕县|