๋ชจ๋(Module)์ ๋ ๋ฆฝ๋ ํ๋์ ์ํํธ์จ์ด ๋๋ ํ๋์จ์ด ๋จ์๋ฅผ ์ง์นญํ๋ ์ฉ์ด์ ๋๋ค.
๋ชจ๋์ ๊ฐ์ฅ ํฐ ํน์ง์ ๋ ๋ฆฝ์ฑ์ ๊ฐ์ง๊ณ ์๋ค๋ ๊ฒ ์ ๋๋ค. ๋ ๋ฆฝ์ฑ์ด ๋์ ์๋ก ์์ ์ ์์ด์ ๋ค๋ฅธ ๋ชจ๋์ ์ํฅ์ ์ฃผ๋๊ฒ ์ ์ด์ง๊ฒ ๋ฉ๋๋ค. ์ด๋ ๋ชจ๋์ ๋ ๋ฆฝ์ฑ์ ์ธก์ ํ๊ธฐ ์ํด์๋ ๊ฒฐํฉ๋์ ์์ง๋๊ฐ ์ด์ฉํ๋ฉด ๋ฉ๋๋ค. ๊ฒฐํฉ๋๋ ์ฝํ๊ณ , ์์ง๋๋ ๋๊ณ , ๋ชจ๋์ ํฌ๊ธฐ๋ ์์ ์๋ก ๋ ๋ฆฝ์ฑ์ด ๋์์ง๋๋ค.
๊ทธ ์ธ์ ํน์ง์ผ๋ก๋ ๋ชจ๋์ ๋ ๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฉฐ ๋ชจ๋ ๋ด๋ถ์ ๋ชจ๋์ ํ๋๋ก ํตํฉํ๋ ์กฐํฉ์ด ์กด์ฌํ ์ ์์ต๋๋ค.
์ด๋ฐ ๋ชจ๋์ ํน์ง์ ์ด์ฉํ์ฌ ์ํํธ์จ์ด์ ์ฑ๋ฅ์ ํฅ์์ํค๊ฑฐ๋ ๋ณต์กํ ์์คํ ์ ์์ ๋๋ ์ฌ์ฌ์ฉ, ์ ์ง ๊ด๋ฆฌ๊ฐ ํธํ๋๋ก ๊ธฐ๋ฅ ๋จ์ ๋ชจ๋๋ก ๋ถํดํ๋ ์ค๊ณ ๊ตฌํ ๊ธฐ๋ฒ์ ๋ชจ๋ํ(Modularity)๋ผ๊ณ ํฉ๋๋ค.
๊ณตํต๋ชจ๋์ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์์ด ๊ธฐ๋ฅ์ ๋ถํ ํ ์ ์๊ณ ์ถ์ํ๋ฅผ ํตํ ์ฑ๋ฅํฅ์๊ณผ ์ ์ง๋ณด์๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ๊ธฐ ์ํ ๊ณตํต ์ปดํฌ๋ํธ ๊ตฌํ ๊ธฐ๋ฒ์ ๋๋ค.
๊ณตํต ๋ชจ๋์ ๋ ๋ฆฝ์ฑ์ ๋์ด๊ธฐ ์ํด ๊ฒฐํฉ๋๋ ์ฝํ๊ณ ์์ง๋๋ ๋์ด๋ ๊ตฌํ์ ๊ถ์ฅํฉ๋๋ค.
์์ง๋(Cohesion)๋ ๋ชจ๋ ๋ด๋ถ ๊ตฌ์ฑ ์์์ฌ์ด์ ์ฐ๊ด์ ๋ํ๋ ๋๋ค. ์ฆ ์์ง๋๋ ํ๋์ ๋ชจ๋์ด ํ๋์ ๊ธฐ๋ฅ์ ์ํํ๋์ง๋ฅผ ํ์ธํฉ๋๋ค.
์์ง๋๋ ๋์ ์๋ก ๋ ๋ฆฝ์ฑ์ด ๋์์ง๊ฒ ๋๋ฉฐ
์ฐ์ฐ์ ์์ง๋ < ๋ ผ๋ฆฌ์ ์์ง๋ < ์๊ฐ์ ์์ง๋ < ์ ์ฐจ์ ์์ง๋ < ํต์ ์ ์์ง๋ < ์์ฐจ์ ์์ง๋ < ๊ธฐ๋ฅ์ ์์ง๋ ์ผ๋ก ๋ถ๋ฅ๋ฉ๋๋ค.
์ฆ, ์ฐ์ฐ์ ์ผ ์๋ก ์์ง๋๊ฐ ๋ฎ์์ง๋ฉฐ ๊ธฐ๋ฅ์ ์ผ ์๋ก ์์ง๋๊ฐ ๋์์ง๋ฉฐ ๋ ๋ฆฝ์ฑ ๋ํ ๋์์ง๊ฒ ๋ฉ๋๋ค.
๊ฒฐํฉ๋(Coupling)๋ ์ธ๋ถ ๋ชจ๋๊ณผ์ ์ฐ๊ด๋์ ๋๋ค. ์ฆ ์ํํธ์จ์ด ๊ตฌ์กฐ์ ๋ชจ๋ ์ฌ์ด์ ๊ด๋ จ์ฑ์ ์ธก์ ํ๋ ์ฒ๋์ ๋๋ค.
๊ฒฐํฉ๋๊ฐ ๋ฎ์์๋ก ๋ชจ๋์ ๋ ๋ฆฝ์ฑ์ ๋์์ง๊ฒ ๋ฉ๋๋ค.
๋ด์ฉ ๊ฒฐํฉ๋ > ๊ณตํต ๊ฒฐํฉ๋ > ์ธ๋ถ ๊ฒฐํฉ๋ > ์ ์ด ๊ฒฐํฉ๋ > ์คํฌํ ๊ฒฐํฉ๋ > ์๋ฃ ๊ฒฐํฉ๋์ผ๋ก ๋ถ๋ฅ๋์ด ์์ต๋๋ค.
๋ด์ฉ ๊ฒฐํฉ๋ ์ผ์๋ก ๋ ๋ฆฝ์ฑ์ด ๋ฎ์์ง๋ฉฐ ์๋ฃ ๊ฒฐํฉ๋์ด๋ฉด ๊ฒฐํฉ๋๊ฐ ๋ฎ์์ง๋ฉฐ ๋ชจ๋์ ๋ ๋ฆฝ์ฑ์ด ๋์์ง๋๋ค.
MVC
๊ณตํต ๋ชจ๋์ ๊ตฌํํ๊ธฐ ์ํด์๋ ๋ฐ๋์ MVC ํจํด์ ์ดํดํด์ผ ํฉ๋๋ค.
- ๋ชจ๋ธ(Model): ๋ชจ๋ธ์ ๋ด๋ถ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ญํ ์ ๋๋ค. ๋ชจ๋ธ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฌด์์ ํ ๊ฒ์ธ์ง๋ฅผ ์ ์ํ๊ฒ ๋ฉ๋๋ค.
- ๋ทฐ(View): ๋ทฐ๋ ๋ชจ๋ธ๊ณผ ์ปจํธ๋กค๋ฌ๊ฐ ์๊ฐ์ ์ผ๋ก ๋ณด๋ ค์ฃผ๊ธฐ ์ํด ๋ณด๋ธ ๋ด์ฉ๋ค์ ํ๋ฉด์ ์ด์ฉํด ๋ณด์ฌ์ฃผ๋ ์ญํ ์ ๋๋ค.
- ์ปจํธ๋กค๋ฌ(Controller): ์ปจํธ๋กค๋ฌ์ ์ญํ ์ ๋ทฐ์ ๋ช ๋ น์ ๋ณด๋ด ํ๋ฉด ์์ฒญ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌํ๊ฒ ๋ฉ๋๋ค. ์ด ์ ๋ฌ ๊ฒฐ๊ณผ๋ฅผ ํตํด ๋ชจ๋ธ์ด ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ ์ง ์๋ ค์ฃผ๊ณ ์์ต๋๋ค.
ํฌ์ธ(Fan-In)๊ณผ ํฌ์์(Fan-Out)
๋ชจ๋์ ๊ณ์ธต์ ์ผ๋ก ๋ถ์ํด ์์คํ ๋ณต์ก๋๋ฅผ ์ธก์ ํ๊ธฐ ์ํด ํฌ์ธ(Fan-In)๊ณผ ํฌ์์(Fan-Out)์ด ํ์ํฉ๋๋ค.
์์คํ ๋ณต์ก๋๋ฅผ ์ต์ ํ ํ๊ธฐ ์ํด์๋ ํฌ์ธ์ด ๋์์ ธ์ผ ํ๊ณ ํฌ์์์ด ๋ฎ๊ฒ ์ค๊ณํด์ผํฉ๋๋ค.
๋ค์์ ๊ทธ๋ฆผ์ ๊ฐ์ง๊ณ ํฌ์ธ(Fan-In)๊ณผ ํฌ์์(Fan-Out)์ ๋ํด ์์๋ด ์๋ค.
ํฌ์ธ(Fan-In)์ ๋ชจ๋์ ์ ์ด ํ๋ ๋ชจ๋์ ์๋ฅผ ์๋ฏธํฉ๋๋ค.
ํฌ์ธ์ด ๋์ ๊ฒฝ์ฐ ์ฌ์ฌ์ฉํ๊ธฐ์๋ ์ค๊ณ๋ ์๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฅ์ ์ ์ด ๋ฐ์ํ ์ ์์ผ๋ฉฐ ๊ด๋ฆฌ๋น์ฉ๊ณผ ํ ์คํธ ๋น์ฉ๋ ์ฆ๊ฐํ๊ฒ ๋ฉ๋๋ค.
๊ฐ ๋ชจ๋์ ๋ํ ํฌ์ธ์ ๋ชจ๋ ์ ๋ฆฌํ๋ฉด A=0, B=1, C=1, D=1, E=1, F=2, G=1, J=1, H=2, I=1 ์ ๋๋ค.
A๋ ์ต์์ ๋ชจ๋์ด์ฌ์ ์ด๋ ํ ๋ชจ๋์ ์ํด์๋ ์ปจํธ๋กค ๋์ง ์๊ณ ์์ผ๋ฏ๋ก ํฌ์ธ์ 0์ด๋ฉ๋๋ค.
H์ ๊ฒฝ์ฐ ์์ ๋ชจ๋์ธ E์ F์ ์ํด์ ์ ์ด๋นํ๊ณ ์์ผ๋ฏ๋ก ํฌ์ธ์ 2๊ฐ ๋ฉ๋๋ค.
๋ค์์ผ๋ก ์์๋ณผ ๋ด์ฉ์ ํฌ์์(Fan-Out)์ ๋๋ค. ํฌ์์์ ๋ชจ๋์ ์ํด ์ ์ด ๋๋ ๋ชจ๋์ ์์ ๋๋ค.
ํฌ์์์ด ๋์์ง ๊ฒฝ์ฐ ๋ถํ์ํ ๋ชจ๋ ํธ์ถ๋๋์ง ํ์ธํ๊ณ ๋จ์ํ ๊ฐ๋ฅํ์ง๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค.
๊ฐ ๋ชจ๋์ ๋ํ ํฌ์์์ ๋ชจ๋ ์ ๋ฆฌํ๋ฉด A=3, B=2, C=2, D=1, E=1, F=1, G=1, J=0, H=0, I=0 ์ ๋๋ค.
๊ฐ์ฅ ๋์ ํฌ์์์ B์ C, D ์ด 3๊ฐ์ ๋ชจ๋์ ์ ์ดํ๊ณ ์๋ A๊ฐ ๋ฉ๋๋ค.
๋ํ ๊ฐ์ฅ ํฌ์์์ด ๋ฎ์ ๊ฒฝ์ฐ๋ ๋ชจ๋์ ๋๋จ๋ค์ธ J์ H, I๊ฐ ๋ฉ๋๋ค.
'๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ PART 5 ์ ๋ฆฌ - ์ธํฐํ์ด์ค ๋ณด์๊ณผ ๊ฒ์ฆ (0) | 2021.04.19 |
---|---|
์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ PART 5 ์ ๋ฆฌ - ์ธํฐํ์ด์ค ์ค๊ณ์์ EAI, ESB (0) | 2021.04.18 |
์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ PART 4 ์ ๋ฆฌ - ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ (0) | 2021.04.18 |
์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ PART 3 ์ ๋ฆฌ - ํตํฉ ๊ตฌํ (0) | 2021.04.18 |
์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ PART 2 ์ ๋ฆฌ - ๋ฐ์ดํฐ ์ ์ถ๋ ฅ (0) | 2021.04.16 |