TDD, BDD, DDD๊ฐ ๋ญ์ผ? โจ
๐ TDD (Test Driven Development) - ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ - ๋งค์ฐ ์งง์ ๊ฐ๋ฐ ์ํด์ ๋ฐ๋ณต์ ๊ฐ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค - ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ์๋ํ๋ ํ ์คํธ์ผ์ด์ค๋ฅผ ์์ฑํ๊ณ ํด๋น ์ผ์ด์ค๋ฅผ ํต๊ณผํ๋ ๊ฐ์ฅ ์งง๊ณ ๊ฐ๋ ์ฑ์ด ์ข๊ณ ์ ์ง๋ณด์์ฑ - ๋ฐ์ด๋ ์ฝ๋๋ฅผ ์์ฑ - ์คํจํ๋ ํ ์คํธ ์ผ์ด์ค ๋จผ์ ์์ฑ ํ ํต๊ณผํ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๊ทธ ์ดํ ๋ฆฌํฉํ ๋ง ์ฅ์ - ์๊ตฌ์ฌํญ ์ดํด๋ ํฅ์ - ๊ธฐ์กด ๊ธฐ๋ฅ ์ ์ ๋์ ํ์ธ ๊ฐ๋ฅ - ์ฝ๋ ๋ฆฌํฉํ ๋ง ๋จ์ - ์ฝ๋๋ ์ฆ๊ฐ - ์ง์ ์ฅ๋ฒฝ - ์ฃผ๊ฐ์ ๋ ๐ DDD (Domain Driven Design) - ๋๋ฉ์ธ ์ฃผ๋ ๊ฐ๋ฐ - ์ํํธ์จ์ด์ ๋ณต์ก์ฑ ์ต์ํ - ๋ฐ์ดํฐ ์ค์ฌ์ ์ ๊ทผ๋ฒ์ ํํผํ์ฌ ์์ํ ๋๋ฉ์ธ์ ๋ชจ๋ธ๊ณผ ๋ก์ง์ ์ง์ค - ๋ชจ๋ ๋ฌธ์์ ์ฝ๋์ ๋์ผํ ํํ๊ณผ ๋จ์ด๋ก ๊ตฌ์ฑ๋ ๋จ์ผํ๋ ์ธ์ด์ฒด๊ณ ๊ตฌ์ถ - ๋ถ์, ์ค๊ณ, ๊ตฌํ๊น์ง ํต์ผ๋ ๋ฐฉ์์ผ๋ก ์ปค๋ฎค๋์ผ์ด์ ๊ฐ๋ฅ - DDD์ ํต์ฌ ๋ชฉํ๋ "Loosly coupling", "High cohesion" - ๊ธฐ์ ๋ณด๋ค ๋๋ฉ์ธ์ด ๋ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ ธ์ผํจ - ๋ถ์ ๋ชจ๋ธ๋ง๋ถํฐ ์ฝ๋๊น์ง ํญ์ ๊ฐ์ด ์์ง์ด๋ ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ์งํฅ ๐ BDD (Behavior Driven Development) - ํ๋ ์ฃผ๋ ๊ฐ๋ฐ - TDD์ DDD์ ์คํ์ผ์ ์ ์ฉํ์ฌ ํ์ - ํ ์คํธ ์ผ์ด์ค ์์ฒด๊ฐ ์๊ตฌ์ฌ์์ด ๋๋๋ก ๊ฐ๋ฐํ๋ ๋ฐฉ์ - TDD์์๋ ๋จ์ ํ ์คํธ๋ก ์์ฑ๋ ํ ์คํธ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋๊ณ ํ ์คํธ ์ผ์ด์ค์ ๋ํ ๋ฌธ์๋ฅผ ์์ฑํ์ผ๋, BDD๋ ์ด๊ฒ์ ํตํฉํ ์คํธ์ ์๋๋ฆฌ์ค ํ ์คํธ๊น์ง ํ์ฅํ์ฌ ๊ฐ๊ฐ์ ํด๋นํ๋ ๋ฌธ์๋ฅผ ๋์ฒด