所處的web2.0以及即將演化而來的so-called sematic web(web3.0)的時代對我們的日常生活的巨大推動力隨處可見, 而由其所定義的新的商業(yè)模型-即通過出租硬軟件計算平臺和服務(wù)獲取利潤的云計算模式-已經(jīng)廣泛的被實踐于商業(yè)領(lǐng)域,而由于互聯(lián)網(wǎng)的介入,傳統(tǒng)的軟件工程領(lǐng)域面臨非常大的沖擊, 許多的開發(fā)設(shè)計方法和經(jīng)驗?zāi)J經(jīng)]法匹配云計算對軟件的架構(gòu)開放性、 軟件對象的多樣性、軟件過程的動態(tài)性,開發(fā)組織的社會化,開發(fā)人員的大眾化, 資源部署虛擬化的諸多要求。而云計算憑借部署方便快捷,成本低廉,維護簡單等特點備受青睞。從以下軟件工程和云計算的特點的對比中,我們可以深切體會到互聯(lián)網(wǎng)時代里對傳統(tǒng)軟件工程的重新定義。
云計算特點
在web2.0時代里, 一些web技術(shù)的出現(xiàn)激發(fā)了人們對網(wǎng)絡(luò)的創(chuàng)造性的使用。在 Web 2.0 中,編寫的元數(shù)據(jù)XML (可擴展標(biāo)記語言) 描述 web內(nèi)容可以由計算機自動進行讀取和處理。 其他基于 XML 的 web 協(xié)議,如服務(wù)面向的架構(gòu) (SOA),簡單對象訪問協(xié)議(SOAP),web 服務(wù)描述語言 (WSDL) 等能夠?qū)⒉煌嬎闫脚_,不同系統(tǒng)和眾多語言整合起來。基于這種數(shù)據(jù)整合能力,應(yīng)用程序部署和交付的互聯(lián)網(wǎng)化也逐漸被概念化。應(yīng)用可以宿主在web上并且不同地域的人們可以通過internet隨時訪問, 這也就逐漸形成了web services 的雛形。
而在新的一種商業(yè)模式中,應(yīng)用程序開發(fā)的基礎(chǔ)設(shè)施, 如處理器,存儲數(shù)據(jù)庫,內(nèi)存,操作系統(tǒng)和軟件開發(fā)工具甚至?xí)r軟件等資源被分布于web提供給用戶。 這也就是我們稱之為云計算的新模式。
云計算是未來計算的趨勢。不同的資源共享,不同的客戶對象,定義了4 種主要的云計算類型。在云計算術(shù)語里 如通過提供硬件處理器、 存儲和網(wǎng)絡(luò)作為服務(wù)稱為基礎(chǔ)設(shè)施即服務(wù) (IaaS)。IaaS 的例子亞馬遜公司的彈性云計算 (EC2);當(dāng)編程平臺和工具被提供作為服務(wù)則稱為平臺即服務(wù) (PaaS) ;當(dāng)應(yīng)用被提供為服務(wù)時,被稱作應(yīng)用軟件即服務(wù) (SaaS),;以及Data storage as a Service (DaaS) 比如亞馬遜簡單的存儲服務(wù) (S3)。
云計算基于面向服務(wù)的體系結(jié)構(gòu) (SOA) 和 Web 2.0虛擬化的硬件和軟件資源 (如下圖 )。利用虛擬化技術(shù),用戶可以動態(tài)地鏈接不同的應(yīng)用程序以及在不同的操作系統(tǒng)上運行的物理資源。虛擬化技術(shù)可以實現(xiàn)物理資源在用戶間共享,也能夠?qū)崿F(xiàn)有效的資源管理、資源利用和可擴展性上的需求、提高資源利用率、 降低成本的地板空間、 電源和冷卻成本??梢哉f,今天的云,積聚著力量倡導(dǎo)著生態(tài)友好型綠色計算,可謂誘人之極。
而且,云計算不僅降低了使用資源的成本而且還降低了用戶的資源維護成本的, 而且呢提供了極大的延展性(scalibility)。 由于云計算的諸多屬性,其催生的極大的商業(yè)效益也是很可觀的。世界領(lǐng)先的 IT 公司,像微軟、 谷歌、 IBM、 SalesForce、 HP 和亞馬遜都在部署自家的云服務(wù) ,而且由諸多Web 服務(wù)應(yīng)用程序,如Hadoop 和 Mashup 可以運行在這些云上。由于所有它的優(yōu)點,云計算模型可能是普遍的計算模式的未來。
云計算時代的軟件工程
引用【1】中,作者對當(dāng)代軟件公司在云計算的生存狀況進行了調(diào)查
they present framework activities for designing applications based on discovery of semantic web service using software engineering methodologies. They propose generating semiautomatic semantic description of applications exploiting the existing methodologies and tools of web engineering. This increases design efficiency and reduces manual effort of semantically annotating the new application composed from web services of multiple enterprises.
Salesforce.com finds that agile process model works better on cloud computing platform. Before cloud computing, release of the SW to the user took time and getting feedback from the customer took more time which thwarted the very concept of agile development. Whereas now a new releases of the SW can be uploaded on the server and used by the users immediately.
從以上的引用中,我們可以很容易看出,這些在cloud computing 盛行的時代里存活下來的傳統(tǒng)軟件公司,都在積極尋找適應(yīng)這個時代需要的software engineering skills。盡管如此,作為IT領(lǐng)域新型的計算模式,傳統(tǒng)軟工在云計算平臺的挑戰(zhàn)人們還沒有完全的進行探索, 迄今還沒有很完美的軟件開發(fā)過程及方法被完整的提出。
在極具變化性和要求敏捷性的云計算平臺和云服務(wù)里, 軟件開發(fā)將會非常具有挑戰(zhàn)性。軟件開發(fā)過程將會涉及不同平臺,分布式的網(wǎng)絡(luò)服務(wù),異域分布的用戶, 傳統(tǒng)的開發(fā)模型和框架行為將難以滿足需求,除非云提供商在此方面提供更多的交互功能服務(wù)。
在云計算時代之前, 需求搜集階段僅涉及用戶,顧客, 及軟件工程師, 現(xiàn)在除了這些人的參與, 還得加上云服務(wù)提供者,因為他們是硬件和服務(wù)的提供者和維護者。又因為僅有云服務(wù)提供者明晰架構(gòu)的細(xì)節(jié)和虛擬化技術(shù)以及資源的有效利用, 在計劃和涉及階段又必須有云服務(wù)提供者介入。這樣在開發(fā)人員確定,組件重用,成本估算,計劃調(diào)度,風(fēng)險評估,配置管理,質(zhì)量控制等過程都會有他們的身影。這也是云計算時代軟件開發(fā)的一個特點。
云計算給軟件開發(fā)方面帶來的也有積極影響。由于開發(fā)和測試階段特有的獨立性, 可以利用云的特點,每個參與者都可以很快捷方便地訪問所有的資源, 加快開發(fā)測試的速度和降低測試和validation的時間成本。比如git生態(tài)圈就是很典型的例子。
結(jié)論
云計算憑借自身的優(yōu)越性催促傳統(tǒng)軟件工程進行著范式轉(zhuǎn)換,這將使得軟件開發(fā)過程更具挑戰(zhàn)性,因為他們不得不增加過程中與云服務(wù)提供商的交互,而這一過程挑戰(zhàn)性巨大。盡管,開發(fā)軟件的工作量得到了減少,但隨之而來的是不得不更多的交流和協(xié)調(diào)工作。在可見的未來,希望能有比較完美的云計算時代的軟件開發(fā)的成熟過程。
參考文獻
《1》 Guha, R., Al-Dabass, D.: Impact of Web 2.0 and cloud computing platform on software engineering. In: Proceedings of 1st International Symposium on Electronic System Design (ISED) (2010)
《2》 Niemann, B., et al.: Introducing Semantic Technologies and the Vision of the Semantic Web, SICoP White Paper (2005)
《3》 Introduction to the Semantic Web https://www.cambridgesemantics.com/semantic-university/introduction-semantic-web
《4》 M. Brambilla et al. A Software Engineering Approach to Design and Development of Semantic Web Service Applications
《5》 https://en.wikipedia.org/wiki/Cloud_computing
《6》 Salesforce.com. Agile Development Meets Cloud Computing for Extraordinary Results. www.salesforce.com
版權(quán)歸原作者所有,文章不代表本站立場,轉(zhuǎn)載請注明:寂寞快活林 ? 云計算時代對傳統(tǒng)軟件工程的沖擊