【Agile Taichung Meeting 筆記】 PM大,我們換個方式寫需求文件吧!

Agile Taichung Meeting - 0416 - 實例化需求

 

PM大,我們換個方式寫需求文件吧!

講者簡介:Jamis Liao

https://dotblogs.com.tw/jamis(天橋下的說書人)

 

實例化需求可以用在任何的開發流程(傳統或敏捷)

每個人都需要,需求文件,需求文件真的很重要

團隊希望找到一個方式來寫需求,並且最好所有團隊成員一起寫

BUT 如果有以下症狀,可以試看看實例化需求

1. 約時間一起寫需求,彼此都認為是來吵架

2. 搞得像談判,甚至快打起來

 

不好的需求文件可能會有的問題

抽象、不明確、不清楚

缺少:場景,何時,如何使用,明確的目的

 

改用實例化需求

使用具體的例子,來表達(明確的場景,邏輯的結果)

使用:場景(Scenario)|假設(GIven)|並且(And)|當(When)|那麼(Then)

實例化需求是

  • 文件撰寫方式
  • 成員協作合作
  • 定義軟體的需求
  • 商業導向的測試
  • 明確地定義需求的範圍
  • 避免只用抽象的敘述說明軟體的行為
  • 具體的案例,去說明需求及範圍
  • 自然語言
  • 從頭(PO大)到尾(QA哥)連貫
  • 讓所有團隊的成員都清楚的明白需求

 

實例化的工具

工具:Cucumber 可以將需求敘述直接轉成測試程式框架

使用:功能|背景|場景|假設|並且|當|那麼

http://www.specflow.org/(SpecFlow Cucumber For .Net)

 

為什麼要寫實例化需求

使用自然語言,把所有團隊人員串連起來:需求者,QA,RD,PM(都用實例化需求溝通)

語言一致,傳遞容易(面對面討論,寫出來)

讓所有成員明確地瞭解需求

 

寫實例化需求會不會更麻煩

實例化需求並不是要取代傳統文件,而是要補足它的不足

雖然需求文件準備的時間變長,但有它的好處

並不是多寫一個文件,而是寫下所有可能情況,定義需求:definition of done(DOD)

目的在於,一份大家都懂的文件,降低一起溝通討論的門檻

 

團隊一起來寫實例化需求

誰來寫:Everyone(不同角色的切入觀點都不一樣,所以會激發出不同的思維)

不能完全用程式猿的角度去寫實例化需求,要用團隊的角度去寫

一種手段,迫使團隊一起去定義場景(例子)

 

Workshop 實際演練 - 動手寫實例化需求

傳統的需求描述(有破綻與陷阱)

電子購物商城提供書籍、3C、家電供客戶購買,並依照商品的類別不同,定義了不同的裁積與運費,分類如下

書籍:小,運費 100 塊

3C:中,運費 200 塊

家電:大,運費 300 塊

而寄送的運費由裁積與會員等級決定。運費規則如下

VIP 會員,買超過 6 本書不用運費,6 本書以下書籍運費打九折計算

一般會員,不管買幾本書都要運費

VIP 會員,購買 6 本書以上,但是還買了其他分類商品,運費則由其他分類運費最高的金額打八折計算

一般會員,不管買幾本書,只要有買其他分類商品,運費則由其他分類運費最高的計算

一般會員只要購買兩個分類商品以上,運費打九折

 

實例化需求

Scenario:VIP 會員,買超過 6 本書不用運費

Given:VIP 會員

And:7 本書

When:結帳時

Then:運費 0 元

 

Scenario:VIP會員,買 6 本書以下書籍運費打九折計算

Given:VIP 會員

And:6 本書

When:結帳時

Then:運費 90 元

 

Scenario:VIP 會員,購買 6 本書以上,還買了一個 3C 產品,運費則由其他分類運費最高的金額打八折計算

Given:VIP 會員

And:7 本書,1 個 3C 產品

When:結帳時

Then:運費 160 元

 

Scenario:VIP 會員,購買 6 本書以上,還買了 1 個家電產品,運費則由其他分類運費最高的金額打八折計算

Given:VIP 會員

And:7 本書,1 個家電產品

When:結帳時

Then:運費 240 元

 

Scenario:VIP 會員,購買 6 本書以上,還買了 1 個 3C 產品,以及 1 個家電產品,運費則由其他分類運費最高的金額打八折計算

Given:VIP 會員

And:7 本書,1 個 3C 產品,1 個家電產品

When:結帳時

Then:運費 240 元

 

寫完實例化需求會,會激發你的思考(VIP會員)

1. VIP 會員,購買 6 本書以下,還買了一個 3C 產品。運費要如何算?

2. VIP 會員,購買 3C 與家電的運費,是否會因購買數量的不同,而有所不同?

3. 若 VIP 會員,若買非常大量的書,是否有其他做法?

 

Scenario:一般會員,不管買幾本書都要運費

Given:VIP 會員

And:1 本書

When:結帳時

Then:運費 100 元

 

Scenario:一般會員,不管買幾本書都要運費

Given:VIP 會員

And:7 本書

When:結帳時

Then:運費 100 元

 

Scenario:一般會員,買了 1 本書,還買了 1 個 3C 產品,運費則由其他分類運費最高的計算

Given:一般會員

And:1 本書,1 個 3C 產品

When:結帳時

Then:運費 200 元

 

Scenario:一般會員,買了 7 本書,還買了 1 個 3C 產品,運費則由其他分類運費最高的計算

Given:一般會員

And:7 本書,1 個 3C 產品

When:結帳時

Then:運費 200 元

 

Scenario:一般會員,買了 1 本書,還買了 1 個家電產品,運費則由其他分類運費最高的計算

Given:一般會員

And:1 本書,1 個家電產品

When:結帳時

Then:運費 300 元

 

Scenario:一般會員,買了 7 本書,還買了 1 個家電產品,運費則由其他分類運費最高的計算

Given:一般會員

And:7 本書,1 個家電產品

When:結帳時

Then:運費 300 元

 

Scenario:一般會員,買了 1 本書,還買了 1 個 3C 產品,以及 1 個家電產品,運費則由其他分類運費最高的計算

Given:一般會員

And:1 本書,1 個 3C 產品,1 個家電產品

When:結帳時

Then:運費 300 元

 

Scenario:一般會員,買了 7 本書,還買了 1 個 3C 產品,以及 1 個家電產品,運費則由其他分類運費最高的計算

Given:一般會員

And:7 本書,1 個 3C 產品,1 個家電產品

When:結帳時

Then:運費 300 元

 

寫完實例化需求會,會激發你的思考(一般會員)

1. 一般會員,購買 3C 與家電的運費,是否會因購買數量的不同,而有所不同?

2. 若一般會員,若買非常大量的書,是否有其他做法?

3. 一般會員只要購買兩個分類商品以上,運費打九折,此處的運費是 最高打九折,還是兩項商品相加打九折?