国产精品福利自产拍在线观看,国产原创中文无码精品视频,岛国av无码精品一区二区三区,人人妻妻人人

軟件開發(fā):敏捷開發(fā)模式,無論是產(chǎn)品還是運營都要懂(敏捷軟件開發(fā) 原則、模式與實踐)

本文筆者將從軟件工程的角度來聊一聊敏捷開發(fā)模式,會涉及瀑布,V字、RUP、迭代、螺旋等開發(fā)模型,同時重點分享下敏捷模式的核心思想。

軟件開發(fā):敏捷開發(fā)模式,無論是產(chǎn)品還是運營都要懂(敏捷軟件開發(fā) 原則、模式與實踐)

文章分兩部分:

  1. 通過舉例和對標其他行業(yè),聊聊軟件開發(fā)模型的發(fā)展演進。
  2. 聊聊敏捷的核心思想。

敏捷開發(fā)是互聯(lián)網(wǎng)界比較流行的軟件開發(fā)模式,產(chǎn)品、技術(shù)、項目管理、運營、美術(shù)和測試等各崗位對其理解后都大有益處,運用得當可以事半功倍。現(xiàn)在信息爆炸、良莠不齊,網(wǎng)上很多講敏捷的文章,Scrum詞意沒理解到位。去年看了敏捷革命的原版《Scrum:The Art of Doing Twice the Work in Half the Time》,結(jié)合大學(xué)所學(xué)的軟件工程聊一聊這個話題,here we go~

第一部分

瀑布模型

先上定義:瀑布模型是將軟件生存周期的各項活動規(guī)定,為按固定順序而連接的若干階段工作軟件概念,主要分為:需求分析、架構(gòu)設(shè)計、詳細設(shè)計、實現(xiàn)、單元測試、集成部署、系統(tǒng)測試、運營維護。

瀑布模型要求每一個階段都有明確的文檔產(chǎn)出,對于嚴格的瀑布模型每一個階段都不應(yīng)該重疊。

軟件開發(fā):敏捷開發(fā)模式,無論是產(chǎn)品還是運營都要懂(敏捷軟件開發(fā) 原則、模式與實踐)

為什么會有瀑布模型?

如果一個人接項目,他也許不需要這么麻煩,但規(guī)模稍微大一些,就需要多人協(xié)作,這時候就需要有標準有規(guī)范。

最開始的時候,大家用了建筑工程領(lǐng)域的模型來對標軟件工程。是蓋住宅還是蓋工廠,或是商廈或是辦公樓或是博物館,都需要有嚴謹?shù)慕ㄖO(shè)計圖,水電管道布線甚至裝修方案,才可以開始施工。

瀑布模型就是這個思維,所以瀑布模型對軟件架構(gòu)師的要求很高。在瀑布模型下,如果把開發(fā)軟件作為蓋棟建筑的話,coder只需要“搬磚”就可以了(在敏捷開發(fā)過程中,對研發(fā)團隊人員的要求會較高。瀑布重視流程、文檔,敏捷強調(diào)團隊內(nèi)人員能力,特別是cross-functional,要有跨領(lǐng)域的能力)。

也有人把瀑布模型折疊起來,變成了V字型,目的是每個階段都有要去驗證的東西,看起來是有跡可循的,前后階段是對應(yīng)的。

個人覺得瀑布模型最重要的是給大家樹立了軟件工程的基本觀念:

  1. 前期做足功課很重要;
  2. 編碼只是軟件工程中的一部分。

軟件開發(fā):敏捷開發(fā)模式,無論是產(chǎn)品還是運營都要懂(敏捷軟件開發(fā) 原則、模式與實踐)

V字模型

瀑布模型有什么問題?

慢慢大家發(fā)現(xiàn):瀑布模型有很多限制和問題,最主要的是不能擁抱變化

蓋大樓畢竟跟開發(fā)軟件不一樣,軟件的需求往往是不斷變化的,瀑布模型往往會導(dǎo)致牽一發(fā)而動全身,這就導(dǎo)致絕大多數(shù)瀑布模型是延期的,而且出來的東西也不是用戶最初想要的——客戶想要一把瑞士軍刀,最終只出來一把螺絲刀,甚至只是一根小木棍兒。

于是,人們逐漸想辦法克服了這個問題——這就是統(tǒng)一軟件開發(fā)過程(RUP:Rational Unified Process)

統(tǒng)一軟件開發(fā)過程:

RUP是瀑布模型的改進,可以這樣理解,這個模型把軟件開發(fā)過程的類比從建筑行業(yè)改到了汽車行業(yè)。

主要認清了兩點:

  1. 軟件是不斷迭代的;
  2. 軟件應(yīng)該是面向?qū)ο蟮摹?/li>

當然,還有很多其他方面的改進細節(jié),就不展開了。

一個車型可以是系列的,舒適版、技術(shù)版、豪華版,不同年份還不一樣,是不斷迭代更新的。要想造一輛車,團隊可以分頭行動。

簡化一下,比如:要做一個四只腳的木凳,甲可以先去做凳子面,乙去做凳子腿。前提是兩個人定義好怎樣連接(接口),用什么樣的螺絲,多大的孔,在什么位置連接,凳子腿多高等等,也可以有個專門的丙(項目經(jīng)理)去協(xié)調(diào)這些事情。這樣凳子腿可以在這個基礎(chǔ)上自由地涂些花紋,加個皮套,做些鏤空等等。

軟件開發(fā):敏捷開發(fā)模式,無論是產(chǎn)品還是運營都要懂(敏捷軟件開發(fā) 原則、模式與實踐)

改進后的瀑布模型

這個模型已經(jīng)具備了高內(nèi)聚低耦合的思想。但還是有個問題,客戶或領(lǐng)導(dǎo)通常想看到一些進展,也許一輛車從設(shè)計到出廠需要兩年,但每幾個月大家可以看到一些實實在在的東西。

以上面做凳子為例:我們是可以看到凳子腿和凳子面的,也可以想象它們連接起來的樣子。而軟件不一樣,只要各個模塊還沒有效的連接起來,那基本上啥都沒有,特別是對于大多數(shù)沒有計算機知識的人,基本上是一個“黑盒”過程。這個模型同樣面臨著延期超預(yù)算的風險,同時做出來的也不一定是客戶想要的。

隨著互聯(lián)網(wǎng)的發(fā)展,對軟件的變化需求越來越高,就產(chǎn)生了大家最熟悉的迭代模型——inception,elaboration,construction,transition,四個階段形成閉環(huán),不斷循環(huán)往復(fù),其核心理念是軟件是增量開發(fā)的,每次迭代都能看到些進展。敏捷開發(fā)就是在這個生命周期模型下演變而來。

軟件開發(fā):敏捷開發(fā)模式,無論是產(chǎn)品還是運營都要懂(敏捷軟件開發(fā) 原則、模式與實踐)

迭代模型

螺旋模型

接著,就有了螺旋模型,螺旋模型并不是推翻了瀑布和RUP,是一種改進。從某種角度來說,螺旋也是遵循瀑布模型的——每一次螺旋迭代都要有清晰的目標,明確的需求,規(guī)劃實現(xiàn),交付條件等,這個循環(huán)也是迭代模型的迭代周期演變。

比如說要做一輛汽車,我們可以先做一個自行車,再逐漸地在自行車上加個鈴鐺,加上發(fā)動機,變成4個輪子,加個篷,車把變成方向盤……在各方面持續(xù)地螺旋迭代下去,最終會出來一個跟汽車差不多的東西。

這個例子有一些原型法的味道,螺旋模型往往是較大較復(fù)雜的系統(tǒng)使用,目的是減小風險,每一次投入能看到一些東西的產(chǎn)出,希望把整個過程“白盒化”。

軟件開發(fā):敏捷開發(fā)模式,無論是產(chǎn)品還是運營都要懂(敏捷軟件開發(fā) 原則、模式與實踐)

螺旋模型

總結(jié)

以上是關(guān)于軟件工程的三個主要生命周期模型,逐漸地又出現(xiàn)了極限編程、原型開發(fā)、敏捷開發(fā)等模型。

嚴格來講,瀑布模型、迭代模型是生命周期層面的模型(當然,通常也包含了一系列開發(fā)層面的工具集),敏捷開發(fā)是基于迭代模型發(fā)展起來的一整套軟件開發(fā)指導(dǎo)原則。個人觀點是在實際操作中應(yīng)重視指導(dǎo)原則,弱化方法論。

迭代模型在學(xué)術(shù)上很早就有人提出,敏捷開發(fā)的作者之所以能從不同的視角去看待軟件開發(fā),并有獨特的思維和管理方法,這跟他的個人經(jīng)歷有很大關(guān)系,因為他不是做計算機出身,為了理解他的思想,我特意購買了《敏捷革命》的英文原版《Scrum,The Art of Doing Twice the work in Half the Time》來閱讀,下面部分分享其核心觀點。

第二部分

我們可以看看《Scrum》的作者杰夫·薩瑟蘭的經(jīng)歷,他之所以能以全新的視角來認識和理解軟件工程這件事情,很重要的原因在于他不是做這個行業(yè)出身。

作者的經(jīng)歷

杰夫·薩瑟蘭畢業(yè)于著名的西點軍校,他以戰(zhàn)斗機飛行員的身份去參加越南戰(zhàn)爭,在他的隊伍里50%的飛行員會被擊落,一些會被營救,一些再也回不來。在這個環(huán)境里他構(gòu)建了自己的行動模型——即OODA(Observe,Orient,Decide,Act)執(zhí)行任務(wù)的每時每刻都在重復(fù)著這個循環(huán),猶豫就會死。這個行為模式在他的著作里能感受到已經(jīng)深入骨髓。

參加完越南戰(zhàn)爭后,他去斯坦福進修了統(tǒng)計學(xué)碩士學(xué)位。后來邊在空軍學(xué)院做數(shù)學(xué)教授,邊讀了一個生物統(tǒng)計學(xué)博士,研究細胞、癌癥相關(guān)的一些東西,學(xué)習了系統(tǒng)論方面的東西。

在研究細胞的時候,他會不斷考慮一個問題:whether the new state is better than the old one——現(xiàn)在這個狀態(tài)是不是比上一個好?!睹艚莞锩吩闹卸啻翁岬絪tate這個詞,這也是作者非常重要的一種思考方式。

其離開大學(xué)的第一份工作是做美國的ATM,這個時候他把自己在戰(zhàn)爭和研究細胞中的方法應(yīng)用于IT領(lǐng)域,后通過大量實踐(其中有為FBI構(gòu)建犯罪嫌疑人數(shù)據(jù)庫,著作中的重要案例)逐步總結(jié)發(fā)展出了敏捷模型理論。

另外,Scrum不是作者的首創(chuàng),作者是根據(jù)日本兩個教授的理論發(fā)展總結(jié)而來。在學(xué)術(shù)界,日本的兩個教授質(zhì)疑瀑布,他們認為:最好的團隊應(yīng)該像打橄欖球一樣,球在隊伍中間穿梭,隊伍整體快速向目標移動(這才是Scrum想要表達的意思),日本的大企業(yè)最開始用這種指導(dǎo)思想(細算一下正是日本IT大發(fā)展的時代)。

理論早就有了,但很少有美國人這樣去實踐,作者為了理解日本人的Scrum思想,練習了多年合氣道,并用合氣道來類比Scrum,并再次用到了“state”思維方式來解釋。

說到Scrum,我們來聊聊cross-functional。

橄欖球大家可能不熟,我們來聊聊籃球:

球隊里最吃香的是哪種人,當然是那種什么位置都能打且都打得好的,俗稱萬金油。勒布朗·詹姆斯號稱可以從1號位打到5號位,這種人可以體會到在各個位置的人的“不容易”,從而更有利于團隊發(fā)展。奧尼爾給人籃下巨無霸的印象,但其實他有靈活的運球技巧和出色的娛樂表演天賦,這些綜合到一起才成為球迷心中大鯊魚的人設(shè)。

NBA里那些最受人崇拜的頂級后衛(wèi),基本都會多種絕學(xué),喬丹科比韋德等人,控球、得分、突破、搶板、分球等各項技能均能登堂入室,有些方面甚至前無古人。有一項技能特別突出基本就可以獨步武林,但想成為頂級選手,一定是cross-functional的。

而作為球隊老板,希望在有限的資源下,盡可能多地把這種選手招致麾下,才有可能對拉里·奧布萊恩杯發(fā)起沖擊。勇士的“死亡五小”更是將這種理念發(fā)揮到了極致,場上隊員幾乎都能快攻、投籃和搶板。

回頭來看,軟件開發(fā)也是,cross-functional是對團隊人員素質(zhì)要求的提高,正所謂不會寫代碼的產(chǎn)品不是好美術(shù)。軟件開發(fā)也是個跨兵種共同協(xié)作的同時不斷面臨變化的事情,從這個角度來看,跟打籃球和橄欖球是相同的,還記得NBA賽場上暫停時大家是怎么解決問題的么?

結(jié)合上面說的場景“球在隊伍中間穿梭,隊伍整體快速向目標移動”,這是Scrum中非常重要的理念。

敏捷作者的一些核心觀點(為保原汁原味,摘抄部分原文):

傳統(tǒng)的瀑布模型其實是由一大堆圖表構(gòu)成,作者表達了對圖表的一些觀點:

“Planning is useful.Blindly following Plans is stupid.”——計劃是有用的,但盲目的按計劃走是愚蠢的。這跟作者的從軍經(jīng)歷有關(guān),其執(zhí)行任務(wù)的時候都是隨機應(yīng)變,也應(yīng)了中國的那句老話“計劃沒有變化快”。

“Every project involves discovery of problems and bursts of inspiration,scrum embraces uncertainty and creativity.”——任何一個項目都包含了未發(fā)現(xiàn)的問題以及隨著項目進行的靈感爆發(fā),圖表會限制這些,Scrum“擁抱”這些不確定性和創(chuàng)造性。

“Stop doing what you’re doing,review what you’ve done.”——放下手中的事情,想一想我們在干啥。

作者對“敏捷”的一些觀點:

MVP:“Minimum viable products to get immediate feed back from consumers,rather waiting until a project is finished.”——最小化可行產(chǎn)品Minimum viable products,也簡稱MVP(搜索這個短語會有大量方法論)。用最小化的可行產(chǎn)品來從用戶那里快速獲得回饋,而不是一直等項目完成,就是我們通常說的“小步快跑”。

InspectandAdapt cycle:上面說的OODA行動模型的抽象,“觀察—適應(yīng)”,這兩個過程不斷循環(huán)。

這里面作者提到了一個常用的方法5W2H,在每一個階段(state)都問自己:

What:我們要做的是什么,有什么意義,現(xiàn)在是什么狀態(tài);

Why:我們?yōu)槭裁匆鲞@個,可不可不做,有替代方案么;

When:什么時候做,deadline是什么;

Where:在哪做,哪里要用;

Who:誰來做,誰對此負責;

How:怎么來做,如何配合;

Howmuch:多少、程度,多大開銷,做到什么程度;

敏捷革命可以應(yīng)用在各行各業(yè),作者已經(jīng)在汽車制造、開洗衣店、學(xué)生培訓(xùn)、制造宇宙飛創(chuàng)、婚禮策劃等領(lǐng)域展開實踐。所以說,Scrum模型不只是一套軟件開發(fā)工具集,是具有普世性的價值觀:

“Agile Manifesto,It declared the following values:people over process;products that actually work over documenting what that product is suposed to do;collaborating with customers over negotiating with them;and responding to change over following a plan,Scrum is the framework I built to put those values into practice.There is no methodology.”

這就是敏捷宣言的所有原文,后來被各種媒體放大和解讀,其實它非常簡潔——敏捷宣言,它強調(diào)了以下價值觀:

  • 人重于過程;
  • 產(chǎn)品真正好用重于文檔里的設(shè)計;
  • 跟用戶合作重于跟他們談判;
  • 對變化做回應(yīng)重于按計劃去做;
  • 我建立Scrum模型就是為了把以上價值觀揉進一套工具集以方便更好地實踐,敏捷模型沒有方法論(沒有方法論,沒有方法論,沒有方法論,這是作者的原話啊,啪啪啪打臉有木有)。

總結(jié)

Scrum原著以案例來表達了他對圖表、文檔、對計劃、對團隊、對過程管理的一些觀點,而Scrum正是這一系列價值觀的合集,這才是Scrum的精髓所在。

為了快速實踐和方便理解這些價值觀,作者提供了一些方法,比如:每日立會、sprint、backlog等。

具體方法不贅述了,網(wǎng)上有很多介紹。這些方法都是為了落實上面的觀點:我們處在什么狀態(tài),我們有什么,如何做下個狀態(tài)會比現(xiàn)在的好……

相比于拿過來方法直接使用,理解好上面的觀點再根據(jù)實際情況選擇方法是更有效的思路。

作者:齊齊獸,公眾號:齊齊獸,從技術(shù)轉(zhuǎn)型到產(chǎn)品經(jīng)理,北郵MBA,千萬DAU平臺型產(chǎn)品負責人,擅長社交和棋牌。

本文由@齊齊獸 原創(chuàng)發(fā)布與人人都是產(chǎn)品經(jīng)理,未經(jīng)允許,禁止轉(zhuǎn)載。

題圖來自Unsplash, 基于CC0協(xié)議

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。

(0)
上一篇 2023年4月27日 上午9:39
下一篇 2023年4月27日 上午9:55

相關(guān)推薦