中國開源世界高峰論壇 中國科學(xué)院院士李未先生的采訪實錄
2012年6月29日,第七屆"開源中國開源世界高峰論壇"在北京唯實國際文化交流中心召開,開啟為期兩天的日程。這次會議研討的主題是移動互聯(lián)終端設(shè)備(智能手機、平板電腦、互聯(lián)電視、車載信息系統(tǒng)等)的發(fā)展、應(yīng)用和產(chǎn)業(yè)化以及市場問題,移動互聯(lián)網(wǎng)與云計算、物聯(lián)網(wǎng)(重點研討有關(guān)開放、互聯(lián)和節(jié)能的技術(shù)發(fā)展方向)的發(fā)展及應(yīng)用問題。在今天下午的會議上,記者對中國科學(xué)院院士李未先生進(jìn)行采訪。
以下為現(xiàn)場實錄:
主持人:非常感謝兩位幽雅女士的精彩分享!其實這兩位也是今天高峰論壇迄今為止唯一的兩位做主題演講的嘉賓,包括早上邱主席發(fā)布的曲部長包括張部長包括今天在座的來賓,我發(fā)現(xiàn)女性很少,接下來晚一些時候會有一個互動專場,就是關(guān)于社區(qū)和人才培養(yǎng),我建議屆時嘉賓一定要討論一下開源社區(qū)女性人在的培養(yǎng),中國老祖宗說男女搭配干活不累,說不定對中國開源軟件產(chǎn)業(yè)的發(fā)展大有裨益。接下來有請中國科學(xué)院院士李未先生為大家?guī)碇黝}演講,題為“云計算、物聯(lián)網(wǎng)與群體軟件工程”,大家掌聲有請!
李未:很高興今天下午能和大家一起共同討論軟件開發(fā)的問題,但是因為我沒有認(rèn)真讀通知,今天主要議題其實是開源軟件,我準(zhǔn)備的材料和大會主題有一些距離,跟大家一起討論吧。我今天演講的題目是“云計算和群體軟件工程”。
5年前開始在軟件界就醞釀討論物聯(lián)網(wǎng)的問題,三、四年前云計算非常的熱,我今天又提出群體軟件工程這個事。我們可以先談?wù)勈裁词俏锫?lián)網(wǎng)?物聯(lián)網(wǎng)的概念最初是在1999年MIT教授針對使用RFID電子標(biāo)簽的物流網(wǎng)首先提出來的。經(jīng)過幾年發(fā)展,實際上物聯(lián)網(wǎng)是指面向一個特定領(lǐng)域或者行業(yè)的、擁有超量數(shù)據(jù)的一個復(fù)雜信息系統(tǒng),比如智能交通,尤其大城市,像北京、上海都采用智能交通系統(tǒng),甚至可以預(yù)報路況,智能電網(wǎng),現(xiàn)代物流,醫(yī)療健康,信息柵格,像美國全球信息柵格,這些東西都是物聯(lián)網(wǎng)的典型應(yīng)用。
物聯(lián)網(wǎng)為什么重要呢?因為它是未來信息社會的基礎(chǔ)設(shè)施,怎么衡量我們國家工業(yè)做到了信息化呢?物聯(lián)網(wǎng)是標(biāo)志性的成果,無論是在電網(wǎng)里面,還是交通里面,要實現(xiàn)這個我們認(rèn)為達(dá)到了工業(yè)信息化,而且是戰(zhàn)略新興產(chǎn)業(yè)建設(shè)的切入點,所以國家把突破關(guān)鍵技術(shù)、擁有自主知識產(chǎn)權(quán)當(dāng)做信息領(lǐng)域最核心任務(wù)之一,這也是物聯(lián)網(wǎng)四年來一直會繼續(xù)下去的道理。
云計算是什么呢?云計算是一種基于互聯(lián)網(wǎng)的大眾參與的計算模式,其計算資源( 包括計算能力、存儲能力、交互能力等) 是動態(tài)、可伸縮被虛擬化而且以服務(wù)方式提供。目的是什么呢?為用戶提供簡單易用、安全可靠、需用即得的服務(wù),實質(zhì)是什么呢?通過什么做到這點呢?我認(rèn)為是對用戶屏蔽有關(guān)計算、存儲、同心合控制的底層操作細(xì)節(jié),所有物聯(lián)網(wǎng)用戶用不著關(guān)心下面怎么實現(xiàn)的,直接需要這個服務(wù)就行了,云計算在我看來是實現(xiàn)物聯(lián)網(wǎng)的一種途徑,比如說云計算提出軟件即服務(wù),什么意思呢?終端用戶無需關(guān)心使用了哪些特定的應(yīng)用軟件和資源,直接得到所需的服務(wù),平臺即服務(wù)是什么呢?指這些應(yīng)用軟件無需關(guān)心操作系統(tǒng)以及中間件底層模塊實際調(diào)用和運行,直接獲得所需要的功能;再往下一層,基礎(chǔ)設(shè)施即服務(wù),平臺無需關(guān)心硬件設(shè)備的細(xì)節(jié),直接得到計算和處理資源。云計算為物聯(lián)網(wǎng)的實現(xiàn)特別為物聯(lián)網(wǎng)軟件系統(tǒng)的實現(xiàn)提供了一種解決方案,它的理念是服務(wù)用戶,它的核心技術(shù)就是屏蔽底層思路。
物聯(lián)網(wǎng)提出來以后,一個非常重要的事就是造成了每一個物聯(lián)網(wǎng)將來都會成為超大規(guī)模的系統(tǒng),所謂超大規(guī)模是什么意思呢?大量的感知和受控設(shè)備,最高可以達(dá)到千萬量級傳感器、各種各樣攝像頭,在執(zhí)行過程中可以達(dá)到含量的計算和通訊進(jìn)程,達(dá)到10個12次方的任務(wù)同時進(jìn)行,而且使用了超量的非結(jié)構(gòu)化的動態(tài)數(shù)據(jù),比如照片、聲音、錄像等等,達(dá)到什么程度呢?最高達(dá)到10的18次方,超量導(dǎo)致什么呢?導(dǎo)致對傳統(tǒng)軟件工程提出了挑戰(zhàn),傳統(tǒng)軟件工程是什么樣呢?比如咱們現(xiàn)在所有的大的軟件公司,首先精英化,在座各位都是優(yōu)秀的大學(xué)畢業(yè)生,整個軟件的設(shè)計是計劃性,預(yù)先規(guī)劃所有的需求,然后向下開發(fā),這是計劃性,另外整個開發(fā)過程是封閉的,按照這種方法,最典型的東西就是咱們經(jīng)常使用的Windows,按照50年來發(fā)展軟件工程方法開發(fā)的典型產(chǎn)品,功能模塊大約6萬個,代碼6千萬行,使用9千名專業(yè)人才,歷時5年完成,任何一個在網(wǎng)上的物聯(lián)網(wǎng)甚至不是物聯(lián)網(wǎng)的信息系統(tǒng)的規(guī)模都要比6千萬行代碼來得大,比如FACEBOOK,按照我們查的結(jié)果,每個月要上傳60億張照片,要對60億張照片進(jìn)行標(biāo)注,照片誰寫的是基礎(chǔ)信息,照片用的攝像技術(shù),照片本身,另外對照片文字解釋,要把四方面內(nèi)容進(jìn)行全面的標(biāo)注和處理,核高基項目搞了四面體模型,實驗了三年,加工一張照片需要12分鐘,如果按照傳統(tǒng)的方法,Vista的規(guī)模,一萬人,需要40年才能完成,按照工作量算是41年,實際上并沒有用41年,怎么完成的呢?實際上靠超過量的用戶,解決辦法是群體模式,F(xiàn)ACEBOOK一共有8.5億用戶,如果每個用戶都對自己上傳的照片自己加以標(biāo)注的話,一個半小時就把這些事完成了,現(xiàn)在沒有做到這點,1億的用戶一天也可以完成,這是一個例子,現(xiàn)在網(wǎng)上對付的辦法就是發(fā)動群體做這件事,因此人們就想我們的軟件開發(fā)能不能也可以發(fā)動群體來干這件事呢?這就是蘋果APP Store和谷歌Android Market,Apple2008年7月開始,把手機上用戶程序開放,允許70萬人參加,谷歌Android Market估計達(dá)到45個手機的應(yīng)用程序,60萬人參加。
軟件應(yīng)用系統(tǒng)的開發(fā)可不可以采用群體方式呢?比如美國TopCoder公司,采用競爭性的群體軟件開發(fā)模式,25萬名開發(fā)人員加入到開發(fā)社區(qū),他們承擔(dān)了美國在線委托的通訊后端系統(tǒng)的開發(fā),TopCoder采用這個辦法把系統(tǒng)分成52個部分,然后由社區(qū)招標(biāo),傳統(tǒng)軟件工程需要1年完成的事他們5個月就完成了,而且因為是招標(biāo),有群體競爭過程,雖然完成的快,質(zhì)量比規(guī)定的還好,行業(yè)要求是每千行不超過6個錯誤,做完以后經(jīng)過測試發(fā)現(xiàn)沒千行只有0.98錯誤。面對超量軟件,群體軟件開發(fā)能不能從FACEBOOK應(yīng)用程序到APP Store應(yīng)用數(shù)據(jù)到App Store的應(yīng)用程序和簡單的TopCoder服務(wù)程序進(jìn)入云計算模式下物聯(lián)網(wǎng)軟件開發(fā)呢?我認(rèn)為主要解決這么一個問題,第一,超量信息的挑戰(zhàn),系統(tǒng)超大規(guī)模的信息系統(tǒng),像物聯(lián)網(wǎng)整的這些東西,群體的開發(fā)模式是有希望解決超量信息的模式,群體介入以后也會帶來安全的問題,所以需要有一個群體的潤色工程,這個軟件工程做什么事呢?面對超量信息系統(tǒng)使用群體競爭的模式設(shè)計和開發(fā)安全可靠的物聯(lián)網(wǎng),這是群體軟件工程的目標(biāo),對著超量信息系統(tǒng)來,最終目的是通過群體方式達(dá)到安全可靠的軟件。理念是什么呢?開發(fā)過程從封閉到開放,開發(fā)人員從精英走向大眾,開發(fā)組織從工廠走向社區(qū),在理念上和開源有共同之處,作為軟件工程,開發(fā)方法從機器工程到社會工程,就像城市建設(shè)一樣,不能夠全部拆毀然后重新再建,都是在原來的基礎(chǔ)上不斷進(jìn)化,這也是超大規(guī)模系統(tǒng)的特征之一。
開發(fā)體制怎樣呢?我覺得有兩點:群體性、大眾化的軟件研發(fā)和計劃性、精英化的軟件整體規(guī)劃和管理相結(jié)合,群體競爭機制做什么事呢?對軟件資源的形成、組合、測試、維護和服務(wù)起著基本的開發(fā)、研制的作用。開發(fā)原則是什么呢?APP所帶來的這些東西,原來使用者和開發(fā)者是分離的,現(xiàn)在使用者就是開發(fā)者,使用者就是設(shè)計者,使用者也是維護者,而且這個觀念要一直深入下去,不僅僅只是應(yīng)用程序,包括下層的開發(fā)。軟件工程的基本內(nèi)容:群件的多層體系結(jié)構(gòu),云計算核心是屏蔽原理,群件組合服務(wù)原理,用戶身份的多重性原理,開發(fā)者競爭選擇原理,競爭性測試原理,對抗性的安全原理。我解釋一下多重性,為什么以前變成分離的呢?比如Windows7上面就是用戶,實際上之間只有兩層,變成APP Store以后通過三層解決,把開發(fā)環(huán)境開放了,任何一個用戶都可以使用開發(fā)環(huán)境自己開發(fā)自己需要的應(yīng)用程序,至少要三層,怎么保證安全呢?既然用戶一定要使用開發(fā)層,所以鄰層是開放的,隔層怎么樣?用戶不能直接到操作系統(tǒng)里,隔層是屏蔽的,多層結(jié)構(gòu)出來以后屏蔽原理能夠保證層層都有群體來開發(fā),多層結(jié)構(gòu)允許鄰層開放、隔層封閉,原則上就能夠保證安全性。每一層都由三部分組成:一部分是開發(fā)環(huán)境,一部分是服務(wù)的形成,叫組合服務(wù)機制,另外一部分是數(shù)據(jù)庫。
組合原理,首先有基本服務(wù),就是函數(shù),基本函數(shù)可以調(diào)用,然后由基本函數(shù)通過順序、通過分支、通過循環(huán)和并發(fā)、通信、同步機制就可以組成所有的服務(wù)組合,因為等價于可計算性,凡是程序能夠做到的七個機制就都可以做到,而且群件多層是多態(tài)層次結(jié)構(gòu),比如一個函數(shù),實數(shù)加法和自然數(shù)的加法類型都是一樣的,但是定義域不同,這塊也一樣,多層結(jié)構(gòu)以后,服務(wù)組合的方式都是一樣的,但是基礎(chǔ)服務(wù)不一樣,因為每一層提供的基礎(chǔ)服務(wù)不一樣,而且基礎(chǔ)服務(wù)部能夠打開往下走的。開發(fā)者競爭選擇原理,既然是群體,我對開源不太懂,核心是每層開發(fā)者數(shù)量和直接用戶數(shù)量應(yīng)該遵從二八定律,20%以上開發(fā)者作為群體軟件開發(fā)必要條件,這樣才能形成競爭環(huán)境。
TopCoder25萬人,活躍的開發(fā)者4.8萬人,相當(dāng)于注冊人數(shù)的20%,來自204個國家,其中中國的選手占了23.6%,一萬多人,很多人通過TopCoder參加美國群體軟件開發(fā),前途很光明。
謝謝大家!