emu in blogjava

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

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

           

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

           

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

           

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

           

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

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

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

          評論

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

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

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

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

          // 昨天沒睡好,也胡亂說一通......  回復(fù)  更多評論
            

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          在他轉(zhuǎn)向開放之前,我沒有辦法再看好他。  回復(fù)  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 蓬莱市| 嘉义县| 高清| 嫩江县| 石台县| 江达县| 潜江市| 天水市| 孙吴县| 颍上县| 星子县| 安阳县| 永定县| 灌云县| 衡水市| 邢台市| 墨玉县| 白水县| 青川县| 磐安县| 东海县| 商南县| 湘阴县| 抚顺市| 资源县| 宁远县| 肃北| 惠州市| 鹿泉市| 芦山县| 鸡泽县| 合肥市| 兴文县| 武清区| 沂南县| 渝中区| 策勒县| 灵台县| 会理县| 曲水县| 岚皋县|