回顧軟件技術(shù)發(fā)展的歷史,最明顯的趨勢是軟件變得越來越復(fù)雜,計算越來越繁瑣,存儲和處理的信息越來越多,軟件危機(jī)就是用戶對于軟件功能的要求太多,以至于超過了軟件技術(shù)能夠滿足的程度,從而使得軟件產(chǎn)品在原有基礎(chǔ)上不斷改動增需,軟件變得越來越復(fù)雜,以至于開發(fā)組織越來越難。從最初的機(jī)器指令開始發(fā)展到面向?qū)ο笤俚饺缃裥屡d的云計算,目的都是讓軟件開發(fā)變得越來越簡單,越來越能迎合用戶的要求。
要說云計算對軟件工程的影響,首先來了解了解云計算。云計算,用最簡單的一句話來解釋就是“客戶端將運(yùn)算任務(wù)交給服務(wù)器(云端),服務(wù)器運(yùn)算完成之后,再將運(yùn)算結(jié)果交還給客戶端”。具體說,就是客戶端(這里的客戶端可以是個人也可以是企業(yè))在某種情況下,本地的資源不足以支持要進(jìn)行的運(yùn)算,就運(yùn)用線上已有的成熟的資源和數(shù)據(jù)來為自己完成自己的需求。這樣的模式有三個好處,第一,由于不受本地資源的限制,客戶端可以有更廣闊的資源庫,可以說享有現(xiàn)有的所有種類的資源。第二,對于做云計算的企業(yè)來說伸縮性更好,如果市場需求大則投入更多,反之減少投入。第三,pay as you go,也就是你取多少付多少,再也不用想為了一個簡簡單單的事情而專門買一個服務(wù)器。這里對云計算也就不再做深究,理解云計算的基本原理和特征即可。
云計算,與其說是一項(xiàng)技術(shù),不如說是一種服務(wù),就像IT界的自來水公司一樣,為來自四面八方的運(yùn)用提供自己能提供的服務(wù),對于傳統(tǒng)軟件工程也是如此,云可以為傳統(tǒng)軟件工程提供更加廣泛的資源。云計算對軟件工程的具體影響如下。
1.軟件體系結(jié)構(gòu)化
與傳統(tǒng)的軟件工程相比,基于云計算的軟件工程的體系結(jié)構(gòu)變得更加構(gòu)件化以及開放性更大。在軟件即服務(wù)(SaaS)模式下,云計算抽象了傳統(tǒng)開發(fā)和集成中的低端任務(wù),提供了標(biāo)準(zhǔn)化的、即裝即用的解決方案。在云端,我們可以找到很多構(gòu)件作為我們要開發(fā)的軟件的一部分,而這些構(gòu)件會在不斷的使用中改進(jìn),變得越來越成熟。同時,新開發(fā)出的軟件可以作為以后要開發(fā)的更加復(fù)雜的軟件的構(gòu)件。這樣,軟件危機(jī)可以在一定程度上得到緩解。在這種軟件開發(fā)模式下,軟件的體系結(jié)構(gòu)基本上是完全處于分布式的,一個軟件由客戶端、服務(wù)端、管理端、開發(fā)端、測試端等各個不同的構(gòu)件有機(jī)結(jié)合,也就是說,不同的軟件完全可能享有共同的構(gòu)件,這也使得應(yīng)用之間沒有了嚴(yán)格的物理邊界。
2.軟件更具多樣性
前文中已經(jīng)說過,云計算更多的是一種服務(wù),對于各個云計算服務(wù)公司來說,服務(wù)得更好,公司才能生存。這也就保證了云端資源的質(zhì)量。所以對于軟件開發(fā)者,完全不用擔(dān)心用于軟件開發(fā)的構(gòu)件質(zhì)量問題。面對一個需求,軟件開發(fā)者可以在云端茫茫的構(gòu)件中選擇