์ค๋ธ์ ํธ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. ์ด์ 1 2 3 ๋ค์