emu in blogjava

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評(píng)論 :: 2 Trackbacks

          關(guān)于面向構(gòu)件和EOS的一些思考
          author:emu(黃希彤)
          二、軟件開(kāi)發(fā)和傳統(tǒng)行業(yè)應(yīng)該怎么對(duì)比

           

                  普元很喜歡把軟件開(kāi)發(fā)同傳統(tǒng)產(chǎn)業(yè)進(jìn)行類(lèi)比,在接口問(wèn)題上,我們也來(lái)看看傳統(tǒng)的機(jī)械產(chǎn)業(yè)有沒(méi)有類(lèi)似的概念吧。螺絲和螺帽是我們最常見(jiàn)的兩種構(gòu)件,也是大規(guī)模工業(yè)化生產(chǎn)機(jī)械裝置的基礎(chǔ),那么螺絲和螺帽的接口是不是寬松和自適應(yīng)的呢?不是!他們是強(qiáng)耦合的接口,而且我們有上百萬(wàn)中不同規(guī)格的螺紋規(guī)格,或者說(shuō)接口,每一種都定義的非常精確和有針對(duì)性。我們還有不計(jì)其數(shù)的齒輪的規(guī)格,有多少個(gè)齒輪可以用其他型號(hào)的代替呢?很少。當(dāng)然機(jī)械裝置中也有弱耦合,比如膠水、塑料、樹(shù)脂。但是有沒(méi)有利用弱耦合的結(jié)構(gòu)來(lái)大規(guī)模生產(chǎn)機(jī)械裝置的呢?我一時(shí)間想不出這樣的例子。

           

                  類(lèi)比得出的結(jié)論是,如果我們要學(xué)習(xí)傳統(tǒng)的機(jī)械產(chǎn)業(yè),我們應(yīng)該定制上百萬(wàn)種嚴(yán)格的強(qiáng)耦合接口標(biāo)準(zhǔn),然后大量的廠(chǎng)商按照標(biāo)準(zhǔn)生產(chǎn)上百萬(wàn)種構(gòu)件。看起來(lái)好像構(gòu)件時(shí)代離我們還有點(diǎn)遙遠(yuǎn)哦。不過(guò)也未必,類(lèi)比得出的另一個(gè)結(jié)果是,用EOS這樣松耦合的構(gòu)件來(lái)構(gòu)造軟件,就象用萬(wàn)能膠水粘到一起的一組齒輪、軸承和螺絲螺帽來(lái)做變速箱。

           

                我們不要理所當(dāng)然的認(rèn)為這樣的變速箱沒(méi)有用,這正是軟件和機(jī)械的不同。這樣一個(gè)變速箱只要設(shè)計(jì)合理、能夠承載所需要的負(fù)荷,他是真的能夠一直工作下去的,我們不需要面對(duì)金屬疲勞、膠水老化和磨損這樣的問(wèn)題。也許這正是面向構(gòu)件開(kāi)發(fā)的實(shí)質(zhì)吧:能用膠水粘到一起的東西,就不要用螺絲。

           

                  是的,我的類(lèi)比存在問(wèn)題。再寫(xiě)上面這些文字的時(shí)候我腦子里面反復(fù)想起Jack Reecves的名言:源碼就是設(shè)計(jì),而軟件的生產(chǎn)過(guò)程僅僅是廉價(jià)得幾乎免費(fèi)的構(gòu)建過(guò)程。不錯(cuò),我們可以機(jī)械化、自動(dòng)化的生產(chǎn)大批的汽車(chē)、冰箱,可是我們還可以更容易的構(gòu)建軟件的拷貝。我們?cè)诒г管浖纳a(chǎn)不能象汽車(chē)那樣一臺(tái)接一臺(tái)的出廠(chǎng),可是汽車(chē)廠(chǎng)又何嘗能夠一臺(tái)接一臺(tái)的批量設(shè)計(jì)汽車(chē)呢?

              昨晚碼字之前喝了點(diǎn)紅酒,思路好像不是太清晰,有點(diǎn)自相矛盾的傾向…author:emu(黃希彤)

          posted on 2005-06-21 09:04 emu 閱讀(1397) 評(píng)論(8)  編輯  收藏

          評(píng)論

          # re: 關(guān)于面向構(gòu)件和EOS的一些思考-軟件開(kāi)發(fā)和傳統(tǒng)行業(yè)應(yīng)該怎么對(duì)比 2005-06-21 10:29 大胃
          早期的軟件的確是強(qiáng)耦合的,至少我從我學(xué)機(jī)械的父親那里得到的印象是:那個(gè)時(shí)候做軟件多少都有點(diǎn)機(jī)械工程的味道,我不知道這個(gè)感受是我的意象還是確實(shí)如此。

          不過(guò)畢竟硬件/固件是固定的,具體的,綁在一起的實(shí)體;而軟件則是流動(dòng)的,不斷變化甚至自我演化的流體。這個(gè)nature決定了軟件可以有朝一日比硬件更容易擺脫接口(廣義)的束縛,也更加容易升級(jí)。

          另一方面,固件的日常維護(hù)是為了保持它的正常運(yùn)轉(zhuǎn),需要的是讓它完成既定的任務(wù),或者更好的完成那些規(guī)定好的具體的事情,這些需求和它出廠(chǎng)時(shí)并無(wú)區(qū)別;軟件則不同,我們經(jīng)常需要根據(jù)新的需求來(lái)改變,通常是增加新的功能,所以維護(hù)軟件需要有不同的approach。正是對(duì)軟件這樣的要求才出現(xiàn)了越來(lái)越多的低耦合的解決方案、設(shè)計(jì)模式和框架。

          我父親的時(shí)代也許傾向于用傳統(tǒng)的機(jī)械制造的思維來(lái)思考軟件的工藝流程和軟件的本質(zhì),但是我發(fā)現(xiàn)這樣的思路越來(lái)越行不通了。

          // 昨天沒(méi)睡好,也胡亂說(shuō)一通......  回復(fù)  更多評(píng)論
            

          # re: 關(guān)于面向構(gòu)件和EOS的一些思考-軟件開(kāi)發(fā)和傳統(tǒng)行業(yè)應(yīng)該怎么對(duì)比 2005-06-21 12:26 emu
          固件?這個(gè)詞在升級(jí)數(shù)碼相機(jī)和mp3的時(shí)候用過(guò),好像還是軟件來(lái)的哦。

          “用傳統(tǒng)的機(jī)械制造的思維來(lái)思考軟件的工藝流程和軟件的本質(zhì)”行不通嗎?我覺(jué)得我們現(xiàn)在正是在軟件開(kāi)發(fā)過(guò)程栽進(jìn)死胡同里面了,所以正需要從傳統(tǒng)的機(jī)械、制造和建筑等行業(yè)學(xué)習(xí)人家的思維呢。我可以想像足夠高的層次上,他們是相通的。  回復(fù)  更多評(píng)論
            

          # re: 關(guān)于面向構(gòu)件和EOS的一些思考-軟件開(kāi)發(fā)和傳統(tǒng)行業(yè)應(yīng)該怎么對(duì)比 2005-06-22 11:56 小陸
          軟件的開(kāi)發(fā)和傳統(tǒng)的工業(yè)開(kāi)發(fā)有很多不同之處. 軟件開(kāi)發(fā)是一種純腦力勞動(dòng), 產(chǎn)品是一種無(wú)形的東西. 開(kāi)發(fā)的過(guò)程是一個(gè)持續(xù)設(shè)計(jì)的過(guò)程, 從調(diào)查, 設(shè)計(jì), 測(cè)試, 編碼, 到部署和后期維護(hù), 是需要持續(xù)設(shè)計(jì)的. 軟件的開(kāi)發(fā)過(guò)程中, 需求變化的程度要大于傳統(tǒng)的產(chǎn)品, 并且軟件構(gòu)架的靈活程度也比較高, 一個(gè)系統(tǒng)的最初構(gòu)架是可以發(fā)生漸變甚至突變的.
          方法論也許很重要, 但是從根本上解決問(wèn)題要提高人的素質(zhì), 調(diào)動(dòng)人的積極性. 人本身對(duì)于軟件開(kāi)發(fā)的影響大大高于其他行業(yè).   回復(fù)  更多評(píng)論
            

          # re: 關(guān)于面向構(gòu)件和EOS的一些思考-軟件開(kāi)發(fā)和傳統(tǒng)行業(yè)應(yīng)該怎么對(duì)比 2005-06-22 12:21 emu
          我認(rèn)為相反,方法論比“提高人的素質(zhì), 調(diào)動(dòng)人的積極性”要重要。在傳統(tǒng)產(chǎn)業(yè)中是如此(比如零件標(biāo)準(zhǔn)化、生產(chǎn)流水線(xiàn)),在軟件開(kāi)發(fā)中也應(yīng)該如此。我們遇到的困境就在于我們現(xiàn)在在軟件開(kāi)發(fā)中暫時(shí)還做不到、做不好。
          確實(shí),現(xiàn)在人本身對(duì)于軟件開(kāi)發(fā)的影響大大高于其他行業(yè)。這大概正是我們應(yīng)該改變的現(xiàn)狀。
            回復(fù)  更多評(píng)論
            

          # re: 關(guān)于面向構(gòu)件和EOS的一些思考-軟件開(kāi)發(fā)和傳統(tǒng)行業(yè)應(yīng)該怎么對(duì)比 2005-06-22 13:59 小陸
          軟件生產(chǎn)的特殊性是無(wú)法擺脫的, 最大的特點(diǎn)在于需求的變化. 需求變化造成了軟件的生產(chǎn)是一種持續(xù)設(shè)計(jì)的過(guò)程.

          10年前工廠(chǎng)生產(chǎn)自行車(chē), 把裝好的自行車(chē)直接推進(jìn)商場(chǎng)去買(mǎi), 今天有專(zhuān)門(mén)的自行車(chē)店, 可以根據(jù)個(gè)性化的需要定制一輛自行車(chē), 顧客可以試, 試過(guò)了還可以換, 這就是社會(huì)的進(jìn)步. 盡管生產(chǎn)出來(lái)的自行車(chē)看起來(lái)沒(méi)有什么變化, 但是客戶(hù)的滿(mǎn)意程度增加了, 同樣也是增加了社會(huì)的財(cái)富. 對(duì)于這樣的自行車(chē)店來(lái)說(shuō), 一個(gè)僅僅會(huì)在柜臺(tái)里收錢(qián)的店員是沒(méi)有用的, 需要的是具有多種專(zhuān)業(yè)素質(zhì)的人.

          軟件的生產(chǎn)類(lèi)似與自行車(chē)店里的工作, 不會(huì)直接的創(chuàng)造價(jià)值, 但是會(huì)提高顧客對(duì)解決方案的滿(mǎn)意程度. 并且比傳統(tǒng)的工業(yè)更加靈活, 更加適應(yīng)需求的變化.

          適用于流水線(xiàn)上的方法論基于一種基礎(chǔ): 人力和人力是可以互相代替的, 人力和時(shí)間是可以互相代替的. 在軟件生產(chǎn)領(lǐng)域這個(gè)基礎(chǔ)是不存在的. 建一棟大樓的時(shí)候我們可以認(rèn)為, 加50個(gè)工人, 就可以提前一個(gè)月完工. 用這樣的思想開(kāi)發(fā)軟件則行不通, 這樣的方法論不適用于軟件開(kāi)發(fā).

          人本身對(duì)于軟件開(kāi)發(fā)的影響大大高于其他行業(yè), 這個(gè)現(xiàn)狀是很難改變的. 承認(rèn)這個(gè)狀況才能找出適用于軟件開(kāi)發(fā)的某種"方法論", 在這樣的方法論中, 人應(yīng)該在一個(gè)更加重要的地位.   回復(fù)  更多評(píng)論
            

          # re: 小陸 2005-06-22 15:07 emu
          好一個(gè)“需求變化造成了軟件的生產(chǎn)是一種持續(xù)設(shè)計(jì)的過(guò)程”,和Jack Reecves的名言“源碼就是設(shè)計(jì),而軟件的生產(chǎn)過(guò)程僅僅是廉價(jià)得幾乎免費(fèi)的構(gòu)建過(guò)程”是一個(gè)意思。這恰恰就是我們難以和傳統(tǒng)行業(yè)做重復(fù)相似的類(lèi)比的根本原因。

          軟件開(kāi)發(fā)至少在現(xiàn)在,和自行車(chē)店是完全沒(méi)有辦法類(lèi)比的,也許在充分構(gòu)件化開(kāi)發(fā)的明天我們可以。

          我認(rèn)為流水線(xiàn)上的方法論并不基于你所說(shuō)的基礎(chǔ),即使是什么經(jīng)濟(jì)學(xué)家說(shuō)的,我也照樣不同意。

          我認(rèn)為流水線(xiàn)的要點(diǎn)是把復(fù)雜的工作分解成很多小任務(wù),每個(gè)(每組)人負(fù)責(zé)完成其中的一個(gè)或幾個(gè)小任務(wù)。流水線(xiàn)之所以能夠提高生產(chǎn)效率,是因?yàn)槿嗽谥貜?fù)完成一個(gè)小任務(wù)的效率比完成整個(gè)大任務(wù)的時(shí)候生產(chǎn)效率要高,因?yàn)橹貜?fù)的小任務(wù)會(huì)變得熟練。

          在軟件開(kāi)發(fā)過(guò)程我們沒(méi)有借鑒過(guò)這樣的方法論嗎?我們不是幾組人分工,需求分析、設(shè)計(jì)、編碼、測(cè)試,象流水線(xiàn)一樣在工作嗎?我還把軟件分成數(shù)據(jù)訪(fǎng)問(wèn)層、事務(wù)層、表現(xiàn)層來(lái)開(kāi)發(fā),這不是對(duì)流水線(xiàn)的模擬嗎?我們沒(méi)有因?yàn)檫@樣的分解而增加了開(kāi)發(fā)熟練程度和效率嗎?

          而且,軟件開(kāi)發(fā)中人力和人力也往往不是不可替代的(安德?tīng)査箍赡苁莻€(gè)例外),我們都遇到過(guò)這樣的情況不是嗎?當(dāng)然替換過(guò)程有個(gè)成本問(wèn)題,傳統(tǒng)產(chǎn)業(yè)一樣也有。在這方面,我們的問(wèn)題是能不能降低替換的成本,比如嚴(yán)格的XP開(kāi)發(fā)流程中,這個(gè)問(wèn)題就得到很好的解答。  回復(fù)  更多評(píng)論
            

          # re: 關(guān)于面向構(gòu)件和EOS的一些思考-軟件開(kāi)發(fā)和傳統(tǒng)行業(yè)應(yīng)該怎么對(duì)比 2005-08-11 09:32 shuquan
          普元是好事,但是還不是非常好:
          基于jboss/eclipse兩個(gè)免費(fèi)的平臺(tái),整合出了一個(gè)東西來(lái)賣(mài)錢(qián),讓人感覺(jué)有點(diǎn)點(diǎn)不妥。
          而且目標(biāo)過(guò)于遠(yuǎn)大,不可能有銀彈的。如果能提出一套控件的標(biāo)準(zhǔn),ide以插件的形式分發(fā),而不是把ide作為排他的東西(直接把jb/bea/idea等作為對(duì)手).
          應(yīng)該有更大空間。(但是那樣的話(huà),普元如何掙大錢(qián)?好像可以賣(mài)標(biāo)準(zhǔn)哦)
          由于該方向涉及東西太多,估計(jì)普元不可能都解決得了。因此,相信很多軟件公司會(huì)分析、吸取普元的思想,自己搞得。  回復(fù)  更多評(píng)論
            

          # re: 關(guān)于面向構(gòu)件和EOS的一些思考-軟件開(kāi)發(fā)和傳統(tǒng)行業(yè)應(yīng)該怎么對(duì)比 2005-08-11 11:36 emu
          不只jboss和eclipse是免費(fèi)的,java也是免費(fèi)的,但是我們都還在靠java混飯吃呢,這倒沒(méi)什么不妥。

          從來(lái)沒(méi)有人證明過(guò)不可能有銀彈,這也不是問(wèn)題。目標(biāo)過(guò)于遠(yuǎn)大?這更不成其為問(wèn)題了。

          剩下的問(wèn)題我認(rèn)為才是真正的問(wèn)題。普元再?gòu)?qiáng),你能強(qiáng)得過(guò)微軟去?windows上面的軟件大半不是微軟出品的,用java開(kāi)發(fā)的軟件也大半不是sun出品的,可是普元上面的構(gòu)件卻基本上是普元出品的。雖然我們自己也可以開(kāi)發(fā)構(gòu)建,但是這不是一個(gè)開(kāi)放的標(biāo)準(zhǔn),我們?nèi)绻@樣做了自己的利益得不到保障,誰(shuí)會(huì)去這樣做呢?所以普元這個(gè)封閉的標(biāo)準(zhǔn)造成了他只能閉門(mén)造車(chē),想幫他忙豐富他的構(gòu)件庫(kù)的人都無(wú)從下手。普元開(kāi)發(fā)能力再?gòu)?qiáng)能開(kāi)發(fā)出來(lái)多少種構(gòu)件呢?

          我覺(jué)得普元想做大,唯一的出路就是吧開(kāi)發(fā)和應(yīng)用環(huán)境都免費(fèi)開(kāi)放,最好干脆開(kāi)源,并免費(fèi)開(kāi)放目前的大多數(shù)可以通用化的構(gòu)件,在他的主導(dǎo)下創(chuàng)建并維護(hù)一個(gè)社群,讓每個(gè)人都可以用EOS獲取自己的利益,然后他可以以定制構(gòu)件和生產(chǎn)出售在EOS平臺(tái)上的軟件來(lái)盈利。

          如果他不這樣做,我相信他的競(jìng)爭(zhēng)對(duì)手遲早也會(huì)這么做。事實(shí)上,如果我是個(gè)沒(méi)有生存壓力的自由程序員,我現(xiàn)在也許已經(jīng)在這么做了。

          在他轉(zhuǎn)向開(kāi)放之前,我沒(méi)有辦法再看好他。  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 秦皇岛市| 阳春市| 固安县| 南城县| 秦皇岛市| 肃北| 大田县| 海阳市| 满城县| 东乌珠穆沁旗| 新竹县| 南平市| 南宁市| 泾川县| 台南市| 松原市| 交口县| 清水河县| 陵川县| 邯郸市| 台南市| 谷城县| 原阳县| 宜兴市| 孟村| 察隅县| 东方市| 闸北区| 寻甸| 民权县| 衡水市| 开封县| 长治市| 咸宁市| 杭锦后旗| 福贡县| 明星| 中超| 本溪市| 阳谷县| 威信县|