用戶故事設計范式(As a... I want to... So that...)

我們來詳細解析一下用戶故事(User Story),包括其結構、為什么重要、如何編寫好的用戶故事以及一個完整的示例。

1. 用戶故事的基本結構:三段式模板

最經典和通用的用戶故事模板就是您提到的三段式:

  • As a [角色]:

    • 目的:?明確我們為誰構建這個功能。它定義了特定的用戶類型或角色。

    • 示例:?“As a 未登錄的訪客”, “As a 管理員”, “As一個經常出差的銷售代表”。

  • I want to [動作]:

    • 目的:?描述用戶想要執行的具體操作或功能。這是故事的核心目標。

    • 示例:?“I want to reset my password”, “I want to filter search results by date”, “I want to export my data as a CSV file”。

  • So that [價值/收益]:

    • 目的:****這是最重要的一部分。它闡明了用戶為什么要做這個動作,以及他們能從中獲得什么商業價值或個人收益。這確保了團隊是在為用戶解決真實的問題,而不是僅僅實現一個功能。

    • 示例:?“So that I can regain access to my account”, “So that I can quickly find last week’s transactions”, “So that I can analyze the data in Excel and prepare my report”。


2. 為什么這個格式如此重要?

這個簡單的格式迫使團隊(包括產品負責人、開發、測試等)在討論功能時始終思考三個關鍵問題:

  1. 為誰設計??(用戶中心)

  2. 要做什么??(功能需求)

  3. 為什么做??(商業價值)

這避免了團隊在不明就里的情況下開發一些“聽起來不錯”但實際上沒有價值的功能。


3. 一個完整的用戶故事還包含哪些部分?

在實際項目中,一個用戶故事卡片(無論是在Jira、Trello還是物理便利貼上)通常還會包含以下關鍵信息:

  • 對話 (Conversation):?用戶故事不是一個詳細的需求文檔,而是一個承諾進行對話的提醒。開發團隊和產品負責人需要不斷溝通以澄清細節。這些對話通常記錄在卡片上或相關的會議中。

  • 驗收標準 (Acceptance Criteria - AC):?這是定義故事何時“完成”的規則列表。它是一組可測試的條件,通常以“Given/When/Then”(GWT)格式編寫。

    • 示例(針對重置密碼的故事):

      • text

        Given 我在登錄頁面,當我點擊“忘記密碼”鏈接,Then 我應該被帶到一個可以輸入郵箱的頁面。
      • text

        Given 我輸入了已注冊的郵箱并提交,Then 系統應發送一封包含重置鏈接的郵件。
      • text

        Given 我點擊了郵件中的有效重置鏈接,Then 系統應提示我輸入新密碼。
      • text

        Given 我輸入了新密碼并確認,Then 我的密碼應該被更新,并且我可以用新密碼登錄。
  • 優先級和估算:?產品負責人會為故事排列優先級,開發團隊會估算完成它所需的工作量(通常用故事點表示)。


4. 如何編寫好的用戶故事?—— INVEST 原則

一個好的用戶故事應該符合?INVEST?標準:

  • Independent (獨立的): 盡可能與其他故事減少依賴,便于規劃和排序。

  • Negotiable (可協商的): 故事不是合同,其細節可以通過對話來調整。

  • Valuable (有價值的): 必須對用戶或客戶交付價值(So that...部分確保了這一點)。

  • Estimable (可估算的): 團隊應該能夠估算其工作量,規模不能太大或太模糊。

  • Small (小的): 故事應該足夠小,以便在一個迭代(Sprint)中完成多個。大型故事需要被拆解。

  • Testable (可測試的): 必須有明確的驗收標準來驗證是否完成。


5. 示例:從模糊需求到完整的用戶故事

模糊的需求:?“我們需要一個密碼重置功能。”

一個優秀的用戶故事:

標題:?用戶重置密碼

用戶故事:

  • As a?忘記密碼的注冊用戶

  • I want to?通過電子郵件接收一個鏈接來重置我的密碼

  • So that?我可以在不聯系客服的情況下自行恢復賬戶訪問權限。

驗收標準 (AC):

  • Given 用戶點擊了“忘記密碼”鏈接,When 他們輸入了一個在系統中未注冊的郵箱地址并提交,Then 應顯示一條通用成功消息(如“如果郵箱已注冊,重置鏈接已發送”),而不會透露郵箱是否注冊。

  • Given 用戶點擊了“忘記密碼”鏈接,When 他們輸入了一個已注冊的郵箱地址并提交,Then 系統應向該郵箱發送一封包含唯一重置鏈接的郵件。

  • Given 用戶點擊了郵件中的重置鏈接,When 鏈接在24小時有效期內,Then 用戶應被引導至一個設置新密碼的頁面。

  • Given 用戶點擊了郵件中的重置鏈接,When 鏈接已過期,Then 用戶應看到錯誤消息,并提示他們重新申請重置鏈接。

  • Given 用戶在設置新密碼頁面,When 他們提交了符合復雜度要求的新密碼,Then 系統應更新密碼,并提示用戶密碼已重置成功,并允許他們用新密碼登錄。


總結

用戶故事是一個強大而簡單的工具,它將需求從冰冷的“系統應該”陳述,轉變為以用戶和價值為中心的對話。記住:“As a... I want to... So that...”?是核心,對話驗收標準是使其完整和可執行的關鍵。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/96305.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96305.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96305.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【OpenGL】LearnOpenGL學習筆記20 - 實例化 Instancing

上接:https://blog.csdn.net/weixin_44506615/article/details/151156446?spm1001.2014.3001.5501 完整代碼:https://gitee.com/Duo1J/learn-open-gl | https://github.com/Duo1J/LearnOpenGL 實例化 Instancing 以往當我們在場景中要大量繪制相同模型…

MySQL主從不一致?DBA急救手冊:14種高頻坑點+3分鐘定位+無損修復!

MySQL「主從不一致」最常見的成因、快速定位思路以及可落地的修復手段 一、為什么會不一致?14 類高頻場景類別典型表現/觸發條件快速自檢命令/日志1. 從庫被寫入業務或 DBA 直連從庫 UPDATE/INSERTSHOW VARIABLES LIKE read_only 應為 ON2. 復制過濾規則主從 binlog…

AI 網站源碼:探秘 SUNO,革新音樂創作的 AI 先鋒

在當今數字化浪潮中,人工智能(AI)正深刻地重塑各個領域,音樂創作也不例外。SUNO 作為一款引領潮流的音樂生成工具,宛如一顆璀璨新星,在音樂創作的天空中熠熠生輝,為音樂愛好者和創作者們帶來了前…

Linux:malloc背后的實現細節

目錄前言一、先搞懂基礎:程序的內存布局(關鍵前提!)二、malloc的核心實現步驟(4層架構拆解)第1層:用戶調用 → 標準庫處理(glibc的malloc.c)第2層:堆內存池管…

什么是X11轉發?

X11 轉發(X11 forwarding,ssh -X)是一種 SSH 協議功能,它允許用戶在遠程服務器上運行圖形化應用程序,并通過本地的顯示設備和輸入輸出設備與這些程序進行交互。它被開發者廣泛使用,用于在大規模、異構的服務…

Android Kotlin 動態注冊 Broadcast 的完整封裝方案

在 Kotlin 中封裝動態注冊的 Broadcast 可以讓你更優雅地管理廣播的注冊和注銷,避免內存泄漏。下面是一個完整的封裝方案: 基礎封裝類 import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import …

VGG改進(8):融合Self-Attention的CNN架構

1. 自注意力機制簡介自注意力機制是Transformer架構的核心組件,它能夠計算輸入序列中每個元素與其他所有元素的相關性。與CNN的局部感受野不同,自注意力機制允許模型直接建立遠距離依賴關系,從而捕獲全局上下文信息。在計算機視覺中&#xff…

ES6 面試題及詳細答案 80題 (33-40)-- Symbol與集合數據結構

《前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

PG-210-HI 山洪預警系統呼叫端:筑牢山區應急預警 “安全防線”

在山洪災害多發的山區,及時、準確的預警信息傳遞是保障群眾生命財產安全的關鍵。由 PG-210-HI 型號構成的山洪預警系統呼叫端主機,憑借其全面的功能、先進的特性與可靠的性能,成為連接管理員與群眾的重要應急樞紐,為山區構建起一道…

研學旅游產品設計實訓室:賦能產品落地,培養實用人才

1. 研學旅游產品設計實訓室的定位與功能 研學旅游產品設計實訓室是專門為學生提供研學課程與產品開發、模擬設計、項目推演、成果展示等實踐活動的教學空間。該實訓室應支持以下功能: 研學主題設計與目標制定; 課程內容與學習方法的選擇與整合&#xf…

4215kg輕型載貨汽車變速器設計cad+設計說明書

第一章 前言 3 1.1 變速器的發展環繞現狀 3 1.2 本次設計目的和意義 4 第二章 傳動機構布置方案分析及設計 5 2.1 傳動機構結構分析與類型選擇 5 2.2變速器主傳動方案的選擇 5 2.3 倒檔傳動方案 6 2..4 變速器零、部件結構方案設計 6 2.4.1 齒輪形式 …

9月10日

TCP客戶端代碼#include<myhead.h> #define SER_IP "192.168.108.179" //服務器&#xff49;&#xff50;地址 #define SER_PORT 8888 //服務器端口號 #define CLI_IP "192.168.108.239" //客戶端&#xff49;&#xff50;地址 …

案例開發 - 日程管理 - 第七期

項目改造&#xff0c;進入 demo-schedule 項目中&#xff0c;下載 pinia 依賴在 main.js 中開啟 piniaimport { createApp } from vue import App from ./App.vue import router from ./router/router.js import {createPinia} from pinialet pinia createPinia() const app …

infinityfree 網頁連接內網穿透 localtunnel會換 還是用frp成功了

模型庫首頁 魔搭社區 fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. 我嘗試用本機ipv6&#xff0c;失敗了 配置文件 - ChmlFrp 香港2才能用 只支持https CNAME解析 | 怊貓科技 | 文檔 How to create …

批量更新數據:Mybatis update foreach 和 update case when 寫法及比較

在平常的開發工作中&#xff0c;我們經常需要批量更新數據&#xff0c;業務需要每次批量更新幾千條數據&#xff0c;采用 update foreach 寫法的時候&#xff0c;接口響應 10s 左右&#xff0c;優化后&#xff0c;采用 update ... case when 寫法&#xff0c;接口響應 2s 左右。…

Java基礎篇04:數組、二維數組

1 數組 數組是一個數據容器&#xff0c;可用來存儲一批同類型的數據。 1.1 數組的定義方式 靜態初始化 數據類型[][] 數組名 {元素1&#xff0c;元素2&#xff0c;元素3}; string[][] name {"wfs","jsc","qf"} 動態初始化 數據類型[][] 數組名…

unity開發類似個人網站空間

可以用 Unity 開發 “個人網站空間” 類工具&#xff0c;但需要結合其技術特性和適用場景來判斷是否合適。以下從技術可行性、優勢、局限性、適用場景四個方面具體分析&#xff1a;一、技術可行性Unity 本質是游戲引擎&#xff0c;但具備開發 “桌面應用” 和 “交互內容” 的能…

SDK游戲盾如何實現動態加密

SDK游戲盾的動態加密體系通過??密鑰動態管理、多層加密架構、協議混淆、AI自適應調整及設備綁定??等多重機制協同作用&#xff0c;實現對游戲數據全生命周期的動態保護&#xff0c;有效抵御中間人攻擊、協議破解、重放攻擊等威脅。以下從核心技術與實現邏輯展開詳細說明&am…

TensorFlow平臺介紹

什么是 TensorFlow&#xff1f; TensorFlow 是一個由 Google Brain 團隊 開發并維護的 開源、端到端機器學習平臺。它的核心是一個強大的數值計算庫&#xff0c;特別擅長于使用數據流圖來表達復雜的計算任務&#xff0c;尤其適合大規模機器學習和深度學習模型的構建、訓練和部署…

TENGJUN防水TYPE-C連接器:立貼結構與IPX7防護的精密融合

在戶外電子、智能家居、車載設備等對連接可靠性與空間適配性要求嚴苛的場景中&#xff0c;連接器不僅是信號與電力傳輸的“橋梁”&#xff0c;更需抵御潮濕、粉塵等復雜環境的侵蝕。TENGJUN防水TYPE-C連接器以“雙排立貼”為核心設計&#xff0c;融合鋅合金底座、精準尺寸控制與…