敏捷開發的落地實踐

0 評論 17035 瀏覽 12 收藏 13 分鐘

敏捷開發是一種面臨迅速變化的需求快速開發的能力,非常適合需求變化頻繁的產品研發,可以快速的響應需求的變更并擁抱這種變化。很多人認為敏捷開發只是開發團隊走敏捷的模式,這是一個誤區,實行敏捷開發不僅要求開發的敏捷,也要求測試的敏捷,需求分析的敏捷,即整個軟件產品的研發過程都需要敏捷起來,才能真正意義上實現敏捷。敏捷開發模式的介紹已經有很多,大多停留在理論層面,本文從實踐的角度,從需求規劃,產品開發,產品測試三個維度,介紹軟件產品研發過程如何走敏捷開發的模式。

產品的敏捷設計

從需求規劃,需求分析到需求設計的過程,都可以歸類為產品的設計過程,這中間現在有很多細分,諸如市場調研、競品分析、交互設計等,其本質都是都是產品設計,并在最終可以形成一份產出物《產品需求設計說明書》,以提供給開發和測試人員去實現產品。瀑布型開發模式要求需求必須先全部梳理清楚,才會投入開發資源,這樣的好處是需求完整,可以從整體上把握產品;而敏捷模式下的產品設計,也需要從整體上規劃產品,但會拆分成若干個相互間較為獨立的部分,分別實現,最后又能整合成為一個完整的產品,這就對產品設計人員提出了更高的要求。

通常情況下,當我們接到一部分產品的需求之后,會按業務優先級來做分析,并將相互關聯的需求放在一起,或者是按優先級高低進行分類,這個過程將需求進行了劃分,可以依據這個劃分來決定哪些需求是要先做的,哪些是可以后做的。不過這里有一個問題需要注意,那就是什么樣的需求適合拆分,一般有以下幾種類型:

1、各需求功能之間較為獨立的適合拆分。一個產品有十個功能點,各個功能點之間相互依賴關系不強的,松耦合的,就可以每個功能點單獨抽取出來做設計;

2、需求功能本身的邏輯遵循某種操作流程的適合拆分。功能的實現是按照一個較為固定的流程一步一步往下走的,這樣可以將每一個步驟單獨拆分開來設計;

3、產品上線之后的版本維護適合拆分。上線之后,對一些BUG、問題、小需求的縫縫補補,都適合用敏捷的方式來設計;

4、產品上線后的新增需求適合拆分。新增需求一般都針對某個功能模塊來進行設計,相對來說較為獨立,因此也適合敏捷設計;

拆分后的需求會分別寫PRD,最后合成一份。敏捷開發模式中把需求都稱為Backlog,維護backlog表就是一個對產品需求進行拆分的過程,拆分完成后再根據迭代計劃來設計具體的實現。一般有名稱、優先級、工作量估算、描述、備注信息等幾個維度,如下實例:

 

名稱

優先級

工作量估算

(小時)

描述

備注

????????存款 ??? 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期,作者:朱軍華

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!