潛魚在淵

          Concentrating on Architectures.

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

          軟件架構(gòu):決策與選擇

          Posted on 2008-09-18 22:54 非魚 閱讀(2343) 評論(4)  編輯  收藏 所屬分類: 面向?qū)ο笤O(shè)計
          架構(gòu)師最重要的工作是思考。思考導致決策,或者選擇。

          為決策而思考

          架構(gòu)師思考的出發(fā)點是成就受益人的利益,目的就是為了最終做出決策。在開始的時候,往往會有一些明顯的途徑,也會有一些隱含的途徑。架構(gòu)師要根據(jù)所掌握的信息,結(jié)合自身的知識、經(jīng)驗,盡可能找出所有的途徑,思考哪條途徑是最合適的。在這個過程中,有一些途徑會很快被排除。排除一條途徑的依據(jù),首先是軟件的價值,其次是軟件的假設(shè)和前提。良好的實踐是記錄這些思考過程中被排除的途徑,特別是對于經(jīng)驗不是特別豐富的架構(gòu)師來說,這非常重要。

          需要特別提出的是,不要因為不精通某項技術(shù)而排除可行的途徑。因為一般情況下,技術(shù)對軟件價值的影響是次要的。比如,當你在JSF和struts之間搖擺的時候,把這個問題提出來討論,是更好的做法。

          決策需要依據(jù)

          決策是合理的(Reasonable)選擇。架構(gòu)師需要考慮各種選擇的優(yōu)缺點,再根據(jù)實際情況,找到支持決策的依據(jù)。因為個人及項目等多方面的原因,這些依據(jù)也可能是不充分的。但這不要緊,最重要的是,決策要有依據(jù),這就夠了。在思考和討論的過程中,對于反面的意見(不支持決策的依據(jù)),也要充分考慮和記錄,因為不知道什么時候,這些因素會因環(huán)境、認識的變化而由假成真,如果沒有相關(guān)的記錄,你會為此而失去一次寶貴的成長機會。:)

          有時候也需要選擇

          人的智力是有限的,眼界也是有限的。有時候你會發(fā)現(xiàn)幾條路徑很難說哪個更優(yōu)一點。這時候你面臨的就是選擇,像擲骰子一樣。這是架構(gòu)設(shè)計中風險最大的地方。墨菲定律說:“凡事只要有可能出錯,那就一定會出錯。”(Anything that can go wrong will go wrong.)把這個選擇記錄下來,只要可能,就要來重新評價。

          如果沒有選擇的余地

          任何時候,如果你感覺只有一種選擇(或者你毫無理由的排除了其他選擇),這可能說明:

          1. 你的知識還不夠,過早進入架構(gòu)設(shè)計的領(lǐng)域,對你不是一件好事;或者

          2. 你憑借感覺做決策,實在不適合做架構(gòu)師這樣的工作。




          by 非魚。Technorati 標簽: , ,

          評論

          # re: 軟件架構(gòu):決策與選擇  回復  更多評論   

          2008-09-19 08:22 by Jack.Wang
          說的很好。
          決策方面都點到了,但沒展開,希望看到點決策方法技巧和您個人經(jīng)驗的分享。
          相信筆者思維和經(jīng)驗都很強。

          # re: 軟件架構(gòu):決策與選擇  回復  更多評論   

          2008-09-19 11:21 by duan
          說的很好,很喜歡這種思想的傳授。

          # re: 軟件架構(gòu):決策與選擇  回復  更多評論   

          2008-09-19 11:45 by leekiang
          知識不夠,用忽悠來彌補。
          最害怕那些連線程、事務(wù)、并發(fā),IO等都搞不清楚的架構(gòu)師了,偏偏這樣的人最會忽悠。

          # re: 軟件架構(gòu):決策與選擇  回復  更多評論   

          2008-09-26 13:26 by xu_zh_h
          說的真切
          主站蜘蛛池模板: 象州县| 惠安县| 招远市| 民丰县| 兴文县| 康平县| 平远县| 云安县| 贞丰县| 连州市| 德兴市| 永吉县| 新绛县| 顺平县| 呼和浩特市| 漠河县| 乌拉特中旗| 普定县| 华安县| 阳泉市| 边坝县| 邵阳县| 东海县| 大荔县| 新巴尔虎左旗| 丽水市| 平果县| 汽车| 大丰市| 桂阳县| 枝江市| 雅安市| 巴青县| 西宁市| 陕西省| 桂阳县| 田林县| 富阳市| 怀仁县| 城固县| 隆安县|