標籤:封裝 軟體開發 調試 實體 控制 配置 知識 供應商 獨立開發人員
雲端運算對傳統軟體工程的影響
雲端運算是什嗎?美國國家標準與技術研究院(NIST)給出了定義:雲端運算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網路訪問, 進入可配置的計算資源共用池(資源套件括網路,伺服器,儲存,應用軟體,服務),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務供應商進行很少的互動。
雲端運算是並行計算、分散式運算和格線運算的發展,或者說是這些計算科學概念的商業實現。【1】它具有三大形式分別為基礎設施即服務(IaaS),平台即服務(PaaS)和軟體即服務(SaaS)。其中,基礎設施即服務是指使用者可以從雲端運算平台獲得基礎設施的服務比如租用硬體伺服器。平台即服務是指雲端運算向使用者提供平台比如作業系統或雲端運算服務的開發平台,使使用者可以減少硬體投入,從而降低費用。軟體即服務是指在雲端運算環境下,軟體廠商把軟體部署在伺服器上,使用者可以按需向廠商租用軟體,這樣使用者就無需購買軟體,同時由於廠商會對軟體進行統一的維護,使用者使用起來也會更加的方便。雲端運算具有超大規模,虛擬化,高可靠性,通用性,高延展性,按需服務,及其廉價等特點。它將計算作為一種資源進行出售,使用者可以像購買水電一樣獲得計算資源,從而避免了計算資源的閑置導致的資源浪費,同時方便了使用者使用。雲端運算的出現構建了不同的軟體開發環境,改變了使用者獲得服務的方式。傳統的軟體工程在雲端運算環境下勢必要做出改變,開發人員們也可以利用雲端運算環境改進軟體開發過程,雲端運算對傳統軟體工程有很多影響,主要體現在以下幾個方面:
軟體複用程度提高
在傳統軟體工程中,開發時間與開發結果的可信性往往是矛盾的。若是開發時間較短,即軟體的分析,編寫及測試等所經曆的時間很少,軟體可能不滿足使用者的需求,軟體錯誤率也很可能升高,軟體的品質不高。而要開發高品質的軟體,就需要大量的時間進行需求分析,軟體設計,代碼編寫及軟體測試等。二者好像是不可兼得的。而在雲端運算下的軟體工程中構件的成熟度等級提高。而構件可以在更高抽象層次上實現大粒度的軟體複用。【2】一方面,這些被複用的軟體往往是修改和完善得十分成熟的軟體,更具有可信性。而使用這些構件編寫軟體能夠減少開發錯誤,提高軟體品質。而另一方面,由於有許多現成的成熟構件可以使用而不用進行重複的代碼編寫,軟體的開發時間也會縮短。雲端運算在這兩個方面同時具有優勢。同時,由於在面向服務的軟體工程中構件的成熟度等級提高了,開發人員在編寫軟體時就有了更多的可用構件來進行選擇,軟體對象更加多樣化了。
軟體過程的動態性
從生命週期特點看,傳統的軟體生命週期模型是串列的,本質都是瀑布模型的變形,這樣的生命週期模型更易於控制,可以保證在確定時間有確定的結果,而在雲端運算環境下軟體開發不再是一個封閉的,全域控制的流程,而是存在多個並發和自治的流程,在一個項目中自底向上自頂向下有機整合。【3】 也就是說,在傳統的軟體工程中,為了保證確定的結果,傳統軟體的開發必須遵循相應的流程,否則可能導致無法進行進一步開發。而在雲端運算環境下,由於大量構件及結構的封裝性很好,很容易進行複用,軟體的架構可以從已經存在的成熟架構中直接選擇,軟體的詳細部分也可以使用大量的成熟構件或代碼,同時由於雲端運算環境下各構件的耦合性大大降低,軟體的各個構件完全可以獨立並發的進行開發,從而使軟體過程更加的自由,可以多個流程同時進行。
開發組織的社會化
傳統的軟體開發往往局限於單個組織內部。【4】由於交流的困難以及無法及時同步開發進度,組織之外的人往往很難加入到項目當中。而在雲端運算環境下,同一項目的開發人員可以通過操作雲端服務器方便的完成軟體的開發部署工作,使得軟體開發不再局限於單一組織。許多組織可以共同完成一個項目,軟體開發變得更加開放。同時,雲端運算為開源軟體的發展提供了極大的便利,任何人都可以方便的在雲上找到開源項目並進行最佳化,項目因為更多人的參與變得更加完善。
開發人員的福士化
傳統的軟體開發需要對開發人員進行大量培訓從而掌握軟體開發的基本知識,同時需要很多資金來搭建開發環境,使軟體開發的門檻較高。而雲端運算的出現極大的降低了軟體開發的門檻,使得越來越多的人可以在雲端運算平台上進行軟體開發。雲端運算使用了大量的廉價伺服器以及雲端運算往往是超大規模所帶來的規模效應,還有雲端運算按需付費的特點,使得雲端運算的資源十分廉價。在雲端運算環境下可以用較少的金錢獲得很多的計算資源。並且,雲端運算允許使用者租用軟體進行開發,從而進一步降低了資金投入。這對於中小企業和獨立開發人員來說是十分友好的。它們不需要大量的前期投入就可以進行軟體開發並通過雲端運算平台將它們的產品推向市場,軟體開發變得更加容易。另外,雲端運算中心負責架構軟體開發和運行環境,軟體開發人員無需進行硬體設施架構和運行環境調試等工作,只需要一個瀏覽器就可以開始開發了,軟體開發變得更加簡單。還有,在雲端運算平台上擁有大量的學習資源,開發人員可以方便的進行學習並與他人交流提升自己的開發水平。而且,雲端運算平台上還有大量可以直接使用的成熟構件,即使沒有很多開發經驗的人也可以通過直接使用這些控制項完成自己的軟體。
資源部署的虛擬化
虛擬化是指將電腦中的各種實體資源經過抽象、轉換後呈現出來,從而打破實體資源間的障礙,使使用者更好的使用這些資源。雲端運算正是具有虛擬化的特點,它支援使用者在任意位置,使用各種終端擷取服務,使用者無需知道應用具體的運行位置。計算軟體啟動並執行最底層的硬體系統和基礎軟體系統對使用者來說是透明的,由雲端運算服務的供應商進行統一的維護和管理。因此在雲端運算環境下無需關心硬體資源,可以把更多的精力關注到軟體本身,從而提高軟體的品質。另外,在傳統軟體工程中,使用者需要購買大量的伺服器來應付軟體資源使用的高峰期,這些伺服器在平時可能都是處於閑置的狀態導致資源的浪費和成本增加。而雲端運算環境下由於資源是虛擬使得它的伸縮性較好,使用者可以根據自己的需要動態租用資源。在高峰期租用更多的資源而到期即可退租。從而避免了資源的浪費,同時降低了成本。
雲端運算作為一門新技術,雖然已經取得了廣泛的應用,但還沒有達到非常成熟的地步,雲端運算環境下究竟如何進行軟體開發,還需要不斷的探索和研究。雖然雲端運算能否帶領軟體工程走向新的階段還未可知,但它的確在很多方面促進了軟體工程的進步。因此推廣雲端運算是十分重要的,軟體工程可能因此得到進一步變革。
【1】 雲端運算的概念和內涵 中國雲端運算
【2】 史傑,解繼麗,史少華,《論雲端運算對軟體工程的影響》
【3】 張勇,《雲端運算環境下軟體工程模式初探》
【4】 張強,《雲端運算時代的軟體複用》
雲端運算對傳統軟體工程的影響