雲計算對傳統軟件工程的影響

                                              雲計算對傳統軟件工程的影響程序員


 

(1)何謂雲計算?編程

  雲計算(cloud computing)是基於互聯網的相關服務的增長、使用和交付模式,一般涉及經過互聯網來提供動態易擴展且常常是虛擬化的資源。雲是網絡、互聯網的一種比喻說法。過去在圖中每每用雲來表示電信網,後來也用來表示互聯網和底層基礎設施的抽象。所以,雲計算甚至可讓你體驗每秒10萬億次的運算能力,擁有這麼強大的計算能力能夠模擬核爆炸、預測氣候變化和市場發展趨勢。用戶經過電腦、筆記本、手機等方式接入數據中心,按本身的需求進行運算。服務器

  美國國家標準與技術研究院(NIST)定義:雲計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡訪問, 進入可配置的計算資源共享池(資源包括網絡、應用軟件,服務),這些資源可以被快速提供,只需投入不多的管理工做,或與服務供應商進行不多的交互。網絡


 

 (2)雲計算的特色:架構

  1.超大規模併發

    企業私有云通常擁有數百上千臺服務器,大型企業例如谷歌甚至擁有幾百萬臺服務器,它們賦予了用戶史無前例的計算能力。分佈式

  2.虛擬化工具

    雲計算支持用戶在任意位置、使用各類終端獲取應用服務。所請求的資源來自「雲」,而不是固定的有形的實體。應用在「雲」中某處運行,但實際上用戶無需瞭解、也不用擔憂應用運行的具體位置。只須要一臺筆記本或者一個手機,就能夠經過網絡服務來實現咱們須要的一切,甚至包括超級計算這樣的任務。開發工具

  3.高可靠性測試

    「雲」使用了數據多副本容錯、計算節點同構可互換等措施來保障服務的高可靠性,使用雲計算比使用本地計算機可靠。
   4.高可擴展性
    「雲」的規模能夠動態伸縮,知足應用和用戶規模增加的須要。
   5.按需服務
    「雲」是一個龐大的資源池,你按需購買;雲能夠像自來水,電,煤氣那樣計費。
   6.通用性
    雲計算不針對特定的應用,在「雲」的支撐下能夠構造出變幻無窮的應用,同一個「雲」能夠同時支撐不一樣的應用運行。
   7.極其廉價
    因爲「雲」的特殊容錯措施能夠採用極其廉價的節點來構成雲,「雲」的自動化集中式管理使大量企業無需負擔日益高昂的數據中心管理成本,「雲」的通用性使資源的利用率較之傳統系統大幅提高,所以用戶能夠充分享受「雲」的低成本優點,常常只要花費幾百美圓、幾天時間就能完成之前須要數萬美圓、數月時間才能完成的任務。
   8.潛在的危險性
    雲計算服務除了提供計算服務外,還必然提供了存儲服務。可是雲計算服務當前壟斷在私人機構(企業)手中,而他們僅僅可以提供商業信用。對於政府機構、商業機構(特別像銀行這樣持有敏感數據的商業機構)對於選擇雲計算服務應保持足夠的警戒。一旦商業用戶大規模使用私人機構提供的雲計算服務,不管其技術優點有多強,都不可避免地讓這些私人機構以「數據(信息)」的重要性挾制整個社會。對於信息社會而言,「信息」是相當重要的。另外一方面,雲計算中的數據對於數據全部者之外的其餘用戶雲計算用戶是保密的,可是對於提供雲計算的商業機構而言確實毫無祕密可言。全部這些潛在的危險,是商業機構和政府機構選擇雲計算服務、特別是國外機構提供的雲計算服務時,不得不考慮的一個重要的前提。
(3)雲計算對軟件工程的影響
  雲計算,與其說是一項技術,不如說是一種服務,就像IT界的自來水公司同樣,爲來自四面八方的運用提供本身能提供的服務,對於傳統軟件工程也是如此,雲能夠爲傳統軟件工程提供更加普遍的資源。雲計算對軟件工程的具體影響以下。

  1.軟件體系結構化

  與傳統的軟件工程相比,基於雲計算的軟件工程的體系結構變得更加構件化以及開放性更大。在軟件即服務(SaaS)模式下,雲計算抽象了傳統開發和集成中的低端任務,提供了標準化的、即裝即用的解決方案。在雲端,咱們能夠找到不少構件做爲咱們要開發的軟件的一部分,而這些構件會在不斷的使用中改進,變得愈來愈成熟。同時,新開發出的軟件能夠做爲之後要開發的更加複雜的軟件的構件。這樣,軟件危機能夠在必定程度上獲得緩解。在這種軟件開發模式下,軟件的體系結構基本上是徹底處於分佈式的,一個軟件由客戶端、服務端、管理端、開發端、測試端等各個不一樣的構件有機結合,也就是說,不一樣的軟件徹底可能享有共同的構件,這也使得應用之間沒有了嚴格的物理邊界。

  2.軟件更具多樣性

  前文中已經說過,雲計算更多的是一種服務,對於各個雲計算服務公司來講,服務得更好,公司才能生存。這也就保證了雲端資源的質量。因此對於軟件開發者,徹底不用擔憂用於軟件開發的構件質量問題。面對一個需求,軟件開發者能夠在雲端茫茫的構件中選擇能更好地知足需求的構件。在這樣的條件下,就能夠保證軟件對象的多樣性。

  3.軟件動態開發

  與傳統軟件工程相比,基於雲計算的軟件工程再也不是瀑布模型的,併發模型、多重螺旋模型將成爲主流。在軟件部署以後,每一個階段交付的都是中間版本,軟件升級會變得愈來愈頻繁。隨之而來的,是軟件開發過程的高度併發狀態和高度動態性。因爲軟件開發所需的構件和資源都在雲端,軟件開發的過程變得更加靈活,對於一個應用,軟件部署、運行管理、維護和開發過程都是併發的,所以也就可能會出現這種狀況:第一次軟件部署可能只是一個很簡單的功能,因爲雲計算大大下降了軟件構件之間的耦合程度,在軟件開發各個過程併發進行的狀況下,軟件可能在很短的時間只能就能夠升級到能夠實現很複雜的功能,並且這個發展方向的容錯性很強。

  4.更多人蔘與開發

  微軟公司《雲應用開發》一書的前言中寫到:「用戶只須要在每一個記帳週期內致富本身在該週期內所使用的IT資源所產生的費用,雲計算平臺的運營商則負責管理和維護整個IT架構,這樣,用戶就能夠集中全部經歷,利用本身對核心領域專業知識的掌握來構建和佈置本身的應用程序」。能夠看到,基於雲計算的軟件開發讓用戶放棄了對應用程序的部分控制權和自治權,將這部分控制權和自治權交由雲平臺運營商來掌握,也就是說軟件的組織管理再也不僅僅是開發者的任務了。另外一方面,對於一個開源項目,得益於雲端資源的共享性,對世界各地的開發者來講,一個項目的開發過程是透明的,所以一個項目能夠有來自不一樣區域的開發者來參與開發,可能這只是出於對技術的熱愛,而不是對利益的追求。

  5.軟件開發更加簡單

  在傳統的軟件開發過程當中,程序員的編程能力極爲重要,只有很好的編程能力才能對不一樣需求提出解決方案。但在基於雲計算的軟件開發中,幾乎全部解決方案均可以在雲端找到,所以編程能力彷佛顯得不是那麼重要了,而更重要的是如何來更好的構建和佈置本身所要開發的應用程序。用戶、開發人員之間再也不有明確的角色劃分,在必定狀況下,軟件開發者、服務提供者和軟件使用者能夠是同一我的,而軟件開發工具由雲計算服務商提供,軟件開發者只須要在開發週期內向服務商支付必定的軟件服務費用便可。在這樣的大環境下,人人均可以是開發人員。

  6.資源虛擬化

  Wiki對雲計算的定義是:雲計算是一種經過internet以服務的方式提供動態可伸縮的虛擬化資源的計算模式。能夠看到,計算資源虛擬化是雲計算技術的核心,經過虛擬化技術使得上層的軟件應用和底層的軟件實現分離,因爲資源都在雲端,用戶能夠隨時隨地訪問這些雲端資源。現現在的軟件開發,資源通常有人力資源、軟件資源和硬件資源,在雲資源高度虛擬化的狀況下,經過雲計算的三種模式IaaS(基礎設施即服務)、PaaS(平臺即服務)和SaaS(軟件即服務),軟件資源和硬件資源均可以經過雲端輕鬆得到,對於軟件開發者來講,剩下要考慮的資源只剩下人力資源。


 (4)總結

  當前在雲計算愈來愈普及的大環境下,軟件開發模式必然要作出相應的改變,這種改變極可能會大大緩解軟件危機,然而並不能完全杜絕軟件危機,固然徹底解決軟件危機也是不大可能的。但能夠確定的是,隨着雲計算的發展,我相信軟件開發會進入一個全新的時代。從我國國情看,在傳統IT產業中還處於很是不利的地位,關鍵核心技術都掌握在國外廠商中,雲計算給咱們實現跨越式發展提供了可貴的機遇,咱們必須抓住這個機會,成爲全球雲計算的先進國家,這對企業和我的都有很是重要的意義。

相關文章
相關標籤/搜索