敏捷開發的特質

什麼是敏捷開發?

敏捷開發就是在高度協作的環境中,不斷地利用反饋進行自我調整和完善。

紅色的關鍵字也指出了敏捷開發的三個特點:

  • Close Collaboration 高度協作——以人為核心,
  • Adoptation 不斷自我調整和完善——持續整合,循序漸進,
  • Fast Feeback 反饋——迭代開發,儘早反饋。

何為高度協作?

由於大學課程軟體工程的限制,還有一些小公司的實習經歷,曾一度讓我以為瀑布式開發就是最正確的,一葉障目。與敏捷不同,瀑布式開發是以文件為核心的,嚴格遵循預先計劃的需求、分析、設計、編碼、測試的順序,各個環節彼此分離,主要依靠記錄的文件進行溝通,要求寫詳細的文件,但是,任何人在做任何事之前,都不可能預測出所有的可能性,一次性設計完美,所以可想而知,這樣的開發方式,會導致整個專案週期又臭又長,問題不斷,返工不斷,效率低下,嚴重打擊團隊成員的積極性,工作乏味。但是敏捷開發呢,強調以人為核心,各個環節的人面對面交流,使用者也參與其中,客戶協作勝過合同談判,只寫必要的文件,人為可工作的軟體勝過面面具到的文件,團隊中所有人一起工作,不論哪個環節,有問題及時提出,溝通調整,響應變化勝過遵循計劃,所以敏捷開發可以及時發現問題,防患於未然。

 

何為不斷自我調整和完善?

敏捷開發強調開發要持續不斷,只要有人使用這個軟體,開發就沒有真正結束。在《高效程式設計師的45個習慣》中這樣寫道:為什麼要持續開發呢?因為軟體開發是一件複雜的腦力勞動,任何遺留下來的問題,要麼僥倖不會發生意外,要麼使情況變的更糟,慢慢惡化到不可控制。面對這樣的問題,唯一的辦法就是持續地推進和完善專案,把問題扼殺在萌芽狀態。

 

何為反饋?

敏捷開發將冗長的專案週期劃分為一個一個短暫的小週期,每個週期都有一個可交付的產品,一個週期就是一個迭代,每個迭代的成果都要給客戶演示,及時獲得反饋,定期回顧,持續改進,這樣小步開發,及時獲得反饋,就不會出現像瀑布開發一樣到最後交付出使用者不滿意到產品,然後再大動筋骨地改造,耗費成本。

 

敏捷開發的好處是什麼?

從敏捷開發的特點不難看出它的好處,提高開發效率,每一次迭代都能及時獲得使用者的反饋,大方向不容易走錯,步步為營,不用返工,效率必然提升;降低開發成本,不用返工,自然成本降低;提高產品質量,敏捷開發要求團隊成員面對面工作,及時溝通,交流程式碼,共同進步,產品的質量自然高,也不容易出現一個人離開團隊,其他人就無法接受他的工作他的程式碼這樣的事。

 

Scrum和其他領先的敏捷方法

敏捷是一種思維方式,它是一套價值觀和原則。敏捷是一種思考和行動的方式。敏捷就是短週期,迭代和增量交付,快速失敗,獲得反饋,及早向客戶提供業務價值,關於人員,協作和交互。敏捷是一種關於透明度,檢查和適應的心態。但是,敏捷不包含任何角色,事件或工件。這是一種心態。例如,Scrum是敏捷傘下廣泛使用的框架之一,可以幫助您變得更敏捷,但敏捷運動中有更多的框架,如看板,XP,Crystal等等,如圖所示下面:

Scrum敏捷傘

Scrum敏捷傘

Scrum

Scrum是一個框架,人們可以在其中解決複雜的自適應問題,同時高效且創造性地提供具有最高價值的產品。它用於管理軟件項目和產品或應用程序開發。它的重點是適應性產品開發戰略,其中跨職能團隊作為一個單元在2-4週內達成共同目標(Sprint)。它由一系列價值文物角色會議,規則和最佳實踐組成。

 

精益 (Lean)

精益起源於豐田生產系統(TPS),它在20世紀50年代,60年代及以後徹底改變了實物商品的製造。Lean堅持製造業,但也在知識工作中找到了新的應用,幫助所有行業的企業**消除浪費,改進流程,促進創新**。軟件開發是精益方法的自然應用,因為與製造業一樣,它通常遵循一個明確的過程,具有一定的接受條件,並導致有形價值的傳遞。指導精益方法所有實踐的關鍵概念,我們稱之為精益支柱。他們是:

  • 連續的提高
  • 尊重人
  • 輕量級領導

看板 (Kanban)

看板是一種高度可視化的工作流管理方法,在精益團隊中很受歡迎。事實上,83%的精益生產團隊使用看板來可視化並積極管理產品的創建,重點是持續交付,同時不會使開發團隊負擔過重。與Scrum一樣,看板是一個旨在幫助團隊更有效地協同工作的流程。

看板基於3個基本原則:

  • 可視化您今天要做的事情(工作流程):查看彼此上下文中的所有項目可以提供非常豐富的信息
  • 限制正在進行的工作量(WIP):這有助於平衡基於流的方法,因此團隊無法啟動並立即承諾過多的工作
  • 增強流程:當某些內容完成後,積壓中的下一個最高優先級項目將被激活

看板通過定義最佳的團隊工作流程,促進持續協作並鼓勵積極,持續的學習和改進。

 

動態系統開發方法(DSDM)

DSDM是一個由八個原則組成的框架,包括生命週期和產品,角色和職責以及幾種最佳實踐技術。這些支持和支持的理念是儘早提供具有戰略意義的商業利益,以便為組織提供最佳的投資回報(ROI)。

DSDM是一種優先考慮時間表和質量而不是功能的方法,它在一開始就修復了成本,質量和時間,並使用MoSCoW優先級排序方法,將項目分解為四種不同類型的要求:

  • 必須有(M)
  • 應該有(S)
  • 可以有(C)
  • 不會有(W)

支持DSDM Atern的原則有八個[13]。這些原則指導團隊必須採取的態度和他們必須採取的思維方式,以始終如一地提供。

  1. 專注於業務需求
  2. 按時交貨
  3. 合作
  4. 絕不妥協質量
  5. 從堅實的基礎逐步建立起來
  6. 迭代開發
  7. 持續清晰地溝通
  8. 表現出控制力

極限編程 (XP)

最初由Kent Beck描述的極限編程(XP)已經成為最受歡迎和最有爭議的敏捷方法之一。XP是一種快速,持續地提供高質量軟件的規範方法。它旨在提高面對不斷變化的客戶需求的軟件質量和響應能力。它促進了高度的客戶參與,快速的反饋循環,持續的測試,持續的計劃以及密切的團隊合作,以非常頻繁的間隔(通常每1-3週)提供工作軟件。

該方法的名稱來源於傳統軟件工程實踐的有益元素被帶到“極端”水平的想法。例如,代碼審查被認為是一種有益的做法。極端情況下,可以通過結對編程的實踐不斷檢查代碼。

最初的XP方法基於四個簡單的價值觀 - 簡單,溝通,反饋和勇氣。

它還有12個支持實踐:

  • 規劃遊戲
  • 小版本
  • 客戶驗收測試
  • 簡單的設計
  • 配對編程
  • 測試驅動開發
  • 重構
  • 持續集成
  • 集體代碼所有權
  • 編碼標準
  • 隱喻
  • 可持續發展

極限編程

極限編程

特徵驅動開發(FDD)

功能驅動開發(FDD)由Jeff De Luca於1997年在一家大型新加坡銀行的軟件開發項目中開展。它是一個迭代和增量的軟件開發過程,是一種開發軟件的敏捷方法。FDD將許多業界公認的最佳實踐融合為一個有凝聚力的整體。這些實踐是從客戶端值的功能(特性)角度推動的。其主要目的是及時反复提供有形的,有效的軟件。使用FDD的優勢在於,由於“最初設計足夠”(JEDI)的概念,它甚至可以擴展到大型團隊。由於其以功能為中心的流程,它是一個很好的解決方案,可以保持對敏捷,增量和固有復雜項目的控制。它由五個基本活動組成:

  1. 開發整體模型
  2. 構建功能列表
  3. 按功能規劃
  4. 按功能設計
  5. 按功能構建。

特徵驅動開發(FDD)

特徵驅動開發(FDD)

每個項目都有自己獨特的模型,這將產生一個功能列表。最後三個活動是短迭代過程,其構建時間不超過兩週。如果它需要兩週以上,那麼它將被分解為更小的功能。

水晶 (Crystal)

水晶方法是由Alistair Cockburn在20世紀90年代中期開發的一系列方法(Crystal系列)。這些方法來自Cockburn多年的學習和團隊採訪。Cockburn的研究表明,他採訪的團隊並沒有遵循正式的方法,但他們仍然提供了成功的項目。Crystal家族是Cockburn對他們所做的事情進行編目的方式,這些項目使項目取得成功。水晶方法主要關注:

  • 相互作用
  • 社區
  • 技能
  • 人才
  • 通訊

敏捷宣言

“敏捷”一詞是在2001年的敏捷宣言中創造的。該宣言旨在建立指導更好的軟件開發方法的原則。敏捷宣言由4個重要的價值觀組成。閱讀敏捷宣言的方式不是右側的物品不再具有價值,而是敏捷運動更重視左側的物品。

敏捷宣言

敏捷宣言

那麼讓我們來看看敏捷宣言的第一行。這條線表明,我們重視人,他們的互動,溝通和協作,而不是擁有各種廣泛的流程和工具。當然,流程和工具很有價值,但是,如果它們實際上支持人們一起工作並提供優質產品,那麼它們就更有價值。我們現在在很多組織中看到的是,流程和工具本身就是目標。從敏捷的角度來看,我們對此有不同的看法。流程和工具應該支持人們共同合作並為客戶創造價值。

敏捷宣言原則

作為敏捷宣言的補充,敏捷聯盟還定義了一套12項基本原則,除了敏捷宣言之外,還提供了指導和更詳細的解釋:

敏捷宣言原則

敏捷宣言原則

  1. 我們的首要任務是通過儘早和持續交付有價值的軟件來滿足客戶。
  2. 歡迎不斷變化的要求,甚至是開發後期。敏捷流程利用變化來實現客戶的競爭優勢。
  3. 經常提供工作軟件,從幾周到幾個月,優先考慮更短的時間尺度。
  4. 業務人員和開發人員必須在整個項目中每天一起工作。
  5. 圍繞有動力的個人建立項目。為他們提供所需的環境和支持,並相信他們能夠完成工作。
  6. 向開發團隊內部和內部傳達信息的最有效和最有效的方法是面對面交談。
  7. 工作軟件是進步的主要衡量標準。
  8. 敏捷過程促進可持續發展。
  9. 贊助商,開發者和用戶應該能夠無限期地保持穩定的步伐。
  10. 持續關注技術卓越和良好的設計可提高靈活性。
  11. 簡單性 - 最大化未完成工作量的藝術 - 至關重要。
  12. 最好的架構,要求和設計來自自組織團隊。團隊定期反思如何變得更有效,然後相應地調整和調整其行為。

摘要

敏捷開發是軟件開發行業的一個流行詞,它是管理軟件開發項目的另一種方式。它不是特定的軟件開發方法,而是基於敏捷宣言中表達的價值觀和原則的一套方法和實踐的總稱。解決方案通過自組織,跨職能團隊之間的協作發展,利用適合其背景的實踐。

 

References

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章