不懂用戶故事做不好敏捷開發(fā)?。ㄒ唬?/h2>

用戶故事(User Story)是從用戶的角度對系統(tǒng)功能的描述。所以,又被稱為使用者故事。

用戶故事最重要的特點(diǎn)在於每一 個(gè)用戶故事都是一個(gè)“可獨(dú)立分配”的需求單位。要達(dá)到“可獨(dú)立分配”,就要從“用戶”如何使用系統(tǒng)來表達(dá)用戶故事。這樣才讓你實(shí)現(xiàn)到一個(gè)能讓用戶交流,端到端(用戶界面到后端)的功能單位。

在敏捷開發(fā)中,需求最終會(huì)被描述成User Story。開發(fā)人員依照用戶故事中的描述估測完成所需要的時(shí)間,并指定該User Story的優(yōu)先級。這樣,最終,所有的User Story組成了Product Backlog。

在敏捷中,用戶故事是最基本的設(shè)計(jì)單元,它是從用戶的角度出發(fā)對功能的一段簡要描述。啰嗦一下,用戶故事是輕量級的需求描述。用戶故事沒有什么強(qiáng)制性的語法。但是,按照大致符合這樣一個(gè)形式來考慮用戶故事是比較有益的:

用戶故事從用戶的角度描述用戶渴望得到的功能和實(shí)現(xiàn)的價(jià)值。一個(gè)好的用戶故事包括三個(gè)基本要素:

  角色:誰要使用這個(gè)功能。

  活動(dòng):需要完成什么樣的功能。

  商業(yè)價(jià)值:為什么需要這個(gè)功能以及這個(gè)功能帶來什么樣的價(jià)值。

用戶故事通常按照如下的格式來表達(dá):

英文:

As a , I want to , so that .

中文:

作為一個(gè)<角色>, 我想要<活動(dòng)>, 以便于<商業(yè)價(jià)值>

舉例:

作為一個(gè)“網(wǎng)站管理員”,我想要“統(tǒng)計(jì)每天有多少人訪問了我的網(wǎng)站”,以便于“我的贊助商了解我的網(wǎng)站會(huì)給他們帶來什么收益?!?/b>

需要注意的是用戶故事不能夠使用技術(shù)語言來描述,要使用用戶可以理解的業(yè)務(wù)語言來描述。

作為【用戶的類型】,我希望可以【先這樣做,然后那樣做,就應(yīng)該得到...的結(jié)果】以便【業(yè)務(wù)價(jià)值】。

例如:“作為購書者,我希望可以根據(jù)ISBN來找到一本書,以便能更快的找到正確的書?!?/p>

在做用戶故事時(shí),需要注意每個(gè)用戶故事用的是用戶的語言,它只描述一個(gè)功能(feature),而不要涉及設(shè)計(jì)或?qū)崿F(xiàn)上的內(nèi)容。

一般而言,每個(gè)用戶故事的開發(fā)周期不要太長(1-5天),否則用戶故事應(yīng)當(dāng)切分為多個(gè)子用戶故事。

不需要一開始對所有的故事都進(jìn)行詳細(xì)的描述,但計(jì)劃放在下一個(gè)sprint中的故事應(yīng)該比較清楚。

在面對一個(gè)具體項(xiàng)目,不會(huì)把項(xiàng)目拆分成用戶故事,就無法敏捷起來!真正的敏捷開發(fā)必須是基于用戶故事的開發(fā)過程。

我們看到很多人在嘗試敏捷時(shí),只是簡單地把項(xiàng)目的長周期拆分成短周期,這并不是真正的迭代,因?yàn)槊總€(gè)周期都沒有可體驗(yàn)、可交付的東西,依然像瀑布一樣在不斷堆積半成品,這不是真的Scrum。

如果不是基于用戶故事開發(fā),測試驅(qū)動(dòng)開發(fā)(TDD)和行為驅(qū)動(dòng)開發(fā)(BDD)很難開展,因?yàn)槿狈唧w用戶場景的描述,很難寫出具體、簡明的測試用例,因而很難累積足夠的自動(dòng)化測試提高系統(tǒng)的可改性,內(nèi)部質(zhì)量、重構(gòu)、持續(xù)優(yōu)化便無從談起。

如果不是基于用戶故事開發(fā),持續(xù)集成(CI)也意義不大,因?yàn)樘峤坏拇a并沒有構(gòu)成可交付的產(chǎn)品,其實(shí)并沒有真的在集成。

用戶故事和用戶場景搭配起來使用,會(huì)起到更好的作用。用戶故事反映了用戶面對的問題

用戶場景的描述更多,包含了更多的信息,比一個(gè)用戶故事更長、更豐富。用戶場景盡可能接近現(xiàn)實(shí),用文字表達(dá)會(huì)說話的典型用戶。

用戶場景舉例:比如:人們每次去超市買東西,都要排好長時(shí)間的隊(duì)伍進(jìn)行結(jié)算,特別麻煩。有的時(shí)候就會(huì)有人放棄結(jié)賬,不買了,或者找到另外的超市購買,這樣,對于超市來說,就會(huì)有損失。

那么針對這個(gè)用戶場景,用戶故事可以這么來寫:作為一個(gè)消費(fèi)者,我希望在超市買東西結(jié)賬的時(shí)候,可以不用排那么長的隊(duì),我可以快速結(jié)賬,以便節(jié)約出時(shí)間干些更重要的事。

每次的評審會(huì)議,其實(shí)也是對用戶故事進(jìn)行評審。

敏捷開發(fā)中的用戶故事一定要重視,通過用戶故事,形成用戶故事地圖,這樣客戶對整個(gè)產(chǎn)品就會(huì)有一個(gè)更直觀的價(jià)值體驗(yàn)。

關(guān)于用戶故事地圖,有一本書寫的挺好。

歡迎關(guān)注我們的公眾號,在公眾號回復(fù)“用戶故事”,您將知道是哪本書。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,954評論 25 709
  • 什么是Scrum敏捷開發(fā) Scrum是敏捷開發(fā)的一種,是一種以人為本,迭代式增量軟件開發(fā)的過程,以英式橄欖球爭球隊(duì)...
    Monica_Wang閱讀 19,082評論 4 53
  • 5.1 敏捷分析 ??敏捷分析(Agile Analytics)是一種開發(fā)風(fēng)格,在它的指導(dǎo)下,用戶、利益相關(guān)者以及...
    Gaius_Yao閱讀 3,388評論 0 7
  • 每年的3.15,大伙兒似乎都格外的興奮,各路大軍打假的勁頭高漲。 網(wǎng)絡(luò)上、電視上……鋪天蓋地,都是這個(gè)話題。似乎全...
    鹿在鳴閱讀 209評論 0 0
  • 上次參加了為愛閱讀100天,深深感受到親子閱讀的力量,100天收獲太多,現(xiàn)在孩子每晚必須要讀睡前故事,以書的形式來...
    蟲蟲愛繪本閱讀 266評論 0 0

友情鏈接更多精彩內(nèi)容