狂人思維·成都
          Google
          軟件架構(gòu),開(kāi)則持續(xù),合則穩(wěn)健;亦開(kāi)亦合,剛?cè)岵?jì);講究平衡如同生活之中庸和諧.
          E-MAIL:guojian。zhang@gmail。com
          posts - 19,  comments - 62,  trackbacks - 0

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

          我很贊同這種說(shuō)法,現(xiàn)在我來(lái)描述我以前設(shè)計(jì)系統(tǒng)框架時(shí)的問(wèn)題所在:
          最初在第一次擔(dān)任框架設(shè)計(jì)時(shí),總是從功能類出發(fā)。
           即:先考慮系統(tǒng)有哪些復(fù)雜而又頻繁使用的類,對(duì)這此類進(jìn)行分包,歸類,并命名為UTILS。

          然后再是對(duì)系統(tǒng)分層,分包,幾乎沒(méi)有多少中間接口,相臨層之間總是緊耦合的調(diào)用,造成了層與層的改動(dòng)牽連邊過(guò)大。
           
          寫(xiě)出來(lái)的框架就像工具包一樣,由一大堆看起來(lái)沒(méi)有聯(lián)系的類堆積而成。

          后來(lái),經(jīng)歷過(guò)一次大項(xiàng)目后,開(kāi)始關(guān)注一些建模理論以及開(kāi)源框架,對(duì)先前的框架設(shè)計(jì)思想產(chǎn)生極大的沖擊,開(kāi)始關(guān)注系統(tǒng)的整體搭配,接口解耦,代碼重用,自動(dòng)化控制程度有所提高。
          但感覺(jué)問(wèn)題還是依然很?chē)?yán)峻,主要表現(xiàn)在:對(duì)系統(tǒng)的把握層次仍然偏低(從代碼角度出發(fā)),缺乏對(duì)系統(tǒng)整體的抽象能力和建模能力。對(duì)零散的業(yè)務(wù)規(guī)則難以抽象出很好的業(yè)務(wù)模型并以與系統(tǒng)架構(gòu)結(jié)合起來(lái)。


          總的來(lái)說(shuō)我經(jīng)歷了兩個(gè)階段:1。以公用基礎(chǔ)件為核心的積木式開(kāi)發(fā) 2。以局部框架結(jié)構(gòu)(實(shí)現(xiàn))為起點(diǎn),分層整合的泛射式開(kāi)發(fā)(最明顯的問(wèn)題就是層層之間不成一體,項(xiàng)目越大越到后期就越松散變得越來(lái)越難以控制)

          目前,開(kāi)始將目光從系統(tǒng)業(yè)務(wù)層面出發(fā),以架構(gòu)為主,逐步向框架結(jié)構(gòu)設(shè)計(jì)過(guò)渡的方向發(fā)展,但這時(shí)常令我感到力不從心,畢境理論歸理論,現(xiàn)實(shí)中還需要豐富的實(shí)踐經(jīng)驗(yàn)去累積。


           

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

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

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

          常用鏈接

          留言簿

          隨筆分類(31)

          隨筆檔案(19)

          文章分類(3)

          文章檔案(3)

          我關(guān)注的Blogs

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 五华县| 宾阳县| 和静县| 南康市| 蛟河市| 乐陵市| 巴楚县| 清流县| 常宁市| 甘孜县| 房山区| 民和| 隆尧县| 太湖县| 抚州市| 沙洋县| 鹤壁市| 丰顺县| 松溪县| 绥中县| 邢台县| 饶平县| 义乌市| 天峻县| 通江县| 鞍山市| 西宁市| 新河县| 崇阳县| 都兰县| 东乡县| 昆明市| 馆陶县| 郴州市| 昌都县| 元氏县| 固阳县| 泉州市| 静安区| 阿拉善盟| 庆云县|