分層與分模塊開發(fā)

          分層與分模塊開發(fā),是開發(fā)時(shí)經(jīng)常選用的兩種方式,應(yīng)該說(shuō)分模塊開發(fā)是較多被采用的方式,但一直以來(lái)都覺(jué)得其實(shí)分層方式自己是比較欣賞的方式,對(duì)于兩種開發(fā)方式分別的看法是:
          分層開發(fā)
          優(yōu)點(diǎn):
          1、保持系統(tǒng)分層結(jié)構(gòu)
          ??????分層開發(fā)在這點(diǎn)上無(wú)疑是可以保證的,同時(shí)有利于保證系統(tǒng)層次的職責(zé)的清晰以及分離。
          2、面向接口的編程
          ??????由于采用分層開發(fā),各層次之間采用接口依賴的方式就更容易被執(zhí)行了。
          缺點(diǎn):
          1、容易造成瓶頸現(xiàn)象
          ????? 由于分層開發(fā)各個(gè)承擔(dān)人員的任務(wù)難度不一樣,很容易形成瓶頸現(xiàn)象。
          2、對(duì)于系統(tǒng)設(shè)計(jì)的要求更高
          ????? 這點(diǎn)應(yīng)該說(shuō)不能算是缺點(diǎn)。
          3、容易出現(xiàn)扯皮現(xiàn)象
          分模塊開發(fā)
          優(yōu)點(diǎn):
          1、系統(tǒng)功能更容易被完成
          ????? 由于采用分模塊開發(fā),開發(fā)人員從頭到尾負(fù)責(zé),一定程度上來(lái)講減少了溝通以及協(xié)調(diào)成本,使得系統(tǒng)功能能夠被更容易的完成。
          缺點(diǎn):
          1、容易造成系統(tǒng)的分層結(jié)構(gòu)缺失
          ????? 通常在項(xiàng)目實(shí)際的趕工情況下,很容易形成系統(tǒng)的分層結(jié)構(gòu)缺失的情況,開發(fā)人員為了完成功能完全不顧分層,不顧層次職責(zé)的分離的保證,這點(diǎn)在實(shí)際的項(xiàng)目中往往不是那么好控制。
          2、面向接口編程的貫徹不力
          ????? 這點(diǎn)也通常是由于上面的原因,當(dāng)然,其實(shí)這里面最根本的原因是開發(fā)人員本身的素質(zhì)不夠高....

          在開發(fā)人員水平參差不齊的情況下,我認(rèn)為分層開發(fā)方式更有利于保證系統(tǒng)的質(zhì)量,盡管在具體實(shí)施的時(shí)候可能會(huì)碰到一些問(wèn)題,希望能聽(tīng)聽(tīng)采用過(guò)分層開發(fā)方式的朋友們的看法。
          ?

          posted on 2006-03-19 21:11 BlueDavy 閱讀(7261) 評(píng)論(26)  編輯  收藏 所屬分類: Java

          評(píng)論

          # re: 分層與分模塊開發(fā) 2006-03-19 22:31 fisher

          很高興又有人對(duì)這個(gè)問(wèn)題感興趣了,說(shuō)說(shuō)我的看法
          任務(wù)分解不應(yīng)該以系統(tǒng)功能為主視角
          而是考慮以人為本

          任務(wù)分解,是一個(gè)面向人而不是面向任務(wù)的過(guò)程
          這個(gè)問(wèn)題實(shí)際上是對(duì)系統(tǒng)橫向切分和縱向切分的問(wèn)題
          很多項(xiàng)目管理方面的書要么對(duì)這個(gè)問(wèn)題采用了一種偏致的做法
          比如《PMP:Project Management Professional Study Guide》中采用縱向分解方法并羅列了很多好處
          而有些書籍則再這個(gè)問(wèn)題上搗漿糊,如WBS在這個(gè)問(wèn)題上羅列出N種方案卻沒(méi)給出任何實(shí)際意見(jiàn)
          且,很多人認(rèn)為任務(wù)分解的終極目標(biāo)為減少對(duì)交流的依賴

          在這個(gè)問(wèn)題上,我認(rèn)為應(yīng)該以團(tuán)隊(duì)特色設(shè)計(jì)任務(wù)分解方式
          而終極目標(biāo),則不是減少依賴,而是讓依賴可管理
          即軟件結(jié)構(gòu)設(shè)計(jì)影響任務(wù)分解,而任務(wù)分解影響組員間的依賴關(guān)系
          反之,只有符合目前團(tuán)隊(duì)的風(fēng)格的任務(wù)分解才能高效運(yùn)行,而該任務(wù)分解將影響架構(gòu)師的架構(gòu)抉擇。其實(shí),這正是XP中團(tuán)隊(duì)設(shè)計(jì)的根本原因。
          這也是軟件項(xiàng)目管理上的一個(gè)重大特色,就是軟件結(jié)構(gòu)設(shè)計(jì)同團(tuán)隊(duì)結(jié)構(gòu)設(shè)計(jì)的不可分割性。也是軟件開發(fā)難以實(shí)行工廠化的原因。

          如果你在開始就積極的開展設(shè)計(jì),并且把設(shè)計(jì)的過(guò)程持續(xù)下去,你的任務(wù)的劃分就會(huì)成為一個(gè)縱橫交錯(cuò)的動(dòng)態(tài)的調(diào)整的過(guò)程。而應(yīng)該注意的師,模塊并不是任何任務(wù)劃分的一個(gè)約束,而只是為不同的人協(xié)同書寫相同的模塊提供的一種約束。

          而如果以任務(wù)為視角,無(wú)論橫向分解還是縱向分解,都會(huì)在某種情況下陷入困境。
          實(shí)際上,由于國(guó)內(nèi)目前的軟件項(xiàng)目普遍不大,所以對(duì)于交流的有效性的感覺(jué)并不強(qiáng)烈
          這問(wèn)題在多個(gè)公司合作開發(fā)的過(guò)程中尤為突出

            回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-19 23:02 fanta

          我的經(jīng)驗(yàn)是相反,對(duì)于不成熟的團(tuán)隊(duì),分層可能是災(zāi)難吧。  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-20 09:35 citysir

          在保證分層的情況下再分模塊,這有什么問(wèn)題嗎?  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-20 09:35 破門

          這個(gè)命題我個(gè)人認(rèn)為可能永遠(yuǎn)出不了結(jié)果,只能以刀劍之爭(zhēng)來(lái)比喻一下:究竟是胡家快刀厲害,還是苗家劍法無(wú)雙?
          事實(shí)上,我覺(jué)得還是應(yīng)該就是論事,發(fā)揮各自的長(zhǎng)處,最終道理都是相通的,就像胡一刀可以和苗人鳳互換兵器,依然要爭(zhēng)個(gè)三天三夜還是會(huì)旗鼓相當(dāng)一樣。

          說(shuō)白了點(diǎn),為了達(dá)成目標(biāo),你長(zhǎng)于架構(gòu)可以先分層再來(lái)支持模塊。如果你長(zhǎng)于業(yè)務(wù),自然先分模塊再考慮重構(gòu)系統(tǒng)分層。可嘆的是,我們往往只取其一。做產(chǎn)品的,只管分層,不管應(yīng)用;做應(yīng)用的只看模塊,不看架構(gòu)。最終,都是死路一條!  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-20 11:15 小陸

          項(xiàng)目的初期,應(yīng)該用較少的人力,設(shè)計(jì)開發(fā)系統(tǒng)的框架,建立底層的開發(fā)平臺(tái)。這個(gè)時(shí)候主要是分層。
          當(dāng)這部分工作完成的差不多了,就可以大批的人上去,開發(fā)具體的功能點(diǎn),直接實(shí)現(xiàn)用戶的需求。這個(gè)時(shí)候主要就是分模塊了,每個(gè)功能點(diǎn)都要有直接的負(fù)責(zé)人。  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-21 17:29 guitarpoet

          分層開發(fā)的最重要的特征是層與層之間的松耦合。松耦合所帶來(lái)的結(jié)果是,各層之間都可以有自己的基礎(chǔ)模塊,可以實(shí)現(xiàn)本層內(nèi)部的重用,在底層發(fā)生變化的時(shí)候(變化協(xié)議、變化技術(shù)、甚至變化介質(zhì)),上面的層是可以花費(fèi)很小的成本進(jìn)行適應(yīng)的(比如操作系統(tǒng)和應(yīng)用程序?qū)樱?

          商業(yè)開發(fā)必須考慮開放成本,而有效的重用是降低成本的方法之一。

          模塊化開發(fā),估計(jì)每家做企業(yè)級(jí)應(yīng)用的公司都必然會(huì)采用這個(gè)方式。拿用電系統(tǒng)來(lái)說(shuō),客戶服務(wù)模塊和電費(fèi)管理模塊業(yè)務(wù)差距非常大,非業(yè)務(wù)專精人員,很難在短時(shí)間內(nèi)寫出高效和高質(zhì)量的代碼(光是業(yè)內(nèi)常識(shí)就有的學(xué)的,而且各處業(yè)務(wù)還都不大相同)。

          fanta的話是有問(wèn)題的,對(duì)于不成熟的團(tuán)隊(duì),如果沒(méi)有成熟的技術(shù)框架進(jìn)行支持和有能力的項(xiàng)目負(fù)責(zé)人進(jìn)行管理的話,生產(chǎn)的軟件產(chǎn)品質(zhì)量和工期就沒(méi)有辦法得到有效的保證。  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-21 17:46 guitarpoet

          @fisher

          軟件開發(fā)必須以人為本,但是所謂的“團(tuán)隊(duì)特色”是一個(gè)偽命題,團(tuán)隊(duì)中的人總會(huì)流失(升遷、跳槽、借調(diào)),總會(huì)有新的人加入,這是業(yè)內(nèi)的常識(shí)。如果針對(duì)團(tuán)隊(duì)作出良好設(shè)計(jì)的人或是一個(gè)對(duì)各種技術(shù)十分精通的人被別的公司高薪翹走了,怎么辦?

          合格的軟件公司都要有一定的應(yīng)急機(jī)制,這也是對(duì)軟件質(zhì)量保證的手段之一。這樣就不會(huì)因?yàn)槟骋粋€(gè)開發(fā)人員跳槽而造成手足無(wú)措的情況。

          怎樣才能 達(dá)到這一點(diǎn)?那就是有效的分層,有效的把損失局限在某一個(gè)范圍內(nèi),就算是臨時(shí)拿新人頂,他也可以迅速的接替流失人員的位置。

          當(dāng)然,Brooks說(shuō)過(guò):“無(wú)論怎樣,項(xiàng)目肯定會(huì)延期”。但是要要盡最大可能的把損失降到最小。

          太多的軟件工程書不顧現(xiàn)實(shí)的情況了,完美的人是不存在的,技術(shù)全才一般是不愿意只做技術(shù)的(這個(gè)東西真是有趣啊),我們得面對(duì)現(xiàn)實(shí)。  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-21 20:22 fisher

          @guitarpoet

          首先
          以人為本!=團(tuán)隊(duì)特色
          任何團(tuán)隊(duì)都會(huì)有特色,但不是任何團(tuán)隊(duì)的開發(fā)過(guò)程都以人為本
          所以,你說(shuō)的顯然是個(gè)偽命題

          另外,如果某一開發(fā)人員的離開對(duì)你的團(tuán)隊(duì)和公司有如此打擊,只能是項(xiàng)目經(jīng)理失職
          同任務(wù)分解和任務(wù)分配的原理沒(méi)有任何關(guān)系

          還有,你提到的例子中,混淆了模塊和模塊劃分的區(qū)別
          我前面說(shuō)過(guò),模塊并不是任何任務(wù)劃分的一個(gè)約束,而只是為不同的人協(xié)同書寫相同的模塊提供的一種約束。
          而模塊劃分,則既不是業(yè)務(wù)問(wèn)題,也不是技術(shù)問(wèn)題,它受到實(shí)現(xiàn)技術(shù)、任務(wù)和人員配置的三角關(guān)系的約束。
          所以,在架構(gòu)及開發(fā)任務(wù)分解這方面,沒(méi)有萬(wàn)試萬(wàn)靈的靈丹妙藥,最重要的是如何管理依賴,所有的依賴。所以,從技術(shù)上來(lái)說(shuō),其重點(diǎn)在于,架構(gòu)師和項(xiàng)目管理者對(duì)有影響力的各個(gè)方面的動(dòng)態(tài)依賴的認(rèn)識(shí)及協(xié)調(diào)能力。  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-21 21:22 BlueDavy

          ^_^,好多評(píng)論..

          軟件過(guò)程以及開發(fā)方式都是為了降低人的因素來(lái)實(shí)現(xiàn)項(xiàng)目的可控性。
          雖然這點(diǎn)一定程度上來(lái)說(shuō)已經(jīng)在強(qiáng)調(diào)不是以人為本的問(wèn)題......
          分層和分模塊開發(fā),一個(gè)實(shí)際的不同的例子就是當(dāng)運(yùn)用在一個(gè)水平相差很大的團(tuán)隊(duì)中的時(shí)候,分模塊很容易造成模塊的質(zhì)量上難以保證的問(wèn)題,分層則一方面可以保證這問(wèn)題,另一方面可以發(fā)揮團(tuán)隊(duì)中各人特長(zhǎng),同時(shí)對(duì)于團(tuán)隊(duì)成員的培養(yǎng)也是有很大的好處的。
          當(dāng)然,我的意思不是說(shuō)分層的開發(fā)方式就一定更好,就像破門所說(shuō),這個(gè)是劍刀之爭(zhēng),需要根據(jù)不同的情況做出不同的選擇..
          或者可以去好好的總結(jié)什么樣的情況下適合分層開發(fā)方式,什么樣的情況下更適合采用分模塊開發(fā)的方式  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-21 23:05 fisher

          @BlueDavy

          似乎我說(shuō)的太多了:)
          因?yàn)槲覍?duì)這個(gè)問(wèn)題真的感興趣
          也多次與人交流,在實(shí)踐中,我發(fā)現(xiàn)無(wú)論哪種方法都會(huì)有問(wèn)題

          你說(shuō)“軟件過(guò)程以及開發(fā)方式都是為了降低人的因素來(lái)實(shí)現(xiàn)項(xiàng)目的可控性。”
          我認(rèn)為這是不對(duì)的,從管理學(xué)角度來(lái)講,管理的目標(biāo)是建立行為規(guī)范
          而行為規(guī)范是用來(lái)規(guī)范人,而不是用來(lái)規(guī)范過(guò)程的

          我發(fā)現(xiàn)技術(shù)人員總是認(rèn)為以人為本是個(gè)討巧的話題
          其實(shí)正相反,在團(tuán)隊(duì)管理中,用人絕對(duì)是一個(gè)技術(shù)活
          是要通過(guò)分析得出正確結(jié)論的。這需要理論、模型、計(jì)算以及權(quán)衡裁決
          其實(shí)跟軟件設(shè)計(jì)是一回事,這也是為什么管理學(xué)到最后也是數(shù)學(xué)的原因
          管理不是感覺(jué)、而是技術(shù)和數(shù)學(xué)

          anyway,說(shuō)回分層的話題
          無(wú)論分層還是分模塊,你都會(huì)依賴你的團(tuán)隊(duì)來(lái)完成
          而無(wú)論分層還是分模塊,都會(huì)有不同的依賴模型
          不知道我這么說(shuō)是不是很掃大家的興^_^
          但我還是那句話:從技術(shù)上來(lái)說(shuō),其重點(diǎn)在于,架構(gòu)師和項(xiàng)目管理者對(duì)有影響力的各個(gè)方面的動(dòng)態(tài)依賴的識(shí)別及協(xié)調(diào)能力。

          ps.
          恰巧,本人目前正在運(yùn)行中的兩個(gè)項(xiàng)目
          一個(gè)是分模塊開發(fā),一個(gè)是分層開發(fā)的。
            回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-22 09:04 guitarpoet

          @fisher

          也許我們的想法相似,只是表達(dá)方式上有所不同。在IT行業(yè),熟練的團(tuán)隊(duì)的工作效率是要比非熟練的團(tuán)隊(duì)的工作效率高數(shù)十倍甚至上百倍的。

          但是,別忘了,良好的分層架構(gòu)、模塊封裝使得可以充分利用社會(huì)分工機(jī)制(開源組織、組件和工具供應(yīng)商)對(duì)工作效率的提高也是數(shù)十倍甚至上百倍的(而且更可靠)。

          JavaEE就是這么一個(gè)分層的概念。

          管理是一門藝術(shù),涉及到的地方就比較多了。改天我們?cè)賹?duì)它進(jìn)行探討(郵件的方式最好)。現(xiàn)在要探討的是技術(shù)架構(gòu)上的問(wèn)題。

          哪個(gè)成熟的軟件公司沒(méi)有自己的軟件開發(fā)過(guò)程?沒(méi)有自己的基礎(chǔ)軟件開發(fā)架構(gòu)體系?沒(méi)有自己的技術(shù)價(jià)值觀?

          沒(méi)有這些東西,談什么公司開發(fā)文化都是妄談。  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-22 10:46 破門

          @fisher
          “在實(shí)踐中,我發(fā)現(xiàn)無(wú)論哪種方法都會(huì)有問(wèn)題”,完全同意!:)
          因?yàn)閷?shí)踐中沒(méi)有哪一個(gè)項(xiàng)目是完全相同的,所以我說(shuō),分層與分模塊只是技術(shù),不要把它們當(dāng)做“銀彈”。
          實(shí)踐是門更深的藝術(shù)!
          所以,選擇技術(shù)架構(gòu)、路線和管理手段的方法完完全全來(lái)自你面臨的實(shí)際情況,你的項(xiàng)目目標(biāo),你能找到的資源,你所在的管理環(huán)境等等.....
          因此,討論任何一門技術(shù)方法的時(shí)候,不能只討論技術(shù)本身,千萬(wàn)不要忘記了它們適用的場(chǎng)景,否則,太容易帶來(lái)誤導(dǎo)了。  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-22 12:39 BlueDavy

          @fisher

          ^_^,覺(jué)得你誤解了我所說(shuō)的
          "軟件過(guò)程以及開發(fā)方式都是為了降低人的因素來(lái)實(shí)現(xiàn)項(xiàng)目的可控性。"
          這句話所表達(dá)的觀點(diǎn)和你所說(shuō)的
          "行為規(guī)范是用來(lái)規(guī)范人,而不是用來(lái)規(guī)范過(guò)程的"
          是一個(gè)意思,都是為了降低人的因素造成對(duì)項(xiàng)目的影響。

          呵呵,比較想知道你現(xiàn)在分層和分模塊開發(fā)的兩個(gè)項(xiàng)目目前進(jìn)展來(lái)看,你覺(jué)得兩者更為適合的場(chǎng)景是?  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-23 13:25 fisher

          忙里偷閑上來(lái)看看^_^
          接jerry的話,我也會(huì)來(lái)說(shuō)說(shuō)我的項(xiàng)目的情況

          其實(shí)我覺(jué)得分層或分模塊的說(shuō)法并不準(zhǔn)確
          何謂分層?何謂分模塊呢?

          咱們先繞開這個(gè)容易引發(fā)爭(zhēng)論的定義,來(lái)說(shuō)說(shuō)實(shí)際情況
          在J2EE應(yīng)用中,似乎分層是很自然的想法
          簡(jiǎn)單的說(shuō),我們要分:表現(xiàn)層、邏輯層、持久層
          然后分模塊,則是一個(gè)人負(fù)責(zé)一個(gè)功能模塊,貫穿所有層

          現(xiàn)在,我們來(lái)跳出J2EE領(lǐng)域,看看軟件開發(fā)其他領(lǐng)域是什么樣的
          比如,一個(gè)電信基礎(chǔ)業(yè)務(wù)系統(tǒng)開發(fā)
          我們假設(shè),包括語(yǔ)音平臺(tái)、帳務(wù)平臺(tái)、后臺(tái)主機(jī)系統(tǒng)、前端接入系統(tǒng)、計(jì)費(fèi)平臺(tái)、業(yè)務(wù)管理平臺(tái)等
          在系統(tǒng)設(shè)計(jì)中,我們分為語(yǔ)音模塊開發(fā)、帳務(wù)系統(tǒng)模塊開發(fā)、主機(jī)通訊系統(tǒng)開發(fā)、前端接入系統(tǒng)開發(fā)、計(jì)費(fèi)及業(yè)務(wù)管理系統(tǒng)開發(fā)
          那么這是分層還是分模塊呢?
          顯然,一個(gè)人做一個(gè)業(yè)務(wù)的全套處理是不可能的(我很想結(jié)識(shí)能做到的xd),所以,這不會(huì)是分模塊開發(fā)。
          如果說(shuō)是分層,那么邏輯層在哪里?持久層在哪里?另外的問(wèn)題是主機(jī)通訊系統(tǒng)將會(huì)貫穿始終,這應(yīng)該算哪一層?并且?guī)?wù)處理會(huì)使所有層的數(shù)據(jù)產(chǎn)生強(qiáng)烈耦合。

          同樣的問(wèn)題,出現(xiàn)在銀行綜合業(yè)務(wù)處理系統(tǒng)
          一個(gè)銀行綜合業(yè)務(wù)處理系統(tǒng)中,我們分為主機(jī)系統(tǒng)、主機(jī)客戶帳分錄系統(tǒng)、IBS系統(tǒng)、柜面系統(tǒng)、電話銀行接入模塊、ATM系統(tǒng)及接入模塊、網(wǎng)銀系統(tǒng)及接入端點(diǎn)模塊
          下面我們來(lái)分一下層,按照J(rèn)2EE的慣例,我們分為表現(xiàn)層、邏輯層和持久層
          首先表現(xiàn)層為所有接入模塊及柜面系統(tǒng)、邏輯層是什么呢?IBS?客戶帳系統(tǒng)?還是主機(jī)系統(tǒng)?那么持久層呢?按照銀行開發(fā)的情況,一般來(lái)說(shuō),數(shù)據(jù)分別存儲(chǔ)在Host,客戶帳系統(tǒng)、IBS和網(wǎng)銀上。那么我們顯然不能夠分層開發(fā)
          那么所謂分模塊呢?哦....我還無(wú)緣得識(shí)這樣的朋友

          所以說(shuō),分層還是分模塊,不過(guò)是J2EE中的一個(gè)idiom
          從軟件開發(fā)出現(xiàn)到現(xiàn)在,軟件開發(fā)的重點(diǎn)仍然是依賴管理,清晰的接口(無(wú)論是java中的interface還是c中的.h文件)使得子系統(tǒng)(無(wú)論是一個(gè)模塊還是一段代碼)的開發(fā)人員可以只依賴與接口編程,這才是團(tuán)隊(duì)開發(fā)的重點(diǎn),如果你沒(méi)有接口,你就要管理開發(fā)人員之間的依賴,如果你有接口,你就要管理接口兩端的依賴。總要有個(gè)合作工作的基礎(chǔ),我們才能繼續(xù)前進(jìn)。

          在這點(diǎn)上,似乎英文使用者就不會(huì)產(chǎn)生混淆,因?yàn)閕nterface這個(gè)單詞代表了所能表示的所有交界處。而中文,我們有人機(jī)界面、接口、交互、分界面、接觸面等N種解釋

          用J2EE的眼光看軟件開發(fā),自然什么都要套到J2EE的模子里去
          簡(jiǎn)單的說(shuō),手里那個(gè)錘子,看什么都像釘子:)

          我在上面所說(shuō)的分層、分模塊開發(fā)的兩個(gè)項(xiàng)目,都是部分分層、部分分模塊的情況,如同我前面所說(shuō),是一個(gè)縱橫交錯(cuò)的動(dòng)態(tài)調(diào)整過(guò)程。
          分層,也就是說(shuō)的那個(gè)J2EE項(xiàng)目是在大原則是分層的情況下,實(shí)際開發(fā)中做了許多調(diào)整,項(xiàng)目做到最后,也不能說(shuō)是分層還是分模塊了:),把一個(gè)人硬按在一個(gè)位置上,他是不會(huì)產(chǎn)生高效的
          而另外一個(gè),則是一個(gè)銀行綜合業(yè)務(wù)處理系統(tǒng)。  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-23 16:28 guitarpoet

          @fisher

          其實(shí)你混淆了分層的概念,分層開發(fā)就不能分模塊了?

          分層開發(fā)是一種開發(fā)方式,目前而言,這種開發(fā)方式是非常適合企業(yè)級(jí)應(yīng)用的。

          但是,它并不與分模塊的開發(fā)方式互相矛盾。你把系統(tǒng)根據(jù)業(yè)務(wù)分成相應(yīng)的模塊以后,還
          可以根據(jù)需要進(jìn)行分層開發(fā)的。這同樣可以體現(xiàn)出分而治之的原則。

          對(duì)于公司而言,應(yīng)該有一個(gè)開發(fā)人員遵循的統(tǒng)一標(biāo)準(zhǔn),然后這一個(gè)標(biāo)準(zhǔn)還要根據(jù)工程和業(yè)務(wù)模塊的需要進(jìn)行相應(yīng)的剪裁,你總不希望各個(gè)工程和各個(gè)模塊之間開發(fā)沒(méi)有相同點(diǎn),開發(fā)方式各有不同吧,如果真是那樣,你怎么實(shí)現(xiàn)項(xiàng)目之間人員的調(diào)換?你不能實(shí)現(xiàn)人員的調(diào)換,怎么保證項(xiàng)目一定可以如期完成?

          分模塊是必須的,但是應(yīng)該建立在良好的分層的基礎(chǔ)上,否則軟件質(zhì)量的管理不可能達(dá)到公司的級(jí)別,只能依賴個(gè)別優(yōu)秀的軟件開發(fā)管理人員和項(xiàng)目架構(gòu)師,這對(duì)一個(gè)公司是有風(fēng)險(xiǎn)的。

          JavaEE之所以流行就是因?yàn)樗皇呛?jiǎn)單的工程師文化,它代表了商業(yè)開發(fā)的概念和標(biāo)準(zhǔn),相對(duì)而言.NET的工程師文化可能更強(qiáng)一些,但是它們是典型的騎墻派(沒(méi)有貶義),從C#語(yǔ)言的頻繁變化就可以看出來(lái)了。

          工程師更喜歡概念上的東西,但概念不等同于商業(yè)。  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-23 23:03 fisher

          @ guitarpoet

          我的意思是說(shuō),不要拘泥于分層開發(fā)還是分模塊開發(fā)
          而是要認(rèn)清為什么要分層,為什么要分模塊,有什么好處,有什么弊端
          以前有人問(wèn)我某個(gè)設(shè)計(jì)該怎么分層,我說(shuō),理解為什么要分層就知道該怎么分層了
          不要為了分層而分層
          況且,分層不足以描述軟件開發(fā)的根本問(wèn)題,它只是解決根本問(wèn)題的表現(xiàn)手法之一
          這我在前面已經(jīng)說(shuō)過(guò)了
            回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-24 08:34 guitarpoet

          @fisher

          其實(shí)我們的想法相似,只是表達(dá)方式上有所不同,呵呵。

          很高興能跟你討論問(wèn)題,軟件工程作為一門學(xué)科,現(xiàn)在離真正的成熟期還遠(yuǎn),在一定的時(shí)間內(nèi),概念的爭(zhēng)論是免不了的。

          我覺(jué)得,在這種條件下,要想真正意義上的進(jìn)行企業(yè)級(jí)應(yīng)用開發(fā),必須腳踏實(shí)地的采用注重實(shí)效的方法。

          而且軟件開發(fā)還是要以人(客戶、開發(fā)人員)為本的,不管采用什么概念、技術(shù)和實(shí)現(xiàn)方法。

          很多人都喜歡拿企業(yè)級(jí)應(yīng)用類比汽車產(chǎn)業(yè),其實(shí)可比性沒(méi)有想象中那么高,軟件開發(fā)畢竟是一個(gè)概念上的東西,與現(xiàn)實(shí)中的物質(zhì)相比,它跟人的思想和人分析問(wèn)題解決問(wèn)題的方法更近一些。

          古希臘的時(shí)候,人就開始對(duì)自身的概念和思維的邏輯進(jìn)行探討,但是直到現(xiàn)在,還是沒(méi)有什么有突破意義的結(jié)果。

          軟件開發(fā)更接近于哲學(xué),這就是為什么編程高手一般都非常喜歡古典哲學(xué)。

          其實(shí),技術(shù)哲學(xué)也是哲學(xué)的一種啊。

          計(jì)算機(jī)科學(xué)的發(fā)展,最后應(yīng)該是跟人類的哲學(xué)的發(fā)展相互依存的。

          馬克思說(shuō)的真他媽有道理。  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-24 11:58 pb

          我理解,在目前的中等團(tuán)隊(duì)—— 20人左右——情況下,對(duì)于一個(gè)超過(guò)20*60人天的項(xiàng)目,分層+分模塊
          分層:對(duì)于這樣一個(gè)項(xiàng)目,必然會(huì)有其技術(shù)要求,會(huì)抽取出來(lái)很多通用的、底層的、全面的功能或者服務(wù)出來(lái);那么,對(duì)于這些部分,技術(shù)要求比較高,設(shè)計(jì)上也許要更多的通用和健康,所以需要幾個(gè)高手來(lái)把握
          分模塊:在此基礎(chǔ)上,根據(jù)業(yè)務(wù)功能模塊分成若干小組進(jìn)行業(yè)務(wù)層面的開發(fā)。這里,對(duì)于技術(shù)的要求比較不苛刻,大部分人可以勝任
          如果在此基礎(chǔ)上,還有富裕的人力 —— 可能是工作量上的富余 —— 可以把界面和業(yè)務(wù)層也分開

          總之,希望是一個(gè)金字塔的形狀  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-03-25 18:47 fisher

          @guitarpoet

          ^_^  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2006-12-07 15:05 eddy

          看到大家談得這么投機(jī),我也上來(lái)說(shuō)兩句!
          我個(gè)人是偏向分層開發(fā)的,但并不是說(shuō)分層開發(fā)一定比分模塊開發(fā)好,就好比OOP,AOP一樣,它們都是各有優(yōu)缺,其實(shí)也不是優(yōu)缺,只是具體使用那種開發(fā)方式要根據(jù)多個(gè)方面來(lái)決定,第一:項(xiàng)目需求,第二:人員配備;第三:團(tuán)隊(duì).

          首先,從項(xiàng)目需求來(lái)說(shuō),要是一個(gè)小項(xiàng)目,完成就好,基本不要維護(hù),那么建議用分層開發(fā),反之,如果是一個(gè)銀行,電信核心系統(tǒng).它在設(shè)計(jì)的時(shí)候都不知道會(huì)被什么人使用.必須提供完善的接口規(guī)范,那么建議使用分層開發(fā),保證面向接口編程,為重構(gòu)提供可能!
          其次,說(shuō)到人員配置,如果team中每個(gè)人都是junior developer,不能提供出成熟的設(shè)計(jì),那么建議使用分模塊開發(fā)!因?yàn)榉謱娱_發(fā)對(duì)系統(tǒng)框架設(shè)計(jì)的要求比分模塊開發(fā)要高!如果team中有幾個(gè)設(shè)計(jì)方面的告訴,能夠保證系統(tǒng)設(shè)計(jì)的成熟,穩(wěn)定性,那么分層開發(fā)是必然的選擇,何必放著這些高手不用!讓他們做junior都能做的事呢?
          最后,說(shuō)一下團(tuán)隊(duì),從團(tuán)隊(duì)穩(wěn)定性的角度,我建議使用分層開發(fā),原因有二,第一,分層保證多人(大于2人)了解同一個(gè)模塊,即使走一人,其它了解這個(gè)模塊的人也可用接上手;第二,人盡其才,從古到今,都是這個(gè)理!

          順便引用網(wǎng)絡(luò)的上一段話,我覺(jué)得挺在理!
          "大家不妨想一下,微軟自帶的例子,都是分三層,四層的,這意味著什么?好處肯定是有的,否則就不會(huì)帶這個(gè)DEMO給全世界用.NET的IT人員參考啦,就不會(huì)放在MSDN中!"  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2007-03-23 15:41 ramon

          好久以來(lái)我一直都在考慮層與模塊的關(guān)系,但是從來(lái)沒(méi)有把它們和項(xiàng)目管理掛起來(lái), 我一直覺(jué)得它們是屬于系統(tǒng)架構(gòu)設(shè)計(jì)中的概念, 所有就老糾纏在到底是層包含模塊, 還是模塊包含層這樣的問(wèn)題中,困惑了許久,今天看到大家的討論,獲益匪淺, 層應(yīng)該是從架構(gòu)設(shè)計(jì)的角度來(lái)看 ,是對(duì)系統(tǒng)的縱向分解,而模塊應(yīng)該是從功能呢個(gè)角度劃分,是對(duì)系統(tǒng)的橫向分解。 模塊與層應(yīng)該是一個(gè)垂直正交的關(guān)系。
          那么在實(shí)際中,我覺(jué)得分層加分模塊比較合適, 比如在一個(gè)較大的項(xiàng)目中,定義了表示層,邏輯層和持久層, 我可能愿意只在邏輯層和持久層分模塊,表示層可能就交個(gè)一個(gè)專門的team來(lái)開發(fā),必經(jīng)表示層的開發(fā)和后端的開發(fā)需要的技術(shù)知識(shí)領(lǐng)域是有差異的。。。呵呵,隨便說(shuō)說(shuō),歡迎大家指正。 因?yàn)檫@個(gè)問(wèn)題實(shí)在困惑我很久,又找不到什么資料, 不知道有沒(méi)有朋友介紹一些其他的關(guān)于這方面的經(jīng)典文章。  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2007-05-24 15:04 jallock17@126.com

          看看上面大家的發(fā)言,確實(shí)是些強(qiáng)人。
          那我就我的想法說(shuō)說(shuō):
          不管你采用哪種方式開發(fā),都應(yīng)當(dāng)基于人(用戶、開發(fā)人員、管理人員),然后綜合考慮項(xiàng)目因素。具體一點(diǎn)說(shuō):
          我認(rèn)為,我們大部分開發(fā)人員老是基于自身的角度去想應(yīng)該怎么開發(fā)合理,
          如果我們換個(gè)角度去想想:項(xiàng)目時(shí)間不足夠,項(xiàng)目資金不足夠、沒(méi)有足夠的需求調(diào)研、市場(chǎng)因素等綜合考慮,你會(huì)發(fā)現(xiàn)有很多問(wèn)題我們開發(fā)人員太過(guò)理想化。  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2007-05-24 15:24 jallock17@126.com

          軟件工程,流程的開發(fā)方式,都是前人的經(jīng)驗(yàn)總結(jié),
          需要根據(jù)實(shí)際情況來(lái)結(jié)合自身實(shí)際條件來(lái)找到一條
          適合自己的路子才是最可行的  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā)[未登錄](méi) 2007-06-05 17:16 Marine

          不懂J2EE
          不過(guò)分層了,再分模塊不好么?個(gè)人感覺(jué)模塊是在層次之下的。每一層有自己的模塊。  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2007-12-06 15:45 huangyifu

          我的經(jīng)驗(yàn)是:
          分模塊開發(fā)速度快些
          分層開打質(zhì)量高一些  回復(fù)  更多評(píng)論   

          # re: 分層與分模塊開發(fā) 2009-07-30 16:23 eric土人

          讀這位fisher寫的東西真是拗口,是不是能按照主謂賓的結(jié)構(gòu)來(lái)排排語(yǔ)法,只表達(dá)一個(gè)觀點(diǎn)--對(duì)敏捷里面提及的團(tuán)隊(duì)合作,在中國(guó),很成問(wèn)題.  回復(fù)  更多評(píng)論   

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導(dǎo)航

          <2006年3月>
          2627281234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          統(tǒng)計(jì)

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 濮阳县| 宝应县| 青阳县| 广东省| 抚松县| 兴安县| 五家渠市| 台中县| 广平县| 札达县| 上林县| 化州市| 德清县| 准格尔旗| 安龙县| 杭锦后旗| 巧家县| 乌拉特中旗| 繁昌县| 兰坪| 甘泉县| 黎城县| 襄城县| 荆州市| 石景山区| 嘉善县| 年辖:市辖区| 全椒县| 三亚市| 泸州市| 永嘉县| 上犹县| 潜江市| 鹤山市| 措勤县| 远安县| 兰溪市| 南木林县| 团风县| 钟山县| 大连市|