๐ 3๊ฐ: EARS(Easy Approach to Requirements Syntax) ์๊ฐ
์๋
ํ์ธ์ ์ฌ๋ฌ๋ถ! ๐
์ค๋์ ์๊ตฌ์ฌํญ์ ๋ ์ฝ๊ณ ๋ช
ํํ๊ฒ ์์ฑํ๋ ๋ฐฉ๋ฒ ์ค ํ๋์ธ EARS(Easy Approach to Requirements Syntax)๋ฅผ ์๊ฐํด๋๋ฆด๊ฒ์.
์ด ๋ฐฉ๋ฒ์ ๋ณต์กํ ๋ฌธ์ฅ์ ๊ฐ๋จํ ํจํด์ผ๋ก ์ ๋ฆฌํด ์ฃผ๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์์ ๊ธฐํ์, ์ฌ์ง์ด ๊ณ ๊ฐ๊น์ง ๋ชจ๋ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ค๋๋ค.
๐ EARS๋ ๋ฌด์์ธ๊ฐ?
EARS๋ Easy Approach to Requirements Syntax์ ์ฝ์๋ก,
์๊ตฌ์ฌํญ์ ์ผ์ ํ ๋ฌธ๋ฒ ํจํด์ ๋ง์ถฐ ์์ฑํ๋๋ก ๋์์ฃผ๋ ๊ธฐ๋ฒ์
๋๋ค.
๐ ์ฅ์ ์?
- ๋ถํ์ํ๊ฒ ๊ธด ์ค๋ช โ
- ํด์์ด ์ ๊ฐ๊ฐ์ธ ๋ชจํธํ ํํ โ
- ๋๊ตฌ๋ ํ๋์ ์ดํด ๊ฐ๋ฅํ ์๊ตฌ์ฌํญ โ
์ฆ, "๋ชจํธ์ฑ ์ค์ด๊ธฐ + ๊ฐ๊ฒฐ์ฑ ํ๋ณด"๋ผ๋ ๋ ๋ง๋ฆฌ ํ ๋ผ๋ฅผ ๋์์ ์ก์ ์ ์๋ ๊ฑฐ์ฃ ! ๐ฐ๐ฐ
๐งฉ EARS์ ๊ธฐ๋ณธ ํจํด
EARS๋ ์๊ตฌ์ฌํญ์ 5๊ฐ์ง ์ฃผ์ ํจํด์ผ๋ก ๋๋๋๋ค.

1. Ubiquitous ์๊ตฌ์ฌํญ (์ธ์ ๋ ์ ์ฉ๋๋ ์๊ตฌ์ฌํญ)
๐ ๊ตฌ์กฐ:์์คํ
์ [ํญ์ ์ํํด์ผ ํ๋ ๋์]์ ํ๋ค.
๋ฌธ๋ฒ ๊ตฌ์กฐ: “The <system> shall <response>”
๐ ์์:
- “์์คํ ์ ํญ์ ์๋ ๋ฒํผ์ด ๋๋ฆฌ๋ฉด ์์ง์ ์๋ํด์ผ ํ๋ค.”
- “์์คํ ์ ํญ์ ์ด์ ์๊ฐ ์์ ๋ฒจํธ๋ฅผ ๋งค์ง ์์ผ๋ฉด ๊ฒฝ๊ณ ์์ ๋ฐ์ํด์ผ ํ๋ค.”
๐ ํน์ง: ์กฐ๊ฑด์ด ๋ถ์ง ์๊ณ , ์์คํ ์ด ํญ์ ์ํํด์ผ ํ๋ ํ๋์ ์ ์ํฉ๋๋ค.
2. Event-driven ์๊ตฌ์ฌํญ (ํน์ ์ด๋ฒคํธ ๋ฐ์ ์)
๐ ๊ตฌ์กฐ:์์คํ
์ [์กฐ๊ฑด/์ด๋ฒคํธ]๊ฐ ๋ฐ์ํ๋ฉด [๋์]์ ํด์ผ ํ๋ค.
๋ฌธ๋ฒ ๊ตฌ์กฐ: “When <trigger>, the <system> shall <response>”
๐ ์์:
- “์์คํ ์ ๋ฐฐํฐ๋ฆฌ ์ ์์ด 10V ๋ฏธ๋ง์ด๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ์ํด์ผ ํ๋ค.”
- “์์คํ ์ ๋ธ๋ ์ดํฌ ํ๋ฌ์ด ๋๋ฆฌ๋ฉด ๋ธ๋ ์ดํฌ๋ฑ์ ์ผ์ผ ํ๋ค.”
๐ ํน์ง: ์กฐ๊ฑด๋ฌธ์ด ํฌํจ๋์ด ํน์ ์ํฉ์์๋ง ๋์์ ์ํํฉ๋๋ค.
3. State-driven ์๊ตฌ์ฌํญ (์ํ ๊ธฐ๋ฐ)
๐ ๊ตฌ์กฐ:์์คํ
์ [ํน์ ์ํ]์ผ ๋ [๋์]์ ํด์ผ ํ๋ค.
๋ฌธ๋ฒ ๊ตฌ์กฐ: “While <precondition(s)>, the <system> shall <response>”
๐ ์์:
- “์์คํ ์ ์ฃผ์ฐจ ๋ชจ๋ ์ํ์ผ ๋ ํ๋ฐฉ ์นด๋ฉ๋ผ ์์์ ํ์ํด์ผ ํ๋ค.”
- “์์คํ ์ ํฌ๋ฃจ์ฆ ์ปจํธ๋กค์ด ํ์ฑํ๋ ์ํ์ผ ๋ ์ค์ ์๋๋ฅผ ์ ์งํด์ผ ํ๋ค.”
๐ ํน์ง: ์ด๋ฒคํธ๋ณด๋ค๋ ์ํ์ ๋ฐ๋ผ ์์คํ ์ ๋์์ ๊ท์ ํฉ๋๋ค.
4. Optional ์๊ตฌ์ฌํญ (์กฐ๊ฑด๋ถ, ์ ํ์ ์ํฉ)
๐ ๊ตฌ์กฐ:์์คํ
์ [ํน์ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋ ๊ฒฝ์ฐ] [๋์]์ ์ํํด์ผ ํ๋ค.
๋ฌธ๋ฒ ๊ตฌ์กฐ: “Where <feature is included>, the <system> shall <response>”
๐ ์์:
- “์์คํ ์ ์ผ๊ฐ์ผ ๊ฒฝ์ฐ ํค๋๋จํ ์๋ ์ ๋ฑ ๊ธฐ๋ฅ์ ํ์ฑํํด์ผ ํ๋ค.”
- “์์คํ ์ ์ฌ์ฉ์๊ฐ ‘์์ฝ ๋ชจ๋’๋ฅผ ์ ํํ ๊ฒฝ์ฐ ์ฐ๋ฃ ํจ์จ์ฑ์ ์ฐ์ ํด์ผ ํ๋ค.”
๐ ํน์ง: ํน์ ์ต์ ์ ์ํฉ์์๋ง ๋์์ด ์๊ตฌ๋ฉ๋๋ค.
5. Complex ์๊ตฌ์ฌํญ (๋ณตํฉ ์กฐ๊ฑด)
๐ ๊ตฌ์กฐ:์์คํ
์ [์กฐ๊ฑด1] AND/OR [์กฐ๊ฑด2]์ผ ๋ [๋์]์ ์ํํด์ผ ํ๋ค.
๋ฌธ๋ฒ ๊ตฌ์กฐ: ์1) ์ํ + ์ด๋ฒคํธ: “While <precondition>, when <trigger>, the <system> shall <response>”
๐ ์์:
- “์์คํ ์ ์ฐจ๋ ์๋๊ฐ 30km/h ์ด์์ด๊ณ , ์ฐจ์ ์ดํ์ด ๊ฐ์ง๋๋ฉด ๊ฒฝ๊ณ ์์ ์ธ๋ ค์ผ ํ๋ค.”
- “์์คํ ์ ๋ฐฐํฐ๋ฆฌ ์ ์์ด 10V ๋ฏธ๋ง์ด๊ฑฐ๋, ์ถฉ์ ์ผ์ด๋ธ์ด ๋ถ๋ฆฌ๋๋ฉด ๊ฒฝ๊ณ ๋ฑ์ ์ผ์ผ ํ๋ค.”
๐ ํน์ง: ๋ณต์์ ์กฐ๊ฑด์ ์กฐํฉํ์ฌ ์ข ๋ ์ ๊ตํ ์๊ตฌ์ฌํญ์ ํํํฉ๋๋ค.
๐ฏ ์ EARS๋ฅผ ์จ์ผ ํ ๊น?
์๊ตฌ์ฌํญ์ด ๋ชจํธํ๋ฉด, ๊ฐ๋ฐํ๋ง๋ค ์ ๊ฐ๊ฐ ํด์ํด์ ์ฌ์์
๊ณผ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ด์. ๐ต
ํ์ง๋ง EARS๋ ์ผ์ ํ ๋ฌธ๋ฒ ํ์ ์ ๊ณตํ๋ฏ๋ก, "์ด๊ฒ ๋ฌด์จ ๋ป์ด์ง?"๋ผ๋ ์๋ฌธ์ ์ค์ฌ์ค๋๋ค.
์ฆ, ํ์ง ์ข์ ์๊ตฌ์ฌํญ → ํ์ง ์ข์ ์ํํธ์จ์ด๋ก ์ด์ด์ง๋ ๊ฒ์ด์ฃ .
๐ก ์ ๋ฆฌ
EARS๋ ์ด๋ ๊ฒ ๋ค์ํ ์ํฉ์ ๋ช ํํ ๋ฌธ์ฅ ๊ตฌ์กฐ๋ก ์ก์์ฃผ๋ ์์ฃผ ์ ์ฉํ ๋๊ตฌ์ ๋๋ค.
- Ubiquitous: ์ธ์ ๋ ๋์
- Event-driven: ํน์ ์ด๋ฒคํธ ์ ๋์
- State-driven: ํน์ ์ํ์์ ๋์
- Optional: ์กฐ๊ฑด๋ถ/์ ํ ์ํฉ์์ ๋์
- Complex: ๋ณตํฉ ์กฐ๊ฑด์์ ๋์
๐ ์ด 5๊ฐ์ง๋ฅผ ์ตํ๋ฉด, ๋ชจํธํ๊ฑฐ๋ ์ ๋งคํ ์๊ตฌ์ฌํญ์ ์ค์ด๊ณ ํ์ ๋ชจ๋๊ฐ ๊ฐ์ ๊ทธ๋ฆผ์ ๋ณผ ์ ์๊ฒ ๋ฉ๋๋ค! ๐
๐ ์ ๋ฆฌ ํ
| Ubiquitous | ํญ์ ์ ์ฉ๋๋ ์๊ตฌ์ฌํญ | ๐ ์์คํ ์ ์๋ ๋ฒํผ์ด ๋๋ฆฌ๋ฉด ์์ง์ ์๋ํด์ผ ํ๋ค. |
| Event-Driven | ํน์ ์ฌ๊ฑด(Event)์ด ๋ฐ์ํ์ ๋ ๋์ | ๐ ์์คํ ์ ๋ฐฐํฐ๋ฆฌ ์ ์์ด 10V ๋ฏธ๋ง์ด๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ์ํด์ผ ํ๋ค. |
| State-Driven | ํน์ ์ํ(State)์์ ๋์ | ๐ ฟ ์ฐจ๋์ด ์ฃผ์ฐจ ๋ชจ๋์ผ ๋ ์๋ ๋ธ๋ ์ดํฌ๋ฅผ ํ์ฑํํด์ผ ํ๋ค. |
| Optional | ์กฐ๊ฑด์ด ์ฐธ์ผ ๋๋ง ๋์ | โ ์ฌ์ฉ์๊ฐ ์ค์ ์ ํ์ฑํํ ๊ฒฝ์ฐ ์๋ ์ ๋ฐ์ดํธ๋ฅผ ์ํํด์ผ ํ๋ค. |
| Complex | ๋ณตํฉ ์กฐ๊ฑด(์ฌ๋ฌ ์ด๋ฒคํธ·์ํ ๊ฒฐํฉ) | ๐จ ์ฐจ๋ ์๋๊ฐ 80km/h ์ด์์ด๊ณ ์ฐจ์ ์ดํ ๊ฐ์ง ์ ๊ฒฝ๊ณ ์์ ์ธ๋ ค์ผ ํ๋ค. |
๐ฎ ๋ค์ ์๊ฐ ์๊ณ
๋ค์ ๊ฐ์์์๋
“์๋ชป๋ ์๊ตฌ์ฌํญ ์ฌ๋ก์ ๊ฐ์ ํ๊ธฐ”๋ผ๋ ์ฃผ์ ๋ก
EARS๋ฅผ ํ์ฉํด ๋์ ์๊ตฌ์ฌํญ์ ์ด๋ป๊ฒ ์ข์ ์๊ตฌ์ฌํญ์ผ๋ก ๋ฐ๊ฟ ์ ์๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
๊ทธ๋ผ ๋ค์ ์๊ฐ์ ๋ง๋์~ ๐
'System Dev. > RM' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| (RM 6๊ฐ) ๋ชจํธ์ฑ ์ ๊ฑฐ ๊ธฐ๋ฒ โ ๊ธ์ง์ด์ ์ ๋ํ (0) | 2025.09.03 |
|---|---|
| (RM 5๊ฐ) ๊ณ์ธต์ ์๊ตฌ์ฌํญ ๊ด๋ฆฌ โ ์์คํ ์์ SW๊น์ง (4) | 2025.08.28 |
| (RM 4๊ฐ) ์๋ชป๋ ์๊ตฌ์ฌํญ ์ฌ๋ก์ ๊ฐ์ ํ๊ธฐ (1) | 2025.08.25 |
| (RM 2๊ฐ) ์ข์ ์๊ตฌ์ฌํญ์ 5๋ ์์น โ SMARTํ๊ฒ ์ฐ์! (4) | 2025.08.19 |
| (RM 1๊ฐ) ์ข์ ์๊ตฌ์ฌํญ์ ์์น๊ณผ INCOSE ๊ท์น (7) | 2025.08.18 |
