# [[Red-Green Refactoring]] ## ๐Ÿ“Œ Brief Summary Red-Green Refactoring์€ ์• ์ž์ผ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง ๊ธฐ๋ฒ•์œผ๋กœ, ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ(TDD) ์›Œํฌํ”Œ๋กœ์šฐ์— ๊นŠ์ด ๋ฟŒ๋ฆฌ๋ฅผ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [1, 2]. ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๋Š” 'Red' ๋‹จ๊ณ„, ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ์‹œํ‚ค๋Š” 'Green' ๋‹จ๊ณ„, ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” 'Refactor' ๋‹จ๊ณ„์˜ ์„ธ ๊ฐ€์ง€ ๋ฐ˜๋ณต์ ์ธ ์ฃผ๊ธฐ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค [3-5]. ๊ธฐ๋Šฅ ์ถ”๊ฐ€์™€ ๊ตฌ์กฐ ๊ฐœ์„ ์„ ์—„๊ฒฉํžˆ ๋ถ„๋ฆฌํ•˜์—ฌ, ๊ธฐ์กด ๋™์ž‘์„ ํ›ผ์†ํ•˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ์‹œ์Šคํ…œ์˜ ์œ ์—ฐ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ์ง€์†์ ์œผ๋กœ ๋†’์ด๋Š” ๋ฐ ๋ชฉ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค [3, 5]. ## ๐Ÿ“– Core ์†Œ์Šค Red-Green Refactoring์€ "ํ…Œ์ŠคํŠธ ์šฐ์„ (test-first)" ์ ‘๊ทผ๋ฒ•์„ ๋”ฐ๋ฅด๋ฉฐ, ์ด๋Š” ๋ชจ๋“  ํ˜•ํƒœ์˜ ๋ฆฌํŒฉํ† ๋ง์˜ ๊ธฐ์ดˆ๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค [1]. ์ด ์ „๋žต์€ ๊ธฐ๋Šฅ ๊ตฌํ˜„๊ณผ ๋ฆฌํŒฉํ† ๋ง์„ ์œ„ํ•œ ์„ธ ๊ฐ€์ง€ ๋ช…ํ™•ํ•œ ๋‹จ๊ณ„๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. * **RED (์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ž‘์„ฑ):** ํŠน์ • ์†Œํ”„ํŠธ์›จ์–ด ๋™์ž‘์ด๋‚˜ ๊ธฐ๋Šฅ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ(red-test)๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค [3, 5]. ์•„์ง ์‹ค์ œ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ํ…Œ์ŠคํŠธ๋Š” ์˜๋„์ ์œผ๋กœ ์‹คํŒจํ•˜๋„๋ก ์„ค๊ณ„๋ฉ๋‹ˆ๋‹ค [5]. ์ด ๋‹จ๊ณ„๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋ฌด์—‡์„ ๊ฐœ๋ฐœํ•ด์•ผ ํ• ์ง€ ๋ช…ํ™•ํžˆ ํ™•์ธํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค [3]. * **GREEN (ํ…Œ์ŠคํŠธ ํ†ต๊ณผ๋ฅผ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ ๊ตฌํ˜„):** ๊ฐœ๋ฐœ์ด ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ(green)ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๊ณ  ์ถฉ๋ถ„ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค [3]. ์ด ๋‹จ๊ณ„์˜ ํ•ต์‹ฌ ๋ชฉํ‘œ๋Š” ์ฝ”๋“œ์˜ ํ’ˆ์งˆ๋ณด๋‹ค๋Š” ์†๋„์— ์žˆ์œผ๋ฏ€๋กœ, ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ๋งŒ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค [5]. * **REFACTOR (์ฝ”๋“œ ๊ฐœ์„  ๋ฐ ์ตœ์ ํ™”):** ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋Š” ์ƒํƒœ(green)๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค [3]. ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋™์ž‘์€ ๊ทธ๋Œ€๋กœ ๋ณด์กดํ•˜๋ฉด์„œ, ์ฝ”๋“œ๋ฅผ ๋” ๊นจ๋—ํ•˜๊ณ , ๋ช…ํ™•ํ•˜๋ฉฐ, ํšจ์œจ์ ์œผ๋กœ ๋‹ค๋“ฌ์–ด ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค [4, 5]. ์ด ๊ธฐ์ˆ ์€ ๋ณธ์งˆ์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์‹œ์Šคํ…œ์— ์ถ”๊ฐ€ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ํŒŒํŠธ(Red, Green)์™€ ๊ทธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ํŒŒํŠธ(Refactor)๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค [3]. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์›์น™์€ ์›Œํฌํ”Œ๋กœ์šฐ ์ค‘์— ์ด ๋‘ ๊ฐ€์ง€ ์ž‘์—…(๊ธฐ๋Šฅ ์ถ”๊ฐ€์™€ ๋ฆฌํŒฉํ† ๋ง)์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค [3]. ## โš–๏ธ Trade-offs & Caveats * **Green ๋‹จ๊ณ„์—์„œ์˜ ํ’ˆ์งˆ ์ €ํ•˜ ๊ฐ์ˆ˜:** Green ๋‹จ๊ณ„์—์„œ๋Š” ๊ณ ํ’ˆ์งˆ์˜ ์™„๋ฒฝํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋น ๋ฅธ ์‹œ๊ฐ„ ๋‚ด์— ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” '์†๋„'๋ฅผ ์šฐ์„ ์‹œํ•ฉ๋‹ˆ๋‹ค [5]. ์ด๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ๋น ๋ฅด๊ฒŒ ๋‹ฌ์„ฑํ•˜๋Š” ๋Œ€์‹  ์˜๋„์ ์œผ๋กœ ์—‰์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์ž„์‹œ๋กœ ๋‚จ๊ธฐ๊ฒŒ ๋˜๋ฉฐ, ํ›„์† Refactor ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ์ˆ  ๋ถ€์ฑ„๋กœ ์ „๋ฝํ•  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. * **๊ธฐ๋Šฅ ์ถ”๊ฐ€์™€ ๋ฆฌํŒฉํ† ๋ง์˜ ๋™์‹œ ์ˆ˜ํ–‰ ๊ธˆ์ง€:** ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€(์ฝ”๋“œ ์ž‘์„ฑ)์™€ ๋ฆฌํŒฉํ† ๋ง์„ ์ ˆ๋Œ€ ๋™์‹œ์— ์ง„ํ–‰ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค [3]. ์ด ์—„๊ฒฉํ•œ ๋ถ„๋ฆฌ๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š์œผ๋ฉด ๋””๋ฒ„๊น…์ด ์–ด๋ ค์›Œ์ง€๊ณ , ํ…Œ์ŠคํŠธ์˜ ์‹ ๋ขฐ์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๋ถ€์ž‘์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [3, 6]. * **์ดˆ๊ธฐ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ์˜ ํ•œ๊ณ„:** ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์ „์— ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋ฏ€๋กœ(Red ๋‹จ๊ณ„), ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์ถ”๊ฐ€์ ์ธ ์‹œ๊ฐ„์  ์ œ์•ฝ๊ณผ ๋…ธ๋ ฅ์ด ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค [3, 5]. ํ…Œ์ŠคํŠธ ์ธํ”„๋ผ๊ฐ€ ๋ถ€์กฑํ•œ ์ƒํ™ฉ์—์„œ๋Š” ๋ฆฌํŒฉํ† ๋ง์— ์•ž์„œ ํ…Œ์ŠคํŠธ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ ์šฉ์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [๋ฐฉ๋ฒ•๋ก /๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค] - [[TDD (Test-Driven Development)]] - ์—ฐ๊ฒฐ ์ด์œ : Red-Green Refactoring์€ ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ(TDD) ์›Œํฌํ”Œ๋กœ์šฐ์— ๋‚ด์žฌ๋˜์–ด ์žˆ์œผ๋ฉฐ, TDD ์‚ฌ์ดํด ๊ทธ ์ž์ฒด๋ฅผ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [2, 5, 8]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ํ…Œ์ŠคํŠธ ์ž‘์„ฑ์ด ์–ด๋–ป๊ฒŒ ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌํ˜„ ๋ฐ ๋ฆฌํŒฉํ† ๋ง์„ ์ฃผ๋„ํ•˜๊ณ  ์•ˆ์ •์„ฑ์„ ๋ถ€์—ฌํ•˜๋Š”์ง€ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ ๊ด€์ ์—์„œ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5, 8]. - [[Agile Methodology]] - ์—ฐ๊ฒฐ ์ด์œ : Red-Green ๊ธฐ๋ฒ•์€ ์• ์ž์ผ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๊ณ  ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ˆ ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [1, 2]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์งง์€ ์ฃผ๊ธฐ์˜ ๋ฐ˜๋ณต์ (iterative)์ธ ์ „๋žต์ด ์–ด๋–ป๊ฒŒ ์ง€์†์ ์ธ ๋ฆฌํŒฉํ† ๋ง์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ  ๋ณ€ํ™”์— ๋ฏผ์ฒฉํ•˜๊ฒŒ ๋Œ€์‘ํ•˜๊ฒŒ ํ•˜๋Š”์ง€ ํ•™์Šตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5]. #### [๋ฆฌํŒฉํ† ๋ง ์›์น™/๊ทœ์œจ] - [[Two Hats (๋‘ ๊ฐœ์˜ ๋ชจ์ž)]] - ์—ฐ๊ฒฐ ์ด์œ : ๊ธฐ๋Šฅ ์ถ”๊ฐ€์˜ ๋‹จ๊ณ„(Red, Green)์™€ ๋ฆฌํŒฉํ† ๋ง ๋‹จ๊ณ„(Refactor)๋ฅผ ์„ž์–ด์„œ ์ง„ํ–‰ํ•˜๋ฉด ์•ˆ ๋œ๋‹ค๋Š” Red-Green Refactoring์˜ ๊ธฐ๋ณธ ๊ทœ์ •์€ ๋งˆํ‹ด ํŒŒ์šธ๋Ÿฌ์˜ '๋‘ ๊ฐœ์˜ ๋ชจ์ž' ์›์น™์„ ์™„๋ฒฝํžˆ ์‹ค์ฒœํ•˜๋Š” ํ˜•ํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [3, 6]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ฆฌํŒฉํ† ๋ง ๊ณผ์ • ์ค‘ ๊ธฐ์กด ์ฝ”๋“œ์˜ ๊ตฌ์กฐ ๊ฐœ์„ ๊ณผ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋ฅผ ์‹ฌ๋ฆฌ์ , ์ ˆ์ฐจ์ ์œผ๋กœ ์ฒ ์ €ํžˆ ๋ถ„๋ฆฌํ•˜์—ฌ ๋””๋ฒ„๊น… ํšจ์œจ์„ ๋†’์ด๋Š” ์›๋ฆฌ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6]. ### Deeper Research Questions - Red-Green Refactoring์˜ 'Green' ๋‹จ๊ณ„์—์„œ ์†๋„๋ฅผ ์šฐ์„ ํ•˜์—ฌ ์ž‘์„ฑ๋œ ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ๊ฐ€, ํ›„์† 'Refactor' ๋‹จ๊ณ„์˜ ์„ค๊ณ„ ๊ฒฐ์ •์— ์–ด๋– ํ•œ ์ธ์ง€์  ํŽธํ–ฅ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š”๊ฐ€? - TDD ๊ธฐ๋ฐ˜์˜ Red-Green ์ฃผ๊ธฐ๋ฅผ ๋„์ž…ํ•  ๋•Œ, ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€๊ฐ€ ๊ฑฐ์˜ ์—†๋Š” ๋ฐฉ๋Œ€ํ•œ ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ(Legacy System)์—์„œ ์ด ๊ธฐ๋ฒ•์„ ์ ์ง„์ ์œผ๋กœ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํšจ๊ณผ์ ์ธ ์‹œํ€€์Šค๋Š” ๋ฌด์—‡์ธ๊ฐ€? - Red-Green-Refactor ๋‹จ๊ณ„๋ฅผ ๋งค์šฐ ์งง์€ ๊ฐ„๊ฒฉ(๋งˆ์ดํฌ๋กœ ์ปค๋ฐ‹)์œผ๋กœ ๋ฐ˜๋ณตํ•  ๊ฒฝ์šฐ, ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์˜ ์ง€์† ๊ฐ€๋Šฅ์„ฑ๊ณผ ๋ชจ๋“ˆ์„ฑ์— ๋ฏธ์น˜๋Š” ์ •๋Ÿ‰์  ๋ณ€ํ™”๋Š” ์–ด๋– ํ•œ๊ฐ€? - ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์™ธ๋ถ€ API๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋œ ํ™˜๊ฒฝ์—์„œ Red-Green Refactoring์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ๋”๋ธ”(Mock, Stub)์€ ์–ด๋А ๋‹จ๊ณ„์— ์–ด๋–ป๊ฒŒ ์„ค๊ณ„๋˜์–ด์•ผ ํ•˜๋Š”๊ฐ€? - 'Refactor' ๋‹จ๊ณ„์—์„œ ๋ฆฌํŒฉํ† ๋ง์„ ๋ฉˆ์ถ”๊ณ  ๋‹ค์‹œ 'Red' ๋‹จ๊ณ„๋กœ ๋Œ์•„๊ฐ€์•ผ ํ•˜๋Š” ์‹œ์ (Stopping Condition)์„ ํŒ๋‹จํ•˜๋Š” ๊ฒฝํ—˜์ , ๊ฐ๊ด€์  ๊ธฐ์ค€์€ ๋ฌด์—‡์ธ๊ฐ€? ### Practical Application Contexts - **Implementation:** ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์‹œ, ํ•ด๋‹น ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ช…์„ธํ•˜๋Š” ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๊ณ , ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผ๋  ๋•Œ๊นŒ์ง€ ๊ฐ€์žฅ ๋ฌด์‹ํ•˜์ง€๋งŒ ๋น ๋ฅธ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ ๋’ค, ์ตœ์ข…์ ์œผ๋กœ ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๊ตฌ์กฐ๋ฅผ ์šฐ์•„ํ•˜๊ฒŒ ๋‹ค๋“ฌ์–ด ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค [3, 5]. - **System Design:** ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์— ์•ž์„œ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ•์ œํ•จ์œผ๋กœ์จ, ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ๊ณ  ์‘์ง‘๋„๊ฐ€ ๋†’์€ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์ ์ง„์ ์ด๊ณ  ๋ฐ˜๋ณต์ ์œผ๋กœ ๋„์ถœ๋  ์ˆ˜ ์žˆ๋„๋ก ํŒ€์˜ ์„ค๊ณ„ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค [2, 5]. - **Operation / Maintenance:** ์šด์˜ ์ค‘ ๋ฐœ๊ฒฌ๋œ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ, ๋ฒ„๊ทธ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ(Red)๋ฅผ ๋จผ์ € ๋งŒ๋“ค์–ด ๋ฒ„๊ทธ๋ฅผ ๊ณ ์น˜๊ณ (Green), ์ฃผ๋ณ€์˜ ์ฝ”๋“œ ์Šค๋ฉœ์„ ๊ฐœ์„ (Refactor)ํ•˜์—ฌ ์ถ”ํ›„ ๋™์ผํ•œ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์œ ์ง€๋ณด์ˆ˜ ์ฒด๊ณ„๋ฅผ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค [9]. - **Learning Path:** ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์™€ ํด๋ฆฐ ์ฝ”๋“œ๋ฅผ ํ•™์Šตํ•  ๋•Œ, ๋‹จ์ˆœํžˆ ์˜ˆ์˜๊ฒŒ ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด TDD ํ™˜๊ฒฝ์—์„œ ๋™์ž‘ ๋ณด์กด๊ณผ ๊ตฌ์กฐ ๊ฐœ์„ ์„ ๋‹จ๊ณ„์ ์œผ๋กœ ๋‹ฌ์„ฑํ•˜๋Š” ์‹ค์ „ ํ›ˆ๋ จ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค [5, 10]. - **My Project Relevance:** ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์— Red-Green-Refactor ์‚ฌ์ดํด์„ ์ ์šฉํ•˜์—ฌ, ๊ธฐ๋Šฅ ์ถ”๊ฐ€์™€ ๋ฆฌํŒฉํ† ๋ง ์ž‘์—…์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋‹ค ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ฅผ ์ฐจ๋‹จํ•˜๊ณ , ํ•ญ์ƒ ํ…Œ์ŠคํŠธ๋กœ ๋ณดํ˜ธ๋ฐ›๋Š” ์•ˆ์ •์ ์ธ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค [3, 5]. ### Adjacent Topics - [[Technical Debt (๊ธฐ์ˆ  ๋ถ€์ฑ„)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ์ •๊ธฐ์ ์ธ Refactor ๋‹จ๊ณ„๋ฅผ ๋ฌด์‹œํ•˜๊ณ  Red-Green๋งŒ ๋ฐ˜๋ณตํ•˜๊ฑฐ๋‚˜ ํŽธ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์Œ“์ด๋Š” ๊ธฐ์ˆ  ๋ถ€์ฑ„๊ฐ€ ์žฅ๊ธฐ์ ์ธ ํ”„๋กœ์ ํŠธ ๋น„์šฉ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ๊ณผ ๊ด€๋ฆฌ ์ „๋žต์„ ํ™•์žฅํ•˜์—ฌ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค [11-13]. - [[Automated Testing (์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: Red-Green ๋ฆฌํŒฉํ† ๋ง์˜ ์„ฑ๊ณต์„ ์ขŒ์šฐํ•˜๋Š” ํ…Œ์ŠคํŠธ ํ”ผ๋ผ๋ฏธ๋“œ, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Test) ์ž‘์„ฑ๋ฒ• ๋ฐ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์— ํ…Œ์ŠคํŠธ ํ•˜๋„ค์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ ์ดํ•ด๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค [4, 14, 15]. --- *Last updated: 2026-05-03*