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