勞詩堯,胡必波,盧國祥
(廣州工商學院,廣東 廣州 510850)
近幾年,敏捷軟件開發在軟件工業界有了良好的發展勢頭,并逐漸被推廣開來。各種類型、各種規模的公司都逐漸開始關注敏捷開發。國外一些著名的公司如Google,Microsoft,Yahoo和國內眾多的中小公司都已經開始采用敏捷開發。敏捷開發是一種以人為核心、迭代、循序漸進的開發方法。相對于以文檔作為驅動核心的瀑布模型,它更強調以人作為驅動核心。敏捷開發與互聯網應用對“擁抱變化”“快速迭代”價值觀的追求相同,比較適合互聯網及相關的產品或應用。
敏捷開發管理實踐包括SCRUM,極限編程(XP),Crystal Methods,特性驅動開發(FDD)等,其中SCRUM與XP最為流行。同樣是敏捷開發,XP更側重于實踐,并力求把實踐做到極致。這一實踐可以測試先行,也可以是結對編程等,關鍵要看具體的應用場景。SCRUM則是一種開發流程框架,包含3類角色、4個最佳實踐、4個活動、4個主要輸入輸出,其目的是為了有效地完成每一次迭代周期的工作。產品負責人(Product Owner,PO)作為SCRUM 3類角色之一,主要職責包括提供愿景、提供邊界、提供用戶故事(用戶需求)優先級[1],如圖1所示。
互聯網+大學生社團興趣共享平臺項目致力于開發一個利用大學生碎片化時間,提供技能服務的共享平臺,解決大學生周末的無聊感。該共享平臺是一個以“達人”個性化服務為主體的電商平臺,讓有一技之長或任何興趣愛好的大學生社團達人,可以將他的技能、興趣明碼標價按照時間來收費。平臺類似于淘寶網站,利用碎片化時間販賣技能,也有線下社團,并計劃逐步擴張。

圖1 SCRUM方法中的主要活動和交付件
該項目采用傳統方法分析需求時,存在需求文檔常常忽略客戶商業模式,手段比較原始、直接,簡單粗暴使用原型等問題,導致出現沒有做項目的商業模式分析;沒有做詳細的干系人分析;僅對某一兩個所謂的用戶代表進行原型大法;這個用戶代表不知道自己想要什么,也更加無法代表其他用戶;用戶糊涂,項目組更加糊涂,然后就開始后續工作等情況。
需求定義了軟件功能,同時也定義了軟件帶給客戶的價值。完成項目的目的是為客戶帶來價值,為客戶實現增值。命中需求、實現多贏、能規避重大風險是所有賺錢項目的特點。需求分析是商業模式中重要的一環,能幫助客戶實現商業模式,這才是需求分析的核心價值。在開始轉向敏捷開發的時候,很多企業都會偏向敏捷開發(“開發人員”的開發)和敏捷測試。其實這些都不是敏捷的主角。相反,敏捷需求才是敏捷開發的主角。畢竟敏捷開發的最終目的是交付客戶價值,而開發與測試都只是手段而已。
敏捷需求分析則認為需求是涌現的,不要試圖初期就明細化全部需求,通過用戶故事來組織及細化需求;將寫需求轉變為討論需求,使用用戶故事來討論需求,所有人都參與需求討論,持續明確需求細節。
用戶故事是敏捷需求分析核心的載體,它以用戶的視角來表述希望產品/項目提供哪些功能或特性。使用標準的格式:作為<某個角色>,我希望<實現何種功能>,以便<帶來何種價值>。用戶故事使用貼近用戶的語言來描述需求,簡潔易懂。而每個用戶故事的商業價值則為確定用戶故事的優先級提供了量化的參考。應盡量在系統的開始階段,嘗試找出所有的用戶故事。為每一個用戶故事評估故事點和優先級。
原型法是一種在實際工作中獲取需求的重要方法[2]。原型化模型的第一步是建造一個快速原型,實現客戶或未來的用戶與系統的交互,經過和用戶針對原型的討論和交流,弄清需求以便真正把握用戶需要的軟件產品是什么樣。充分了解后,再在原型基礎上開發出用戶滿意的產品。
統一建模語言(Unified Modeling Language,UML)是指支持模型化和軟件系統開發的圖形化語言[3],目的是為了用簡潔的方式說明系統的需求、功能、結構,便于開發人員之間交流,用戶與開發人員交流,維護人員后期維護測試。UML的核心是抽象、分解。把問題分解,抽象成一個一個的小塊,再對癥下藥,對每個模塊分析、解決。
針對上述問題,本文引入互聯網項目敏捷需求分析過程,以保證軟件產品的需求分析質量和效率,如圖2所示。互聯網項目需求由用戶需求和業務邏輯驅動產生,根據CMMI需求管理中提出需求驅動工作要求。需求分析人員需要導出產品需求,進行設計工作。內容包括用戶體驗設計、架構設計、數據庫設計、詳細設計等。其中用戶體驗設計是需求與設計的重疊工作,非常重要,對客戶幾乎起決定作用,實際中我們可以采用基于用戶體驗的Scrum流程[4]。
以互聯網+大學生社團興趣共享平臺為例,首先通過頭腦風暴法找干系人,例如平臺建設者、達人、粉絲、大學生實體社團、學生會等。以達人為例,細分為攝影、模特、運動、音樂、舞蹈等;以攝影達人為例,又可精細化分為跟拍、旅拍、寫真、個人形象、攝影輔導等。當然并不是所有干系人都會成為系統用戶,由需求分析人員根據平臺的商業模式來進行逐步規劃,迭代完成,對于所有干系人我們都需要嘗試去寫用戶故事。
以攝影用戶故事為例。作為大學生攝影社團會員,筆者希望開一家自己的攝影店,以便能利用課余時間提供專業便捷的攝影服務。作為攝影粉絲,可能希望隨時隨地,動動手指就能找到攝影師,以便能享受到安全可靠、性價比比較高的私家專屬個性化攝影服務。用戶故事還可以由大到小,細分3~5個層次;整個推導過程持續優化、細化,最終細化到一定程度時,還可能需要配上相應的原型來展示用戶故事的細節。
由于原型是展示在客戶終端,不同的客戶端要實現的用戶故事可能不一樣。因此,需求分析時還應了解系統的初步架構,針對特定的客戶端描述相應的用戶故事,有針對性地畫出原型。如果需要進一步精準分析出用戶故事中所包含的業務邏輯,還可以使用UML進行結構建模和行為建模。結構建模生成的類圖,用于解剖業務內容;行為建模生成活動圖、狀態機圖、順序圖,用于描述業務流程。

圖2 互聯網項目敏捷需求分析流程
通過引入以人為中心的敏捷需求分析核心原理,文章從產品經理的角度指出互聯網項目所采用傳統的需求開發流程所存在的問題。文章還提出了一種敏捷需求分析實用流程,并給出用戶故事升級版的敏捷需求分析實例,解決了傳統需求開發方法存在的忽略客戶商業模式,直接簡單粗暴使用原型等問題,有效地提高了互聯網項目需求開發的效率和質量。在今后的項目開發過程中,如何對所提出流程進一步完善,是下一步研究的重點。