引子
在有些公司其實也會使用到敏捷管理,敏捷開發(fā),也就是Scrum,這個在一些外企使用比較多,國內(nèi)公司比較少見,我曾經(jīng)在外企呆過用的就是敏捷方式。那么在這里我們也對其進行了解一下即可,畢竟有時候面試的時候可能會問起你,你也不要一問三不知,知道一些理念概念就可以了。
傳統(tǒng)開發(fā):從設計到編碼,從測試到交付,每個階段都必須完成,才能進入下一個階段。這個是瀑布式開發(fā),他已經(jīng)過時了,這也是傳統(tǒng)工業(yè)的生產(chǎn)模式,在IT互聯(lián)網(wǎng)領(lǐng)域中早已經(jīng)不適用了。
舉個例子,平時去飯店吃飯,我點完菜都是逐個上菜的吧,但是大年夜飯店里吃年夜飯,大多都是套餐,都已經(jīng)做好了,你說要上菜,他就啪啪啪的全部上菜了,他不管你點了10個還是20個菜,都是一次性上的,你就很郁悶啊,就不能分開了,一個一個的上菜嗎,飯桌都放不下。
那么這個例子其實就是傳統(tǒng)開發(fā)模式,他交付的時候是把所有的內(nèi)容全部交付的,其實分開了單獨交付,也是沒問題的。
我們現(xiàn)在做產(chǎn)品,并不是把所有的計劃內(nèi)的功能全部實現(xiàn)以后,才上線的,如果這么做,市場份額就稀釋了,黃花菜都涼了。所以現(xiàn)在做項目都是分迭代期的,一期二期三期這么做下去。每周再分小迭代,修修補補或者做點新功能,逐步迭代,這樣才是最佳的上菜方式。畢竟我們不能一口氣吃成胖子嘛。
敏捷開發(fā)
所以這就引入了敏捷開發(fā)。什么是敏捷開發(fā)呢?如下:
敏捷開發(fā)是以用戶的需求進化為核心的,以人為本,采用迭代、循序漸進的方法進行軟件開發(fā)。在敏捷開發(fā)中,軟件項目在構(gòu)建初期被切分成多個子項目(或者說子業(yè)務,微服務),各個子項目也都需要具備可測試、可集成、可運行的特征,本質(zhì)上就是把一個大項目分為多個相互聯(lián)系,但也可獨立運行的小項目,并且分別單獨完成,在這個過程中軟件一直處于可使用狀態(tài),每個子項目子功能都可以持續(xù)迭代、持續(xù)交付。
通俗點來講,就是敏捷開發(fā)并不是一昧的追求完美的設計、完美的編碼、完美的產(chǎn)品。而是在短期內(nèi),以一個小周期進行開發(fā)產(chǎn)品的核心功能,盡早發(fā)布第一個可用版本,然后再后續(xù)的項目周期中,按照需求再不斷迭代升級,完善產(chǎn)品。這個其實在之前的課程中我們也有提到過,比如最終版鋼鐵俠,他也是一步一步迭代過來的,根據(jù)需求去進化;還有現(xiàn)如今的淘寶,也是從最初期慢慢演變過來的。又或者說架構(gòu),其實本質(zhì)也是慢慢的演變的,并不是一上來做項目就是選用一個高逼格的架構(gòu),越這么做越死得快。
Scrum
那么再來看Scrum,這又是啥意思呢?
我們這么做比喻,我們把敏捷開發(fā)比作MVC模式,那么MVC模式有很多框架呀,比如Struts,springmvc,springboot等,都是,這些都是基于MVC模式的基于這個理念的實現(xiàn)框架,我們要實現(xiàn)MVC模式只需要運用選擇其中一個框架即可。而Scrum就是框架,就是敏捷開發(fā)的一個實現(xiàn),使用這個管理框架就可以了。當然除了Scrum以外,還有極限編程啊等等。當然scrum是最為流行的一種。
Scrum 術(shù)語
Screm中有一些術(shù)語,是需要了解一下的:
- Sprint:沖刺周期,其實就是迭代期,一般來說2-4周,主要看公司的情況。我所經(jīng)歷過的,是1-2周,最快1周,如果任務多,那么就2周,但是不能超過兩周,哪怕分為兩個sprint也可以。
- User Story:用戶的業(yè)務需求。也就是Sprint的目標。比如要開發(fā)購物車,下單,結(jié)算付款功能,這些都是。他是一個用戶行為的整個業(yè)務流程。
- Task:把User Story中的需求拆分為多個任務點,其實就是WBS分解,分解為多個task以后,我們可以分配給不同的團隊成員去執(zhí)行開發(fā)。
- Backlog:需求列表,可以按照需求的優(yōu)先級或者需求的商業(yè)價值排序,往往先實現(xiàn)上層高優(yōu)先級,然后再迭代下層需求列表。每一個需求都可以是一個sprint。
- Daily Meeting:每日站會,每天早上團隊站起來開會,匯總每個人的今日任務,目的是為了更好的監(jiān)控和追蹤項目進度。站著開會是為了更加有效,不要說廢話,提高開會效率。
- Sprint Review Meeting:沖刺評審會議,演示開發(fā)完后的成果。
- Sprint Burn Down:沖刺燃盡圖,查看任務完成的情況,之前在給公司做內(nèi)訓的時候有講過,后面有時間再寫個帖子聊聊。
- Release:發(fā)布,當前的迭代期完成,項目可以發(fā)布一個新版本。
Scrum 流程
以上的流程其實也可以通過如下圖進行匯總:
(圖片來自百度搜索)
如圖中所示,首先產(chǎn)品負責人或者產(chǎn)品經(jīng)理,會整理用戶需求,也就是根據(jù)User Story來設計的,隨后產(chǎn)出產(chǎn)品需求列表,這個時候有很多,我們往往拿出一部分計劃,作為一個迭代期去做,也就是沖刺需求列表,一般來說這個節(jié)點也會有評審會議或者計劃會議,根據(jù)項目計劃去進行沖刺的排期。隨后拿到?jīng)_刺列表以后,這個時候項目經(jīng)理就可以帶著團隊去執(zhí)行了,假設迭代周期為兩周,那么這兩周內(nèi)主要任務就是開發(fā)和測試了。當然每天也會有每日站會,項目經(jīng)理通過項目管理工具或者也可以配合燃盡圖來監(jiān)控任務。當這個迭代節(jié)結(jié)束以后,那么就可以發(fā)布這個迭代期的成果了,當然發(fā)布前后,我們也需要進行沖刺評審會議和回顧會議。那么這一整個就是scrum的執(zhí)行流程。
Scrum 場景
使用Scrum一般來說我們可以用一個大的磁性畫板,把任務進行綜合監(jiān)控(我們采用的是磨砂玻璃面板,在團隊辦公的最前面,每天進公司就能看到 )。第一欄可以寫上任務的狀態(tài),一般來說可以有:
- 待開發(fā)
- 開發(fā)中
- 待測試
- 測試中
- 完成
- 可以根據(jù)實際情況進行分類擴展都是可以的。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。