๋ถ๋ก A์์๋ ์ฌ์ ์กฐ๊ฑด, ์ฌํ์กฐ๊ฑด, ๋ถ๋ณ์์ ์์๋ณด๊ณ ๋คํ์ฑ์ ์ธก๋ฉด์์ ์ํผํ์ ๊ณผ ์๋ธํ์ ์ด ์ค์ํด์ผ ํ๋ ์ ์ฝ์กฐ๊ฑด์ ๊ณ์ฝ์ ๊ด์ ์์ ์ค๋ช ํ๋ค.
๊ณ์ฝ์ ์ํ ์ค๊ณ(Design by Contract, DBC)๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ ฅ์ ํ์ํ ๋ค์ํ ์ ์ฝ๊ณผ ๋ถ์ํจ๊ณผ๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ํ๊ณ ๋ฌธ์ํํ ์ ์๋ค(p.535).
๊ณ์ฝ์ ์ํ ์ค๊ณ ๊ตฌ์ฑ์์
- ์ฌ์ ์กฐ๊ฑด (precondition): ๋ฉ์๋๊ฐ ํธ์ถ๋๊ธฐ ์ํด ๋ง์กฑ๋ผ์ผ ํ๋ ์กฐ๊ฑด. ์๊ตฌ์ฌํญ(requires)์ ๋ช ์ํ๋ฉฐ, ์ฌ์ ์กฐ๊ฑด์ ๋ง์กฑ์ํค๋ ๊ฒ์ ๋ฉ์๋๋ฅผ ์คํํ๋ ํด๋ผ์ด์ธํธ์ ์๋ฌด๋ค.
- ์ฌํ์กฐ๊ฑด (postcondition): ๋ฉ์๋๊ฐ ์คํ๋ ํ์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด์ฅํด์ผ ํ๋ ์กฐ๊ฑด. ์ฌํ์กฐ๊ฑด(effects)์ ์๋ฒ๊ฐ ๋ง์กฑ์ํค์ง ๋ชปํ๋ฉด ํด๋ผ์ด์ธํธ์๊ฒ ์์ธ๋ฅผ ๋์ ธ์ค์ผ ํ๋ฉฐ, ์ด๊ฒ์ ์๋ฒ์ ์๋ฌด์ด๋ค.
- ๋ถ๋ณ์ (invariant): ํญ์ ์ฐธ์ด๋ผ๊ณ ๋ณด์ฅ๋๋ ์๋ฒ์ ์กฐ๊ฑด. ๋ฉ์๋ ์คํ ์ค์๋ ๋ถ๋ณ์์ ๋ง์กฑ์ํค์ง ๋ชปํ ์๋ ์์ง๋ง ๋ฉ์๋๋ฅผ ์คํํ๊ธฐ ์ ์ด๋ ํ์๋ ๋ถ๋ณ์์ด ํญ์ ์ฐธ์ด์ด์ผ ํ๋ค. ๋ถ๋ณ์์ ์ธ์คํด์ค ์๋ช ์ฃผ๊ธฐ ์ ๋ฐ์ ๊ฑธ์ณ ์ง์ผ์ ธ์ผ ํ๋ ๊ท์น์ ๋ช ์ธํ๋ค. ํด๋์ค์ ๋ชจ๋ ๋ฉ์๋์ ์ฌ์ ์กฐ๊ฑด๊ณผ ์ฌํ์กฐ๊ฑด์ ์ถ๊ฐ๋๋ ๊ณตํต์ ์กฐ๊ฑด์ผ๋ก ์๊ฐํ ์ ์๋ค.
์ง์ ํ ์๋ธํ์ดํ ๊ด๊ณ๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ค๋ฉด, ์๋ธํ์ ์
1. ๋ ๊ฐ๋ ฅํ ์ฌ์ ์กฐ๊ฑด์ด๋
2. ๋ ์ํ๋ ์ฌํ์กฐ๊ฑด
์ ์ ์ํด์๋ ์ ๋๋ค. ์ํผํ์ ์ ๋ถ๋ณ์์ ์ ์งํด์ผ ํ๊ณ ์๋ธํ์ ์์ ์ํผํ์ ์์ ์ ์ํ์ง ์์ ์์ธ๋ฅผ ๋์ ธ์๋ ์ ๋๋ค(p.572).
'์คํฐ๋ > ์ค๋ธ์ ํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ค๋ธ์ ํธ] ๋ถ๋ก B, C 'ํ์ ๊ณ์ธต์ ๊ตฌํ', '๋์ ์ธ ํ๋ ฅ, ์ ์ ์ธ ์ฝ๋' (0) | 2023.02.10 |
---|---|
[์ค๋ธ์ ํธ] 15์ฅ '๋์์ธ ํจํด๊ณผ ํ๋ ์์ํฌ' (0) | 2023.01.21 |
[์ค๋ธ์ ํธ] 14์ฅ '์ผ๊ด์ฑ ์๋ ํ๋ ฅ' (0) | 2023.01.14 |
[์ค๋ธ์ ํธ] 13์ฅ '์๋ธํด๋์ฑ๊ณผ ์๋ธํ์ดํ' (0) | 2023.01.06 |
[์ค๋ธ์ ํธ] 12์ฅ '๋คํ์ฑ' (0) | 2022.12.30 |
๋๊ธ