敏捷開發——網際網路時代的軟體開發方式

cornerstone發表於2019-11-13
前言:

敏捷開發是一種以人為核心、迭代、循序漸進的開發方法。在敏捷開發中,軟體專案的構建被切分成多個子專案,各個子專案的成果都經過測試,具備整合和可執行的特徵。換言之,就是把一個大專案分為多個相互聯絡,但也可獨立執行的小專案,並分別完成,在此過程中軟體一直處於可使用狀態。

當前,似乎每個公司每個人都在踐行敏捷。這主要歸功於敏捷能夠適應變化並整合客戶反饋的特質。 現代社會這兩者是非常重要的,因為技術在不斷地革新,且人們獲取資訊的方式越來越容易——包括公開的客戶反饋。


快速響應並將客戶反饋納入產品和流程,要求自組織團隊不斷調整工作的內容以提高效率。團隊可以進行定期調整以滿足每天出現的新需求。在專案規劃方面,這種波動環境可能會使事情變得棘手:因為幾乎不存在明確的截止期限和可預期的交付成果。


正因為敏捷開發的這種不斷迭代升級的開發模式,使得其更加適合當今瞬息萬變的網際網路,可以說是網際網路時代的軟體開發方式。因此,如果踐行敏捷的基礎正在快速變化,那麼在不斷迭代專案的同時,敏捷中如何定義完成?我們如何知道已經真正完成了任務?這是一個有趣的問題。在回答這個問題之前,讓我們先了解關於敏捷及其方法論。


一、在敏捷中如何完成工作


簡單來說,在專案管理中,敏捷用迭代方法來規劃和指導專案過程,這將鼓勵變革。這種方法與傳統的專案管理方法(如瀑布式)截然相反,因為瀑布式設定了嚴格的流程和結構。


敏捷是為短時間內進行衝刺(sprint)的小團隊設定的過程,可以幫助團隊在專案中快速響應變化。小組在衝刺前後定期碰面,根據專案變化調整工作方式。


通過敏捷框架,團隊才可能打造客戶需要的產品,而不是閉門造車,交付不符合市場需求和趨勢的產品。有了敏捷模式,在專案過程中,團隊可隨時根據需要進行調整工作,從而找到更好的路徑去開發合適的產品。這將使得組織更具競爭力,但當存在無窮盡的功能更新和其他修復任務時,我們也很難界定某些任務是否可以標記為已經完成。


https://i.iter01.com/images/c1c67b1e46987f016df65b3343e8d2f6e1b5a761ebd94b6978b1efffbd74ebd3.png

(圖為CORNERSTONE需求管理頁面)


二、敏捷中完成的定義


瞭解了相關背景後,讓我們來回答前面的問題,即如何確定我們是否完成了敏捷任務。其中一種答案認為在完成衝刺後,敏捷任務即可視為完成。衝刺通常是專案過程中持續時間較短的任務,通常為一天、幾天,但最長不會超過一個月。衝刺完成之後,團隊開會並回顧已完成的工作、需要調整的地方和未來的行動規劃。計劃依然存在,但已經被調整以符合實際工作情況。


完成迭代


理論上,每完成一次迭代就意味著專案的完結。但事實並非總是如此。一旦出現了必須解決的問題,專案就必須快速對這些變更做出響應。因此,我們不建議在每個衝刺(sprint)後釋出產品。但需要確保在sprint階段完成各個功能,以便追蹤專案的進度。


因此,完成工作意味著產品的各項功能得到充分地開發、測試、設計並得到產品負責人的認可。只有這樣才可算完成。敏捷中有很多“完成”,但如果有任何存疑之處,sprint就沒有真正完成,因此也不應交付。


在產品真正完成和交付之前,每個功能是否完工都需要取決於其他功能的完成情況。這就意味著需要整體的完成。但每個sprint都應該在結束是完成某個特定功能。這就意味著如有必要,該功能在sprint結束時可以單獨交付。


https://i.iter01.com/images/61ede4e9218d899a06389b3513ed444b6ec00897d656b448abddb89f1a170fdb.png
https://i.iter01.com/images/0112bd9d337fdf86d19a745665f7b05beb3b0deb6fc723058ec901d4b8981e0e.png

(圖為CORNERSTONE迭代資訊頁面)


團隊差異


但每個團隊都有自己專屬的完成定義,這從另一方面說明所有的使用者故事標準已經得到認可。但無論這個定義是什麼,它要能提高工作質量,並在使用者故事完成時進行評估。


在軟體開發方面,完成指的是某些內容按照標準進行了編碼,經過了審查、實施、測試、整合和記錄。在服務支援方面,指的是使用者故事的每個任務都已經完成,產品所有者對其進行了稽核,並確定所交付產品滿足了需求。


在敏捷中,完成意味著團隊知道需要交付什麼,並且按要求進行了交付。完成是一種確保透明的手段,能夠確保工作的質量符合產品要求和組織目的。


三、完成的定義是否會變化?


敏捷這種至關重要的管理方法可以在各類框架中執行,包括 Scrum、極限程式設計、自適應軟體開發、DSDM、特性驅動開發、看板水晶方法等。


這些流程是可在敏捷框架內工作的方法,但它們具備不同的方法和功能,可以適用於不同型別的專案併發揮最佳的成效。具體哪一種更好可能需要取決於具體專案的情況。但這並不意味著每個專案只能選擇一種方法。綜合運用一個或多個方法,可能更適合專案的需求。敏捷之所以廣受歡迎,也恰好是因為其靈活性及過程的多樣性。儘管敏捷包含不同型別的程式,它們都遵循了同樣的完成定義。


https://i.iter01.com/images/08871dbddf63fcd908365dd2bb4aa577663022f76ae84f1d37cd76e872695a13.png

(圖為Scrum敏捷開發流程)


四、完成的原則是不變的


2001年釋出的《敏捷宣言》宣告了敏捷的誕生。宣言的發表是為了迴應傳統的軟體開發管理方法,它概述了每個敏捷框架中存在的基本概念。敏捷宣言強調的四個核心價值是:


  • 個體和互動高於流程和工具

  • 工作的軟體高於詳盡的文件

  • 客戶合作高於合同談判

  • 響應變化高於遵循計劃


敏捷軟體開發還提出了12條原則。這些原則充分體現了我們對任務或專案何時真正完成的理解:


https://i.iter01.com/images/14e59077cd34463299800e45b799d8cbe99cae3a7d738827a7bc89ef67c0783c.png
(圖為敏捷開發之12條敏捷原則
)


五、軟體開發之外的敏捷


雖然敏捷誕生於軟體開發,但目前已經應用於更廣泛的商業領域。敏捷、精益和組織學習的想法概念已經超越了軟體開發的小圈子,其他行業也開始採用站立會、優先順序和視覺化管理。


https://i.iter01.com/images/876c64d8f8446575a9277c63527f2f662de28685b8bb7f4f0bb72804aa4908a0.png

(圖為CORNERSTONE視覺化任務看板)


敏捷從不僅是作為IT專案管理的工具,它還可以改變其他企業的管理流程,使用敏捷思想來改變管理專案就是一個非常好的例子。


敏捷某些方面的特徵,如待辦事項等,可以在企業專案中使用並將成為最終交付專案的部分功能和特徵。專案中的衝刺或短期專案,能充分發揮敏捷的快速和高適應性優勢。敏捷的另外一種應用是跨職能團隊的構建,這能大大提高溝通效率。且持續整合還將有助於提高專案不同版塊之間的透明度,從而提高工作效率。此外,還有資訊發射源、迭代、增量開發、Scrum會議、時間盒、用例、使用者故事等等,所有這些都能夠幫助公司用與傳統瀑布開發不同的方法完成工作。


為了獲得在敏捷環境中工作所需的透明度和協作,我們需要運用正確的工具,確保每個人都知道完成的定義。CORNERSTONE提供專業的敏捷開發模板工具,包括任務/需求/測試管理、迭代規劃、缺陷追蹤、報表統計、團隊協作、WIKI、共享檔案和日曆等功能模組,完美匹配整個敏捷開發流程,20人以下團隊可免費使用,點選即可免費註冊CORNERSTONE


https://i.iter01.com/images/31ee0cca06d2cc092ad7bc911a8d208b324cd87c91b21823995a13211a099c1a.png

相關文章