雲計算對傳統軟件工程的影響程序員
(1)何謂雲計算?編程
雲計算(cloud computing)是基於互聯網的相關服務的增長、使用和交付模式,一般涉及經過互聯網來提供動態易擴展且常常是虛擬化的資源。雲是網絡、互聯網的一種比喻說法。過去在圖中每每用雲來表示電信網,後來也用來表示互聯網和底層基礎設施的抽象。所以,雲計算甚至可讓你體驗每秒10萬億次的運算能力,擁有這麼強大的計算能力能夠模擬核爆炸、預測氣候變化和市場發展趨勢。用戶經過電腦、筆記本、手機等方式接入數據中心,按本身的需求進行運算。服務器
美國國家標準與技術研究院(NIST)定義:雲計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡訪問, 進入可配置的計算資源共享池(資源包括網絡、應用軟件,服務),這些資源可以被快速提供,只需投入不多的管理工做,或與服務供應商進行不多的交互。網絡
(2)雲計算的特色:架構
1.超大規模併發
企業私有云通常擁有數百上千臺服務器,大型企業例如谷歌甚至擁有幾百萬臺服務器,它們賦予了用戶史無前例的計算能力。分佈式
2.虛擬化工具
雲計算支持用戶在任意位置、使用各類終端獲取應用服務。所請求的資源來自「雲」,而不是固定的有形的實體。應用在「雲」中某處運行,但實際上用戶無需瞭解、也不用擔憂應用運行的具體位置。只須要一臺筆記本或者一個手機,就能夠經過網絡服務來實現咱們須要的一切,甚至包括超級計算這樣的任務。開發工具
3.高可靠性測試
1.軟件體系結構化
與傳統的軟件工程相比,基於雲計算的軟件工程的體系結構變得更加構件化以及開放性更大。在軟件即服務(SaaS)模式下,雲計算抽象了傳統開發和集成中的低端任務,提供了標準化的、即裝即用的解決方案。在雲端,咱們能夠找到不少構件做爲咱們要開發的軟件的一部分,而這些構件會在不斷的使用中改進,變得愈來愈成熟。同時,新開發出的軟件能夠做爲之後要開發的更加複雜的軟件的構件。這樣,軟件危機能夠在必定程度上獲得緩解。在這種軟件開發模式下,軟件的體系結構基本上是徹底處於分佈式的,一個軟件由客戶端、服務端、管理端、開發端、測試端等各個不一樣的構件有機結合,也就是說,不一樣的軟件徹底可能享有共同的構件,這也使得應用之間沒有了嚴格的物理邊界。
2.軟件更具多樣性
前文中已經說過,雲計算更多的是一種服務,對於各個雲計算服務公司來講,服務得更好,公司才能生存。這也就保證了雲端資源的質量。因此對於軟件開發者,徹底不用擔憂用於軟件開發的構件質量問題。面對一個需求,軟件開發者能夠在雲端茫茫的構件中選擇能更好地知足需求的構件。在這樣的條件下,就能夠保證軟件對象的多樣性。
3.軟件動態開發
與傳統軟件工程相比,基於雲計算的軟件工程再也不是瀑布模型的,併發模型、多重螺旋模型將成爲主流。在軟件部署以後,每一個階段交付的都是中間版本,軟件升級會變得愈來愈頻繁。隨之而來的,是軟件開發過程的高度併發狀態和高度動態性。因爲軟件開發所需的構件和資源都在雲端,軟件開發的過程變得更加靈活,對於一個應用,軟件部署、運行管理、維護和開發過程都是併發的,所以也就可能會出現這種狀況:第一次軟件部署可能只是一個很簡單的功能,因爲雲計算大大下降了軟件構件之間的耦合程度,在軟件開發各個過程併發進行的狀況下,軟件可能在很短的時間只能就能夠升級到能夠實現很複雜的功能,並且這個發展方向的容錯性很強。
4.更多人蔘與開發
微軟公司《雲應用開發》一書的前言中寫到:「用戶只須要在每一個記帳週期內致富本身在該週期內所使用的IT資源所產生的費用,雲計算平臺的運營商則負責管理和維護整個IT架構,這樣,用戶就能夠集中全部經歷,利用本身對核心領域專業知識的掌握來構建和佈置本身的應用程序」。能夠看到,基於雲計算的軟件開發讓用戶放棄了對應用程序的部分控制權和自治權,將這部分控制權和自治權交由雲平臺運營商來掌握,也就是說軟件的組織管理再也不僅僅是開發者的任務了。另外一方面,對於一個開源項目,得益於雲端資源的共享性,對世界各地的開發者來講,一個項目的開發過程是透明的,所以一個項目能夠有來自不一樣區域的開發者來參與開發,可能這只是出於對技術的熱愛,而不是對利益的追求。
5.軟件開發更加簡單
在傳統的軟件開發過程當中,程序員的編程能力極爲重要,只有很好的編程能力才能對不一樣需求提出解決方案。但在基於雲計算的軟件開發中,幾乎全部解決方案均可以在雲端找到,所以編程能力彷佛顯得不是那麼重要了,而更重要的是如何來更好的構建和佈置本身所要開發的應用程序。用戶、開發人員之間再也不有明確的角色劃分,在必定狀況下,軟件開發者、服務提供者和軟件使用者能夠是同一我的,而軟件開發工具由雲計算服務商提供,軟件開發者只須要在開發週期內向服務商支付必定的軟件服務費用便可。在這樣的大環境下,人人均可以是開發人員。
6.資源虛擬化
Wiki對雲計算的定義是:雲計算是一種經過internet以服務的方式提供動態可伸縮的虛擬化資源的計算模式。能夠看到,計算資源虛擬化是雲計算技術的核心,經過虛擬化技術使得上層的軟件應用和底層的軟件實現分離,因爲資源都在雲端,用戶能夠隨時隨地訪問這些雲端資源。現現在的軟件開發,資源通常有人力資源、軟件資源和硬件資源,在雲資源高度虛擬化的狀況下,經過雲計算的三種模式IaaS(基礎設施即服務)、PaaS(平臺即服務)和SaaS(軟件即服務),軟件資源和硬件資源均可以經過雲端輕鬆得到,對於軟件開發者來講,剩下要考慮的資源只剩下人力資源。
(4)總結
當前在雲計算愈來愈普及的大環境下,軟件開發模式必然要作出相應的改變,這種改變極可能會大大緩解軟件危機,然而並不能完全杜絕軟件危機,固然徹底解決軟件危機也是不大可能的。但能夠確定的是,隨着雲計算的發展,我相信軟件開發會進入一個全新的時代。從我國國情看,在傳統IT產業中還處於很是不利的地位,關鍵核心技術都掌握在國外廠商中,雲計算給咱們實現跨越式發展提供了可貴的機遇,咱們必須抓住這個機會,成爲全球雲計算的先進國家,這對企業和我的都有很是重要的意義。