狂人思維·成都
          Google
          軟件架構,開則持續,合則穩健;亦開亦合,剛柔并濟;講究平衡如同生活之中庸和諧.
          E-MAIL:guojian。zhang@gmail。com
          posts - 19,  comments - 62,  trackbacks - 0

          看過微雨心晴(X-Brave)的對架構、框架、基礎件三者關系的論述后,我陷入了一陣不安和恐慌之中。
                 發現我原來對軟件框架的理解還是那樣的淺溥,并由此想起,應該不只我一個是這樣,我想大多數的開發人員在從普通的程序員向架構設計轉型時都會遇到的這樣的問題,在闡述的這個問題之前有必要將這三都的關系描述一下(這里就直接引用微雨心晴(X-Brave)的描述):
                  從層次結構來看,軟件架構是從整體上來看軟件設計開發的,框架通常是從較高的層次來實現或者被選擇來實現軟件的架構,基礎件/類是更小的軟件元素,只是更加的強調通用。 三者之間存在微妙的關系,以至于確實容易引起人們的混淆。實際上,試圖完全的割裂它們即使不是錯誤的做法,也常常不是良好的設計:三者之間存在緊密的依賴關系.

          我很贊同這種說法,現在我來描述我以前設計系統框架時的問題所在:
          最初在第一次擔任框架設計時,總是從功能類出發。
           即:先考慮系統有哪些復雜而又頻繁使用的類,對這此類進行分包,歸類,并命名為UTILS。

          然后再是對系統分層,分包,幾乎沒有多少中間接口,相臨層之間總是緊耦合的調用,造成了層與層的改動牽連邊過大。
           
          寫出來的框架就像工具包一樣,由一大堆看起來沒有聯系的類堆積而成。

          后來,經歷過一次大項目后,開始關注一些建模理論以及開源框架,對先前的框架設計思想產生極大的沖擊,開始關注系統的整體搭配,接口解耦,代碼重用,自動化控制程度有所提高。
          但感覺問題還是依然很嚴峻,主要表現在:對系統的把握層次仍然偏低(從代碼角度出發),缺乏對系統整體的抽象能力和建模能力。對零散的業務規則難以抽象出很好的業務模型并以與系統架構結合起來。


          總的來說我經歷了兩個階段:1。以公用基礎件為核心的積木式開發 2。以局部框架結構(實現)為起點,分層整合的泛射式開發(最明顯的問題就是層層之間不成一體,項目越大越到后期就越松散變得越來越難以控制)

          目前,開始將目光從系統業務層面出發,以架構為主,逐步向框架結構設計過渡的方向發展,但這時常令我感到力不從心,畢境理論歸理論,現實中還需要豐富的實踐經驗去累積。


           

          posted on 2005-05-20 16:44 狂人思維·成都 閱讀(1531) 評論(3)  編輯  收藏 所屬分類: JAVA技術J2EE應用工作間

          FeedBack:
          # re: 架構、框架、基礎件之反思
          2005-05-20 17:19 | sunshinekyo
          我剛做了一年程序員,可能不太有發言權。但我覺得軟件框架跟具體的語言是沒什么關系的吧,主要還是業務邏輯要好。我們公司在做的系統用了JAVA、.net以及一種不太常用的語言Matrix,架構是我們總監在做,他對這些語言都不是很熟,但他不關心這些。哪些語言好用是程序員的事情,而不是架構師的事情
            回復  更多評論
            
          # re: 架構、框架、基礎件之反思
          2005-05-20 20:13 | floerggyy
          感覺我們兩個在成長過程中的經歷差不多,以前在頭腦里也沒有什么整體設計思路的概念,做的東東就是N多工具類的集合,一種積木式的堆砌。當突然發現這樣這種方式的弊端時又沒有能力做一個讓自己滿意的,于是開始了分析一些相對優秀的項目源碼。。。不斷積累中。。。
          最近在公司寫C/C++程序,也有很多感觸,在里根本看不到設計思想的意味,完全是方法的集合。。
          真正學習的第一門語言是JAVA當年總是感覺,很多人亂用接口簡直就是故弄玄虛在成長中才發現當初的自己是那么無知。。。
          感覺設計這東西不是一礎而就的,需要我們慢慢的積累  回復  更多評論
            
          # re: 架構、框架、基礎件之反思
          2005-05-21 18:08 | Programmer's Life
          呵呵,掌握典型的軟件開發過程,從需求分析--->架構設計---->詳細設計---->編碼實現,這個過程說起來誰都明白,真的要讓它講講對于每個過程的理解我想沒有多少人能說的清吧,這個還是需要經驗的積累,不管你采用何種軟件工程,都是按照之上的步驟在做,至于對于業務的抽象那是需要長時間的積累、學習和總結,否則分析模式那樣的書就成快速成為高手性質的書了  回復  更多評論
            

          <2005年5月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿

          隨筆分類(31)

          隨筆檔案(19)

          文章分類(3)

          文章檔案(3)

          我關注的Blogs

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 丰镇市| 腾冲县| 庆城县| 秦皇岛市| 咸丰县| 普定县| 抚顺县| 荔波县| 塘沽区| 交口县| 孝感市| 洪湖市| 吉木乃县| 东至县| 金溪县| 获嘉县| 福泉市| 丘北县| 沐川县| 西和县| 呼图壁县| 天祝| 临海市| 津南区| 曲麻莱县| 井研县| 分宜县| 买车| 临澧县| 驻马店市| 五大连池市| 青冈县| 昂仁县| 安阳市| 额敏县| 磴口县| 霍邱县| 湄潭县| 桃园市| 甘南县| 夏邑县|