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

      「軟件工程」最先起源於1968年秋NATO(北約)科技委員會關於擺脫「軟件危機」的討論,是研究如何以系統性的、規範化的、可定量的過程化方法去開發和維護軟件,以及如何把通過時間考驗證實正確的管理技術和當前可以獲得的最好技術方法結合起來並應用於實踐的軟件開發方法。前端

  能夠說軟件工程對大型軟件項目開發和現今互聯網逐漸成形有着不可磨滅的貢獻。不過前面也說到軟件工程是將現現在所可以得到最好的技術和管理技術結合,這個屬性註定了軟件工程在新的技術環境下會不斷髮展以適應當前技術的進步,盡最大的可能提升軟件開發過程的效率和質量。近幾年,雲計算技術逐漸從概念走向實用,爲軟件開發提供了新的可能。在這樣的環境下,傳統軟件工程也受到了必定程度的影響。數據庫

雲計算編程

  雲計算這個詞是2006年中Google提出的,可是其概念卻早在上世紀60年代就有人提出,「應當把計算能力做爲一種像水和電同樣的公用事業提供給用戶」。換句話說,雲計算就是以虛擬化技術(硬件資源抽象爲計算能力)爲基礎,以網絡爲載體,以用戶爲主體併爲其提供基礎架構、平臺、軟件等服務形式,整合大規模可擴展的計算、存儲、數據、應用等分佈式計算資源進行協同工做的超級計算服務模式。瀏覽器

  早期因爲虛擬化技術不成熟、互聯網技術欠缺、網絡帶寬有限等等限制因素致使雲計算僅僅只能做爲一種概念。而現現在軟硬件的發展,雲計算不只成爲了可用的技術,還爲企業創造大量的收入。亞馬遜2015年AWS雲服務的營收爲79億美圓,今年的營收預計將佔亞馬遜營收的7%。正是由於雲計算有着如此大的市場,如今大量企業開始涉足雲服務領域,如今的主流雲服務有亞馬遜的AWS、微軟的Azure,國內的阿里雲、騰訊雲等。經過這些提供商,咱們可以實現將資源池(包括網絡、存儲、硬件服務器、軟件工具等資源)像水和電同樣使用。安全

  服務層次服務器

  當前雲計算的服務層次一般分爲三種:網絡

  經過網絡、存儲、硬件處理器做爲標準化服務提供、按需付費的基礎設施即服務(Infrastructure as a Service,IaaS),典型表明如亞馬遜AWS的彈性計算雲EC2和簡單存儲服務 S3。經過IaaS,咱們能夠很方便地租用雲服務提供商的基礎設施,而後經過廉價的計算終端進行訪問控制,進行大規模的集羣運算從而達到高性能計算機的計算能力。架構

  經過提供相應的開發語言、編程環境或者是開發工具給用戶,充當平臺的平臺即服務(Platform as a Service,PaaS)。典型表明如 Google App Engine(GAE),Django Web應用框架。經過PaaS服務,咱們只須要上傳程序代碼和數據,不用去關注底層的網絡、存儲、環境配置等等問題。併發

  經過提供完整的基於雲計算基礎平臺開發的應用程序的軟件即服務(Software as a Service,SaaS)。典型表明有Salesforce 公司提供的在線客戶關係管理CRM(Client Relationship Management)服務,Zoho Office,Webex,谷歌的Gmail等。經過SaaS,咱們利用雲平臺上提供的應用程序進行快速簡便的軟件開發。例如,很多公司經過Gmail創建本身的企業電子郵件,可以在短期內創建起安全可靠、服務完善的郵件系統。框架

 

(Iaas Paas SaaS關係)

  由上圖所示,通常而言,SaaS創建在PaaS的基礎之上,而PaaS則創建在IaaS的基礎之上。而它們三者之間的差別主要體如今功能範圍和側重點上。

  其中IaaS提供知足租戶需求的硬件資源,包括存儲空間、計算能力、網絡帶寬等, 重點在於保證硬件資源的性能和可靠性,同時在此基礎之上,再提供按需付費、可度量資源池、根據用戶需求調度分配硬件資源的功能;

  PaaS則不只僅關注底層硬件資源的整合,還須要提供可以供用戶進行開發、調試應用的平臺環境,重點在保證計算平臺和底層硬件環境的協調和平臺功能的完整性;

  SaaS則不只須要實現底層資源的充分利用,還必須經過部署一個或多個應用軟件環境,爲用戶提供可定製化的應用服務,重點在於根據不一樣用戶的需求爲其提供不一樣的獨特的、定製化的軟件環境;

(三者之間的比較)

  所以也能夠將IaaS、PaaS、SaaS當作是三種不一樣層次的服務。這種層次極爲分明的服務在實際生活中也十分廣泛。IaaS至關於買了一棟商品房,可是卻沒有裝修,也沒有購置傢俱、電器,這些都須要本身去完成;PaaS至關因而租房,房子已經裝修好了,可是相應的傢俱、電器沒有,須要根據本身的需求去購置;SaaS則至關因而住酒店,裝修好了,相應的生活設施也都準備好了,能夠直接使用。

  特色

  1) 按需自助式服務:用戶能夠根據自身實際需求擴展和使用雲計算資源,具備快速提供資源和服務的能力。能經過網絡方便地進行計算能力的申請、 配置和調用,服務商能夠及時進行資源的分配和回收。

  2) 普遍的網絡訪問:經過互聯網提供自助式服務,使用者能夠直接經過互聯網訪問和控制相應的資源,不須要部署相關的複雜硬件設施和應用軟件,也不須要了解所使用資源的物理位置和配置等信息。這就能夠實現高性能計算能力僅經過網絡訪問便可獲取。

  3) 資源池方式供應:供應商的計算資源聚集在一塊兒,經過使用多租戶模式將不一樣的物理和虛擬資源動態分配多個消費者,並根據消費者的需求從新分配資源。各個客戶分配有專門獨立的資源,客戶一般不須要任何控制或知道所提供資源的確切位置,就可使用一個更高級別抽象的雲計算資源。

  4) 快速彈性使用:快速部署資源或得到服務。服務商的計算能力根據用戶需求變化可以快速而彈性地實現資源供應。雲計算平臺能夠按客戶需求快速部署和提供資源。一般狀況下資源和服務能夠是無限的,能夠是任何購買數量或在任什麼時候候。雲計算業務使用則按資源的使用量計費,實現按需彈性分配。

  5) 可度量的服務:雲服務系統能夠根據服務類型提供相應的計量方式, 雲自動控制系統經過利用一些適當的抽象服務(如存儲、處理、帶寬和活動用戶賬戶)的計量能力來優化資源利用率, 還能夠監測、 控制和管理資源使用過程. 同時,能爲供應者和服務消費者之間提供透明服務。這點也爲雲服務商的盈利提供了保證。

雲計算帶來的影響

       雲計算有着鮮明的特色和服務模式,雲計算模式下的軟件工程則須要充分發揮這些特色的優點,將這些模式整合到軟件開發的設計中。這必然會形成軟件開發中多方面的改變,如下是列舉的幾點。

       開發方法

       傳統的軟件開發工程中,通常採用分層方式對計算系統資源進行管理,具體體如今「應用―中間件/數據庫―操做系統―硬件服務器」模式中。因爲在項目中,這種資源架構是軟件工程設計開發模式的先決條件,且項目中經常會對這四層資源所有進行管理,這就形成了軟件開發會不可避免出現耦合過緊的狀況。這對於軟件開發的效率有很大的影響。

       現今軟件工程中很常見的一種開發方式是面向對象開發。這種開發方式可以在必定程度上減小耦合過緊帶來的影響,但依舊存在一些不足。而在雲計算環境下進行軟件開發,則能夠在面向對象開發的基礎上進一步抽象,能夠提高到面向服務開發的層次,根據不一樣的業務需求劃分子業務,對子業務流級別的模塊進行組織設計,並最終造成軟件系統總體。面向服務使軟件在 IT 系統結構層次結構系統中更加接近應用。

       體系結構

       基於雲計算的軟件項目會由於雲計算的特性而具備很強的開放性和更加成熟的構件化。用戶能夠經過互聯網來獲取相應的軟件服務,這時系統的開放性便會成爲軟件開發的一個重點。軟件的體系結構會朝着更便捷、更簡潔的方向發展。同時更加成熟的構件化也會驅使軟件加強封裝性,從而成爲後續應用軟件中的基礎和構件。

  此外,雲計算應用軟件體系結構在本質上是徹底分佈式的,由客戶端,服務端,管理端,開發端,測試端等多種軟件構件有機集成,多種應用共享公共軟件構件。應用之間仍然有清晰的邏輯邊界,可是因爲雲平臺的特性,致使應用之間再也不有截然分開的物理邊界。

  部署/運行/維護

  雲計算給軟件部署、運行管理和維護帶來了高度的靈活性。對於一個特定的應用,軟件部署、運行管理、維護和開發過程是並行的。第一次部署的可能只是一小部分功能,在隨後的軟件升級中不斷完善。因爲雲計算模式極大的下降了軟件構件之間的耦合程度,軟件的客戶端、服務端、管理端等構件徹底以併發獨立的方式部署和管理,甚至軟件運行的基礎設施也能夠在用戶透明的方式完成升級換代和從新部署,

  雲計算軟件能夠按照用戶需求隨時運行,軟件運行平臺採用成熟的虛擬化技術。在客戶端,能夠產生多種虛擬環境,如Windows、Linux、Mac OS甚至是瀏覽器等,用戶能夠根據本身的喜愛來選擇。在服務器端,能夠把大規模的服務器系統虛擬化爲單一處理單元和連續的存儲單元,下降用戶端的管理複雜程度。

  雲計算軟件運行的最底層的硬件系統和基礎軟件系統由專業的計算機信息系統集成商統一維護管理對用戶(包括雲平臺使用人員和真正的用戶)來講,徹底能夠不關心底層軟硬件的細節。

總結

  總的來講,如今雲計算技術仍在完善和發展階段,仍舊存在很大的發展空間(確實最近Amazon、Microsoft、阿里巴巴都在加大對雲服務的資金投入)。雖然在某些領域(如前端開發)的軟件開發中雲計算技術已經有着很大的影響,但其做用毫不會侷限於此。相信隨着它的發展,更好的計算機軟件系統構建,更安全的軟件數據保存,更便捷的信息處理,各類系統的優化也將隨之而來,雲終端系統、硬件系統、系統管理以及虛擬機系統也必然將由於雲計算的發展而獲得更高的提高。

 

參考資料:

[1] Wikipedia,Cloud Computing

[2] Wikipedia,軟件工程

[3] 張勇. 雲計算環境下軟件工程模式初探[A]. 太原: 北方自動控制技術研究所,2009

[4] 賈昆霖. 雲計算髮展對軟件工程構建系統的影響分析[A]. 電子技術與軟件工程,2011

[5] 史傑 解繼麗. 論雲計算對軟件工程的影響[A]. 昆明學院學報,2011

相關文章
相關標籤/搜索