敏捷開發流程

Agile——敏捷開發,做爲CMM神話崩潰後被引入的一套新的軟件開發模式,這幾年來被普遍引發關注,並被寄予厚望。

敏捷開發宣言
個體和交互 賽過 過程和工具
能夠工做的軟件 賽過 面面俱到的文檔
客戶合做 賽過 合同談判
響應變化 賽過 遵循計劃

以上的宣言比較抽象,基於該理念,如下是ThoughtsWork諮詢公司的推崇的n個敏捷開發實踐:編程


Iteration
迭代開發。能夠工做的軟件賽過面面俱到的文檔。所以,敏捷開發提倡將一個完整的軟件版本劃分爲多個迭代,每一個迭代實現不一樣的特性。重大的、優先級高的特性優先實現,風險高的特性優先實現。在項目的早期就將軟件的原型開發出來,並基於這個原型在後續的迭代不斷晚上。迭代開發的好處是:儘早編碼,儘早暴露項目的技術風險。儘早使客戶見到可運行的軟件,並提出優化意見。能夠分階段提前向不一樣的客戶交付可用的版本。架構


IterationPlanningMeeting
迭代計劃會議。每一個迭代啓動時,召集整個開發團隊,召開迭代計劃會議,全部的團隊成員暢所欲言,明確迭代的開發任務,解答疑惑。工具


Story Card/Story Wall/Feature List
在每一個迭代中,架構師負責將全部的特性分解成多個Story Card。每一個Story能夠視爲一個獨立的特性。每一個Story應該能夠在最多1個星期內完成開發,交付提早測試(Pre-Test)。當一個迭代中的全部Story開發完畢之後,測試組再進行完整的測試。在整個測試過程當中(pre-test,test),基於Daily build,測試組永遠都是天天從配置庫上取下最新編譯的版本進行測試,開發人員也隨時修改測試人員提交的問題單,併合入配置庫。
敏捷開發的一個特色是開放式辦公,充分溝通,包括測試人員也和開發人員一塊兒辦公。基於Story Card的開發方式,團隊會在開放式辦公區域放置一塊白板,上面粘貼着全部的Story Card,按當前的開發狀態貼在4個區域中,分別是:未開發,開發中,預測試中,測試中。Story Card的開發人員和測試人員根據開發進度在Story Wall上移動Story Card,更新Story Card的狀態。這種方式能夠對項目開發進度有一個很是直觀的瞭解。
在開發人員開始開發一個Story時,ta須要找來對應的測試人員講解Story功能,以便測試人員有一致的理解,同時開始自動化系統測試腳本的開發。單元測試


Standup Meeting
站立會議。天天早上,全部的團隊成員圍在Story Wall周圍,開一個高效率的會議,一般不超過15分鐘,彙報開發進展,提出問題,但不浪費全部人的時間馬上解決問題,而是會後個別溝通解決。測試


Pair Programming
結對編程是指兩個開發人員結對編碼。結對編程的好處是:通過兩我的討論後編寫的代碼比一我的獨立完成會更加的完善,一些大的方向不至於出現誤差,一些細節也能夠被充分考慮到。一個有經驗的開發人員和一個新手結對編程,能夠促進新手的成長,保證軟件開發的質量。優化


CI/Daily Build
持續集成和每日構建能力是否足夠強大是迭代開發是否成功的一個重要基礎。基於每日構建。開發人員天天將編寫/修改的代碼及時的更新到配置庫中,自動化編譯程序天天至少一次自動從配置庫上取下代碼,執行自動化代碼靜態檢查(如PCLint),單元測試,編譯版本,安裝,系統測試,動態檢查(如Purify)。以上這些自動化任務執行完畢後,會輸出報告,自動發送郵件給團隊成員。若是其中存在着任何的問題,相關責任人應該及時的修改。
能夠看到,整個開發組頻繁的更新代碼,出現一些問題不可避免。經過測試部又在不停地基於最新的代碼進行測試。新增的問題是否可以被及時發現並消滅掉,取決於自動化單元測試和系統測試能力是否足夠強大,特別是自動化系統測試能力。若是自動化測試只能驗證最簡單的操做,則新合入代碼的隱患將很難被發現,並遺留到項目後期,造成大的風險。而實際上,提高自動化測試的覆蓋率是最困難的。ui


Retrospect
總結和反思。每一個迭代結束之後,項目組成員召開總結會議,總結好的實踐和教訓,並落實到後續的開發中。編碼


ShowCase
演示。每一個Story開發完成之後,開發人員叫上測試人員,演示軟件功能,以便測試人員充分理解軟件功能。spa


Refactoring
重構。由於迭代開發模式在項目早期就開發出可運行的軟件原型,一開始開發出來的代碼和架構不多是最優的、面面俱到的,所以在後續的Story開發中,須要對代碼和架構進行持續的重構。迭代開發對架構師要求很高。由於架構師要將一個完整的版本拆分紅多個迭代,每一個跌倒由拆分紅不少Story,從架構的角度看,這些Story必須在是有很強的繼承性,是能夠不斷疊加的,不至於後續開發的Story徹底推翻了早期開發的代碼和架構,同時也不可避免的須要對代碼進行不斷完善,不斷重構。繼承


TDD
測試驅動開發。正如上面講的,迭代開發的特色是頻繁合入代碼,頻繁發佈版本。測試驅動開發是保證合入代碼正常運行且不會在後期被破壞的重要手段。這裏的測試主要指單元測試。

相關文章
相關標籤/搜索