軟件工程起源于上個世紀(jì)70年代,由于當(dāng)時的軟件開發(fā)沒有一個類似于規(guī)范的步驟,致使很多軟件項目的開發(fā)時間大大超過了規(guī)劃的時間。面對軟件功能和需求的日益復(fù)雜化以及維護(hù)難度的上升,人們開始意識到僅憑個人甚至單個小組來開發(fā)一款軟件的難度的巨大的。終于在1968年,北大西洋公約組織舉辦了首次軟件工程學(xué)術(shù)會議,并在會中提出了要將軟件開發(fā)當(dāng)做工程活動來看待。[1]這可以看做是傳統(tǒng)軟件工程發(fā)展的開端。傳統(tǒng)軟件工程的出現(xiàn)很大程度上解決了軟件開發(fā)中諸多問題,然而時間邁入21世紀(jì),在云計算大行其道的今天,傳統(tǒng)的軟件工程又將會面臨機(jī)遇與挑戰(zhàn)呢?接下來我將會就云計算對傳統(tǒng)軟件工程的影響,談?wù)勎易约旱目捶ā?
什么是云計算
云計算(Cloud Computing)是一種基于互聯(lián)網(wǎng)的計算方式。這種模式提供可用的、便捷的、按需的網(wǎng)絡(luò)訪問,進(jìn)入可配置的計算資源共享池(資源包括網(wǎng)絡(luò),服務(wù)器,存儲,應(yīng)用軟件,服務(wù)),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務(wù)供應(yīng)商進(jìn)行很少的交互。[2]簡單地說,在互聯(lián)網(wǎng)時代,我們所能夠使用的計算資源將不再局限于我們所擁有的。我們可以通過租用云服務(wù)的方式來滿足我們的某些計算需求,從而節(jié)省大量的硬件資源開銷。
云計算的服務(wù)模式可分為三種,分別是:IaaS、PaaS和SaaS。
IaaS(基礎(chǔ)設(shè)施即服務(wù))指消費者可以總完善的計算機(jī)基礎(chǔ)設(shè)施獲得服務(wù)。有了IaaS,你可以選擇將公司運營所需要的服務(wù)器、儲存器和網(wǎng)絡(luò)硬件外包給別的公司,以節(jié)省日常維護(hù)的成本以及辦公場地。一般的IaaS公司會幫你日常維護(hù)硬件,并可以滿足一定的彈性需求。比如當(dāng)公司需要進(jìn)行業(yè)務(wù)擴(kuò)展,需要更多的計算能力的時候,可以輕松地通過IaaS獲取更多的機(jī)器,當(dāng)網(wǎng)站訪問人數(shù)較少時,可以減少部署的機(jī)器以節(jié)約成本。
PaaS(平臺即服務(wù))提供了用戶可以訪問的應(yīng)用程序開發(fā)平臺。公司中所有的開發(fā)環(huán)境都可以在這個環(huán)境下進(jìn)行,從而達(dá)到節(jié)省時間、資源的目的。PaaS的強(qiáng)大之處在于它能夠涵蓋軟件開發(fā)的各個階段,提供了從開發(fā)工具、中間件到數(shù)據(jù)庫軟件等開發(fā)所需的所有功能,原本分散的工作室之間的合作也變得更加容易。例如微軟的Azure服務(wù)平臺就包含了Windows Azure;Microsoft SQL數(shù)據(jù)庫服務(wù)、Microsoft .Net服務(wù);用于分享、儲存和同步文件的Live服務(wù);針對商業(yè)的Microsoft SharePoint和Microsoft Dynamics CRM服務(wù)等,使得開發(fā)組之間的合作能夠更加的緊密。
SaaS(軟件及服務(wù))提供了完整的可以直接使用的應(yīng)用程序。這一層面上的應(yīng)用大多數(shù)通過網(wǎng)頁瀏覽器進(jìn)行接入,包括了我們?nèi)粘K褂玫碾娮余]件,網(wǎng)盤等等。用戶一般只需要進(jìn)行簡單的操作即可完成自己的需求,免去了很多不必要的麻煩。
我嘗試在Amazon注冊了AWS服務(wù),從下面的截圖我們可以看出AWS平臺給我們提供的服務(wù)也是按照IaaS、PaaS、SaaS來進(jìn)行劃分的。使用現(xiàn)有的服務(wù)可以實現(xiàn)程序的快速部署,大大節(jié)省我們開發(fā)軟件所需要的時間。