敏捷一詞來源于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-馬?。≧obert C Martin)編寫了軟件開發原則的擴展,即軟件工藝宣言(Software Craftsmanship Manifesto),根據職業行為和掌握程度來指導敏捷軟件開發。
在2011年,敏捷聯盟創建了敏捷實踐指南(2016年更名為"敏捷詞匯")、敏捷實踐、術語和元素工作定義的演化開放式匯編,以及來自敏捷從業者社區的經驗指南。
了解了上面的背景后,我們能看出敏捷中絕大部分是有關于Scrum的,敏捷當中除了Scrum還有很多的一些流派(分支),那到底什么是敏捷開發呢?這個我們要回到2001年,十七名軟件開發人員他們在一起進行了一次聚會,努力去解救程序員這個群體。在這次聚會當中他們提出了敏捷軟件開發宣言。敏捷開發最早確實就是軟件開發,甚至于只是軟件開發行業的總結。針對于軟件開發的宣言下面我們來詳細解讀什么是敏捷軟件開發宣言
敏捷開發相對于傳統的瀑布式開發,有其特點:
迭代式
增量式
價值驅動
迭代或沖刺指的都是固定時間盒(時間段),通常持續一到四周。每個迭代都具有跨職能的團隊,包含了規劃、分析、設計、程序編碼、單元測試和驗收測試所有的活動。在迭代結束時,將工作產品向利益相關者展示。透過上述方式讓整體風險降至最低,并使產品能夠快速適應變化。迭代的方式,可能不會一次增加足夠的功能來保證可立即發布使用,但是目標是在每次迭代結束時,有一個可用的發行版(最小化程序缺點)。因此完整產品的發布或新功能可能需要多次迭代。
迭代更深層次的含義是在固定時間盒內,不斷的重復,重構,改進。
敏捷開發中的每個框架,都提倡將軟件(產品)切分成很多的小塊,來進行增量的開發。即每次只開發其中的一小塊,不斷的累加。通過增量的方式,可以讓客戶(或最終用戶)盡早看到軟件功能,盡早的體驗到部分的應用,以盡早獲取反饋。
這是一句"廢話",正確的"廢話"。每個產品都號稱是有價值的,但是作為開發團隊是否真正問了以下的問題:
這個產品解決的問題是什么
這個問題發生的頻率如何
這個問題客戶(或用戶)現在是怎么解決的
你的產品為客戶帶來了哪些不同的體驗
如果能想清楚以上的問題,并且有清晰的答案,那么你的產品價值自然會體現出來。