我眼中的敏捷設計
2001年,許多公司的軟件團隊陷入不斷增長的流程困境,為了解決這個問題,這個領域中最優秀的experts一起概括出了一些全新的價值觀和原則,從而可以讓軟件開發團隊具有快速工作、響應變化能力,他們自稱為敏捷聯盟。敏捷開發過程的方法很多,包括Scrum, eXtreme Programming, Feature Driven Development, Adaptive Software Development等等。目前,我所在的公司內部也有很多團隊開始啟用Scrum的開發流程,力圖改變瀑布式開發模型的諸多弊端。作為Run了3年該流程的team,我們團隊在不斷學習和總結中得到了進步,我也希望可以從設計的角度來分享一些敏捷開發流程中快速迭代設計的心得。
Process 流程
這是一個高速變化的時代,無論是產品的更新還是技術的進化,同時變幻莫測的需求對傳統軟件開發模式造成了極大的沖擊。當用戶需求不斷變化造成軟件開發目標的不斷更換,傳統的設計方式會舉步維艱,從而造成了軟件的滯后,總是無法貼近用戶的實時需求。快速迭代設計的特點是:先設計出稿,再不斷改進。白鴉在 2011中國交互設計體驗日上分享到:“怎么做都是錯的。唯有迭代的速度,才能取勝。” 可見,快速迭代的要求,無論是對研發還是設計,都已迫在眉睫。
整個快速迭代設計流程分為5個階段:
Iteration-1
前期準備階段,團隊很容易就各類需求該放哪些進入Sprint backlog發生討論,設計師主要參與PO(Product Owner)/PM組織的用戶需求討論,對需求優先級排序,解讀一些用戶潛在需求并轉化成為產品功能需求,畢竟相比他們,設計師更加懂得產品細節。 同時,設計師可以同步展開用戶研究的工作,了解Persona的主要工作流和Goal。
Iteration 0
與每個項目開始之前設定Sprint 0相同,Sprint里也有一個叫Iteration 0的階段,包括設計開工之前的驗證與出具設計方案。通過與開發團隊的溝通來驗證設計方向與設計方案的可行性,可以創建一些信息流圖與內容結構,做好堅實的設計架構。同時,在用戶需求被解讀成為功能列表后,利用紙片、PPT、Balsamiq等工具創建快速原型,最好在這個階段讓研發團隊介入,對設計原型進行評估。然后設計師根據快速原型,負責設計其實現方式,通常會有幾個解決方案。在Scrum團隊內部與開發測試人員反復討論權衡后,選出最優方案。這個階段設計師的交付物為交互線框圖、低保真模型等簡單設計文檔。
Iterations
設計不斷迭代的階段,因為我們假設改階段用戶需求已經確定,所以主要是基于設計方案的迭代,協同開發實現的進度,將設計不斷修正至最優。正是這種快速的模式讓設計師能在一個可以體驗的原型上驗證設計,從而改進設計。與流行的測試驅動開發(TDD)類似,我們也可以采用測試驅動設計的方式。QA要對用戶的背景和工作模式比較熟悉,協同設計師一起敲定User Story,撰寫Real User Test Scenarios,并根據測試結果優化設計。設計師與開發團隊成員一并進行Usability Testing,以便在早期消除可用性缺陷,減輕后期維護成本。
Release
作為design release的階段,前面的工作主要內容是確定功能的主要邏輯與工作流,這個時期,我們可以在優使性(Usability)上有所提升,做好Final Usability Testing,確認沒太大疏漏,再將其發布出去。不同于QA的最終驗收測試,這里的可用性測試需要從用戶的角度去“使用”產品,不是去找功能的缺陷,而是從優使性方面看是否順手,是否符合用戶心智模型,是否高效完成用戶目標。
Production
設計發布過后,為了適應不斷更新和快速迭代的需要,設計師在這個時期的工作重心從偏用研設計轉移到偏運營維護的方面來,一方面收集一些用戶反饋和wishlist,改進之前的不足;另外一方面為了產品的下一個迭代更新做好規劃,方便產品的發展和擴充。
整個流程有兩個迭代循環:
1、Requirements Iteration
這個迭代循環貫穿于整個敏捷設計流程。用戶需求隨著時間推移不斷更新,整個設計流程的迭代。根據以用戶為中心的設計思想,當用戶的需求發生變化時,在設計流程中要及時響應,做出調整變化。
2、Solution Iteration
這個迭代循環主要指Iterations階段,用戶需求相對確定,設計方案的不斷優化更新。當需求基本確定后,設計師需要配合開發團隊不斷優化設計思路,提供更優的設計解決方案。
特別需要注意的是,前面兩個階段(Iteration -1, Iteration 0),應該早于當前研發的Sprint N一個周期(Sprint N-1)進行。進入當前的Sprint工作周期,完成第一個迭代設計后,研發團隊可以開始該部分內容的開發測試,與設計師不斷互動推動迭代。在Sprint N的末期,設計師完成當前Sprint的基本設計工作后,開始收集前面Sprints release內容的反饋。團隊不需要提前太多進行設計,要保持需求的最新update,主要依賴測試結果作為支撐,不斷持續改進優化設計,以便每次迭代結束后產出物都最適合當前迭代的需求。
Rules 原則
快速迭代設計的一些原則:
驗證可行性的必要
完美的敏捷思想是團隊中的每個人都是全才,大家都可以design,coding,testing。不過這樣的團隊不多,全才的混合有時候更容易造成管理混亂,相反,專才的合理搭配能產生更好的效果。所以,如果你不會寫代碼,一定要在設計早期拉上開發人員,坐在一起慢慢探討設計可行性,用代碼驗證原型之后,再確定方案。
測試用例驗證設計的重要性
根據測試驅動設計的理念,設計師與QA協同合作,利用早期測試結果驅動設計更新,比設計師長期獨自醞釀出的詳細設計文檔更有用。行不行,利用草圖或者低保真原型讓QA去測測看就知道。Scrum鼓勵充分溝通與互動,這個時候QA的測試用例能發現很多設計缺陷和遺漏。TDD如下圖所示:
posted on 2011-11-23 17:47 順其自然EVO 閱讀(174) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄