๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์˜ค๋ธŒ์ ํŠธ17

[์˜ค๋ธŒ์ ํŠธ] 5์žฅ '์ฑ…์ž„ ํ• ๋‹นํ•˜๊ธฐ' 5์žฅ์€ GRASP ์ฑ…์ž„ํ• ๋‹นํŒจํ„ด์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜๊ณ , ์ฑ…์ž„์„ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ์บก์Šํ™”, ์‘์ง‘๋„, ๊ฒฐํ•ฉ๋„ ๊ด€์ ์—์„œ ์„ค๊ณ„๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค€๋‹ค. ๊ฐ์ฒด ๋””์ž์ธ์—์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๊ฒƒ ์ค‘์˜ ํ•˜๋‚˜๋Š” ์ฑ…์ž„์„ ์–ด๋””์— ๋‘˜ ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‚˜๋Š” ์‹ญ๋…„ ์ด์ƒ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์ผํ–ˆ์ง€๋งŒ ์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ๋Š” ์—ฌ์ „ํžˆ ์ ๋‹นํ•œ ์œ„์น˜๋ฅผ ์ฐพ์ง€ ๋ชปํ•œ๋‹ค. ๋Š˜ ์ด๋Ÿฐ ์ ์ด ๋‚˜๋ฅผ ๊ดด๋กญํ˜”์ง€๋งŒ, ์ด์ œ๋Š” ์ด๋Ÿฐ ๊ฒฝ์šฐ์— ๋ฆฌํŒฉํ„ฐ๋ง์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค [Fowler 1999a](p.166). GRASP "General Responsibility Assignment Software Pattern (์ผ๋ฐ˜์ ์ธ ์ฑ…์ž„ ํ• ๋‹น์„ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ„ด)" INFORMATION EXPERT(์ •๋ณด ์ „๋ฌธ๊ฐ€) ํŒจํ„ด - ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•  ์ •๋ณด๋ฅผ .. 2022. 11. 11.
[์˜ค๋ธŒ์ ํŠธ] 4์žฅ '์„ค๊ณ„ ํ’ˆ์งˆ๊ณผ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„' 4์žฅ์—์„œ๋Š” ์˜ํ™” ์˜ˆ๋งค ์‹œ์Šคํ…œ์„ ์ ˆ์ฐจ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ(๋ฐ์ดํ„ฐ ์ค‘์‹ฌ)์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ์บก์Šํ™”, ์‘์ง‘๋„, ๊ฒฐํ•ฉ๋„๋กœ ์ฝ”๋“œ๋ฅผ ํ‰๊ฐ€ํ•ด ๋ณธ๋‹ค. 2์žฅ ์ฝ”๋“œ๊ฐ€ ์–ด๋ ค์›Œ์„œ 4์žฅ๋„ ๋ฏธ๋ฆฌ ๊ฒ๋จน์—ˆ๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์› ๋‹ค. ํ™•์‹คํžˆ ๋น„๊ตํ•ด์„œ ๋ณด๋‹ˆ๊นŒ ์™œ ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ง„์ •ํ•œ ์บก์Šํ™”๋ž€? ๋‹จ์ˆœํžˆ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ private๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก public ๊ฒŒํ„ฐ/์„ธํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ๋†“๋Š”๊ฑด ์ง„์ •ํ•œ ์˜๋ฏธ์˜ ์บก์Šํ™”๋Š” ์•„๋‹ˆ๋‹ค. ์บก์Šํ™”๋Š” ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ์–ด๋–ค ๊ฒƒ์ด๋ผ๋„ ๊ฐ์ถ”๋Š” ๊ฒƒ์ด๊ณ , ๋‚ด๋ถ€ ์†์„ฑ์„ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๊ฐ์ถ”๋Š” ๊ฒƒ์€ '๋ฐ์ดํ„ฐ ์บก์Šํ™”'์ด๋‹ค. ํ•˜์ง€๋งŒ ์ฑ…์—์„œ ์„ค๋ช…ํ•˜๋“ฏ์ด ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋‚ด๋ถ€ ์†์„ฑ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑด ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ, ์ด ๋ฉ”์†Œ๋“œ๋ฅผ.. 2022. 11. 4.
[์˜ค๋ธŒ์ ํŠธ] 3์žฅ '์—ญํ• , ์ฑ…์ž„, ํ˜‘๋ ฅ' 3์žฅ์—์„œ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์˜ ํ•ต์‹ฌ์ธ ์—ญํ• , ์ฑ…์ž„, ํ˜‘๋ ฅ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ํ•ต์‹ฌ์€? ์—ญํ• (role) : ๊ฐ์ฒด๋“ค์ด ํ˜‘๋ ฅ ์•ˆ์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฑ…์ž„๋“ค์ด ๋ชจ์—ฌ ๊ฐ์ฒด๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ•  ๊ตฌ์„ฑ ์ฑ…์ž„(responsibility) : ๊ฐ์ฒด๊ฐ€ ํ˜‘๋ ฅ์— ์ฐธ์—ฌํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ๋กœ์ง(ํ–‰๋™) ๋ฉ”์‹œ์ง€๊ฐ€ ๊ฐ์ฒด๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ , ํ–‰๋™์ด ์ƒํƒœ๋ฅผ ๊ฒฐ์ •ํ•จ ํ˜‘๋ ฅ(collaboration) : ๊ฐ์ฒด๋“ค์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉด์„œ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ฒƒ ์ฑ…์ž„์ด๋ž€? ๊ฐ์ฒด๊ฐ€ '๋ฌด์—‡์„ ์•Œ๊ณ  ์žˆ๋Š”๊ฐ€' + ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€'๋กœ ๊ตฌ์„ฑ๋จ ์ฆ‰ 'ํ•˜๋Š” ๊ฒƒ' + '์•„๋Š” ๊ฒƒ'์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Œ ์—ญํ• ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€? ์ถ”์ƒ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค -> ๊ตฌ์ฒด ํด๋ž˜์Šค๋“ค์ด ๋”ฐ๋ผ์•ผ ํ•˜๋Š” ์ฑ…์ž„์˜ ์ง‘ํ•ฉ์„ ์„œ์ˆ ํ•จ CRC ์นด๋“œ (Candi.. 2022. 10. 27.
[์˜ค๋ธŒ์ ํŠธ] 2์žฅ '๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ' 2์žฅ์€ ์˜ํ™” ์˜ˆ๋งค ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๊ฐ์ฒด์ง€ํ–ฅ์œผ๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ์„ค๋ช…ํ•ด ์ค€๋‹ค. ์˜ํ™”์˜ˆ๋งค ์‹œ์Šคํ…œ์€ ๋‹ค์Œ ์žฅ์—๋„ ๊ณ„์† ์‚ฌ์šฉ๋˜๋Š” ๋„๋ฉ”์ธ์ด๋ผ ์ตœ๋Œ€ํ•œ ์ดํ•ดํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์ง€๋งŒ ๊ฐ์ฒด์ง€ํ–ฅ์— ๋Œ€ํ•œ ๊ฐœ๋…์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋‚˜์™€์„œ ์–ด๋ ค์› ๋‹ค. ํ˜ผ์ž ์ฝ์—ˆ์œผ๋ฉด ๋Œ€์ถฉ ์ฝ๊ณ  ๋๋‚ด๊ฑฐ๋‚˜ ํฌ๊ธฐํ–ˆ์„ํ…๋ฐ ์Šคํ„ฐ๋””๋กœ ํ•˜๋‹ˆ๊นŒ ๋™๊ธฐ๋ถ€์—ฌ(.... ๋˜๋Š” ๋ถ€๋‹ด๊ฐ?)๊ฐ€ ๋ผ์„œ 2์žฅ๋งŒ ์ตœ์†Œ 2~3๋ฒˆ์€ ์ฝ์€ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋Ÿผ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? software development๋Š” ํ•ญ์ƒ ๋ณ€ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์‚ฌ์‹ค์€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ฐœ๋ฐœ์ž์ธ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์€ ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ(p.35)์ด๊ณ  ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ˜‘๋ ฅํ•˜๋Š” ๊ฐ์ฒด์‚ฌ์ด์˜ ์˜์กด์„ฑ์„ ์ ์ ˆํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค. 2์žฅ์—์„œ๋Š” ๊ทธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ƒ์†๊ณผ ๋‹คํ˜•์„ฑ, ์ถ”์ƒํ™”์™€ ์œ ์—ฐ.. 2022. 10. 21.
[์˜ค๋ธŒ์ ํŠธ] 1์žฅ '๊ฐ์ฒด, ์„ค๊ณ„' 1์žฅ์—์„œ๋Š” ํ‹ฐ์ผ“ ํŒ๋งค ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๊ฐ€ ์™œ ํ•„์š”ํ•œ์ง€์— ๋Œ€ํ•ด์„œ ์–˜๊ธฐํ•œ๋‹ค. 1์žฅ ์š”์•ฝ ์ ˆ์ฐจ์ ์ธ ์ฝ”๋“œ(ํ”„๋กœ์„ธ์Šค์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ„๋„์˜ ๋ชจ๋“ˆ์— ์œ„์น˜) => ๊ฐ์ฒด์ง€ํ–ฅ์  ์ฝ”๋“œ(๋ฐ์ดํ„ฐ์™€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ผํ•œ ๋ชจ๋“ˆ ์•ˆ์— ์œ„์น˜)๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด ๋ชจ๋“ˆ์ด ๊ฐ€์ ธ์•ผ ํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ๊ธฐ๋Šฅ (1. ์‹คํ–‰ ์ค‘์— ์ œ๋Œ€๋กœ ๋™์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ, 2. ๋ณ€๊ฒฝ์ด ์‰ฌ์›Œ์•ผ ํ•˜๊ณ , 3. ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ์•ผ ํ•œ๋‹ค.)์„ ๋งŒ์กฑ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€๋‹ค. ์˜์กด์„ฑ(dependency)์€ ์„ค๊ณ„๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ•˜์—ฌ ๊ฐ์ฒด ์‚ฌ์ด์˜ ๊ฒฐํ•ฉ๋„(coupling)๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค. ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์บก์Šํ™”(encapsulation)๊ฐ€ ์žˆ๋Š”๋ฐ ์บก์Šํ™”๋Š” ๊ฐœ๋…์ ์ด๋‚˜ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ์„ธ๋ถ€์ ์ธ ์‚ฌํ•ญ์„ ๊ฐ์ถ”์–ด ๊ฐ์ฒด ๋‚ด๋ถ€.. 2022. 10. 14.