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

2022-09-01 22:48:31 字數 3244 閱讀 1354

既然我們要討論這個問題,那就先要明確兩個概念「雲計算」,「傳統軟體工程」和乙個「影響作用」。

首先是「傳統軟體工程」,通過查閱資料,對傳統軟體工程的基本印象如下:

傳統軟體工程採用的一是結構化泛型,基本階段按順序如下:需求階段、規格說明階段、設計階段、實現階段、整合階段、維護階段、退役等,這是一種適用於**量適中的傳統軟體開發方式。與其相對的是物件導向的軟體工程方法,相比於前者,它解決了結構化方法在軟體規模越變越大時遭遇的維護困難缺陷,並提高了軟體的復用性。

好,差不多明確了傳統軟體工程之後,接下來的重點就要面對「雲計算」這個新概念了:

「雲計算是基於網際網路的相關服務的增加、使用和交付模式,通常涉及通過網際網路來提供動態易擴充套件且經常是虛擬化的資源。」

然後雲計算當前的定義也多到不勝列舉,其中廣泛為人接受的一種是美國國家標準與技術研究院(nist)定義:

「雲計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網路訪問, 進入可配置的計算資源共享池(資源包括網路,伺服器,儲存,應用軟體,服務),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務**商進行很少的互動。」

這些定義無疑是全面的、明確的,然而如果要為初次接觸雲計算的人(比如筆者)所理解的話,比較理想的定義就像這樣:

假設我是乙個準地主,我有自己的私有土地,土地需要耕種,我需要僱傭一些奴隸來幹活,正常情況下,乙個土豪地主是買好多奴隸,一直為自己工作,那麼這些奴隸就是該地主的人力資源,然而我是準地主,我土地並不是那麼多,我只是在收穫時節缺乏勞動力,那麼我就不能再購買奴隸了,不然平時還得管吃管住,好了,那我怎麼辦呢?假設同村還有個大土豪地主王老五,他有很多個奴隸(多的不行),那麼我就可以和老王商量商量:「哎,能不能在這兩天農忙的時候借我些苦力啊,我這忙不過來啊,你放心好了,忙完付給你錢!」,然後老王爽快的答應了。這其中,奴隸是地主的私人資源,我和老王的人際關係就是可互動的網路訪問,這些計算資源,哦不,勞力資源是可以被快速提供的(找個主管領過來就行了),投入很少的管理工作與服務商進行很少互動(我假設這群苦力有個頭頭,我跟他說你把你這班人管好,我中午給你加雞腿或者我直接告訴老王,您把您的人調教好,下次我表哥託人帶的臘肉一定給您送過來),這樣這個過程模式就是所謂的雲計算(雲苦力)了。

讓我們再回過頭來審視一下前面的定義,是不是好像有點感覺了?接下來我們繼續從各個方面開始討論「雲計算」帶給傳統軟體工程的變革和影響。

既然我們已經用上了「雲計算」,那麼相比於以前「內部軟體開發小組」式的傳統軟體工程,軟體的開放性得到了前所未有的提高,這樣軟體構件的復用性也隨之提高,成熟的體系,設計構件以及**,在分布式的計算模式下,可以被不同的「雲下」開發者所使用,甚至是不同的軟體開發團隊之間。繼續借用前面的例子,我臨時借用的奴隸本來就具有成熟的耕作技術,我不必再花費額外的精力去教這些人如何耕作,或者是這個奴隸這次在我這裡幹活學會了如何護養花園,那麼下次別的準地主向王老五租用勞力時,也不必再去教花園護養。

上面提到物件導向軟體工程方法,其中的物件是乙個抽象的概念,結構化范型中資料和方法是獨立開來的,而在物件導向方法中,它將把資料和方法結合起來,封裝在一起,所以從一開始人們在分析階段就可以將物件提取出來,在設計階段進行對比,從而進行程式實現,它的階段之間的變化比結構化設計要平緩,從而減少了錯誤的數量。通俗的講,比如我還是那個準地主,我想擴大一下家族產業,我要養豬,從結構化的視角來看,首先需求和目標是什麼?我要養豬。好開始設計,我要在哪養,和誰養,養什麼豬,怎麼養等,設計完畢動手吧。而物件導向不同,在分析階段它需要進行物件提取,先建立乙個養豬事業的物件,資源需要有什麼?種豬,技術,裝置,市場。方法呢?構造方法:種豬引進,從哪引、引哪種、引多少…… 培養方法:……等等。然後開始實現。返回來看,結構化與物件導向相比之下,階段之間的跳躍性比較大,容易偏離或者錯誤。而且物件是將方法資料封裝在一起,更適合成熟構件的設計,這將更能增加構件的復用性,比如我把養豬事業分成構件,可以出這麼幾本書《種豬選擇指南》《養豬的關鍵技術》《如何把握豬肉市場》……等等,這樣其他人可以復用前人已有的經驗,減少時間花費。

乙個軟體團隊在開發的過程中,專案所需的資源,比如開發人員,裝置,資料等都是動態變化的,那麼在「雲計算」中,這種動態性更為顯著,因為系統是分布式的,對於資源的控制要比傳統方式上更為複雜一些,首先是同步問題,並行性固然是乙個優點,而相對而言的同步問題也需要投入更多的精力。就好比我在大山里鑽出乙個隧道,如果從一頭開始打,那麼我需要勘測好路線一直打就好,而如果從兩頭同時前進,那麼對準確度的要求就特別高,而在軟體專案中,往往不止從兩頭開始。另一方面是人員資源的流動,通常說乙個程式設計師走了,需要兩個程式設計師去頂替他的位置,而在已經大眾化的雲計算中,人員的流動可能比較頻繁,因此需要利用網路互動,降低學習的門檻,讓大家快速熟悉起專案來。

你這個準地主帶著一群勞力劃了一塊地皮說,你要在這建乙個堡壘,以防附近山上的強盜土匪劫掠財物,有哪位地主參與嗎,各位地主王老五,劉老六等人聞訊也帶了一撥人加入,結果越乾越大,附近十里八鄉的鄉紳土豪都來插一腳,人際關係網愈來愈大,最後把附近山上的強盜都氣跑了。在雲計算模式裡,同樣原來的單個團隊,總體控制的形式已經不適用了,在各個不同的組織合作下,整個工程的向前發展是並行性的,社會上任何乙個團隊都能加入合作,這就是開發組織的社會化。

假設你是地主家的主管,為了地主家族的發展和自己的未來,你提出需要承包乙個超大塊的土地,你申請地主說,我要一千個奴隸,地主一定劈頭蓋臉訓斥你一頓:這麼多人住哪吃哪,吃住都把我弄窮了。這可怎麼辦呢,你腦瓜一拍,這不是有鄉里的村民嗎,只要你付給村民一定的工錢作為勞務,白天他們在地里幹活晚上回自己家睡覺這不是一舉兩得嗎,所以本來對於地主來說可以作為勞動力只有歸屬於自己的奴隸,這下勞力大眾化了,既解決的問題,又減輕了人員集中的負擔,只有有序的管理他們,分配好任務,目的就達到了。開發中呢,因為雲計算網路訪問,所以可以有更多開發人員遠端參與進來,大家坐在自己家裡就把活幹了,領導不愁提供吃住,工作者也省的兩頭跑了。

什麼是資源部署的虛擬化呢,在雲計算的定義裡,我們提到它提供了可配置的計算資源共享池,而描述這種共享資源就需要用到虛擬化的計量方式,如果你需要跑乙個程式計算某個東西,需要用到遠端的cpu資源,假設我們用一台主機或者乙個核來描述,可能對大型計算複雜的任務有用,如果是乙個小型任務,分配給他乙個主機,可能有剩餘的計算資源,本著資源利用率最大化和節省預算的原則,我們是能用多少買多少,所以我可以用另外的衡量方式,比如按小時計量工作量,這樣對遠端來說,可能並不知道自己正在使用的計算資源在現實中是幾個主機幾個cpu,但工作量已經被清楚地表示了出來。因此,對於「雲計算」,首先是計算資源的虛擬化和雲計算的彈性伸縮能力,即允許使用者按需購買,用多少購多少。

初識雲計算,由於現在缺乏實際的專案經驗,也只能空泛的談談了,有了經驗之後再做修正,以上用通俗的語言表達了一下我所理解的「雲計算」,正所謂知之為知之,不知為不知,我也就不想寫一些連我自己也不懂的概念了。也希望各位看官大牛不吝賜教。

stephen, r, schach. 物件導向與傳統軟體工程[m]. 北京:機械工業出版社, 2003.

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

那麼,雲計算又指的是什麼呢?雲計算是一種基於網際網路的計算方式,通過這種方式,共享的軟體 硬體資源和資訊都可以按照需求提供給計算機以及其他的裝置,是基於網際網路的相關服務的增加 使用和交付模式,通常涉及通過網際網路來提供動態易擴充套件且經常是虛擬化的資源。其實,對於雲計算的定義有很多種,而在現階段被...

黃祖敏 seo對傳統行業的影響

對於大部分公司來講,seo目的是為公司帶來流量和品牌。乙個傳統行業如今,就是當今對搜尋引擎的重視程度,往往比線下推廣更加關注,進行了搜尋引擎優化得到了第一位往往比沒有進行優化的傳統行業要吃香。網際網路時代已經如病毒式傳播著全球,生活中的一些問題通過搜尋引擎找尋答案,以及購房買車都會利用互連網上的資訊...

軟體工程(1) 雲課堂

經過基本modularity also called separation of concerns 設計的 模組化的思想和命令列選單的實現範例 開源社群中常見的寫法 基本模組化的寫法 設計中的一些常見方法 kiss keep it stupid using design to frame the c...