敏捷不是指某一種具體的方法論、過程或框架,而是一組價值觀和原則。符合敏捷價值觀和原則的開發方法包括:極限編程(XP),Scrum,精益軟件開發(Lean Software Development),動態系統開發方法(DSDM),特徵驅動開發(Feature Driver Development),水晶開發(Crystal Clear)等等。在軟件工業界,敏捷開發已成爲衆多高效開發團隊的制勝之道。在全球一百強的企業中,敏捷開發也已大行其道,受到許多資深項目管理者和開發人員的推崇。到2008年,歐美軟件企業中,有近半企業已採用敏捷方法進行開發。中國的外企,外包公司和許多知名企業也都開始採用了敏捷方法。例如,騰訊內部幾乎全部的開發團隊都在實施敏捷。敏捷方法給這些企業也已帶來了巨大的收益。編程
全部符合敏捷價值觀和原則的開發方法都具備如下共同特徵:架構
1. 迭代式開發。即整個開發過程被分爲幾個迭代週期,每一個迭代週期是一個定長或不定長的時間塊每一個迭代週期持續的時間通常較短,一般爲一到六週。框架
2. 增量交付。產品是在每一個迭代週期結束時被逐步交付使用,而不是在整個開發過程結束的時候一次性交付使用。每次交付的都是能夠被部署到用戶應用環境中被用戶使用的、能給用戶帶來即時效益和價值的產品。工具
3. 開發團隊和用戶反饋推進產品開發。敏捷開發方法主張用戶可以全程參與到整個開發過程當中。這使需求變化和用戶反饋能被動態管理並及時集成到產品中。同時,團隊對於用戶的需求也能及時提供反饋意見。測試
4. 持續集成。新的功能或需求變化老是儘量頻繁地被整合到產品中。一些項目是在每一個迭代週期結束的時候集成, 有些項目則天天都在這麼作。優化
5. 開發團隊自我管理。擁有一個積極的、自我管理的、具有自由交流風格的開發團隊,是每一個敏捷項目必不可少的條件。人是敏捷開發的核心。敏捷開發老是以人爲中心創建開發的過程和機制,而非把過程和機制強加給人。網站
2001年2月11日到13日,17位軟件開發領域的領軍人物彙集在美國猶他州的滑雪勝地雪鳥(Snowbird)雪場。通過兩天的討論,「敏捷」(Agile)這個詞爲全體參會者所接受,用以歸納一套全新的軟件開發價值觀。這套價值觀核心是如下幾點:個體和交互 重於 過程和工具、可用的軟件 重於 完備的文檔、客戶協做 重於 合同談判、響應變化 重於 遵循計劃。在每對比對中,後者並不是全無價值,但咱們更看重前者。lua
在敏捷開發中,咱們遵循如下的十二條準則:spa
用戶故事是從用戶的角度來描述用戶渴望獲得的功能。一個好的用戶故事包括三個要素:設計
1. 角色:誰要使用這個功能。
2. 活動:須要完成什麼樣的功能。
3. 商業價值:爲何須要這個功能,這個功能帶來什麼樣的價值。
用戶故事一般按照以下的格式來表達:
英文: As a , I want to , so that .
中文:做爲一個<角色>, 我想要<活動>, 以便於<商業價值>。
舉例:做爲一個「網站管理員」,我想要「統計天天有多少人訪問了個人網站」,以便於「個人贊助商瞭解個人網站會給他們帶來什麼收益。」須要注意的是用戶故事不可以使用技術語言來描述,要使用用戶能夠理解的業務語言來描述。(說白了就是不要有技術人員的通病,專業術語一大堆,用大白話或者舉一個生活中的例子描述最好。)
關於用戶故事,Ron Jeffries用3個C來闡釋它:
用戶故事的六個特性--INVEST
INVEST == Independent, Negotiable, Valuable, Estimable, Small, Testable。一個好的用戶故事應該遵循INVEST原則。
參考資料: