勞詩堯,胡必波,盧國祥
(廣州工商學院,廣東 廣州 510850)
近幾年,敏捷軟件開發(fā)在軟件工業(yè)界有了良好的發(fā)展勢頭,并逐漸被推廣開來。各種類型、各種規(guī)模的公司都逐漸開始關(guān)注敏捷開發(fā)。國外一些著名的公司如Google,Microsoft,Yahoo和國內(nèi)眾多的中小公司都已經(jīng)開始采用敏捷開發(fā)。敏捷開發(fā)是一種以人為核心、迭代、循序漸進的開發(fā)方法。相對于以文檔作為驅(qū)動核心的瀑布模型,它更強調(diào)以人作為驅(qū)動核心。敏捷開發(fā)與互聯(lián)網(wǎng)應用對“擁抱變化”“快速迭代”價值觀的追求相同,比較適合互聯(lián)網(wǎng)及相關(guān)的產(chǎn)品或應用。
敏捷開發(fā)管理實踐包括SCRUM,極限編程(XP),Crystal Methods,特性驅(qū)動開發(fā)(FDD)等,其中SCRUM與XP最為流行。同樣是敏捷開發(fā),XP更側(cè)重于實踐,并力求把實踐做到極致。這一實踐可以測試先行,也可以是結(jié)對編程等,關(guān)鍵要看具體的應用場景。SCRUM則是一種開發(fā)流程框架,包含3類角色、4個最佳實踐、4個活動、4個主要輸入輸出,其目的是為了有效地完成每一次迭代周期的工作。產(chǎn)品負責人(Product Owner,PO)作為SCRUM 3類角色之一,主要職責包括提供愿景、提供邊界、提供用戶故事(用戶需求)優(yōu)先級[1],如圖1所示。
互聯(lián)網(wǎng)+大學生社團興趣共享平臺項目致力于開發(fā)一個利用大學生碎片化時間,提供技能服務(wù)的共享平臺,解決大學生周末的無聊感。該共享平臺是一個以“達人”個性化服務(wù)為主體的電商平臺,讓有一技之長或任何興趣愛好的大學生社團達人,可以將他的技能、興趣明碼標價按照時間來收費。平臺類似于淘寶網(wǎng)站,利用碎片化時間販賣技能,也有線下社團,并計劃逐步擴張。
圖1 SCRUM方法中的主要活動和交付件
該項目采用傳統(tǒng)方法分析需求時,存在需求文檔常常忽略客戶商業(yè)模式,手段比較原始、直接,簡單粗暴使用原型等問題,導致出現(xiàn)沒有做項目的商業(yè)模式分析;沒有做詳細的干系人分析;僅對某一兩個所謂的用戶代表進行原型大法;這個用戶代表不知道自己想要什么,也更加無法代表其他用戶;用戶糊涂,項目組更加糊涂,然后就開始后續(xù)工作等情況。
需求定義了軟件功能,同時也定義了軟件帶給客戶的價值。完成項目的目的是為客戶帶來價值,為客戶實現(xiàn)增值。命中需求、實現(xiàn)多贏、能規(guī)避重大風險是所有賺錢項目的特點。需求分析是商業(yè)模式中重要的一環(huán),能幫助客戶實現(xiàn)商業(yè)模式,這才是需求分析的核心價值。在開始轉(zhuǎn)向敏捷開發(fā)的時候,很多企業(yè)都會偏向敏捷開發(fā)(“開發(fā)人員”的開發(fā))和敏捷測試。其實這些都不是敏捷的主角。相反,敏捷需求才是敏捷開發(fā)的主角。畢竟敏捷開發(fā)的最終目的是交付客戶價值,而開發(fā)與測試都只是手段而已。
敏捷需求分析則認為需求是涌現(xiàn)的,不要試圖初期就明細化全部需求,通過用戶故事來組織及細化需求;將寫需求轉(zhuǎn)變?yōu)橛懻撔枨螅褂糜脩艄适聛碛懻撔枨?,所有人都參與需求討論,持續(xù)明確需求細節(jié)。
用戶故事是敏捷需求分析核心的載體,它以用戶的視角來表述希望產(chǎn)品/項目提供哪些功能或特性。使用標準的格式:作為<某個角色>,我希望<實現(xiàn)何種功能>,以便<帶來何種價值>。用戶故事使用貼近用戶的語言來描述需求,簡潔易懂。而每個用戶故事的商業(yè)價值則為確定用戶故事的優(yōu)先級提供了量化的參考。應盡量在系統(tǒng)的開始階段,嘗試找出所有的用戶故事。為每一個用戶故事評估故事點和優(yōu)先級。
原型法是一種在實際工作中獲取需求的重要方法[2]。原型化模型的第一步是建造一個快速原型,實現(xiàn)客戶或未來的用戶與系統(tǒng)的交互,經(jīng)過和用戶針對原型的討論和交流,弄清需求以便真正把握用戶需要的軟件產(chǎn)品是什么樣。充分了解后,再在原型基礎(chǔ)上開發(fā)出用戶滿意的產(chǎn)品。
統(tǒng)一建模語言(Unified Modeling Language,UML)是指支持模型化和軟件系統(tǒng)開發(fā)的圖形化語言[3],目的是為了用簡潔的方式說明系統(tǒng)的需求、功能、結(jié)構(gòu),便于開發(fā)人員之間交流,用戶與開發(fā)人員交流,維護人員后期維護測試。UML的核心是抽象、分解。把問題分解,抽象成一個一個的小塊,再對癥下藥,對每個模塊分析、解決。
針對上述問題,本文引入互聯(lián)網(wǎng)項目敏捷需求分析過程,以保證軟件產(chǎn)品的需求分析質(zhì)量和效率,如圖2所示。互聯(lián)網(wǎng)項目需求由用戶需求和業(yè)務(wù)邏輯驅(qū)動產(chǎn)生,根據(jù)CMMI需求管理中提出需求驅(qū)動工作要求。需求分析人員需要導出產(chǎn)品需求,進行設(shè)計工作。內(nèi)容包括用戶體驗設(shè)計、架構(gòu)設(shè)計、數(shù)據(jù)庫設(shè)計、詳細設(shè)計等。其中用戶體驗設(shè)計是需求與設(shè)計的重疊工作,非常重要,對客戶幾乎起決定作用,實際中我們可以采用基于用戶體驗的Scrum流程[4]。
以互聯(lián)網(wǎng)+大學生社團興趣共享平臺為例,首先通過頭腦風暴法找干系人,例如平臺建設(shè)者、達人、粉絲、大學生實體社團、學生會等。以達人為例,細分為攝影、模特、運動、音樂、舞蹈等;以攝影達人為例,又可精細化分為跟拍、旅拍、寫真、個人形象、攝影輔導等。當然并不是所有干系人都會成為系統(tǒng)用戶,由需求分析人員根據(jù)平臺的商業(yè)模式來進行逐步規(guī)劃,迭代完成,對于所有干系人我們都需要嘗試去寫用戶故事。
以攝影用戶故事為例。作為大學生攝影社團會員,筆者希望開一家自己的攝影店,以便能利用課余時間提供專業(yè)便捷的攝影服務(wù)。作為攝影粉絲,可能希望隨時隨地,動動手指就能找到攝影師,以便能享受到安全可靠、性價比比較高的私家專屬個性化攝影服務(wù)。用戶故事還可以由大到小,細分3~5個層次;整個推導過程持續(xù)優(yōu)化、細化,最終細化到一定程度時,還可能需要配上相應的原型來展示用戶故事的細節(jié)。
由于原型是展示在客戶終端,不同的客戶端要實現(xiàn)的用戶故事可能不一樣。因此,需求分析時還應了解系統(tǒng)的初步架構(gòu),針對特定的客戶端描述相應的用戶故事,有針對性地畫出原型。如果需要進一步精準分析出用戶故事中所包含的業(yè)務(wù)邏輯,還可以使用UML進行結(jié)構(gòu)建模和行為建模。結(jié)構(gòu)建模生成的類圖,用于解剖業(yè)務(wù)內(nèi)容;行為建模生成活動圖、狀態(tài)機圖、順序圖,用于描述業(yè)務(wù)流程。
圖2 互聯(lián)網(wǎng)項目敏捷需求分析流程
通過引入以人為中心的敏捷需求分析核心原理,文章從產(chǎn)品經(jīng)理的角度指出互聯(lián)網(wǎng)項目所采用傳統(tǒng)的需求開發(fā)流程所存在的問題。文章還提出了一種敏捷需求分析實用流程,并給出用戶故事升級版的敏捷需求分析實例,解決了傳統(tǒng)需求開發(fā)方法存在的忽略客戶商業(yè)模式,直接簡單粗暴使用原型等問題,有效地提高了互聯(lián)網(wǎng)項目需求開發(fā)的效率和質(zhì)量。在今后的項目開發(fā)過程中,如何對所提出流程進一步完善,是下一步研究的重點。