什么是敏捷開發

大家好,我是IT修真院上海分院第4期的學員,一枚正直純潔善良的PM

今天給大家介紹一下什么是敏捷開發。

目錄:

1.幾種開發方法

1.1瀑布式開發

1.2迭代式開發

1.3螺旋式開發

2.敏捷開發

2.1 敏捷開發的誕生

2.2敏捷開發宣言

2.3 敏捷開發

3.敏捷開發方法

3.1 Scrum

3.1.1 什么是scrum

3.1.2 Scrum 框架結構

3.2其他開發方法介紹

4.敏捷管理工具

4.1禪道

5.實例:修真院敏捷開發流程

6.討論

7.參考文獻、


1.幾種開發方法

1.1瀑布式開發——瀑布模型(Waterfall Model)

1970年溫斯頓·羅伊斯(Winston Royce)提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被廣泛采用的軟件開發模型。

瀑布模型要求軟件開發嚴格按按照需求→分析→設計→編碼→測試的階段進行,每一個階段都可以定義明確的產出物和驗證準則。瀑布模型在每一個階段完成后都可以組織相關的評審和驗證,嚴格的瀑布模型每一個階段都不應該重疊,而應該是在評審通過后才能夠進入到下一個階段。遵循自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。

瀑布模型式是最典型的預見性的方法。

瀑布模型的優點仍然是可以保證整個軟件產品較高的質量,保證缺陷能夠提前的被發現和解決.采用瀑布模型可以保證系統在整體上的充分把握,使系統具備良好的擴展性和可維護性

瀑布式的主要的問題是它的嚴格分級導致的自由度降低,項目早期即作出承諾導致對后期需求的變化難以調整,代價高昂。瀑布式方法在需求不明并且在項目進行過程中可能變化的情況下基本是不可行的。

2.1 迭代式開發

迭代式開發也被稱作迭代增量式開發或迭代進化式開發,是一種與傳統的瀑布式開發相反的軟件開發過程,它彌補了傳統開發方式中的一些弱點,具有更高的成功率和生產率。

在迭代式開發方法中,整個開發工作被組織為一系列的短小的、固定長度(如3周)的小項目,被稱為一系列的迭代。每一次迭代都包括了需求分析、設計、實現與測試。采用這種方法,在需求被完整地確定之前就能啟動開發工作,并在一次迭代中完成系統的一部分功能或業務邏輯的開發工作。再通過客戶的反饋來細化需求,并開始新一輪的迭代。


1.3螺旋開發——螺旋模型(Spiral Model)

螺旋模型是一種演化軟件開發過程模型,它兼顧了快速原型的迭代的特征以及瀑布模型的系統化與嚴格監控。螺旋模型最大的特點在于強調其他模型所忽視的風險分析,螺旋模型很大程度上是一種風險驅動的方法體系,因為在每個階段之前及經常發生的循環之前,都必須首先進行風險評估。。

通常螺旋模型由四個階段組成:制定計劃、風險分析、實施工程和客戶評估。

(1)制定計劃:確定軟件目標,選定實施方案,弄清項目開發的限制條件;

(2)風險分析:分析評估所選方案,考慮如何識別和消除風險;

(3)實施工程:實施軟件開發和驗證;

(4)客戶評估:評價開發工作,提出修正建議,制定下一步計劃。

螺旋模型適用于龐大并且復雜,高風險的項目,需求不明確的情況下,便于風險控制和需求變更。


2.敏捷開發

2.1 敏捷開發的誕生

程序員說,要有敏捷

——于是就有了敏捷。

敏捷這個詞被用的過于泛濫了,大家都在討論它,可以把它視為一種宗教。


美國在計算機行業已經走了幾十年,瀑布流、螺旋模型、快速迭代...各種各樣的軟件開發流程雨后春筍各領風騷一段時間。雖然不斷變化和完善,但互聯網的加速發展讓傳統方法顯得笨重,難以快速適應變化。有十七個程序員(程序員改變世界)在美國猶他州鹽城湖的一個風景區開了個碰頭會,找到了一個團隊耦合度高,流程極其靈活的方法,他們把它稱為敏捷開發(Agile program development)。

2.2 敏捷開發宣言


? 個體和交互重于過程和工具

敏捷方法認為,人是軟件開發中最重要的因素,開發團隊要能做到團結協作,人與人面對面的交流、溝通,是最快速、最有效的途徑。

? 可以工作的軟件重于面面俱到的文檔

文檔的意義在于為程序服務,過多的文檔需要開發人員花費大量的時間去維護,而且還要確保文檔與代碼的實時性,否則就失去了文檔的意義。而問題也就在于,開發人員沒有把時間、精力放到最重要的任務上,能力、資源沒有最大化的發揮效能。敏捷方法認為,文檔應當短小精悍、易于維護,而且主題突出。

? 客戶協作重于合同談判

做過軟件開發的人都知道,客戶對產品的需求是不斷變化的,試圖一開始就規定項目的細節和進度,顯然是不現實的,只有開發團隊和客戶彼此精誠合作,常與溝通,頻繁的客戶反饋,才能促使項目的成功。

? 隨時響應變化重于循規蹈矩

客戶的需求在產品的開發階段是不斷變化的,即使談判時確定的需求,也可能會根據某些因素而發生巨大的改變。因此,敏捷方法認為,在制定計劃時應盡可能的簡潔、靈活,以適應技術和需求方面的變動。當然,所有的未知的因素是不可能考慮周全的,這就要求我們在制定計劃時,留出一定的緩沖期,來應對這些未知情況。

? 適應變化

傳統的軟件開發強調的是,足夠清晰的需求,制定詳細的文檔,按照預定的計劃逐一進行開發、測試。這樣的方式在制定好計劃之后拒絕變化,無法應對客戶對需求的實時更改,后續的維護必將會付出巨大的代價。

而敏捷方法則是以最簡的方式來迎接變化,客戶在整個開發過程中都是參與者,開發團隊能夠在最短的時間內得到客戶的反饋,不斷適應需求的變更,從而使得最終的產品能夠充分的符合客戶的要求。

2.3敏捷開發

敏捷開發是一種應對快速變化的需求的一種軟件開發能力。它們的具體名稱、理念、過程、術語都不盡相同,相對于“非敏捷”,更強調程序員團隊與業務專家之間的緊密協作、面對面的溝通(認為比書面的文檔更有效)、頻繁交付新的軟件版本、緊湊而自我組織型的團隊、能夠很好地適應需求變化的代碼編寫和團隊組織方法,也更注重軟件開發過程中人的作用。

敏捷開發以用戶的需求進化為核心,采用迭代、循序漸進的方法進行軟件開發。在敏捷開發中,軟件項目在構建初期被切分成多個子項目,各個子項目的成果都經過測試,具備可視、可集成和可運行使用的特征。換言之,就是把一個大項目分為多個相互聯系,但也可獨立運行的小項目,并分別完成,在此過程中軟件一直處于可使用狀態。

敏捷開發可以說是在迭代開發的基礎上發展形成的,它額外強調了溝通合作、以人為本的思想。敏捷開發的缺陷可能在于團隊不能過大,一般少于20人,且要求成員都是精干,有互相信任的基礎。


3.敏捷開發方法:


3.1 Scrum

3.1.1 什么是scrum

Scrum 是當前最流行的敏捷軟件開發方法論和實施框架。

Scrum 是一種團隊管理工作的方式,其將工作分解為較小的工作單元,并在周期性固定的時間段內持續地交付工作單元

上面描述的周期性固定的時間段,稱為迭代(Iteration)或者沖刺(Sprint)。

上面描述的較小的工作單元,稱為用戶故事(User Story)。

用戶故事可以使用特定的格式來描述,其描述了一個對于客戶有價值的工作,而且可以在一個迭代周期內完成。

3.1.2 Scrum 框架結構

Scrum敏捷開發流程主要包括:三個角色、三個物件和四個會議。

三個角色:

產品經理(Product Owner):主要負責確定產品的功能和達到要求的標準,指定軟件的發布日期和交付的內容,同時有權力接受或拒絕開發團隊的工作成果。

敏捷教練(Scrum Master):主要負責整個Scrum流程在項目中的順利實施和進行,以及清除擋在客戶和開發工作之間的溝通障礙,使得客戶可以直接驅動開發。

開發團隊(Scrum Team):主要負責軟件產品在Scrum規定流程下進行開發工作,人數控制在5~10人左右。

三個物件:

1、product Backlog : 產品Backlog指根據初始需求分解出的任務列表,包括功能性和非功能性的所有功能。

2、Sprint Backlog ,這是一個迭代計劃會議的輸出,包含開發團隊在迭代周期內所要完成的工作列表。 如果說產品backlog是以story為單位,文檔歸屬為PM團隊,那么Sprint Backlog 是以小時(時間)為單位的,文檔歸屬為開發團隊。

3、燃盡圖。

燃盡圖(burn down chart)是在項目完成之前,對需要完成的工作的一種可視化表示。燃盡圖有一個Y軸(工作)和X軸(時間)。理想情況下,該圖表是一個向下的曲線,隨著剩余工作的完成,“燒盡”至零。燃盡圖向項目組成員和企業主提供工作進展的一個公共視圖。(引自百度百科)

scrum基本流程(四個會議):


1.產品負責人負責整理user story,形成左側的product backlog。

2.產品發布計劃會議:product owner負責講解user story,對其進行估算和排序,發布計劃會議的產出就是制定出這一期迭代要完成的story列表,sprint backlog。

3. spring計劃會議:在每個迭代之初,開發團隊和 Product Owner 共同來計劃在迭代周期內要完成的工作。Product Owner 負責向團隊講解要完成的工作的內容,開發團隊負責對工作進行估計。

4.spring每日立會:每天,開發團隊和產品負責人都要進行一個短暫的溝通。團隊成員回答昨天做了什么?今天計劃做什么?遇到了什么問題?

5.spring演示會議:在迭代周期結束時,開發團隊向產品負責人及所有干系人進行演示,并接受反饋。

6.spring回顧會議:在迭代周期結束時,Scrum 團隊通過會議來對迭代的過程進行總結,以促使團隊自我持續改進。


3.2其他開發方法介紹

水晶方法,Crystal ,是由 Alistair Cockburn 和 Jim Highsmith 建立的敏捷方法系列,其目的是發展一種提倡“機動性的”方法,包含具有共性的核心元素,每個都含有獨特的角色、過程模式、工作產品和實踐。Crystal 家族實際上是一組經過證明、對不同類型項目非常有效的敏捷過程,它的發明使得敏捷團隊可以根據其項目和環境選擇最合適的 Crystal 家族成員。

透明水晶方法,適合于一個小團隊來進行敏捷開發,人數在6人以下為宜。

七大體系特征:

?1. 經常交付

任何項目,無論大小、敏捷程度,其最重要的一項體系特征是每過幾個月就向用戶交付已測試的運行代碼。如果你使用了此體系特征,你就會發現,“經常交付”的作用還是很讓人吃驚的。

項目主辦者根據團隊的工作進展獲得重要反饋。用戶有機會發現他們原來的需求是否是他們真正想要的,也有機會將觀察結果反饋到開發當中。開發人員打破未決問題的死結,從而實現對重點的持續關注。團隊得以調整開發和配置的過程,并通過完成這些工作鼓舞團隊的士氣。

? 2.反思改進

在我們的開發中,時常會出現這樣那樣的問題,技術難題、各種煩心事等等,這會在很大的程度上影響項目的進展。而且,如果其他任務對這項任務有依賴的話,那么其他的任務也會被推遲,這就很可能會導致項目的失敗。

換句話說,如果,我們能夠經常在迭代會中及時的反思和改進,那么,這種事情應該是不會發生的,或者說發生了,也能夠很快的找到解決方案去應對它。事實上,從慌亂的日常開發中,抽出一點時間來思考更為行之有效的工作方法就已經足夠了。

? 3.滲透式交流

滲透交流就是信息流向團隊成員的背景聽覺,使得成員就像通過滲透一樣獲取相關信息。這種交流通常都是通過團隊成員在同一間工作室內工作而實現的。若其中一名成員提出問題,工作室內的其他成員可以選擇關注或不關注的態度,可以加入到這個問題的討論當中來,也可以繼續忙自己的工作。

?4. 個人安全

個人安全指的是當您指出困擾您的問題時,您不用擔心受到報復。個人安全非常重要,有了它,團隊可以發現和改正自身的缺點。沒有它,團隊成員們知而不言,缺點則愈發嚴重以致于損害整個團隊。個人安全是邁向信任的第一步。有了信任,團隊協作才能真正的實施,開發效率也就會直線上升的。

?5.焦點

所謂“焦點”,就是確定首先要做什么,然后安排時間,以平和的心態開展工作。確保團隊成員清楚的了解他們自己最重要的任務是什么,確保他們能夠有充分的時間去完成這些任務。

? 6.與專家用戶建立方便的聯系

與專家用戶持續建立方便的聯系能夠給團隊提供:對經常交付進行配置以及測試的地方,關于成品質量的快速反饋,關于設計理念的快速反饋,最新的(用戶)需求。

? 7.配有自動測試、配置管理和經常集成功能的技術環境

自動測試可以為開發人員在代碼修改后就可以進行自動測試,并且能夠發現存在的一些bug,以至開發人員能夠及時的進行修改,對于他們來說,節省了時間,提高了效率,而且還不用為煩人的測試而苦惱。


總結:

基于敏捷指導思想 ,形成了不少敏捷軟件開發方法 (例如XP、scrum、水晶方法等 ),它們大都強調適應性而非預測性、強調以人為中心,而不以流程為中心 ,以及對變化的適應和對人性的關注。

縱觀所有敏捷開發方法,其基本都具備輕載、基于時間、Just Enough、并行并基于構件的迭代和增量的特點 。


4.敏捷管理工具


4.1 禪道

禪道是一款國產專業的研發項目管理軟件,主要管理思想基于國際流行的敏捷項目管理方法—Scrum。

這是修真院里學員使用的項目管理工具,實際操作帶大家了解一下。


5.實例:修真院敏捷開發流程

這里結合修真院敏捷開發PPT講解。

最后再捋一遍:

敏捷開發是一種以人為核心、迭代、循序漸進的開發方法。在敏捷開發中,軟件項目經常被拆分為多個子項目或多個步驟來完成,而一個步驟又稱為一次迭代,在每一次迭代完成之后,都會產生一個可交付的產品。這樣做有效的分解了整個項目的復雜度,便于實現產品交付目標,同時在項目的早起,就能拿出初具雛形的產品。

敏捷開發方法的核心思想概括起來,就是“以人為本”和“適應變化”。

? ? ?自己目前還是學習基礎理論階段,沒有實際項目經驗,講敏捷可能紙上談兵了,大家有什么意見和補充歡迎提出。


6.討論

7.參考文獻

1. 瀑布模型、迭代模型、螺旋模型、敏捷開發、scrum——維基百科

2. 瀑布模型、迭代模型、螺旋模型、敏捷開發、scrum——百度百科。

3. 五種典型開發周期模型(瀑布、V、原型化、螺旋、迭代) - CSDN博客

4. 軟件生命周期的內容以及生命周期模型比較 - CSDN博客

5. 你大概走了假敏捷:認真說說敏捷的實現和問題。——騰訊云,薄玉桴

6. 軟件開發模式對比(瀑布、迭代、螺旋、敏捷) - aparche - 博客園

7. 敏捷開發系列之旅 第四站(透明的Crystal水晶方法) - CSDN博客

8. 敏捷開發中原則與過程的分析與研究——張 孟,同濟大學軟件學院,上海 201804

9. 【創業技術之道】 談談敏捷開發和Scrum——知乎,譚超

8.視頻



undefined_騰訊視頻
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 現在敏捷開發是越來越火了,人人都在談敏捷,人人都在學習Scrum和XP... 為了不落后他人,于是我也開始學習Sc...
    陳云峰閱讀 730評論 0 1
  • 前言 筆者09年的時候在Sybase工作,那時候公司就在內部開始推廣極限編程XP(ExtremeProgrammi...
    monkey01閱讀 4,985評論 0 13
  • 這個詞猛一聽起來感覺很高大上,其實現在已經是主流的團隊開發流程 了。一. 先說一下官方的定義: 敏捷不是指某一種具...
    sweetalin閱讀 1,737評論 0 1
  • 前一段時間我陷入緊張難受的漩渦時,默默問自己怎么了,不停的體會和分析后,了解到緊張的來源。 感覺到內心深處的我,還...
    蔣春紅茉茉含笑閱讀 398評論 0 1
  • 昨晚,和媽媽在網上聊天,她問我有沒有在學校談男朋友,我回答沒有,媽媽說還在等那個兵娃子嗎?我說是啊。媽媽說沒感覺...
    潼潼閱讀 185評論 0 1