如何實現預測驅動開發(一)

来源:https://www.cnblogs.com/zhukunrong/archive/2020/02/10/12289524.html
-Advertisement-
Play Games

How to Implement Hypothesis Driven Development 原文:https://www.thoughtworks.com/insights/articles/how implement hypothesis driven development 翻譯:祝坤榮(時序 ...


How to Implement Hypothesis-Driven Development

原文:https://www.thoughtworks.com/insights/articles/how-implement-hypothesis-driven-development

翻譯:祝坤榮(時序)

讓我們回憶下高中的自然課。老師有一套方法來幫助我們學習 - 一套基於手頭證據的實驗方法。我們被要求觀察我們身邊的世界,然後嘗試形成一套對我們觀察所得的解釋或假設。我們在可控的實驗環境通過預測我們理論的輸出來測試這個假設 - 如果輸出達到了,我們就證明瞭我們的理論是正確的。

我們通過構造更多成熟的實驗來將學到的知識去形成和測試其他假設,調教,改進或摒棄任何我們獲得更多從結果觀察出的假設。

實驗室自然科學的基礎,是探索我們周圍世界的系統方法。儘管一些實驗是在實驗室做的,但在任何時間和地點進行實驗都沒有問題,甚至在軟體開發領域也可以。

實踐假設驅動開發就是將開發一個新點子,產品和服務 - 甚至是組織變更 都作為一系列的實驗來對待,用來決定期望的輸出是否已達到。這個過程不斷進行指導一個期望的結果達到了或主意已經被證明是可行的。

我們要改變自己的想法,當對一個問題做假設提供解決方案時,尤其是在新產品或服務開發時 - 我們瞄準的市場,業務模型是如何運作的,代碼是如何執行的,甚至消費者是如何使用的。

我們不再做項目,而是做實驗。用戶發現和精益啟動測試就是被設計成測試關於用戶的假設。質量保證是按規格定義說明書測試系統行為。實驗理論也在測試驅動開發中應用 - 我們先寫測試,然後用測試來驗證我們的代碼是否正確,當代碼通過測試後就是成功的。最終,產品或服務開發變成了一個流程,用來測試一個假定環境或市場上的開發的系統行為。

實驗核心的輸出是測量證據和學到的知識。

學到的知識就是我們在實驗中得到的東西。我們期望的是不是已經發生了?如果沒有,這些信息如何指導我們下次實驗?

為了學習知識我們需要使用科學的方法來研究問題現象,獲得新的知識,更正和整合之前的知識到我們的思考中。

隨著軟體開發行業的持續成熟,我們現在有機會應用持續設計和交付來最大化我們學到的來進行持續改進。通過使用實驗方式來進行信息發現,我們可以更快速的對我們在創建產品或服務時識別問題來測試我們的方案。優化我們解決正確問題的效率是目標,而不是通過不斷構建方案成為一個特性的工廠。

科學方法的步驟是:

  • 進行觀察
  • 形成一個假設
  • 設計一個實驗來測試假設
  • 定量分析實驗是否成功。
  • 進行實驗
  • 評估實驗結果
  • 接受或推翻假設
  • 如果有必要,做個新假設並測試

用試驗方法進行軟體開發

我們要挑戰對於產品或服務的固定需求的方式。當團隊進行一個熟知的或確定的計劃階段時需求是有價值的,並能讓我們使用熟知的實踐來獲得收入。而當你在摸索複雜和不確定階段時你需要假設。

讓團隊處理一系列業務需求會讓團隊形成不正確的接單觀念。

業務方來思考並‘知道’什麼是真缺德。開發團隊的活就是開發來實現被告知的東西。但當在一個不確定和複雜的領域,所有的開發團隊成員都應該被鼓勵思考和分享對於問題的想法,以及潛在解決方案。一個只是接單的團隊並不能發揮跨職能多學科團隊的全部潛力,經驗和能力。

形成假設

傳統用戶故事框架聚焦在捕獲我們想要做的和為誰做的需求,讓用戶能從系統中得到特定的收益。

作為... <角色>
我要... <目標/期望>
所以... <獲得收益>

行為驅動開發與特性註入 旨在為軟體項目支持開發測試與非技術人員的溝通協作框架提供改進。

為了... <獲得收益>
作為... <角色>
我要... <目標/期望>

當將工作視為一種實驗,傳統的用戶故事是不好用的。在我們的高中實驗課,我們要為達到期望的結果定義步驟。我們需要定出要觀察的指標(或信號)來提供我們假設是合理的證據。為了減少對結果的干擾這些需要在測試前就要決定。

如果我們觀察到假設是對的信號,我們可以對我們在正確的路徑上有更多信心並將其反映到用戶故事框架里。

這樣,一個能支持假設驅動開發的用戶故事結構會是:
file

本文來自祝坤榮(時序)的微信公眾號「麥芽麵包,id「darkjune_think」
轉載請註明。微信掃一掃關註公眾號。
交流Email: [email protected]


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 緩存設置: 編輯-首選項-暫存檔 改完除了C盤之外的其他盤 單位設置: 編輯-首選項-單位與標尺 將單位修改成像素 PS預設: 工具 (視窗-工具) 標尺 (視圖-標尺) 圖層 (視窗-圖層) 信息 (視窗-信息) 字元 (視窗-段落) 框選一塊區域後,可以在信息里查看尺寸相關 藉助輔助線切圖:拉好 ...
  • 在JS中,能用 . 的地方一般都可以用 [ ] 取代 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width ...
  • typora copy images to: media 第01階段.前端基礎.HTML常用標簽 學習目標 理解: 相對路徑三種形式 應用 排版標簽 文本格式化標簽 圖像標簽 鏈接 相對路徑,絕對路徑的使用 1. HTML常用標簽 首先 HTML和CSS是兩種完全不同的語言,我們學的是結構,就只寫H ...
  • typora copy images to: media 第01階段.前端基礎.認識HTML 學習目標 理解 HTML的概念 HTML標簽的分類 HTML標簽的關係 HTML標簽的語義化 應用 HTML骨架格式 sublime基本使用 1. HTML 初識 HTML 指的是超文本標記語言 ( H y ...
  • typora copy images to: media 第01階段.前端基礎.認識WEB 基礎班學習目標 目標: 能根據psd文件,用HTML+CSS 佈局出符合W3C規範的網頁。 網站首頁 列表頁、詳情頁、登錄頁、 註冊頁等等。。。。 課程安排 就業班詳情 參看: http://www.itca ...
  • 在《Umi 小白紀實(一)》中有提到過簡單的路由配置和使用,但這隻是冰山一角 借用一句廣告詞,Umi 路由的能量,超乎你的想象 一、基本用法 Umi 的路由根結點是全局 layout src/layouts/index.js 路由會將相應的頁面組件映射到上面的 props.children 中 之前 ...
  • 今日內容 帶參數的裝飾器: flask框架 + django緩存 + 寫裝飾器實現被裝飾的函數要執行N次 模塊 os sys time(三種類型) datetime 和 timezone【瞭解】 內容回顧 & 補充 1.函數 寫代碼的方式:面向過程 函數式編程(多) 面向對象編程。 1.1 函數基礎 ...
  • 一、使用cookie登錄 1.直接把cookie複製下去,然後手動放到請求頭 2.http模塊包含一些關於cookie的模塊,通過他們我們可以自動使用cookie (1)cookieJar 管理存儲cookie,向傳出的http請求添加cookie;cookie存儲在記憶體中,CookieJar實例回 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...