# Example Mapping - Context 軟體開發是一個學習的過程,開發人員學習領域知識。再將知識變成可以運行的程式碼。測試人員也依照領域知識來提練出測試的腳本及案例。 理想上,大家溝通順暢,經由領域專家而學習到的知識,開發及測試人員對需求都有一致的理解,沒有人不清楚我們所要做的事。 但現實上我們常常在玩背後寫字遊戲,從第一個人接收到的資訊之後就變了。接下來的每一次轉達,更是以等比級數的速度失真。 ![image alt](https://scontent.ftpe7-2.fna.fbcdn.net/v/t1.0-9/117539286_3755803717766312_6695473623587764880_n.jpg?_nc_cat=104&_nc_sid=730e14&_nc_ohc=BxpgzYzVVGIAX9cQSFv&_nc_ht=scontent.ftpe7-2.fna&oh=db1013aa2710c4825d916032916efbe4&oe=5F786F3B) # 問題是什麼?? :::warning 為何要在背I’m 後寫字?? 但全部寫成文件就比較好嗎?? ::: 軟體開發可以是一個漫長的程序,為了能讓參與的人都可以對要面對的問題都有一致性的理解。應該在不同的階段要有不同的工具來輔助我們進行溝通。 Example Mapping 所要處理的是那溝通的最後一哩路 ## 開發過程常會遇到的問題 身為開發者 1. 做到一半發現故事太大 2. 需求不明確、不一致 3. 細節沒有討論到,要一直去找人討論 身為提出需求的人 1. 開發人員誤解需求,造成要重新打造,浪費很多時間 身為測試人員 1. 超多的 bug 2. 對於測試的範圍不是很清楚 ## Example mapping 擅長... 1. 發現並擴展問題域 - 在還沒開發前去找出你所不知道的東西,甚至會找出新的 user story 2. 用共創的方式設計出 Acceptance Tests - 常常會因為用這種方式可以找出新的規則 - 還可以讓原有的 Acceptance 更加完整 3. Sharing understanding - Example Mapping 是由 Product Owner(Business Analyst), Developer, Tester 一同建立 - 所以可以讓大家對於系統該如何運行有共通的理解。 - 建立統一語言(單字) 4. 幫助我們解構一個太大的 User Story ## Force 我們想一個可以明確進行溝通的文件 這是一個 "活的文件" ## Example Mapping 的組成 Example Mapping 大致上由下列幾個元素組成 - Rule - Example - Question ![](https://i.imgur.com/UzFajbp.png) ## 準備 Timebox ## Steps 0. Exmaple Mapping 是一個很短的活動,記得先訂下一個小鬧鐘,不要太長(30分鐘以內)!!! 1. User Story from your backlog 2. 列出所有的 Rule 3. 列出想的到的範例 4. 開始問問題 最重要的是第 4 步,找出你不知道的部份!!! 專注在 problem domain, 而不是 solution domain :::info 火車訂位系統的範例 ::: ![](https://i.imgur.com/oC3Mw6K.png) [reference](https://www.youtube.com/watch?v=VwvrGfWmG_U) ## 退一步來看看 這一份完整的 Example mapping,並開始思考 If you are a Prodcut Owner, 看看這些是不是已經包括所有你想跟開發者的事情了?? 有沒有哪些你還沒有說的部份?? If you are a developer, 看看這些是不是已經足夠你進行開發?? 還有沒有哪些細節沒有想到?? 這些事情是不是可以在一個 Sprint 中完成?? If you are a tester, 想想這些資訊是不是足夠讓你測試並驗證這個系統? ## Vote it to decide if it is good to go? 在最後大家可以對於結果來行投票,以決定要不要開始進行開發 通常如果大家決定 - too many green? - too many red?