# [[Dependencies (์˜์กด์„ฑ)]] ## ๐Ÿ“Œ Brief Summary ์˜์กด์„ฑ(Dependencies)์€ ํ•˜๋‚˜์˜ ์ฝ”๋“œ ์กฐ๊ฐ(๋ชจ๋“ˆ, ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ ๋“ฑ)์ด ๊ธฐ๋Šฅํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์ฝ”๋“œ ์กฐ๊ฐ์ด๋‚˜ ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค์— ์˜์กดํ•˜๋Š” ๊ด€๊ณ„๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค [1-3]. ํ…Œ์ŠคํŠธ๊ฐ€ ๋ˆ„๋ฝ๋œ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ ๋“ฑ์—์„œ ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋œ ์˜์กด์„ฑ์€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋ฉฐ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ์ฃผ์š” ์›์ธ์ด ๋ฉ๋‹ˆ๋‹ค [3, 4]. ์„ฑ๊ณต์ ์ด๊ณ  ์•ˆ์ „ํ•œ ๋ฆฌํŒฉํ† ๋ง๊ณผ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜์˜ ์ง€์† ๊ฐ€๋Šฅ์„ฑ์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์‹๋ณ„ํ•˜๊ณ  ๋Š์–ด๋‚ด๋Š” ์ž‘์—…์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [4-6]. ## ๐Ÿ“– Core ๋Œ€Content * **์˜์กด์„ฑ์˜ ๋ฌธ์ œ์ ๊ณผ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ:** ํด๋ž˜์Šค๋‚˜ ํŒจํ‚ค์ง€ ๊ฐ„์˜ ๊ฑด๊ฐ•ํ•˜์ง€ ๋ชปํ•œ ์˜์กด์„ฑ์€ ์ฝ”๋“œ์˜ ๋ถ€ํŒจ๋ฅผ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค [7]. ํŠนํžˆ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ, ์™ธ๋ถ€ ์„œ๋ฒ„ API ํ˜ธ์ถœ, ๋ณต์žกํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋“ฑ ๋‹ค๋ฃจ๊ธฐ ํž˜๋“  ์˜์กด์„ฑ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ๊ฒฉ๋ฆฌํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค [3, 4]. ๋งˆ์ดํด ํŽ˜๋”์Šค(Michael Feathers)๋Š” ์ฝ”๋“œ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ๋จผ์ € ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๊ณผ์ œ๋กœ '์˜์กด์„ฑ ๋Š๊ธฐ(Breaking Dependencies)'๋ฅผ ๊ผฝ์•˜์Šต๋‹ˆ๋‹ค [6]. * **์˜์กด์„ฑ ๋ถ„๋ฆฌ ์ „๋žต - ์ ‘์ (Seams)์˜ ํ™œ์šฉ:** ๊ธฐ์กด ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์— ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด '์ ‘์ (Seam)'์ด๋ผ๋Š” ๊ฐœ๋…์ด ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค [4, 8]. ์ ‘์ ์ด๋ž€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ํŽธ์ง‘ํ•˜์ง€ ์•Š๊ณ ๋„ ํ”„๋กœ๊ทธ๋žจ์˜ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์ ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค [4, 9]. ์ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ ์—†์ด ํ…Œ์ŠคํŠธ ์‹œ์—๋งŒ ๊ฐ€์งœ ๊ฐ์ฒด(Mock)๋ฅผ ์ฃผ์ž…ํ•˜์—ฌ ์™ธ๋ถ€ ์˜์กด์„ฑ์„ ์šฐํšŒํ•˜๊ณ  ๋…๋ฆฝ์ ์ธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4, 10]. * **๋ชจ๋“ˆ ๊ฐ„ ์˜์กด์„ฑ ๊ด€๋ฆฌ์™€ ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์„ :** ๋Œ€๊ทœ๋ชจ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์—์„œ ๋ฆฌํŒฉํ† ๋ง์˜ ํ•ต์‹ฌ ๋ชฉํ‘œ๋Š” ๋ชจ๋“ˆ ๊ฐ„์˜ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์€ ์˜์กด์„ฑ์„ ์ค„์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค [5, 11]. ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ์œˆ๋„์šฐ 7(Windows 7)์˜ ๋ฆฌํŒฉํ† ๋ง ์‚ฌ๋ก€ ์—ฐ๊ตฌ์— ๋”ฐ๋ฅด๋ฉด, ์ง‘์ค‘์ ์ธ ๋ฆฌํŒฉํ† ๋ง์„ ๊ฑฐ์นœ ๋ชจ๋“ˆ๋“ค์€ ๋ชจ๋“ˆ ๊ฐ„ ์˜์กด์„ฑ ์ˆ˜๊ฐ€ ์œ ์˜๋ฏธํ•˜๊ฒŒ ๊ฐ์†Œํ•˜์˜€์œผ๋ฉฐ, ์ด๋Š” ์ „์ฒด์ ์ธ ์‹œ์Šคํ…œ ๋ณต์žก๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ๋ณ‘๋ ฌ ๊ฐœ๋ฐœ์˜ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค [5, 12]. ## โš–๏ธ Trade-offs & Caveats * **'๊ฐ์ฒด ํ†ต์งธ๋กœ ๋„˜๊ธฐ๊ธฐ(Preserve Whole Object)' ๋ฆฌํŒฉํ† ๋ง์˜ ๋ถ€์ž‘์šฉ:** ๊ธด ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋„˜๊ธฐ๋Š” ๋Œ€์‹  ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ์ „์ฒด ๊ฐ์ฒด๋ฅผ ๋„˜๊ธฐ๋Š” ๋ฆฌํŒฉํ† ๋ง์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [13]. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์›๋ž˜๋Š” ๋ชฐ๋ผ๋„ ๋˜์—ˆ์„ '์ „์ฒด ๊ฐ์ฒด'์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด ์˜์กด์„ฑ์„ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค [14]. ์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ์˜์กด์„ฑ์ด ์ „์ฒด ์˜์กด์„ฑ ๊ตฌ์กฐ๋ฅผ ๋ง๊ฐ€๋œจ๋ฆฌ๊ฑฐ๋‚˜ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค๋ฉด, ํ•ด๋‹น ๋ฆฌํŒฉํ† ๋ง ๊ธฐ๋ฒ•์€ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [14]. * **์˜์กด์„ฑ ๋ถ„๋ฆฌ์˜ ๋†’์€ ๋น„์šฉ:** ์†Œํ”„ํŠธ์›จ์–ด์˜ ์„ค๊ณ„๊ฐ€ ์–ผ๋งˆ๋‚˜ ํ›Œ๋ฅญํ•œ์ง€์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ, ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์—์„œ ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ์˜์กด์„ฑ์„ ๋Š์–ด๋‚ด์–ด ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ๋งŒ๋“œ๋Š” ์ž‘์—…์€ ์ƒ๋‹นํ•œ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค [15]. * **์ž˜๋ชป๋œ ์ถ”์ƒํ™”์˜ ์œ„ํ—˜:** ์ค‘๋ณต์„ ํ”ผํ•˜๊ณ ์ž ์„ฑ๊ธ‰ํ•˜๊ฒŒ ๋ฆฌํŒฉํ† ๋งํ•˜์—ฌ ์ž˜๋ชป๋œ ์ถ”์ƒํ™”๋ฅผ ๋„์ž…ํ•  ๊ฒฝ์šฐ, ์ƒˆ๋กœ์šด ์š”๊ตฌ์‚ฌํ•ญ์ด ๋“ฑ์žฅํ•จ์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ์˜คํžˆ๋ ค ์˜์กด์„ฑ์ด ๋” ๊ผฌ์ด๊ฒŒ ๋˜๊ณ  ๊ฒฐ๊ณผ์ ์œผ๋กœ ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [16]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜/๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ] - [[Seams (์ ‘์ )]] - ์—ฐ๊ฒฐ ์ด์œ : ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ์˜์กด์„ฑ์„ ๋Š๊ณ  ๋™์ž‘์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ•ต์‹ฌ ๊ฐœ๋…์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [8, 9]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์˜์กด์„ฑ์ด ๊ฐ•ํ•œ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ๋‹จ์œ„๋กœ ๊ฒฉ๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ทธ ๋ฉ”์ปค๋‹ˆ์ฆ˜(๊ฐ์ฒด ์ ‘์ , ์ „์ฒ˜๋ฆฌ ์ ‘์ , ๋งํฌ ์ ‘์ )์„ ๊ตฌ์ฒด์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [17-19]. - [[Legacy Code (๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ)]] - ์—ฐ๊ฒฐ ์ด์œ : ํ…Œ์ŠคํŠธ๊ฐ€ ์—†๊ณ  ์˜์กด์„ฑ ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ณ€๊ฒฝํ•˜๊ธฐ ๊ฐ€์žฅ ์–ด๋ ค์šด ์ƒํƒœ์˜ ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [4, 20]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์˜์กด์„ฑ์ด ๊ทน๋„๋กœ ์–ฝํžŒ ํ™˜๊ฒฝ์—์„œ ์™œ ๋ฆฌํŒฉํ† ๋ง๋ณด๋‹ค ์˜์กด์„ฑ ์ œ๊ฑฐ์™€ ํ…Œ์ŠคํŠธ ๋„์ž…์ด ์šฐ์„ ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์‹ค๋ฌด์  ๋งฅ๋ฝ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6]. #### [๊ตฌํ˜„/ํ™œ์šฉ ๋„๊ตฌ] - [[Mock Objects (๊ฐ€์งœ ๊ฐ์ฒด)]] - ์—ฐ๊ฒฐ ์ด์œ : ์˜์กด์„ฑ์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋Š์–ด๋‚ธ ํ›„(์ ‘์  ํ™•๋ณด ํ›„), ์‹ค์ œ ์˜์กด์„ฑ์„ ๋Œ€์ฒดํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋„๊ตฌ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [4]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ณต์žกํ•œ ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค(DB, ์™ธ๋ถ€ ์„œ๋น„์Šค ๋“ฑ)์— ๋Œ€ํ•œ ์˜์กด์„ฑ์„ ์–ด๋–ป๊ฒŒ ํ†ต์ œ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4, 21]. - [[Preserve Whole Object (๊ฐ์ฒด ํ†ต์งธ๋กœ ๋„˜๊ธฐ๊ธฐ)]] - ์—ฐ๊ฒฐ ์ด์œ : ์ฝ”๋“œ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๋ฆฌํŒฉํ† ๋ง ๊ธฐ๋ฒ•์ž„๊ณผ ๋™์‹œ์—, ์ž˜๋ชป ์‚ฌ์šฉํ•˜๋ฉด ์ƒˆ๋กœ์šด ์˜์กด์„ฑ์„ ์ฐฝ์ถœํ•˜๋Š” ์–‘๋‚ ์˜ ๊ฒ€์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [14]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐฉ์‹์˜ ์ตœ์ ํ™”๊ฐ€ ์‹œ์Šคํ…œ์˜ ์˜์กด์„ฑ ๊ฒฐํ•ฉ๋„(Coupling)์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ์ดํ•ดํ•˜๊ณ  ์„ค๊ณ„์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [14]. ### Deeper Research Questions - ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์˜์กด์„ฑ์„ ๋Š์„ ๋•Œ, '์ ‘์ (Seams)'์˜ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ์œ ํ˜•(Object Seams, Preprocessing Seams, Link Seams)์€ ๊ฐ๊ฐ ์–ด๋–ค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ํ™˜๊ฒฝ๊ณผ ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ํšจ๊ณผ์ ์œผ๋กœ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š”๊ฐ€? [17-19] - ์–‘๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ๋ณ€๊ฒฝ(Change Bidirectional Association to Unidirectional)ํ•˜์—ฌ ์˜์กด์„ฑ์„ ์ค„์ผ ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜์  ์ œ์•ฝ ์‚ฌํ•ญ๊ณผ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ๋ฌธ์ œ๋Š” ๋ฌด์—‡์ธ๊ฐ€? [22] - ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ์œˆ๋„์šฐ 7(Windows 7) ์‚ฌ๋ก€์™€ ๊ฐ™์ด ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ์—์„œ ๋ชจ๋“ˆ ๊ฐ„ ์˜์กด์„ฑ์„ ์ •๋Ÿ‰์ ์œผ๋กœ ๋ถ„์„ํ•˜๊ณ  ๋ฆฌํŒฉํ† ๋ง์œผ๋กœ ์ด๋ฅผ ๋‚ฎ์ถ”์—ˆ์„ ๋•Œ, ์ด๊ฒƒ์ด ์‹ค์ œ ์ƒ์šฉ ํ™˜๊ฒฝ์˜ ๊ฒฐํ•จ ๋ฐœ์ƒ๋ฅ (Post-release Defects) ๊ฐ์†Œ์— ๋ฏธ์น˜๋Š” ๊ตฌ์ฒด์ ์ธ ์ธ๊ณผ๊ด€๊ณ„๋Š” ๋ฌด์—‡์ธ๊ฐ€? [11, 23] - ๋ฆฌํŒฉํ† ๋ง ์‹œ '๊ฐ์ฒด ํ†ต์งธ๋กœ ๋„˜๊ธฐ๊ธฐ(Preserve Whole Object)'๋ฅผ ํ†ตํ•ด ๊ฐ์†Œํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์˜ ๊ฐ€๋…์„ฑ ์ด์ ๊ณผ, ์ƒˆ๋กญ๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š” ํด๋ž˜์Šค ๊ฐ„ ์˜์กด์„ฑ์˜ ๋ถ€์ž‘์šฉ ๋น„์šฉ์„ ์–ด๋–ป๊ฒŒ ์ •๋Ÿ‰์  ํ˜น์€ ์ •์„ฑ์ ์œผ๋กœ ๋น„๊ต ํ‰๊ฐ€ํ•  ๊ฒƒ์ธ๊ฐ€? [14] - ์˜์กด์„ฑ์ด ์‹ฌํ•˜๊ฒŒ ์–ฝํ˜€ ๋„์ €ํžˆ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ํž˜๋“  ํ™˜๊ฒฝ์—์„œ '์Šคํ”„๋ผ์šฐํŠธ ๋ฉ”์„œ๋“œ(Sprout Method)'๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด, ๊ธฐ์กด ์˜์กด์„ฑ ๊ตฌ์กฐ๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์œผ๋ฉด์„œ๋„ ์•ˆ์ „ํ•˜๊ฒŒ ์‹ ๊ทœ ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ธฐ์—ฌํ•˜๋Š”๊ฐ€? [24, 25] ### Practical Application Contexts - **Implementation:** ๋งค๊ฐœ๋ณ€์ˆ˜ ์ „๋‹ฌ ๊ตฌ์กฐ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•  ๋•Œ, ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ฑ๊ฐœ๋กœ ๋ณด๋‚ผ์ง€ ๊ฐ์ฒด ์ „์ฒด๋กœ ๋ณด๋‚ผ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ์ค€์œผ๋กœ ํ•ด๋‹น ๊ฐ์ฒด ๊ฐ„์˜ '์˜์กด์„ฑ ์ฆ๊ฐ€'๊ฐ€ ์‹œ์Šคํ…œ์— ๋ฏธ์น  ์˜ํ–ฅ์„ ํ‰๊ฐ€ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. [14] - **System Design:** ์ดˆ๊ธฐ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ, ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ชจ๋“ˆ ์‚ฌ์ด์— ๊ณผ๋„ํ•œ ๊ฒฐํ•ฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•˜๋ฉฐ ํ–ฅํ›„ '์ ‘์ (Seam)'์„ ํ†ตํ•œ ๋Œ€์ฒด์™€ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•œ ์œ ์—ฐํ•œ ๊ตฌ์กฐ๋ฅผ ๋งˆ๋ จํ•ฉ๋‹ˆ๋‹ค. [5, 8] - **Operation / Maintenance:** ๊ธฐ์กด์˜ ๋ณต์žกํ•œ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ณ  ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ๋•Œ, ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜๊ธฐ ์ „์— ์˜์กด์„ฑ์„ ๋ถ„๋ฆฌํ•˜๊ณ  ๊ฐ€์งœ ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•˜์—ฌ ์•ˆ์ „ํ•œ ํ…Œ์ŠคํŠธ ํ•˜๋„ค์Šค(Test Harness)๋ฅผ ๋จผ์ € ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. [4, 6] - **Learning Path:** ๋ฆฌํŒฉํ† ๋ง ์›์น™ ํ•™์Šต -> ์ฝ”๋“œ ๋ƒ„์ƒˆ(Code Smells) ์‹๋ณ„ -> ์˜์กด์„ฑ ๋ถ„๋ฆฌ ๋ฐ ์ ‘์ (Seams) ํ™œ์šฉ -> ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๋ฆฌํŒฉํ† ๋ง(TDD) -> ์ง€์† ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…์ฒ˜ ์œ ์ง€์˜ ์ˆœ์„œ๋กœ ํ•™์Šต์„ ์ „๊ฐœํ•ฉ๋‹ˆ๋‹ค. [6, 26] - **My Project Relevance:** ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์—์„œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์‹œ ๊ธฐ์กด ์ฝ”๋“œ๊ฐ€ ์–ฝํ˜€ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด, ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ๋ฉˆ์ถ”๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ ์™ธ๋ถ€ API์™€ ๊ฐ™์€ ๊ฐ•ํ•œ ์˜์กด์„ฑ์„ ๋ถ„๋ฆฌํ•˜๋Š” '์ค€๋น„์  ๋ฆฌํŒฉํ† ๋ง(Preparatory Refactoring)'๋ถ€ํ„ฐ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. [3, 27] ### Adjacent Topics - [[Test-Driven Development (TDD)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ํ…Œ์ŠคํŠธ๋ฅผ ์ฝ”๋“œ ์ž‘์„ฑ ์ „์— ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•จ์œผ๋กœ์จ, ์ฒ˜์Œ๋ถ€ํ„ฐ ์™ธ๋ถ€ ์˜์กด์„ฑ์ด ๋‚ฎ๊ณ  ๊ฒฉ๋ฆฌ๊ฐ€ ์‰ฌ์šด(ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์ข‹์€) ์œ ์—ฐํ•œ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„๋กœ ์ด์–ด์ง€๋Š” ๊ณผ์ •์„ ํ™•์žฅํ•˜์—ฌ ํ•™์Šตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [28, 29] - [[Technical Debt (๊ธฐ์ˆ  ๋ถ€์ฑ„)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋ฌด๋ถ„๋ณ„ํ•œ ์˜์กด์„ฑ ๋ฐฉ์น˜ ๋ฐ ๋”๋Ÿฌ์šด ์ฝ”๋“œ(Dirty Code)์˜ ์ถ•์ ์ด ํ–ฅํ›„ ์œ ์ง€๋ณด์ˆ˜์™€ ๊ธฐ๋Šฅ ํ™•์žฅ ์‹œ ๋น„์šฉ์„ ์–ผ๋งˆ๋‚˜ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ค๋Š”์ง€ ๊ทธ ๊ฒฝ์ œ์  ์˜ํ–ฅ์„ ์—ฐ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [6, 30] --- *Last updated: 2026-05-03*