什麼是敏捷開發

2021-02-23 敏捷家

已經有很多介紹什麼是敏捷開發的文章了,為什麼還要寫一篇呢。我最近也在思考中,主要有2個原因:

現在找到的文章,介紹敏捷開發非常簡短,不夠詳細

甚至有一些文章,沒有介紹出敏捷的本質

作為一名 Scrum培訓師(CST),有必要為大家澄清一下什麼是敏捷開發。

敏捷開發調查

介紹敏捷之前,先了解一下背景。這是一份敏捷開發2020年問卷調查結果。在這份報告中,我們可以看出:

Scrum仍然是大趨勢,SAFe也得到了更廣泛的應用(Bob認為SAFe雖然解決了問題,但也帶來了更多的問題,持有保留態度)。

更多詳情,可以點擊查看問卷調查。

什麼是敏捷開發

敏捷一詞來源於2001年初美國猶他州雪鳥滑雪聖地的一次敏捷方法發起者和實踐者(他們發起組成了敏捷聯盟)的聚會。

迭代和增量式軟體開發方法可以追溯到1957年。進化式項目管理和適應性軟體開發出現在1970年代初期。在1990年代,因針對重量級的軟體開發方法的批評,而發展了許多輕量化的軟體開發方法、項目與細微化開發管理。包含了,從1991年開始的快速應用程式開發(RAD)、從1994年開始的統一進程與動態系統開發法(DSDM)、從1995年的Scrum、從1996年的水晶清透法(Crystal Clear)與極限編程法(eXtreme Programming)、1997年的功能驅動開發(Feature Driven Development)。雖然那些開發法都起源于敏捷開發宣言之前,但都統稱為敏捷軟體開發法。在此同時,製造業與航空業也遭遇相同變化。

在2001年,十七名軟體開發人員在猶他州的雪鳥度假村會面,討論這些輕量級的開發方法,並由Jeff Sutherland,Ken Schwaber和Alistair Cockburn發起,一同發布了"敏捷軟體開發宣言"。

在2005年,由Alistair Cockburn和Jim Highsmith領導的小組編寫了一份項目管理原則的附錄,即"相互依存聲明",以便根據敏捷軟體開發方法來指導軟體項目管理。

在2009年,羅伯特-C-馬丁(Robert C Martin)編寫了軟體開發原則的擴展,即軟體工藝宣言(Software Craftsmanship Manifesto),根據職業行為和掌握程度來指導敏捷軟體開發。

在2011年,敏捷聯盟創建了敏捷實踐指南(2016年更名為"敏捷詞彙")、敏捷實踐、術語和元素工作定義的演化開放式彙編,以及來自敏捷從業者社區的經驗指南。

了解了上面的背景後,我們能看出敏捷中絕大部分是有關於Scrum的,敏捷當中除了Scrum還有很多的一些流派(分支),那到底什麼是敏捷開發呢?這個我們要回到2001年,十七名軟體開發人員他們在一起進行了一次聚會,努力去解救程式設計師這個群體。在這次聚會當中他們提出了敏捷軟體開發宣言。敏捷開發最早確實就是軟體開發,甚至於只是軟體開發行業的總結。針對於軟體開發的宣言下面我們來詳細解讀什麼是敏捷軟體開發宣言

敏捷開發的特點

敏捷開發相對於傳統的瀑布式開發,有其特點:

迭代開發 - 敏捷開發的特點

迭代或衝刺指的都是固定時間盒(時間段),通常持續一到四周。每個迭代都具有跨職能的團隊,包含了規劃、分析、設計、程序編碼、單元測試和驗收測試所有的活動。在迭代結束時,將工作產品向利益相關者展示。透過上述方式讓整體風險降至最低,並使產品能夠快速適應變化。迭代的方式,可能不會一次增加足夠的功能來保證可立即發布使用,但是目標是在每次迭代結束時,有一個可用的發行版(最小化程序缺點)。因此完整產品的發布或新功能可能需要多次迭代。

迭代更深層次的含義是在固定時間盒內,不斷的重複,重構,改進。

增量開發 - 敏捷開發的特點

敏捷開發中的每個框架,都提倡將軟體(產品)切分成很多的小塊,來進行增量的開發。即每次只開發其中的一小塊,不斷的累加。通過增量的方式,可以讓客戶(或最終用戶)儘早看到軟體功能,儘早的體驗到部分的應用,以儘早獲取反饋。

價值驅動 - 敏捷開發的特點

這是一句"廢話",正確的"廢話"。每個產品都號稱是有價值的,但是作為開發團隊是否真正問了以下的問題:

這個產品解決的問題是什麼

這個問題發生的頻率如何

這個問題客戶(或用戶)現在是怎麼解決的

你的產品為客戶帶來了哪些不同的體驗

如果能想清楚以上的問題,並且有清晰的答案,那麼你的產品價值自然會體現出來。

敏捷軟體開發宣言

我們一直在實踐中探尋更好的軟體開發方法,身體力行的同時也幫助他人,由此我們建立了如下價值觀:

個體和互動高於 流程和工具 工作的軟體高於 詳盡的文檔 客戶合作 高於 合同談判 響應變化 高於 遵循計劃

也就是說儘管右項有其價值,我們更重視左項的價值

個人和交互:自我組織和動機是重要的,像坐在一起辦公和結對編程開發,這樣的模式中的溝通是重要的。創建一個良好的溝通和協作的開發團隊,優於一個孤立運行的專家團隊。溝通是一個基本的概念。

工作的軟體:工作軟體比在會議中向客戶呈現文檔更有用並更受歡迎。最好的做法是和代碼一起評審,保持外部文檔的輕量化,而不是沉重的文檔,後者需要花費很大的精力,且很快就會過時。

客戶合作:在軟體開發周期的初始階段,需求無法完全收集,所以最好直接涉及到付費客戶、最終用戶或者代理,以便在反饋的基礎上逐步闡述和調整詳細的需求。

響應變化:敏捷軟體開發方法的重點是快速響應變化和持續改進。

一些軟體開發者組織了敏捷聯盟,為非營利組織,根據宣言的價值觀和原則促進軟體開發。吉姆-海史密斯(Jim Highsmith)代表敏捷聯盟(Agile Alliance)介紹宣言:

"敏捷運動並不是反方法論,實際上我們很多人都想恢復對方法論的可信度。我們想恢復平衡。我們接受建模,但不是為了在塵土飛揚的企業存儲庫中提交一些圖表。我們擁抱文檔,而不是數百頁從未維護和很少使用的文檔。我們計劃,但要認識到動蕩環境下的規劃極限。那些將XP或SCRUM或者其他敏捷方法的支持者稱為"黑客"的人對於黑客術語的方法和原始定義都是無知的。"

敏捷宣言遵循的原則

我們遵循以下原則:

我們最重要的目標,是通過持續不斷地及早交付有價值的軟體使客戶滿意。

欣然面對需求變化,即使在開發後期也一樣。為了客戶的競爭優勢,敏捷過程掌控變化。

經常地交付可工作的軟體,相隔幾星期或一兩個月,傾向於採取較短的周期。

業務人員和開發人員必須相互合作,項目中的每一天都不例外。

激發個體的鬥志,以他們為核心搭建項目。提供所需的環境和支援,輔以信任,從而達成目標。

不論團隊內外,傳遞信息效果最好效率也最高的方式是面對面的交談。

可工作的軟體是進度的首要度量標準。

敏捷過程倡導可持續開發。責任人、開發人員和用戶要能夠共同維持其步調穩定延續。

堅持不懈地追求技術卓越和良好設計,敏捷能力由此增強。

以簡潔為本,它是極力減少不必要工作量的藝術。

最好的架構、需求和設計出自自組織團隊。

團隊定期地反思如何能提高成效,並依此調整自身的舉止表現。

敏捷軟體開發框架

敏捷軟體開發框架最常見的是 Scrum,極限編程和看板,但除此以外還有很多框架(有人叫它們是方法,但方法並不能很好的描述了最初的設計和想法。框架 vs. 方法)。有的專注於實踐(例如,極限編程、敏捷建模),而有的專注於管理工作流程(例如Scrum,看板),有的支持需求規範和開發(例如FDD)的活動,而另一些則試圖涵蓋整個開發生命周期(例如DSDM,RUP)。

常見敏捷軟體開發框架包括(但不限於):

敏捷建模

動態系統開發法(DSDM)

極限編程(XP)

特性驅動開發(FDD)

精益軟體開發

看板

Scrum

更多的敏捷軟體開發框架(方法)

敏捷的精髓

在2020年我曾經寫過一篇重溫Scrum精髓 - Scrum的核心到底是什麼,在這篇文章中我重點提出了3個要點:

Scrum精髓 Part1 - 解決客戶問題

Scrum精髓 Part2 - 關係

Scrum精髓 Part3 - 反思

查看具體詳情

更加廣泛意義的敏捷開發

敏捷宣言的提出已經有20年了,隨著時間的推移敏捷遠遠不止在軟體開發領域進行應用。比如敏捷宣言除了最初版本之外,還有:

Manifesto for Agile HR Development

Agile Marketing Manifesto

Manifesto for Agile Hardware

在如此廣泛的領域中應用敏捷,敏捷的含義也發生了一些變化。而其最根本的2點不變:

持續學習

持續學習,終身學習。中國有句古話,"活到老,學到老"說的就是這個道理。

持續改進

持續改進,日語中有一個對應的詞是 Kaizen。它的含義不是改進1次,10次,100次,而是針對一個流程一個方法改進至少1000次。仔細體會一下這個改進的含義。

針對于敏捷開發,你還有什麼疑問嗎?歡迎留言。

參考資料

敏捷軟體開發維基百科

敏捷軟體開發宣言

敏捷宣言遵循的原則

Scrum聯盟

Agile聯盟

Agile123

相關焦點

  • 什麼是敏捷開發?一分鐘讓你了解敏捷開發的精髓!
    」一詞,想必大家都不陌生,不過對有些人來說,可能也就是書上見過或者聽說過,事實上,「敏捷開發」並不是一門技術或者工具,而只是一個軟體開發方法,也可以說是思想。那麼,究竟什麼是敏捷開發?敏捷開發是一套軟體開發的價值和原則,倡導演進式開發,提早交付,持續改進,鼓勵對變化做出快速靈活的反應。很多人可能會有這樣一個誤區,即敏捷開發就是快速,越快越好,加班加點寫代碼、趕進度等,而實際卻並非如此,對于敏捷,我們可看作是輕量級、高效。
  • 什麼是敏捷開發?
    需求批量地在一起進行設計,然後是批量地開發,批量地測試、交付等等。批量有什麼問題? 首先,批量讓價值交付延遲,所有需求在最後的階段才能交付,價值交付比較晚。Google執行董事長施密特提出過反摩爾定律,表述為:「如果18個月之後我們只能賣出跟今天一樣的東西,我們就只能得到一半的收入。」
  • JIRA與敏捷:李小龍教給我們的敏捷開發之道
    ChrisMountford:李小龍教給我的敏捷開發之道敏捷開發目前在國內已經從前幾年的「奢侈品」變成了隨處可見的「日用品」,很多企業和開發團隊都在談論和實施敏捷,但不可否認,「偽敏捷」依然廣泛存在,這源於相當多的一部分開發團隊還不清楚敏捷為何物、其本質是什麼、為什麼要實施敏捷開發等
  • 如何實現敏捷軟體開發?
    敏捷開發究竟是什麼?通俗地講,他就是將項目分為多個獨立運行,但又存在聯繫地小項目,通過分別完成實現快速開發。整體來看,它的優勢就是高效!在軟體工程領域,有過很多軟體開發模型,如瀑布模型、快速原型模型、增量模型、螺旋模型、演化模型、噴泉模型、RAD模型、敏捷軟體開發模型、XP極端模型。
  • 敏捷開發超強指南
    編輯導語:敏捷開發以用戶的需求進化為核心,採用迭代、循序漸進的方法進行軟體開發,也是如今很流行的軟體開發方法,但是你真的知道什麼是敏捷開發嗎?本文作者分享了關于敏捷開發的流程以及團隊內部的敏捷分享,我們一起來看一下。
  • 開發方法:深入理解敏捷開發的常見誤區
    即使到了開發的後期,也歡迎改變需求。敏捷過程利用變化來為客戶創造競爭優勢。  經常性地交付可以工作的軟體,交付的間隔可以從幾個星期到幾個月,交付的時間間隔越短越好。  在整個項目開發期間,業務人員和開發人員必須天天都在一起工作。  圍繞被激勵起來的個體來構建項目。給他們提供所需的環境和支持,並且信任他們能夠完成工作。
  • 應用敏捷開發的 5 個好理由
    最近一個問題,是我在我的一個「敏捷研討會」碰到的第一個問題:「也就是說,敏捷是行業的潮流嗎?」。當時房間裡面擠滿了人,這些人都是需要強制去實施「敏捷」但是卻都還不知道「敏捷」具體意味著什麼的人。 他們參加研討會的原因只是因為管理者強制他們參加,還有些人因為他們渴望知道『敏捷「這一到處都使用的詞彙到底時候什麼意思。
  • Scrum:兼顧計劃與靈活的敏捷開發
    每日站會(Daily Stand-up Meeting)團隊每天進行溝通的內部短會,因一般只有15分鐘且站立進行而得名,Team成員通常會在會議上講述如下3點內容:1) 昨天我做了什麼2) 今天我計劃要做什麼3) 我遇到了什麼問題,妨礙了我儘可能有效地工作Scrum
  • 復盤:服務于敏捷開發的項目文檔
    最近完成了一個敏捷開發團隊使用的項目文檔的產品,來復盤一下。項目文檔是什麼?項目文檔,一個管理項目中產生的文檔的在線文件管理軟體。項目是由需求產生來的,有了需求就方便進行需求分析,業務對象設定,功能拆解等工作步驟,以來指導和記錄整個項目運行的過程。
  • 漫畫:三分鐘了解敏捷開發
    什麼是敏捷開發?敏捷開發(Agile)是一種以人為核心、迭代、循序漸進的開發方法。在敏捷開發中,軟體項目的構建被切分成多個子項目,各個子項目的成果都經過測試,具備集成和可運行的特徵。簡單地來說,敏捷開發並不追求前期完美的設計、完美編碼,而是力求在很短的周期內開發出產品的核心功能,儘早發布出可用的版本。然後在後續的生產周期內,按照新需求不斷迭代升級,完善產品。這一切正如某人的名言:
  • 敏捷項目管理軟體,迅速找到最適合你的敏捷開發的管理工具
    2020-12-28 14:22:31 來源: 小仙 舉報   敏捷開發的管理工具
  • 敏捷開發,是心頭的硃砂痣還是牆上的蚊子血?
    當我拿到敏捷的命題,腦海中浮現出的第一個念頭便是如此。傳統開發團隊花一場2-3萬的價格請敏捷教練做著培訓,真正的敏捷團隊則會搖搖頭說:敏捷開發,其實一點也不「敏捷」。敏捷開發不是開發方法敏捷開發誕生的標誌,是2001年2月,由Martin Fowler,Jim Highsmith等17位軟體開發專家起草的敏捷宣言發表,敏捷聯盟成立。從這個配圖,這個形式,你想到了什麼?
  • 應用軟體的「敏捷開發」模式:從小米MIUI談起
    小米CEO雷軍曾表示,MIUI採用了敏捷開發(agile develolment)的模式,因此可以在短時間內完成開發,實現軟體快速迭代。用戶對MIUI這一ROM的質量或許見仁見智,不過,什麼是「敏捷開發」?作為一種相對新穎的產品開發模式,敏捷開發這一概念提出於2001年2月。
  • 什麼是敏捷項目管理
    首先了解下什麼是敏捷項目管理敏捷技術萌芽的產生已經有很長一段時間,最早可以回溯至1930年代沃爾特·休哈特在項目質量方面的計劃-執行-學習-行動(PDSA)方法。2001年,一組軟體和項目專家聚在一起討論他們項目成功的相通之處。
  • 軟體開發:敏捷開發模式,無論是產品還是運營都要懂
    本文筆者將從軟體工程的角度來聊一聊敏捷開發模式,會涉及瀑布,V字、RUP、迭代、螺旋等開發模型,同時重點分享下敏捷模式的核心思想。文章分兩部分:通過舉例和對標其他行業,聊聊軟體開發模型的發展演進。聊聊敏捷的核心思想。
  • 作為產品經理,如何主導團隊敏捷開發?
    敏捷的概念在網際網路公司越來越流行開來,一些傳統的大型公司也逐步地向敏捷轉型,甚至在產品經理面試的時候,面試官最常詢問的就是你參與過敏捷開發團隊麼?作為一個產品經理,如果你現在還不了解敏捷是什麼,可能幾乎無法融入團隊的工作。但是當我們打算閱讀一些敏捷相關的材料時,卻總是被一些拗口的翻譯詞彙搞得很不明所以。
  • 敏捷開發三次迭代(Iteration Three)
    三次迭代(Iteration Three)是敏捷項目開發管理周期中的一個階段,到達這個階段時,項目已經成功的在某些問題上調整過2
  • 落地敏捷開發的12個建議,打造自定義開發管理模式!
    敏捷開發提到的相關原則,敏捷開發模式應用到實際開發過程中,實施起來或多或少與理論存在差異。所謂理論結合實際,作為開發人員或者開發組織來說,不可完全照搬。敏捷開發實施背景敏捷開發模式,總體來說適合迭代演進的產品項目。
  • 實例解析:敏捷開發項目管理五步走
    這篇文章講產品經理如何進行高效的敏捷開發項目管理。一、背景交代背景,利用公司原有的項目管理方式,產品無法按時上線,產品質量難以保障。老闆決定把項目管理交由產品經理主導,務必保證後續產品的質量並按時上線。
  • 七個垂手可得的敏捷開發工具
    1.Jira/Jira AgileJIRA是Atlassian公司出品的項目與事務跟蹤工具,被廣泛應用於缺陷跟蹤、客戶服務、需求收集、流程審批、任務跟蹤、項目跟蹤和敏捷管理等工作領域。不論在本地還是在雲中,TFS均可支持靈活的開發實踐、 多個IDE和平臺,並為您提供有效管理整個IT生命周期的軟體開發項目所需的工具。