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. 一般會員只要購買兩個分類商品以上,運費打九折,此處的運費是 最高打九折,還是兩項商品相加打九折?