目錄
什麼是敏捷
Agile(敏捷)來源於敏捷宣言,宣言明確指出,“敏捷”:
- 不是一種方法論
- 也不是開發軟件的具體方法
- 更不是一個框架或者過程
“敏捷”是一套價值觀(理念)和原則,幫助團隊在軟件開發過程中更好地做出決策。
什麼是敏捷開發
簡而言之就是遵循了“敏捷”這一開發原則的開發方法,敏捷並不意味着一味強調速度,而是輕量和高效。
百度百科是這樣說的:敏捷開發以用戶的需求進化爲核心,採用迭代、循序漸進的方法進行軟件開發。在敏捷開發中,軟件項目在構建初期被切分成多個子項目,各個子項目的成果都經過測試,具備可視、可集成和可運行使用的特徵。換言之,就是把一個大項目分爲多個相互聯繫,但也可獨立運行的小項目,並分別完成,在此過程中軟件一直處於可使用狀態。
敏捷開發流程如下:
敏捷宣言
- 個體和互動 高於 流程和工具
- 工作的軟件 高於 詳盡的文檔
- 客戶合作 高於 合同談判
- 響應變化 高於 遵循計劃
注:這並不意味摒棄了右邊的原則,而是應該更加註重左邊的原則。
敏捷宣言12條原則
- 最重要的是通過儘早和不斷交付有價值的軟件滿足客戶需要。
- 我們歡迎需求的變化,即使在開發後期。敏捷過程能夠駕馭變化,保持客戶的競爭優勢。
- 經常交付可以工作的軟件,從幾星期到幾個月,交付時間尺度越短越好。
- 業務人員和開發者應該在整個項目過程中始終朝夕在一起工作。
- 圍繞鬥志高昂的人進行軟件開發,給開發者提供適宜的環境,滿足他們的需要,並相信他們能夠完成任務。
- 在開發小組中最有效率也最有效果的信息傳達方式是面對面的交談。
- 可以工作的軟件是進度的主要度量標準。
- 敏捷過程提倡可持續開發。出資人、開發人員和用戶應該總是維持不變的節奏。
- 對卓越技術與良好設計的不斷追求將有助於提高敏捷性。
- 簡單——儘可能減少工作量的藝術至關重要。
- 最好的架構、需求和設計都源自自我組織的團隊。
- 每隔一定時間,團隊都要總結如何更有效率,然後相應地調整自己的行爲。
比如就“簡單”和“儘早交付”而言:
當我們在構建某個功能時,發現其可能會需要數據庫支持,一般情況下我們會去構建數據庫併爲其編碼,然而敏捷認爲:爲這個功能構建數據庫就意味着要浪費很多時間,軟件就不得不延遲交付給客戶,如果能找到一種替代的簡單方法完成該功能,那就更符合我的敏捷原則。
但是敏捷原則並不是讓我們盲目模仿,應當結合實際情況和敏捷的價值理念做出正確決策。比如scrum可能倡導小組會議站着開,但是如果結合實際情況也可以完全選擇適合自己的方式開會,坐着更高效就坐着,切記盲目模仿一些成功的敏捷案例。
敏捷開發的優勢
相比於瀑布模型:
瀑布模型開發
- 客人到餐館來點菜(新項目)
- 不確定客戶想喫什麼的時候,通常選好餐廳後會先看看餐廳的菜單(客戶往往提不出具體的需求)
- 根據圖文菜單,客人點了十個菜(根據原型和設計稿,基本確定了需求)
- 後廚開始準備(項目啓動)
- 根據客人的下單配菜,炒菜(基本上不會主動去了解完整需求)
- 半個小時了,菜還沒上桌,客人餓極了(項目啓動後很長一段時間客戶什麼都看不到)
- 再過了二十分鐘,十個菜都一起上來了(項目最終一次交付)
- 客人說,有幾個菜挺好的,但是有個菜味道淡了,有兩個不夠辣,還有兩盤重複了想換掉(我是買單的,我要變需求)
- 這時候大堂經理來了,說,“味道淡了可以加鹽,不辣可以加辣,但是換菜不行,已經炒好的那兩盤菜也是要算成本的”(瀑布的壞處,需求變更比較麻煩)
- 於是,後廚只給客戶加了鹽,加了辣
- 客人喫完,不是很滿意,下次不來了(沒有滿足需求)
敏捷開發
- 客人到餐館來點菜(新項目)
- 不確定客戶想喫什麼的時候,通常選好餐廳後會先看看餐廳的菜單(客戶往往提不出具體的需求)
- 根據圖文菜單,客人點了是個菜(根據原型和設計稿,基本確定了需求)
- 後廚開始準備(項目啓動)
- 配菜、炒菜,先上了兩盤,讓客人嚐了嚐味道(先提供可用實例給客戶用)
- 客人說還不錯,後廚繼續準備後面的菜,陸續上菜(不斷迭代,不斷測試)
- 上菜過程中,客人突然發現有個菜的味道太淡了,讓後廚加了點鹽又端上來了(敏捷的好處,可以不斷測試和需求變更)
- 又上了兩盤,不夠辣,又拿到後廚加了辣(敏捷的壞處,需求沒有提前明確,反覆迭代,增加了工作量)
- 到最後兩盤時,客人要求換兩個菜,還好沒炒(迭代的好處,隨時接受需求變更)
- 客人喫完,很滿意(基本滿足了全部的要求)
總結:在理解了“敏捷”的價值和原則後,將其帶入到軟件開發過程中做出正確的決策,就是所謂的敏捷開發了。
參考:
- https://www.cnblogs.com/itbuyixiaogong/p/9056918.html
- https://baike.baidu.com/item/%E6%95%8F%E6%8D%B7%E5%BC%80%E5%8F%91/5618867?fr=aladdin#8
- https://zhuanlan.zhihu.com/p/33472102
- https://www.bilibili.com/video/av22511095/?spm_id_from=333.788.videocard.0