Danny Sabbah:大家早上好,謝謝各位,很遺憾我不能用中文介紹,我希望我講的話題大家能夠明白,今天講的是軟件開發的前景以及IBM所看到的一些發展態勢,特別Rational方面發展的態勢。我會講到我們面臨的一些挑戰,我們都是軟件開發商,我們都面臨著很多的挑戰,我會具體分析這些挑戰,然後介紹一下我們認為這些挑戰將會對軟件開發產生什麼樣的轉型影響,我們如何能夠在這種變化的條件下,如何面對這些挑戰實現既定的目標面向實現服務的架構也就是SOA。
如果看一下今天商業環境,特別是軟件開發的商業環境,我們發現我們受到速度、全球化、新的管制、特別在全球范圍內開展業務的時候,我們必須要建一個軟件,它能夠適應於各種不同管制的要求,同時也要被迫迅速做出變化,這樣才能保持它的競爭力,同時也能夠使許多所服務的企業從中受益,我們受到上述所有因素的挑戰。除此之外還有非常有意思的轉型,也是我們在今天的市場中所看到的,我到中國來的時候就感受到這一點,而且感受非常強烈,很多商業模型都在發生轉變,如果想一下一個新興的經濟體,沒有任何一個經濟體可以像30、40、50或100年前的方式發展,所以信息技術確實觸發了迅速的變化,也觸發了技術生態系統的迅速變化。這些企業必須要隨著速度的要求來重新定位自己來發展,這是他們面臨很大的挑戰。
我提出了一些全球管制方面的例子,我們必須要應對這些管制的變化,我們因此要做出這樣那樣的變化來迎接它。這些管制是面向業務的發展方面,我們作為開發商必須要改變我們的重心,特別在新的市場當中要更加注重新的市場新的商業模式以及不斷產生新的想法。
這是從另外一個角度來說,我們在實施有效解決方案時候看到的情況,即使在新的市場當中,即使我們面臨嶄新的業務,你們很快會發現你在創造一些軟件,你在創造自動化,特別在IT資產中實現軟件和自動化,這是隨著要求的變化,隨著應用不斷更新,隨著管制不斷變化對你提出的要求,而且你發現軟件演進方面有一些問題,雖然你不是長期進行軟件的開發,但是軟件演進變得越來越難管理了。這是一個電子器材零售商的例子,從其中可以看到所有的應用資產之間的相互關系和相互依賴性,這是一個中等規模的零售商,並不是很大型的企業,這只是四頁報告中第一頁。正是在這種特定的類型下,這是一個特定軟件生命周期的環境,我們現在面臨著一個事實,就是我們要加速自己的變化,要不斷創建、修改、管理IT資產的演進,所以情況有所不同,在一個集成開發的環境之下,你需要坐下來,然後創建簡單的Java代碼,寫一些簡單的Java程序或者C++程序已經夠了,現在情況完全不同了。現在很多企業和業務人員都面臨的問題,如果他們不能應對這樣的挑戰就不能取得成功,因為在今天以IT為主導的環境當中,我們都面臨全球的競爭壓力,你或許要改變自己,或許要讓自己實現自動化,或者擴展自己業務生產的領域,或者進入一個新的具有新的管制性條例的市場當中,否則只能死路一條。所以我們要了解軟件開發的角度就是當我們創建出一個應用的時候,當我們在寫可重用代碼的時候,當我們想要建立一些解決方案來解決業務問題的時候,我們必須要考慮,我們不僅要解決今天的問題,而且我們所建立的軟件應該是能夠實現迅速演進的,因為不用多長時間,這張圖上所顯示的相互關系,隨著公司的購並,隨著新業務的出現,隨著進入新的市場,這樣復雜的相互關系都是我們大家要面臨的新問題。
軟件開發作為一個規則,也必須要繼續保持下去,在我們討論業務的速度以及業務轉型速度的時候,實際上我們已經對個人的生產力提出了很高的要求,同時對大家作為整體軟件開發的社區和一個群體給了更大的壓力,我們必須要更快做出這樣的軟件,在今天的環境當中,你所要做的就是你可以在北京四處看一下,你可以看到各種各樣起重機在不斷工作,來建立起高樓大廈。北京是一個很好的城市,我們實際上可以更快的建立一個大型的購物商場,也許建大型商場的速度要比一個公司實施一個ERP的系統要更快一些,所以我們今天面臨的主要挑戰就是讓我們軟件或者讓軟件的資產能夠盡快地運轉起來,使我們在不斷前進的過程當中,我們可以在很短的時間內也可以和城市共同的發展。
現在可以看到互聯網以及個人電腦的革命,實際上通過這些革命把計算的概念帶給每一個人,我們不斷開發各種互聯的裝置,我們在利用帶寬,這時候信息技術和計算的資源實際上已經影響到了所有人的生活,而且是每天的生活。所以社會聯網、社會計算的出現已經給我們帶來了很多的壓力,要求我們做出更快的變化,而且要求我們提供更多軟件的資產,我們要以一個可管理的循環模式來管理它。同時要有開發工具和開發平台,你必須要考慮一個事實,如果只是著重於提高個人開發者的勞動生產率已經不夠了,而且也不具有吸引力的,我們必須要在廣泛的范圍之內提高它的生產率,這樣才能確保我們自己能夠隨需應變,而且能夠適應情況。我們要考慮到業務的轉型,還有應用的采納,所以作為一個真正的軟件開發者必須要考慮新的變化,而SOA的概念就是一種集成的概念,是把現有的資產集中在一起,可以提高能力。現在全球部署還有新興的商業模式,如果我們不謹慎,不了解軟件的演進,不考慮建立一個軟件開發的生命周期管理的話,我們在整個進程中就會出現中斷,我們就會迫使自己不得不在商業和社會的演進過程中放緩我們的腳步。
軟件工程化正在成為核心和具有創造性的資產,對於任何社會都是這樣,如果我們不能把它作為一個定律遵循的話,我們就會看到它不是一個資產,而將會成為前進道路當中一項障礙,阻礙我們的步伐,所以我們如何能改變這個狀況呢?很遺憾的是每次我們看到一些挑戰的時候,比如互聯網帶來的挑戰,我們都會發現挑戰與機遇並存,我們在接下來的時候會講新的技術是什麼?我們有哪些新的願景,以及那些新的想法會幫助我們解決這些挑戰難題,講到群體和社會的聯網以及模塊化,所謂模塊化是一個老的概念,模塊化是我剛做軟件開發時候比較流行的,那已經30年前的事情,模塊化是面向服務架構的核心。就這個具體觀點就可以了解,它是我們解決軟件演進過程當中復雜問題的關鍵。第三個想法是圍繞權力和管理,我們必須要有紀律,因為沒有紀律以及不能了解和其他人相互關系的時候,我們做軟件開發的時候不是作為個體來做的,我們是一個靈活的組織,如果不能了解這一點,就不能夠應對我們一直講的復雜局面,所以今天試著給大家在這麼短的時間內講一下每一個發展趨勢當中我們的見解,我們從Rational角度如何看待它,這些因素是如何聚集在一起,能夠讓我們塑造一個全新的軟件開發平台,這個軟件開發平台能夠幫助我們提高軟件開發的能力,而且也可以使一個復雜的系統不斷演進。
首先要認識的一點就是軟件的架構是非常重要的,另外需要認識的就是軟件架構同時也是易碎的,講到這個架構必須是模塊化,必須是松散的聯合,這裡好消息就是計算能力因為摩爾定律不斷加強,現在用的帶寬也不斷加強,這是由於在.COM的時代所建立起來的帶寬,我們有一個非常松散的架構,而且這個架構應該是模塊化的架構。在我們面臨各種沉積層的時候,可以看到以前遺留下來的應用和層面堆積在一起我們不斷看到新的應用,新的技術疊加在老的上面。這就像我們考古時候發現人類的演進和地質的演進,就像土壤在地質演進過程一樣,我們要實現新的演進目標必須疊加在舊的目標層面之上,我們在軟件開發上面建立新的規律和新的定律這和考古學是有類比的,我們要能看到老的系統,要能理解老的系統這樣就不必把老的系統丟棄,同時我們又可以建立新的系統,在更大程度上看來,如果你看一下人類大腦的發展架構,它是我們知道最復雜的一個信息技術系統,它是有很多軟件的結構組成,而且是專門化的,也是專門經過優化來解決某些具體任務的。但是演進不是白手起家做一些事情,是不斷優化目標,當需要一個新的架構的時候,就建立和創建一個新的架構,然後把這個新的架構和老的架構完美結合在一起。我們將要建立起一個軟件開發環境中的規則定律,這個規則和定律能夠讓我們以上述同樣的方式來發展,當你想到建立軟件資產的時候,首先要想到架構,想到松散的耦合,想到模塊化,想到演進,要想到上述的特點,要了解它的定律和生產周期。這不僅僅是創造新的功能,要在軟件開發環境中迅速理解,關鍵是要理解架構的考古問題,當你進入現實環境中,遇到現實商務問題的時候,在IT資產中這是你真正會面臨的問題。我們可以看一下曾經談到的這些方向,加速器是劇烈的全球競爭,迫使我們改變業務模式,改變軟件資產,也就是運行這些服務的資產。我們還說到沉積層的阻撓因素,讓我們無法前進的因素,我們還要利用新技術的優勢,新創的速度和能力,這樣才能加快我們對軟件開發的了解,同時還要考慮解決這些問題的方法。這裡問題是要利用和控制這些加速器,把他們放在一起創建解決方案解決上述問題。
第一點我們稱為社區,我們已經從開放源代碼社區和開放運動社區了解了很多東西,關鍵是要處理當前的復雜問題,關鍵是開放的運算,我們想一下建立一種松散結合在一起的結構,我們可以考慮讓系統實現模塊化,業務模型是要變化的,在我們創建一個供應鏈的時候,選擇合作伙伴的時候,就會出現各種各樣的變化,變化是非常迅速的,因為全球監管的變化,全球市場在逐漸開放,需要的是一種開放的技術,這種支持的基礎技術很重要的,因為如果你技術不開放是鎖定的,你的技術演進速度就會變慢,這不是可有可無的,是必須有的條件,還得有演進中松散的架構,這樣才能適合一個可以迅速變化的模式。專有的系統已經過時了,專有系統是上一代的演進結果,他們是上一代的考古問題,今天的關鍵是開放的系統,而且在很多方面關鍵是要創建一種標准,通過利用互聯網讓這些標准逐漸成型,通過開放源的群體共同開發這些標准,這種社會聯網,把它用於軟件開發的理念,讓我們有可能形成各種社區,也給我們帶來非常賦有挑戰性的理念,這一點很有意思,是因為全球都有同樣的趨勢,這是一個新的模式,這種新的模式下,是在全球協作實現軟件開發,我們不可能擺脫這種模式,這具有重大挑戰,因為對業務模式來講負責具有挑戰性,今天軟件廠商要利用這一點才能實現自己的發展,才能夠有自己的價值。但是在Rational在IBM,我們已經采納了這樣的方向,我們也不會回頭,這將成為我們總體戰略向前發展最重要的環節,這是不可或缺的一個環節,是非常重要的,我們會演示它是軟件開發的核心,軟件開發平台的核心,軟件開發平台能夠把信息組織起來傳播標准。這種開放源軟件社區的概念關鍵在於把互聯網技術基於明確的交流和成本經濟性上面,這樣就可以有利於共創知識產權,它的關鍵在於創新,也通過它能夠發揮所有人的潛力,我們大家都可以把自己的創意變成現實,通過群體來共同創新,我們可以共同為世界來創造價值。同時他們也告訴我們,通過這種系統我們可以把技術從專有的實驗室裡拿出來放在一個開放的環境下,可以進行測試,大家也可以理解這些新的技術,這些技術經過測試可能會被接受,也可能會被放棄,這對於具體的企業來講是具有挑戰性的,因為某一個具體的概念,某一個軟件可能會被拋棄,這樣的想法令人很不愉快,但是如果我們不挑戰自己就不可能成功,這就好像一個大學學校的環境中,你會不斷接受考試,會被挑戰,人們會看你是否真正了解所學習的知識。在這樣一個開放的社區中在大家共同參加的環境中,會不斷接受挑戰,來考驗你是否能夠創造價值,增加價值,這是和過去實驗室環境中不一樣的,實驗室是一個孤立的環境,要創造一個專有的軟件,迫使世界來接受,因為世界沒有其他的選擇,這是一個新的模式,創建價值測試創新的新模式。這對於技術的演進來講非常重要,對於軟件開發,軟件設計是非常重要的,這種模式不會離去會成為我們軟件開發未來的重要環節,如果有人不願意接受這模式,這些人會被歷史的潮流淹沒,因為開放源會不斷前進,最終會把他們拋在後面。
社區有不同的類型,因為社區的類型可能由廠商發起的,比如Eclipse。在Eclipse上面,我們做出貢獻,我們也進行測試,在我們創建Eclipse的時候,並沒有什麼保障,我們希望圍繞著Eclipse創建一個社區,讓大家接受這個技術,但是對此並沒有保障,事實上我們完全沒有想到人們接納Eclipse的速度會這麼快,我們也沒有想到人們會加入我們的隊伍,幫助我們共同發展Eclipse,這就是為什麼我們認為要脫離IBM,把它作為一個開放的標准來推出,我們會繼續這樣做,把它作為IBM軟件戰略Rational的重要環節。我們會逐漸的發展一個基於社區的開發環境,現在我們已經討論這個工作,我們會利用開放源作為一個重要環節,幫助各位了解協作工程設計的意義,並且接受你們的測試和考驗,看一下我們自己是不是真正了解它的意義所在。這是我們從現在開始開發提供軟件的方式。我們已經證實開放源軟件可以和商用軟件共存,我們在很多產品中都看到這一點,我們今天開發的所有軟件業務的產品都帶有一定的開放源軟件,將開放源軟件納入這個產品之中,我們已經創建這樣一個模式,可以把開放源和商業軟件結合在一起,這對於我們來講是讓系統更加開放的模式,讓系統中能夠納入社區接受的內容,讓我們不斷地改變和演進我們的標准,並且參與社會的活動,我們不會控制這些社區,我們不會控制這些技術的演進和軟件的開發,但是我們會參與其中,不斷做出自己的貢獻。我們在IBM內部所做的是希望把開放源開發環境利用起來,讓它為我們找到不同的演進形式,我們一直做的是社區源,社區源的意思是我們利用開放源開發的原則,讓源代碼開放給所有人,在一個封閉的社區內部開放,這個社區是封閉的,有門的,比如在40多個地方的幾十個開發人員。
現在從商業軟件到開始利用開放源的方法開發商業軟件,我們這樣做的原因是這裡有一定好處的,也就是說與開放源有關的開發流程是有好處的,因為它是有一定原則的,並且在開放源模式中有一定可以應用的。我們在我們理解中已經考慮到對軟件開發流程的修改,從參與Eclipse、Apache、Linux開放源代碼等各種當中,都看到開放源社區和開放源軟件。社區源概念是很有意思的,我們所做的是確確實實公布了我們的軟件,這是在一個軟件開發環境下公布的,我們可以這樣說DB2、WebSphere、Rational、Lotus、和Tivoli都有共享的一些組件,這些組件是可以用IBM內部開放源方法的模式來開發,這個組件是共享的,誰都可以在沒有控制的情況下做出自己的貢獻,我們可以把它和過去軟件開發的公認模式比較一下,在過去有一個固定的等級結構有一個固定的模式,而新的模式可以發揮我們的潛力、創意,整個軟件開發的團隊都可以發揮他們的創造性,隨時隨地的進行開發,加速了共同組件的共享和開發,在整個產品開發過程中都可以利用,這是一個關鍵的原因,因為它我們就有可能在中間件開發不同的功能,另外我們又可以迅速把這些功能共享,放到其他的市場,就有可能提供一個完整的SOA端到端的平台。整個生命周期服務都是共享的,開放源放到商業軟件中的做法是非常重要的改變,會改變軟件開發的方法和環境,Rational部門正在改變軟件開發環境,讓開發人員可以越來越容易在封閉的社區中工作,我們所做的就是利用SOA的原則,通過創建松散的結合在一起的架構,我們Web Service是以軟件為中心,遵從標准的,Rational開發平台會融入越來越多開放標准,W3C的標准也會讓我們重新利用這些標准的實施在IBM內部迅速把新的產品推向市場,一個例子就是一個新桌項目,這項目是新的桌面工具套裝,或者今年年底推出我們利用這些原則來創建一個開放的社區,這樣就可以共享開發的成果,把基礎的組件,模塊化的能力進行利用,讓我們分解我們產品,讓他們更容易利用和實施,這是我們面對軟件開發越來越復雜環境的做法。我們有300多個項目正在運行,這是IBM軟件開發的300多個項目,通過封閉的社區開發流程實現的,很多的關鍵元素,比如工作流引擎,這是用來創建基礎設施的,這是很多不同項目共享的一個技術,而工作流引擎可以實施軟件開發流程,並用Rational來設計這個流程,也會以共享的流程為基礎,它會建立在一個業務的SOA上面,我們會在此基礎上不斷發展。我們不僅討論SOA,而且IBM內部也利用SOA讓我們產品更快推向市場,同時給予我們更大的靈活性。
這裡有幾個例子來說明老的做實方法和新行事方法對照,在一個開放源頭當中,或者封閉源的項目當中,你投入多少要根據需求而定,我並不想詳細講這個問題,大家可以自己來看。我們最佳實踐或我們的理解,我們理解老的事物和新的行事方式的區別,我要鼓勵大家對此了解,這樣就可以在自己的組織當中,或者在自己軟件開發的流程當中確定開放源的開發,我們也會幫助大家實現這一點。
我們所要做的就是要利用網絡的影響,還要利用互聯網、社會計算能力、社會聯網能力,把它放在軟件開發環境當中,同時這種方法能夠讓我們加速軟件開發的程序,不論是一個封閉有門的社區還是一個完全開放的社區都沒關系,在這兩種環境之下,網絡的影響能夠讓我們實現共用,這是以前沒有做到的。
我們已經講了很多的模塊化,在SOA架構的核心當中,這個圖顯示不是一個模塊系統松散結合,不是我們所理解松散結合的架構,這也就是它為什麼很難被改變,很難對做業務時候需要的速度進行響應,與之相反我們想要做的是顯示在這裡的,除了不要把重點放在技術之外,除了關注技術的發展,還要了解你的業務,你不是要看這些單一的資源,要了解你的業務如何經過變化成為模塊化的業務,這樣你就從一個單一倉庫式的概念過渡到集成點的概念,它能夠在各個模塊化的服務之間建立起連接接口,實現一個完全集成化,而且高度靈活的系統,這裡顆粒度是非常重要的,而且一直以來也非常重要,我在這裡提出並不是一個新的概念。如果我們想一下模塊化的設計,想一下對象的設計,如果我們想一下在UML當中所定的這些規則,實際上我們不斷修改這些規則,考慮到技術的清晰度,技術是基於互聯網的計算之上來發展起來的。為了能夠解決軟件的考古,我們做了上述的工作,我們首先要做的就是要了解業務,要了解各個與眾不同的因素,這樣才能確定工作的優先順序,並且確定如何對待軟件的沉積層之間如何分解,我們還要了解我們究竟是要改變哪些因素。因為很遺憾的是我們沒有人可以在一張白紙上畫圖的,我們大家都不會這麼奢侈。我們都是要在一個很廣泛的環境當中作業的,不論一個小的企業,小的業務還是一個大企業大的業務,你都必須要考慮價值鏈,考慮供應鏈,而這個價值鏈、供應鏈在某種形式上必須要實現自動化,而某種形式上也必須要適應於互聯網,所以如果在一個企業當中,或者你想建立一個新的業務來適應更廣泛的供應鏈和價值連,從某種程度來說集成是關鍵,模塊化是關鍵,互聯網之上的模塊化是關鍵。
所以XML和XML的標准建立起一個公共的語言,我們可以在一個企業內部各個數據倉庫之間進行交流,或者在各個業務之間,在全球化部署范圍內可以交流和通話,不論中國、美國、歐洲都要正道一個共同的語言,這種語言必須是要簡單的,這也就是為什麼我們開始創建基於網絡服務,還有以網絡為中心的架構,也就是我們所說的SOA,我們想要找到一種方式來確定模塊化,而且把模塊化和顆粒度因素應用到我們服務當中,我們用它創建新的商業模式,找到新的合作伙伴,建立新的合作鏈。我們可以創建和修改IT系統來實現零節度,我們可以重新配置,就像我們做拼圖一樣,我們可以改變拼圖每一個塊的形狀,在全球化過程當中,我們要快速轉型,適應每天面臨的新壓力。
我們已經有了一個非常穩定的老代碼,已有的代碼,我們必須要迅速改變,我們要有預見度的改變,我們需要零節度,同時我們也需要質量,在生命周期進行修改和變化的過程當中,質量也是非常重要的。SOA並不容易做到,它很難,因為它是建立一個松散聯合的模塊化架構,它需要變化,需要反映來轉變商業模式,它實際上是IT資產與核心的治理相匹配的關鍵,所以這也就是為什麼我要講第三個因素,就是治理,治理非常重要,治理就是權力所在。
我們必須要有軟件開發的方法和流程,這使我們可以迅速決策,也使我們能夠確定相互的依附關系,還有確定我們的權力,這可以是架構,也可以是軟件的開發者,他們要集成在一起,他們要能夠利用所創建的資產從中受益,同時要不斷調整和變化,我們要有一個衡量,要使所有這些工作和公司治理相符合,和公司目標相符合,我們要在軟件開發環境中實現IT治理。
要實現真正的治理,真正的速度和零節度,我們需要一系列因素,我們需要了解整個生命周期,我們要有骥可察,要有可預見性,如果我們不能夠理解,在我們軟件架構和軟件模塊之間相互關系和相互依賴關系就不能實現零節度的開發,我們必須要定義軟件開發過程各個模塊,在治理發展過程當中,我們必須要了解它的復雜程度,因為復雜程度會相應轉化為風險,同時我們也面臨不斷把復雜程度考慮在內的壓力。所以我們要把工作困難程度做一個排序,這是很難做到的,我們看到軟件治理中的發展。在2005年以後,重新利用會發展一個根本的變化,在現今世界當中,基本上70%復用程度,30%是新創建的能力。我們必須要讓讓它變得可以管理,而且必須是模塊化的靈活的架構,並且也是可以預見的,風險是在整個流程當中,整個生命周期當中得到管理,所以我們要基於業績,基於結果,要實現根本的協作,要建立社區同時他們的結構是非常恰當的。同時要有架構師的演進,而且應該具備迅速管理的流程,沒有任何官僚體系存在,這就是為什麼我們要實現零節的開發,要通過基於互聯網的方式進行開發,這就是我們所說的能源統治,這是一種開放源社區當中我們要實現的,我們為什麼需要這些,是因為我們需要更快的速度,如果我們不能迅速變化,不能夠做迅速的軟件開發就不能實現速度的要求,有很多體系是非模塊化的,不是靈活的,就會延緩整個流程,我們必須要讓互聯網不能非常極端的改變我們的生活,而且我們要管理風險,要建立起軟件領域的治理,同時要考慮這個模塊化的架構,要建立一個基於社區的開發環境。要把它放在新型軟件開發平台環境當中,所以僅建立一個基於社區的開發平台是不夠的,僅建立一個模塊化的架構是不夠的,必須要有一個非常明確的風險管理和治理的體制,要把它放在整個的生命周期管理當中。