---
# System prepended metadata

title: Example Mapping - Context

---

# 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?