標籤:電腦硬體 許可證 center 硬體 恰恰 分析 不同 方案 執行
說起雲端運算對於傳統軟體工程的影響,我們當然首先需要瞭解這兩個概念。
一、傳統軟體工程
首先是傳統軟體工程,瞭解傳統軟體工程其實就是瞭解軟體工程的曆史,早期的電腦系統以硬體為主,程式員在早期的電腦上通過比較複雜的操作來運行比較簡單的程式,程式的規模一般不會很大。但隨著電腦硬體的不斷髮展,電腦系統的效能也越來越強,在上面啟動並執行軟體規模也就越來越大。到了上個世紀六十年代,“軟體危機”這一事實逐漸被大家所認識,這其中的具體問題包括:軟體生產難以滿足使用者日益增長的需求、軟體開發人員與使用者交流不充分、軟體品質難以保證、軟體維護不當等問題。我想這樣的問題的出現原因應該主要是以下原因造成的:軟體規模越來越大,小型程式的開發可能還不需要特定的方法和原則,但規模大起來的話,沒有明確的開發原則,工程化方法作指導,就會使雜亂無章的軟體開發造成越來越多的問題。
於是1968年首次提出了軟體工程的概念,軟體工程強調可維護性,強調文檔化、強調軟體生命週期系統化。軟體工程的提出也讓軟體開發的研究成為了一個獨立的領域,和硬體研究區分開來。軟體開發的一般流程為分析、設計、編碼、運行、維護五個步驟。雖然在幾十年之間軟體工程的各種新的開發思想不斷被提出,但是大的格局並沒有改變。
二、雲端運算
接下來我們要說說雲端運算。在維基百科中,雲端運算被定義為一種基於互連網的計算方式,通過這種方式,共用的軟硬體資源和資訊可以按需求提供給電腦各種終端和其他裝置。雲端運算描述了一種基於互連網的新的IT服務增加、使用和交付模式,通常涉及通過互連網來提供動態易擴充而且經常是虛擬化的資源。服務分為以下模式:
基礎設施即服務(IaaS):是消費者使用處理、儲存、網路以及各種基礎運算資源,部署與執行作業系統或應用程式等各種軟件。
平台即服務(PaaS):提供運算平台與解決方案堆棧即服務。平台即服務使使用者能將雲基礎設施部署與建立至用戶端,或者藉此獲得使用程式設計語言、程式庫與服務。使用者不需要管理與控制雲基礎設施,包含網路、伺服器、作業系統或儲存,但需要控制上層的應用程式部署與應用託管的環境。
軟體即服務(SaaS):在這種軟體交付模式中雲端集中式託管軟體及相關資料,軟體僅需透過互連網,而不需安裝即可使用。
說白了,我認為這三種服務分別為三個層次。如果把軟體開發比喻成做一個拼裝玩具,那麼我們至少需要零件和改錐、鉗子這樣的工具。於是為我們提供基礎運算資源等資源的基礎設施即服務就像是為我們提供了零件和工具,我們需要自己去完成所有的安裝工作。
但是,也有人不願意從第一步開始安裝,但也不願意直接買來已經組裝完畢的玩具,因此有的時候他們會選擇買來半成品進行安裝。這時候,在玩具分為幾個模組的情況下,如果銷售玩具的人事先將幾個模組組裝好,然後進行銷售,這樣就能滿足這類人的心愿。這類服務就很像平台即服務(PaaS),提供了所需的平台。
當然,還有些人並不想做任何安裝工作,只想拿來就用,那麼這種人買玩具的時候只要買現成的就好。因此有時銷售者也會販賣已經組裝好的玩具。這類玩家就好比接受軟體即服務(SaaS)。
三、關於雲端運算的出現對於傳統軟體工程的影響
瞭解了雲端運算是什麼,傳統軟體工程是怎麼回事,我們如何去分析雲端運算究竟會給軟體工程帶來什麼呢?我想我們最重要的事情是分析雲端運算的出現目的是什麼,這些目的所作用的對象和軟體開發有什麼樣的關係。
1、我想我們都能想到的一點是:軟體開發成本的降低。以前在沒有雲端運算的概念的時候,開發軟體所需要的所有硬體都必須要由公司自己來購買,如果需要硬體有很高的運算能力的話,還必須要花大價錢來購買高價的硬體。除了硬體之外,工具軟體、軟體許可證也都需要公司不小的開銷,更何況軟硬體一般都需要定期進行維護,這又是一筆不小而且需要公司長期進行承擔的開銷。而這些問題,這些思之令人感到頭大的開銷,在有了雲端運算這一概念之後,必將得到極大地緩解。
2、軟體安裝的困難也會減少很多。我想大家都很清楚,工具軟體的安裝,環境的搭建,有時很簡單,有時卻非常麻煩,會耗掉很多時間,有時工具軟體還會有開發人員事先不知道的問題。這些都會使得軟體開發程式員浪費掉大量時間和精力,情緒有時也會受到很大影響。而有了雲端運算的軟體即服務(SaaS)之後,軟體開發人員並不需要安裝軟體就可以使用。
3、硬體的利用效率也會有很多提高。很多時候我們自己買來硬體,自己進行管理調度的效果會比較差,使得程式啟動並執行效果也會比較差。而雲端運算恰恰又協助我們解決了這一問題,我們無需自己進行硬體的調度和管理。
4、軟體的複用程度也會提高。雲中的軟體是被不同開發人員所共有的,因此不同開發人員都在用這同一個軟體,而不是不同的開發人員每人裝了一個這樣的軟體,因此被共用的軟體被使用的次數自然也就得到了很大的提高。在提高的同時,軟體自身存在的問題也更容易被發現,因此軟體值得信任的程度也更高。而可信性這一點對於軟體開發的效率提高也起著非常大的作用,根據國內著名PaaS供應商800APP 提供的資訊,雲端運算模式下開發時間可以縮減1/3~1/10。績效與可靠的矛盾關係一直是軟體危機的根源所在,雲端運算在這兩方面同時具有的優勢無疑為緩解軟體危機帶來了希望。
5、不僅僅是數量,我相信軟體的品質、以及使用者的滿意程度也會得到非常大的提高。為什麼這麼說呢?因為在有了雲端服務的情況下,特別是在有平台即服務、軟體即服務的情況下,很多原先在軟體開發的過程中需要開發人員自己動手去寫的底層很瑣碎的代碼現在直接拿來用即可。這顯然就為軟體開發人員爭取了更多的時間來思考如何設計整個架構才能更好地滿足客戶的需求,而不是糾結於無盡的小bug的調試中。同時,由於不再像過去那樣需要開發人員有非常強的調試能力,因此會有更多人能夠勝任開發人員的工作,人手的增加也會提高軟體的開發速度。因此從這個角度也能得出雲端運算加大軟體開的的效率的結論。
6、最後,我還發現,開發商和使用者的二元格局被打破,變成了開發商——雲端運算中心——使用者三元格局。這可能是不多的對於軟體開發商不利的一面。因為大量的計算和服務工作交給了雲端運算中心,使用者所出的酬勞就必然要拿出相當一部分來給雲端運算中心,從而使得開發商的地位下降。因此我想對於開發商來說,最重要的事情是抓住所有雲端運算中心提供的便利因素,盡最大可能提高開發速度,從而在和以前相同的時間內能夠完成更多的項目。當然,這樣有可能反而加大了開發人員的壓力和負擔,因此如何把握這一尺度,在我看來是一個相當困難,值得好好研究的點。
四、小結
我們現在可以知道,在雲端運算的影響下,軟體開發的效率、品質都會有很大的提高。但所有的失誤都有兩面性,雲端運算也會打破原先的兩極格局,使得開發商對其是一種“愛恨交織”的想法。不過,我想傳統的軟體工程開發流程中,雖然很多步驟的實現都會比原先方便很多,但大的步驟還是那些,並沒有因為雲端運算的出現而有哪一步消失,因此我認為雲端運算不會成為打倒傳統軟體工程的“銀彈”。
參考文獻:
史傑,謝麗君,史少華.《論雲端運算對軟體工程的影響》.昆明學院學報,2011,33(6):67-68
李未《雲端運算與軟體開發變革》2013年03月19日
算對於傳統軟體工程的影響