敏捷開發的落地實踐
敏捷開發是一種面臨迅速變化的需求快速開發的能力,非常適合需求變化頻繁的產品研發,可以快速的響應需求的變更并擁抱這種變化。很多人認為敏捷開發只是開發團隊走敏捷的模式,這是一個誤區,實行敏捷開發不僅要求開發的敏捷,也要求測試的敏捷,需求分析的敏捷,即整個軟件產品的研發過程都需要敏捷起來,才能真正意義上實現敏捷。敏捷開發模式的介紹已經有很多,大多停留在理論層面,本文從實踐的角度,從需求規劃,產品開發,產品測試三個維度,介紹軟件產品研發過程如何走敏捷開發的模式。
名稱 |
優先級 |
工作量估算 (小時) |
描述 |
備注 |
????????存款 | ??? 10 | ???????? 5 | 登錄,打開存款界面,存入10元,轉到我的賬戶余額界面,檢查我的余額增加了10元。 | 需要UML順序圖,目前需要考慮加密的問題。 |
??? 查看交易明細 | ??? 8 | ???????? 8 | 登錄,點擊“交易”,存入一筆款項,返回交易頁面,看到新的存款顯示在頁面上。 | 使用分頁技術避免大規模的數據庫查詢,和查看用戶列表的設計相似。 |
通常都把backlog存放在共享的Excel文檔里面,以便團隊成員都可以隨時查看。一般來說這個文檔歸產品經理維護,但也并不把其他團隊成員排斥在外。開發人員和測試人員常常要查閱這個文檔或者修改工作量估算。需要注意的是,描述Backlog的時候只需說明要達到什么結果即可,而不能說如何去達到。
產品的敏捷開發
需求Backlog清單都列出來了之后,開發人員需要根據排定的需求優先級,從需求池當中選出需求排到當前的迭代中,直到所有需求的估算工作量加起來達到迭代周期的工作量為止,一般會留一小部分時間來做為緩沖。開發人員集體估算每個需求的工作量并維護到上述的Backlog列表中,這些都是在敏捷的迭代計劃會上完成的。通常一個迭代的開始都是通過計劃會議來開始的。
接下來是確定Backlog是否還需要拆分,即判定是否可以在一個迭代內完成,或者是否可以在一天內完成,敏捷開發模式可以建立詳細的考核機制,每天都跟蹤之前一天的任務是否已經完成。開發人拆分Backlog出來的結果就是一條條的Task,然后開發人員根據各自的任務來編寫《產品系統設計說明書》,最后匯總。
這里涉及到工時估算的問題,一般的估算方法都是讓團隊中不同級別的成員對某個Backlog進行估時,并取某個中間值或者團隊都可并接受的值為最終的估算工時。一般拆分的依據如下:
1、? 每個拆分出來的Task都是可單獨驗證并上線的;
2、? 每個拆分出來的Task都是可以在單個迭代內完成的;
每日站會可以跟蹤需求實現的進度,檢查每天的工作進展是否按照迭代計劃在進行,永遠確保資源投入在高優先級的Backlog上;該完成而未完成的任務有哪些以及是什么原因?及時識別出對迭代中后續問題的影響,并根據風險和應急方案努力規避;遇到的問題應該由誰來負責解決以及何時必須解決,否則會影響后續計劃中哪些條目?尤其是那些有前后依賴關系的條目;開發過程中會出現對原有需求的進一步細化,可能會和迭代計劃時討論的結論有一些差異,那么變更的內容是否會對既定的業務需求產生調整?
需求變更一般發生在計劃會議之后,既定的Backlog盡可能保持穩定;但是需求變更是很難避免的,若業務或者技術發生變化時,敏捷團隊該如何響應呢?一般從需求的緊急程度來考慮,緊急的需要團隊內部開發討論,如果能在緩沖時間內完成的就完成掉,如果不能則需要從已安排的任務當中挪出一部分到下個迭代。
產品的敏捷測試
有人說敏捷測試是順應敏捷開發方法,是力求達到質量和效率平衡的一系列的測試實踐,其實并一定要敏捷開發了才敏捷測試,其他開發模式下也可以采用敏捷測試。敏捷測試只是測試的一種,強調從用戶的角度,即從使用系統的用戶的角度來測試系統。重點關注持續迭代的測試新開發的功能,而不再強調傳統測試過程中嚴格的測試階段。
所以在敏捷開發模式下,開發人員不是等整個迭代的任務都開發完了才送測,而是做完一個送測一個。前面也講到Backlog拆解成Task時要求每個Task都是可以單獨驗證的,也就是說每個Task都是可以單獨測試的,這樣測試人員可以對每個已開發完成的Task進行測試,及時發現問題,及時改進。這種模式下,效率高的話可以精確控制到每天的開發結果驗證,這樣可以確保產品需求都是按照計劃來進行的,并且不會偏離需求本身。
測試人員也是從迭代計劃會議開始參與到每個迭代當中,對本次迭代中安排的所有需求清單編寫測試用例,最后形成一份匯總后的《測試用例及測試報告》。在每天的站會上,測試人員可以及時告知每天的測試進展和測試的問題,及時幫助開發人員修正。這樣測試人員就可以持續測試、持續反饋,整個測試的階段性會比較模糊,主要強調測試的速度和適應性。
敏捷測試要求測試人員去扮演“用戶”的角色,確保產品滿足既定的需求;強調直接的溝通、協作以及團隊責任,不太關注對缺陷的記錄與跟蹤;需要建立起有效的自動化測試方法,對老模塊的功能用自動化測試,新模塊用手工測試結合的方法。
從以上的內容可以看出,一個好的高效的迭代計劃會議非常重要,可以將需求拆分成可在一個迭代內實現的幾個部分,再加上每日站會的過程跟蹤,發現問題及時解決,最后通過敏捷測試及時驗證已開發完成的任務,這樣的過程基本可以保證每個需求的實現都是按照原先的需求規劃來的。
敏捷開發模式下也并不是沒有文檔的要求,設計、開發、測試這樣的過程下來,會有《產品需求設計說明書》、《產品系統設計說明書》、《測試用例及測試報告》三份文檔,而且文檔也是走敏捷的模式,每個迭代更新其中的一部分,最后合成在一起,這樣的方式有過程也有記錄,敏捷開發照樣重視文檔的作用,也重視文檔的維護,只不過比較強調宜少且精煉。
敏捷開發是否深入到團隊中,一般是根據團隊呈現出來的工作氛圍、項目運作狀態、團隊成員的感性認識等方面來評估團隊和其開發過程的敏捷成熟度。團隊有共同的愿景,并且對這個愿景充滿信心的;有明確的階段目標并且為每個成員所知曉;知道當前計劃:做什么、何時完成、預期效果等;所有任務是低耦合的,團隊之間緊密協作。
采用敏捷開發模式,一定要把敏捷設計、敏捷開發、敏捷測試連在一起,這樣才能最大限度的發揮敏捷的效用。
來源:《網絡傳播》2013年第8期,作者:朱軍華
- 目前還沒評論,等你發揮!