步入軟件定義的時代!


導 讀 ( 文/ 中國科學院 梅宏院士 )

本文是中國科學院梅宏院士為《企業軟件化》一書寫的推薦序言,分析了“軟件定義”的技術內涵及其帶來的軟件“基礎設施化”,闡述了“軟件定義”產生的背景、發展現狀以及未來展望。

進入21世紀以來,信息技術及其應用飛速發展,已經廣泛覆蓋並深入滲透到了社會生活的方方面面。特別地,近十年來,以雲計算、大數據、移動互聯網、物聯網、人工智能、區塊鏈為代表的新一代信息技術推動信息技術應用進入跨界融合的繁榮期,開始呈現出“網構化、泛在化、智能化”的新趨勢,並不斷催生新平臺、新模式和新思維。

可以說,在某種意義上,信息技術及其深度應用已經推動人類社會步入到一個新的發展階段。對這樣一個新的發展階段,可以從不同的視角去考察和認知。例如,從基礎設施視角,可視為是以互聯網為核心主幹,移動網、廣電網、物聯網等多種網絡融合形成新型泛在化基礎設施,並支撐規模化跨界創新應用服務模式為特徵的“互聯網+”時代;從計算模式視角,可視為是以支持計算、存儲、網絡、數據、應用等資源的集約式管理和服務化使用為特徵的雲計算時代;從信息資源視角,則可視為是將數據作為新型戰略資源並以數據的深度挖掘和融合應用為特徵的大數據時代;從信息應用視角,則可視為是以人工智能技術為基礎,支持感知、認知到決策為特徵的智能化時代。

步入軟件定義的時代!


然而,如果從使能技術的視角看,軟件技術在信息技術中則始終處於“靈魂”地位,所有新的信息技術應用、平臺和服務模式,均離不開軟件技術作為基礎支撐;更為重要的是,在數字經濟時代,軟件技術已經成為企業的核心競爭力,不僅引領信息技術產業的變革,在很多傳統領域(如汽車、能源、製造、零售等)中的存在比重和重要性也在不斷加大,在支持這些傳統領域產業結構升級換代甚至顛覆式創新的過程中起到核心關鍵作用,並進一步加速重構了全球分工體系和競爭格局。特別地,作為新一輪科技革命和產業變革的標誌,德國的“工業4.0”和美國的“工業互聯網”,以及我國的“製造強國戰略”,均將軟件技術作為發展重點。無所不在的軟件,正在走出信息世界的範疇,開始深度滲透到物理世界和人類社會,全面發揮“賦能、賦值、賦智”的重要作用,甚至開始扮演著重新定義整個世界圖景的重要角色。在這個意義上,我們正在進入一個“軟件定義一切”的時代!

“軟件定義一切”已然成為一種客觀需求,並呈現快速發展態勢,其主要體現形式將是軟件“基礎設施化”。

這不僅是因為在數字經濟時代,人類社會經濟活動高度依賴信息基礎設施,而軟件是信息基礎設施的重要構成成分;另一方面,軟件也將“重新定義”傳統物理世界基礎設施和社會經濟基礎設施,對人類社會的運行甚至人類文明的進步將起到重要的支撐作用。在這樣的時代背景下,我們該如何理解“軟件定義”的技術內涵及其帶來的軟件“基礎設施化”?“軟件定義”產生的背景,現在處於什麼階段,未來又將如何發展?本文嘗試作一些解讀。

01

無所不在的軟件

從1946年第一臺真正意義上的通用電子計算機ENIAC誕生,計算機已經歷了70餘年的發展歷程。軟件伴隨著硬件而產生,其核心目的是幫助人們更方便、更高效地使用計算機。從技術角度看,軟件的發展和演化有四個基本驅動力,即,追求更具表達能力、更符合人類思維模式、易構造、易演化的軟件模型;支持高效率和高質量的軟件開發;充分發揮硬件資源的能力,支持高效能、高可靠和易管理的軟件運行;橋接異構性,實現多個應用系統之間的互操作。

從軟件製品的形態上看,軟件發展大體上經歷了三個階段,即軟硬一體化階段、產品化階段和網絡化服務化階段。當然,需要指出的是,這三個階段儘管在時間上有先後,但並不對立,也難絕對分離,而是前後傳承、交織,呈現出“包容式”的融合發展態勢。

1、軟硬一體化階段

在計算機誕生後的相當長一段時期內,實際上並沒有“軟件”的概念,計算機的運行是通過用機器語言和彙編語言編寫程序的方式來直接操作硬件,即只有“程序”的概念,應用則以軍事領域為主。約到1950年代末1960年代初,在高級程序設計語言出現後(1957年,IBM開發了第一個高級程序設計語言Fortran),“軟件”才作為與“硬件”對應的詞被提出,以程序和文檔融合體的形態從硬件中分離出來,成為相對獨立的製品。在這個時期,軟件以“高級語言程序+文檔”作為主要展現形式,應用主要為科學工程計算領域和商業計算領域(如COBOL語言在銀行業的廣泛應用)。特別值得一提的是,在計算機發展史上具有里程碑意義的大型機—IBM 360系列機中,出現了最早的和硬件系統解耦的主機操作系統—OS/360。OS/360對IBM 360系列機的推廣應用起到了非常重要的作用,同時也對日後的軟件技術和產業產生了很大的影響。儘管OS/360操作系統還是和IBM硬件捆綁一起銷售,但人們已經開始意識到軟件的重要性。也正是在這個時期,計算機作為一門專門學科開始形成並完善其學科體系,軟件學科成型並得到快速發展,程序員也開始逐漸成為一個專門的職業。總體來看,在軟硬一體化階段,軟件還是作為硬件的附屬品存在,基本均是面向大型機/小型機設計,應用領域有限,移植性和靈活性也比較差。

2、產品化、產業化階段

1973年, Charles Thacker設計與實現了第一臺現代個人計算機Xerox Alto(他後來也因此貢獻而獲圖靈獎),可以視作是PC時代的發端。隨著PC的廣泛應用和軟件產品化,軟件在計算機技術和產業中的存在比重不斷加大,地位更加重要,催生了人類歷史上信息化的第一波浪潮,即以單機應用為主要特徵的數字化階段(信息化1.0)。拉里·埃裡森創辦的甲骨文公司,被認為是歷史上第一個“純粹的”軟件公司;而比爾·蓋茨創辦微軟公司,則是軟件發展歷程中一個里程碑事件,標誌著軟件開始正式成為一個獨立產業,並從此開始應用於幾乎所有領域。在這個時期,軟件主要以面向單機的“拷貝”產品形態存在,通過付費版權形式對外發售,幾乎不再與硬件捆綁銷售。軟件逐漸顛覆了傳統計算機產業“硬件為王”的格局(如Windows和Office成就了微軟在個人計算機時代的壟斷地位),開始成為IT產業的主導者。同時,軟件在各個行業領域的不斷普及,也極大地影響甚至改變了人類生產和生活方式(例如,辦公軟件的出現,徹底改變了人類傳統的辦公方式)。作為一種“無汙染、微能耗、高就業”的新型產業,從這個時期起,軟件產業開始大幅度地提高國家整體經濟運行效率,其自身也在不斷形成龐大規模,拉動國民經濟指數快速增長,逐漸成為衡量一個國家信息產業水平甚至是綜合國力的標誌之一。

3、網絡化、服務化階段

1990年代中期開始,互聯網開始其商用進程並快速發展普及,同時也推動了軟件從單機計算環境向網絡計算環境的延伸,帶來了信息化的第二波浪潮,即以聯網應用為主要特徵的網絡化階段(信息化2.0),軟件開始逐步進入到網絡化、服務化的發展階段,並覆蓋到社會經濟生活的方方面面。在互聯網環境下,軟件的形態也發生了重大的變化, “軟件即服務”(Software as a Service)開始成為一種非常重要的網絡化軟件交付形態和使用方式。不同於傳統面向單機的拷貝形態,“軟件即服務”使得人們不必再擁有軟件產品的全部,而是通過互聯網在任何時間、任何地點、任何設備上,直接與軟件提供者進行連接並按需獲取和使用軟件的功能。例如,相對於傳統單機版的Office,微軟Office 365和Google Docs等均基於雲端部署和提供服務,用戶不必在本機安裝和更新升級,只需通過客戶端程序(如瀏覽器)連入互聯網就可以訪問和使用所需要的功能。這種“不求擁有,只求使用”的特性,也只有軟件和互聯網的結合才能實現,並從一定程度上推動了軟件產業從“以產品為中心”的製造業向“以用戶為中心”的服務業轉型。互聯網時代軟件形態的另一個重要變化則是App化和應用商店模式。伴隨著2010年前後移動互聯網和智能終端設備的大量普及,應用商店模式得到了快速發展,在蘋果Apple Store、谷歌Google Play、以及大量第三方應用商店上,已經彙集了數十萬應用開發者和數百萬的Apps,累積下載數百億次。用戶通過App來連接並訪問互聯網上的各種信息服務,實現線上社交和互聯溝通(如微信和Facebook等);而應用商店則提供了一個平臺,使得開發者和用戶更緊密地連接在一起。互聯網的快速發展和深度應用,催生了各種新的商業模式和贏利模式,並開始顛覆傳統行業(如唱片業、交通出行、郵政等)。如果說,互聯網的核心價值是“連接”,那麼,軟件就是實現“連接”的基礎使能技術。

隨著互聯網及其延伸帶來信息技術的普及應用,軟件“無所不在”,正在不斷滲透到人類生產和生活的各個角落,支持我們對各類資源更加有效的管理和使用,為我們提供更加自然和便利的服務,提高生產效率和生活質量。正如互聯網名人堂入選者、著名的網景公司(NetScape)創始人Marc Andreessen所說,軟件正在吞噬人類世界(Software eats the world!)[1]。

當前,軟件正在呈現出 “基礎設施化”的趨勢。一方面,軟件自身已成為信息技術應用基礎設施的重要構成成分,以平臺方式為各類信息技術應用和服務提供基礎性能力和運行支撐。另一方面,軟件正在 “融入”到支撐整個人類經濟社會運行的“基礎設施”中,特別是隨著以互聯網和其他網絡(包括電信網、移動網、物聯網等)的不斷交匯融合,軟件正在對傳統物理世界基礎設施和社會經濟基礎設施進行重塑和重構,通過軟件定義的方式賦予其新的能力和靈活性,成為促進生產方式升級、生產關係變革、產業升級、新興產業和價值鏈的誕生與發展的重要引擎。軟件“賦能、賦值、賦智”的作用正在被加速和加倍放大,對人類社會的運行和人類文明的發展進步起到重要支撐作用。正如C++編程語言發明者Bjarne Stroustrup所說,人類文明運行在軟件之上(Our civilization runs on software)[2]。

02

軟件定義的時代

互聯網和其他網絡(包括電信網、移動網、物聯網等)的交匯融合,進一步推動了人類社會、信息空間、物理世界的融合,形成新的人機物融合計算環境。作為互聯網的延伸,人機物融合標誌著我們從終端互聯、用戶互聯、應用互聯開始走向萬物互聯,信息技術及其應用更加無處不在,“大數據”現象隨之產生,信息化的第三波浪潮(信息化3.0),即以數據的深度挖掘與融合應用為主要特徵的智能化階段,正在開啟。

人機物融合環境下,信息基礎設施蘊含著覆蓋數據中心(雲)、通信網絡(網和邊緣設備)和智能終端及物聯網設備(端)的海量異構資源,而信息技術及其應用開始呈現出泛在化、社會化、情境化、智能化等新型應用形態與模式,需求多樣且多變。人機物融合環境下的新型應用對軟件“基礎設施化”提出了新的要求:軟件平臺需要更好地凝練應用共性,更有效地管理資源,並根據頻繁變化的應用需求和動態多變的應用場景對各類資源作按需、深度、靈活的定製。而現有軟件平臺主要面向傳統計算模式的應用需求,存在很大的侷限:縱向上看,各類資源緊密耦合難以分割,很難根據應用特徵進行性能優化和底層資源的彈性可伸縮地調度及分配;橫向上看,各類資源被鎖定在單個應用系統的內部,形成大量的“信息孤島”難以實現互連互通。因此,現有軟件平臺的資源分配方式固定且有限,個性化定製能力嚴重不足,制約了人機物融合應用的發展。為了應對這些挑戰,就需要實現海量異構資源的深度“軟件定義”。

1、軟件定義的興起

“軟件定義”是近年來信息技術的熱點術語。一般認為,軟件定義的說法始於“軟件定義的網絡” (Software-Defined Network,SDN)[3]。傳統的網絡體系結構,網絡資源配置大多是對每個路由器/交換機進行獨立的配置,網絡設備製造商不允許第三方開發者對硬件進行重新編程,控制邏輯都是以硬編碼的方式直接寫入交換機或者路由器的,這種“硬件為中心”的網絡體系結構,複雜性高、擴展性差、資源利用率低、管理維護工作量大,無法適應上層業務擴展演化的需要。2008年前後,斯坦福大學提出“軟件定義網絡”並研製了OpenFlow交換機原型。OpenFlow中,網絡設備的管理控制功能從硬件中被分離出來成為一個單獨的完全由軟件形成的控制層,抽象了底層網絡設備的具體細節,為上層應用提供了一組統一的管理視圖和編程接口(Application Programming Interface,簡稱API),而用戶則可以通過API對網絡設備進行任意的編程從而實現新型的網絡協議、拓撲架構而不需改動網絡設備本身,滿足上層應用對網絡資源的不同需求。2011年前後,SDN逐漸被廣泛應用於數據中心的網絡管理,並取得了巨大的成功,重新“定義”了傳統的網絡架構,甚至改變了傳統通信產業結構。在SDN之後,又陸續出現了軟件定義的存儲、軟件定義的環境、軟件定義的數據中心等。可以說,針對泛在化資源的“軟件定義一切(Software-Defined Everything,SDX)”正在重塑傳統的信息技術體系,成為信息技術產業發展的重要趨勢。

2、軟件定義的本質

實現SDX的技術途徑,就是把過去的一體化硬件設施打破,實現“硬件資源的虛擬化”和“管理任務的可編程”,即,將傳統的“一體式(monolithic)”硬件設施分解為“基礎硬件虛擬化及其API + 管控軟件”兩部分[4]:基礎硬件通過API提供標準化的基本功能,進而在其上新增一個軟件層替換“一體式”硬件中實現管控的“硬”邏輯,為用戶提供更開放、靈活的系統管控服務。採取這種技術手段的直接原因,主要是互聯網環境下新型應用對計算資源的共享需求,以雲計算、大數據為代表的新型互聯網應用要求硬件基礎設施能夠以服務的方式靈活提供計算資源,而目前的計算資源管理、存儲管理、網絡管理在很大程度上是與應用業務脫離的,幾乎都是手工管理、靜態配置、極少變動、分割運行,難以滿足上層應用對計算資源個性定製、靈活調度、開放共享的需求。而要滿足上述需求,就必須改變目前應用軟件開發和資源管理各自分離的情況,使得計算資源能夠根據應用需求自動管理、動態配置,因此,“軟件定義”就成為一個自然選擇。通過軟件定義,底層基礎設施架構在抽象層次上就能趨於一致

。換言之,對於上層應用而言不再有異構的計算設備、存儲設備、網絡設備、安全設備導致的區別,應用開發者能根據需求更加方便、靈活地來配置和使用這些資源,從而可以為雲計算、大數據、移動計算、邊緣計算、泛在計算等信息應用按需“定義”出適用的基礎資源架構。

需要指出的是,儘管“軟件定義”是近期出現的熱點概念,但其基於的資源虛擬化和管理可編程這兩個核心原則,一直都是計算操作系統設計與實現的核心原則。計算機操作系統作為一種系統軟件,向上為應用和用戶和提供各種公共服務控制程序運行、改善人機界面,向下管理各類硬件資源。因此,從計算機系統用戶的視角來看,操作系統就是一臺軟件定義的“計算機”;從軟件研究者的視角,操作系統體現了“軟件定義”之集大成[4]。就這個意義上而言,所有的SDX在本質上都沒有脫離操作系統的三層架構的範疇,均符合“硬件資源虛擬化”與“管理任務可編程”的技術原理。

軟件定義和軟件化是兩個不同的概念。“軟件化”僅僅描述了根據業務需求來開發具有相應功能的軟件應用系統的過程,關注的是行業知識、能力和流程等的軟件實現;而“軟件定義”則是一種方法學及其實現技術手段,其關注點在於將底層基礎設施資源進行虛擬化並開放API,通過可編程的方式實現靈活可定製的資源管理,同時,凝練和承載行業領域的共性,以更好適應上層業務系統的需求和變化。無論是軟件定義的網絡、軟件定義的存儲、軟件定義的數據中心還是其他“SDX”,就其技術本質而言,均意味著構造針對“X”的“操作系統”。

未來的面向人機物融合的軟件平臺,將是對海量異構基礎設施資源進行按需、深度軟件定義而形成的“泛在”操作系統(Ubiquitous Operating System)[5]。因此,軟件定義是實現人機物融合環境下軟件“基礎設施化”的重要技術途徑。

3、軟件定義的機遇

人機物融合環境下,萬物皆可互聯,一切均可編程,正在成為信息化的主要發展脈絡。隨著人機物融合環境下基礎設施資源發生了巨大變化, 軟件定義正在逐漸走出信息世界的範疇,內涵和外延上均產生了新的發展,面臨著新的機遇。

軟件定義不再僅限於計算、存儲、網絡等傳統意義的基礎硬件資源,還覆蓋雲網端的各類資源,包括電能、傳感、平臺、應用等軟硬件與數據和服務資源等。軟件定義概念正在“泛化”,將實現從單一資源的按需管控到全網資源的互連互通的躍變,支持縱向全棧式、橫向一體化的多維資源按需可編程,最終形成面向人機物融合應用的基礎設施架構。

另一方面,軟件定義正在向物理世界延伸。在“工業互聯網”、“工業4.0”和我國“製造強國戰略”的發展藍圖中,軟件定義將成為核心競爭力和支撐技術。例如,製造業需要實現“硬件”、知識和工藝流程的軟件化,進而實現軟件的平臺化,為製造業賦予數字化、網絡化、定製化、智能化的新屬性。伴隨著軟件定義的泛化與延伸,軟件將有望為任意物理實體定義新的功能、效能與邊界。

在IT的泛在化並不斷向物理世界延伸的基礎上,軟件定義將向人類社會延伸。通過“軟件定義”的手段,可以為各領域的“虛擬組織”(如家庭、企業、政府等)打造更加高效、智能和便捷的基礎設施。例如,“軟件定義的城市”不僅將城市中各類信息/物理基礎設施開放共享和互連互通,還需要為政務、交通、環境、衛生等社會公共服務部門構造出數據流通交換和業務功能組合的API,支持這些部門的智能聯動,實現動態高效的精細化的城市治理。

4、軟件定義的挑戰

要實現更加全面、靈活和深度的軟件定義,軟件研究者需要解決一系列的技術挑戰。

  • 體系結構設計決策問題。軟件定義本質上需要對其管控的資源進行抽象,因此需要在體系結構角度來合理地劃分和選擇受管元素的“粒度”和“層次”。特別地,隨著軟件定義的泛化,如何界定軟、硬件的功能劃分並組裝、配置相應元素,是值得探究的問題。
  • 系統質量問題。軟件定義在現有的基礎設施資源之上加入了一個虛擬的“軟件層”來實現對資源的靈活管控。這就需要合理平衡管理靈活性和“虛擬化”後帶來的性能損耗(如與直接訪問原系統相比)。同時,還需要考慮降低“軟件層”的複雜性和故障率,並在故障發生時高效精確地定位故障並進行快速修復,以保障整個系統的可靠性。特別地,軟件定義本質上實現了應用軟件和底層資源在邏輯上的解耦,還需要保證在運行時刻這兩部分可以分別進行獨立的擴展和演化,並保持整個系統的穩定。
  • 系統安全問題。
    軟件定義使得資源管理可編程,在帶來開放性、靈活性的同時,也可能會帶來更多的安全隱患。特別是對於工業控制等安全攸關領域來說,這些安全隱患可能會帶來難以難以估量的財產和生命損失。因此,如何保障軟件定義後系統的安全性,是軟件定義的方案設計、實現和部署實施中必須考慮的問題。
  • 輕量的虛擬化技術。虛擬化實現了對硬件資源的軟化,是軟件定義的基礎技術,但現有以虛擬機為單位的技術過於重載,應用於大量新型設備(如智能終端和物聯網設備)後,難以滿足性能和實時性要求,就需要發展輕量級虛擬化技術。已有的一些進展,例如以Docker為代表的容器技術,可以對現有主流的hypervisor虛擬化技術形成重要發展和補充,可簡化對資源的管理和調度,大幅提高資源利用率和管理效率。
  • 原有系統到軟件定義系統平滑過渡。為了使得原有系統能平滑過渡到軟件定義的系統,往往需要對已有的資源進行大幅度的改造,甚至需要安裝新的硬件和需開發新的管理系統。這就面臨著人力、時間、經濟、風控等因素。因此,實現這個平滑過渡也需要合理的方案。
  • 高度自適應的智能化軟件平臺。從軟件技術角度看,未來人機物融合需要高度自適應的智能化軟件平臺。目前的平臺大多是以硬件資源為中心的,如果基礎設施層發生變化,軟件平臺就必須發生改變,平臺上運行的應用往往也需要隨之發生相應改變。一個理想方式是,未來的軟件平臺具有預測和管理未來硬件資源變化的能力,能適應底層資源的變化而不改變自身和其上運行的應用系統。學術界已經開始在這方面進行了嘗試和探索,例如,2014年美國DARPA宣佈支持“可運行一百年的軟件系統”的研究項目,希望構造出能動態適應資源和運行環境變化的長期穩定運行的軟件系統(Resource Adaptive Software System)[6]。


03

展望與寄語

如上所述,軟件作為信息技術產業的核心與靈魂,發揮著巨大的使能作用和滲透輻射作用,在支撐人類社會運行和人類文明進步中將發揮重要的“基礎設施”作用。“軟件定義”則是實現軟件“基礎設施化”的重要方法學和關鍵技術途徑,將成為推動信息技術和產業變革、並進而引領其他行業信息化變革的新標誌與新特徵,開啟人機物融合應用的新世界圖景。

電子工業出版社與工業和信息化部電子第五研究所聯合推出的這套“軟件定義”系列叢書, 基於對當前經濟社會和信息技術發展趨勢的認識和把握,針對“軟件定義”這個熱點,對其產生背景、技術內涵、價值意義、應用實踐等進行闡述,剖析“軟件定義”在 IT 行業、製造與服務行業、經濟社會等諸多領域產生的作用和影響,是一件很有意義的工作。這套叢書從科普的角度敘述“軟件定義”的發展歷程,同時伴有豐富的相關領域典型案例,既可以作為信息技術從業人員和科研人員的參考書來加深對“軟件定義”的理解和認識,也可以作為各地經信委等政府部門的工作人員、企業管理人員、創業者等的參考書,起到開闊眼界、輔助決策的作用。希望本套叢書的出版,能夠為推動我國信息技術產業發展、建設製造強國與網絡強國、建設數字中國、發展數字經濟貢獻一份積極力量。

梅宏

2019年12月

注:本文曾刊載於《中國軟件和信息服務業發展報告(2018年)》。為作為本叢書序,略有修改補充。


分享到:


相關文章: