摘要: 隨著Google的崛起,云計算概念悄然進入大家的視野,計算技術從傳統的主機集中處理模式,完全分布的C/S處理模式逐步過渡到以云計算為核心的集中分布式處理模式,新服務模式下,傳統的軟件工程方法面臨巨大的變革。文章簡單介紹了云計算的基本概念,計算技術的演變過程和軟件復用的基本方法,重點分析和研究了云計算環境下軟件復用的技術,過程和組織框架,提出了基于云計算環境下的軟件復用模型。
關鍵詞:云計算;軟件復用;領域工程;軟件過程;軟件服務
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)35-2199-03
Software Reuse of Cloud Computing
ZHANG Qiang
(TravelSky Holding Company, Beijing 100027, China)
Abstract: Computing technology is evolving from mainframe model and C/S model to cloud computing model. A huge reform is necessary to traditional software engineering with the development of new software service model. After explaining cloud computing, computing technology evolution and software reuse, the paper introduces a cloud computing software reuse model based on the analysis of software reuse technology, process and organization of cloud computing.
Key words: cloud computing; software reuse; domain engineering; software process; software as a service
1 引言
“有效的開發軟件”和“有效的復用軟件”一直是軟件工程領域兩個永恒的主題。軟件復用的主要思想是,將軟件看成是由不同功能部分的“組件”所組成的有機體,每一個組件在設計編寫時可以被設計成完成同類工作的通用工具,這樣,如果完成各種工作的組件被建立起來以后,編寫一特定軟件的工作就變成了將各種不同組件組織連接體來的簡單問題,這對于軟件產品的最終質量和維護工作都有本質性的改變。早期的軟件復用主要是代碼級復用,被復用的知識專指程序,后來擴大到包括領域知識、開發經驗、設計決定、體系結構、需求、設計、代碼和文檔等一切有關方面。但到目前為止所有的復用活動基本是在一個組織或企業內部來進行的,隨著SOA概念的提出和云計算中心的初步成型,軟件復用的范圍逐步走出單一的組織或企業,云計算讓軟件做為一種服務在多個組織間進行復用成為了可能。
云計算做為一種新的軟件服務模式,充分吸收了主機集中處理模式和C/S分布式處理模式的優點,它為大規模降低軟件的實施成本奠定了技術基礎。云計算對軟件系統架構,系統運營管理和軟件開發模式都提出了新的要求,特別是在軟件開發模式方面,傳統的以項目為中心或者以產品為中心的開發方式已經很難適應以平臺為中心的云計算時代,云計算不但強調基礎設施的復用,更強調軟件做為一種服務在多個組織間進行有效的復用,因此突破傳統的軟件復用模式,探討云計算時代軟件復用的架構,過程和組織成為云計算必須解決的基本問題。
2 計算技術的演化
從計算機技術被廣泛使用以來,大體經歷了三個發展階段:主機處理模式;C/S分布式處理模式和云計算模式。
1990年以前基本是以主機處理模式為主,大型主機被廣泛應用在一些重點行業,由于傳統主機的高運營成本,因此很難得到普及;1990年到2000年,是C/S模式大力發展的階段,UNIX和NT等開放系統的出現,大大降低了運營成本,使計算技術在各個方面得到了普及;2000年以后,隨著互聯網的發展,一種以互聯網為基礎的軟件服務模式悄然升起,其中以Google的崛起為典型代表。
2.1 主機處理模式
主機集中處理模式是伴隨著企業對關鍵計算機系統的需求而發展起來的,主機主要是面向交易密集型的關鍵系統,如銀行,證券,交通運輸等行業的核心交易系統。關鍵系統對系統的實時性要求非常高,運營難度非常大,但業務需求有很多共性的方面,因此用戶可以選擇自己運營,也可以選擇ASP托管模式。主機集中處理模式的主要特點是:1)系統可靠性高,安全性能好,軟件部署成本很低,ASP模式能有效的降低運營成本;2)對軟件開發技術的要求非常高,不適合邏輯密集型和計算密集型的企業核心系統的建設,同時系統運營成本比較高,很難得到全面推廣;3)技術比較封閉,用戶參與度比較低,個性化需求很難滿足;4)軟件復用主要采用結構化復用技術,以代碼復用為主。
2.2 C/S處理模式
C/S處理模式大大降低了計算機系統的成本,同時由于采用了面向對象的技術,4GL等新的軟件開發技術,使得計算機技術在各行各業得到普及,為各企業開發核心系統奠定了技術基礎。核心系統一般牽涉到一個企業的核心競爭力,它不同于關鍵系統,它有著很強的個性化需求,因此不適合于采用共享托管模式來運營。C/S處理模式的主要特點是:1)系統開發成本低,便于計算機技術的普及,但管理難度比較大,系統總體擁有成本比較高;2)一般以項目或產品為中心進行開發,系統集成度比較低;3)軟件復用一般采用面向對象的軟件復用技術,但還是停留在技術層面和企業內部;4)由于過分強調個性化需求,不適合多個企業或一個行業的共性需求的解決。
2.3 云計算模式
隨著計算技術的發展,企業內部的計算機系統越來越復雜,企業在IT方面的投入已經成為一個巨大的成本壓力,用最少的投入來快速滿足業務對IT的需求已經成為越來越多企業必須考慮的問題,企業面臨的主要壓力是:1)IT系統日益復雜,開發運營成本成指數級方式增長;2)企業間數據交換越來越頻繁和復雜,傳統的獨立系統發展方式已經成為數據交換的瓶頸;3)過于強調個性化發展,忽略了行業的共性需求,沒有成為跨組織的軟件復用的生態體系。
云計算就是在這種大前提下應用而生,它強調“統一平臺,統一數據,統一應用,個性化服務”, 很好的平衡了個性和共性,關鍵和核心系統之間的關系,如圖1所示。
云計算(Cloud Computing)是分布式處理(Distributed Computing)、并行處理(Parallel Computing)和網格計算(Grid Computing)的發展,或者說是這些計算機科學概念的商業實現。云計算的基本原理是,通過使計算分布在大量的分布式計算機上,而非本地計算機或遠程服務器中,企業數據中心的運行將更與互聯網相似。這使得企業能夠將資源切換到需要的應用上,根據需求訪問計算機和存儲系統。云計算模式的主要特點有: 1)統一管理,資源共享,能有效的降低企業的IT成本;2)采用社區服務的運營模式,用戶參與度高,能有效解決行業的共性問題;3)采用面向服務的(SOA)的系統架構,使云計算平臺和企業內部核心系統進行有機集成,有效的解決了關鍵系統與核心系統之間的關系;4)軟件做為服務能在多個企業間進行復用,提高了行業的整體運營效率。
3 軟件復用技術的發展
為了更快,更好,更便宜的開發軟件,要么是有效的生產軟件,要么是復用軟件的很大一部分,對于要改進軟件開發效能的公司來說,軟件復用必須成為其軟件工程戰略的關鍵部分,在過去幾十年的工程實踐中,很多公司都在探索軟件復用的方法,逐步形成了一套系統的企業內部的軟件復用的體系。如圖2所示,軟件復用技術基本經歷了三個階段:結構化軟件復用技術,面向對象的軟件復用技術和面向服務的軟件復用技術。
結構化復用技術以代碼復用為主,主要通過子程序庫進行白盒或黑盒代碼復用;面向對象的軟件復用技術把復用范圍擴大到軟件構件,軟件架構等各種軟件工作產品;面向服務的軟件復用技術通過網絡超越了物理復用的范疇,可以跨系統和組織進行領域內的軟件復用。
3.1 結構化軟件復用技術
結構化軟件復用技術主要起源于結構化程序設計階段,是計算機軟件發展初期的一種主要軟件技術,在匯編和C等結構化程序語言中得到廣泛應用,其原理如圖3所示。
首先建立公司級的復用代碼庫,應用系統以子程序的方式來使用復用代碼的一個拷貝,這種方式的主要特點是:1)主要面向于代碼復用;2)復用代碼與應用系統藕合比較緊密,運行效率高;3)由于應用系統使用的是復用代碼庫的拷貝,變更不太方便;4)復用代碼與程序設計語言有關系,必須針對不同的計算機語言實現不同的復用代碼庫。
3.2 面向對象的軟件復用技術
面向對象的軟件復用技術是伴隨著面向對象技術的發展而發展起來的,面向對象技術良好的封裝性和繼承性,使得軟件的復用能在更大的范疇內實現,構件比子程序更容易引用。
面向對象方法之所以特別有利于軟件復用,是由于它的主要概念及原則與軟件復用的要求十分吻合,面向對象方法從面向對象的編程發展到面向對象的分析與設計,使這種方法支持軟件復用的固有特征能夠從軟件生命周期的前期階段開始發揮作用,從而使OO方法對軟件復用的支持達到了較高的級別。其原理如圖4所示。
首先在公司范圍內建立標準的構件庫,應用系統可以用本地或遠程的方式來引用標準的構件,這種方式的主要特點是:1)面向對象方式讓數據與代碼一起復用;2)構件具有良好的封裝性,引用方式靈活;3)構件的實現語言可以獨立于應用系統,使得構件的實現和管理更加容易;4)構件和應用系統之間的藕合相比結構化復用技術有很大的改善,但依然有一定的藕合性,因此變更存在一定的復雜度。
3.3 面向服務的軟件復用技術
面向服務的體系結構(Service-Oriented Architecture,SOA)是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯系起來。接口是采用中立的方式進行定義的,它應該獨立于實現服務的硬件平臺、操作系統和編程語言。這使得構建在各種這樣的系統中的服務可以一種統一和通用的方式進行交互。其原理如圖5所示。
各應用系統中包含有可復用的服務,通過標準的接口進行封裝,企業服務總線(Enterprise Service Bus)充當各系統的連接的橋梁,各應用系統通過服務總線來復用其它系統的可供復用的服務。這種方式的主要特點是:1)面向服務方式讓業務流程,數據與代碼一起復用;2)服務獨立于具體的實現語言,實現和管理非常容易;3)服務和和應用系統之間是松藕合,使得系統比較容易變更處理流程。
4 云計算中的軟件復用框架
云計算模式使軟件復用從簡單的代碼,數據和服務的復用跨入到了軟件系統的復用,使軟件復用從單一的組織內部復用轉變為跨組織的領域復用,云計算強調“統一平臺,統一數據,統一應用,個性化服務”。統一平臺是基礎架構的統一,有兩層含義,其一是通過虛擬化技術,讓云計算資源使用者擁有虛擬的數據中心,其二是所有用戶使用的是一個統一的平臺,這樣就降低了運營成本;統一數據首先是保證單一用戶不同應用之間的數據整合,然后是行業內各企業數據的整合,加強了企業間數據的共享,減小了數據交換的成本;統一應用是各企業使用統一的應用軟件,加強了軟件的復用,減少了軟件的開發成本;個性化服務是利用規則引擎技術,自助服務等手段進行差異化服務。
因此可以說,云計算的核心思想是復用,是一種不同于普通軟件復用的系統級復用,這要求云計算運行商從軟件系統架構,組織模式和軟件過程方面有所創新。
4.1 系統架構
軟件復用最核心的內容是保持軟件架構的相對穩定,在RUP(Rational Unified Process)中,就特別強調以架構為中心進行開發。隨著SOA技術的發展,系統架構的開發也逐步把關注點從單一系統的架構轉移到企業系統架構和領域應用架構等更高的層次。單一的系統架構考慮的一個應用系統內模塊與模塊之間的架構關系;企業系統架構關注在一個企業范圍內,不同應用系統之間的接口關系,強調用“高內聚,松藕合”的架構思想來構建一個合理的企業系統架構;領域應用架構考慮的是跨組織的行業應用系統的架構,是非常適合云計算環境的一種架構思想。
因此,要做到跨組織的系統級復用,構建一個合理的云計算平臺架構是軟件復用的基礎,如圖6所示,這是一個云計算平臺的系統架構的概念模型。
在云計算環境中,關注系統級復用,因此在云計算平臺中有三個重要的組成部分:基礎系統平臺,共用服務系統平臺和應用服務平臺。基礎系統平臺包括硬件,存儲,操作系統等IT基礎架構,由于云計算平臺需要海量數據處理能力,因此傳統的企業級基礎中間件的解決方案并不能滿足云計算平臺的需要,象ORACLE和TUXEDO等一些商業數據庫和事物中間件其技術限制和收費模式是不適合云計算平臺的,因此開發具有海量處理能力的海量數據存儲引擎和高性能服務運行引擎是發展基礎系統平臺的重要工作,例如Google的GFS(Google File System),Big Table和MapReduce是典型的代表;共用服務平臺是業務復用的基礎,主要包括一些各系統都需要的公用服務,例如支付系統,統一消息服務,結算服務等;應用系統平臺是最后服務于客戶的應用系統平臺,可以根據客戶的具體需求分為不同的應用領域,如辦公軟件服務,ERP,電子商務等。
另外,如了上面三個核心組成部分外,云計算平臺的系統架構中也需要服務總線來整合云計算平臺內部的各種服務,同時用來整合云計算平臺和客戶系統之間的相關服務。
4.2 組織模式
傳統的軟件復用一般限于單個組織內部,因此組織模式一般是一種組織內部的矩陣合作模式或層次管理模式,但在云計算環境中,軟件復用是跨組織的系統級復用,軟件需求來自多個獨立的主體,不但牽涉到云計算平臺的建設,同時也與各參與企業內部核心系統有緊密的聯系,這就要求各參與企業充分的參與到整個云計算平臺的建設過程中來,因此傳統的企業內部的緊密合作或層次管理模式很難適應這種跨組織的軟件復用方式,必須建立一種有集中管理,同時又有充分自治和民主的組織模式,在這里稱之為“社區管理模式”(Community Model),其架構如圖7所示意。
在這種模式下,云計算平臺運營商做為社區的管理者,其關注點是云計算社區的管理,著力于共用基礎設施的建設,客戶做為社區的成員,本著“人人為我,我為人人”的社區理念,積極參與到云計算社區的建設中,這就為跨組織的系統級復用奠定了組織基礎。
4.3 軟件過程
傳統的軟件過程是以項目管理或產品管理為核心,象SW-CMM(Software Capability Maturity Model)主要是以項目管理和核心的過程改進模型,IPD(Integrated Product Development)是以產品為核心的開發過程。在云計算時代,更加突出對云計算平臺的管理,在傳統的軟件過程中必須加入平臺管理的內容,因此其軟件過程框架如圖8所示。
平臺管理是云計算時代軟件過程最為突出的特點,是云計算環境下軟件復用的具體表現。項目一般關注項目的完成時間,具有短期功利傾向,因此項目驅動的軟件開發一般不關注復用;以產品為核心的軟件過程是關注軟件復用的,但其復用的范圍經常限制在一個產品或產品線范圍內,不關注跨產品線或者跨組織的軟件復用;平臺管理使軟件復用跨越了單一產品線和組織的界限。為了做好平臺管理,最重要的是處理好平臺管理和項目管理,產品管理之間的關系,平臺的開發服務于項目和產品的開發,同時,項目和產品的開發能促進平臺的發展。
在云計算環境下,另一個需要改進的過程就是客戶需求工程,云計算的組織模式一般采用的是社區式的民主方式,需求工程的關注焦點已經從單個的客戶需求轉移到一個社區內的共性需求上來,因此需求的開發和管理需求社區內的各成員更多的參與和交互,在需求調研,需求分析,需求分級和需求評審等過程環節都有別與傳統的需求工程。
5 結論
云計算做為一種新興的軟件服務模式,許多方面值得去探索和研究,論文介紹了計算技術發展的趨勢和軟件復用技術的演進過程,提出了云計算模式下的軟件復用的框架,對系統架構,組織模式和軟件過程進行了概念性研究,為進一步的研究工作奠定了一定的技術基礎,但時間有限,有很多工作需要進一步的探索和深入:1)云計算環境下軟件復用工程環境的構建;2)云計算環境下軟件復用的績效評估;3)云計算環境軟件復用框架在行業的具體應用。
參考文獻:
[1] Jacobson I.Software Reuse Architecture,Process and organization for business Success[M].USA:Pearson Education Limited,1997:3-6.
[2] 鄭人杰.高級軟件工程[M].北京:清華大學出版社,1999:26-46.
[3] 鄭人杰,殷人昆,陶永雷.實用軟件工程[M].2版.北京:清華大學出版社,1999:262-314.
[4] 梁愛虎.SOA思想、技術與系統集成應用詳細解[M].北京:電子工業出版社,2007:5-13.
[5] Peter Coad,Edward Yourdon.Object-Oriented Design[M].New York: Prentice Hall,1991:6-12.
[6] Jacobson I, Griss M, Jonsson P. Software Reuse[M].USA:ACM Press,199:1-3.
[7] 中國云計算.如何把云計算的概念引進到企業加以應用[EB/OL].http://www.cncloudcomputing.com/jinghua/109.html.
[8] 中國云計算.云計算將帶來三大方面的影響[EB/OL].http://www.cncloudcomputing.com/jinghua/88.html.
[9] Barnes B, Bollinger T B.Making Reuse Cost-effective[C].IEEE Software,1991,8(1):13-14.