์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- custom hook
- ๋๋๊ทธ ์ด๋ฒคํธ
- ๊ณผ์ ํ ์คํธ
- ์ฝ๋ฉํ ์คํธ
- ์ด๋ฏธ์ง ์์
- Redux toolkit
- ๋ธ๋ฃจํธํฌ์ค
- ์๊ณ ๋ฆฌ์ฆ
- js
- svgํ์ผ ๋ค๋ฃจ๊ธฐ
- ์ฝ๋ ํฌ๋ฉง
- ์ฝํ
- JavaScript
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋์ ๊ณํ๋ฒ
- TypeScript
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ถ์คํธ์บ ํ์น๋ชจ๋ฐ์ผ
- ๋ฆฌ๋์ค ํดํท
- icecandidate
- ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ๋ถ์คํธ์ปจํผ๋ฐ์ค
- ์นด์นด์ค
- DP
- React
- Node.js
- ์ด๋ถํ์
- ๋ฐฑ์ค
- ์นด์นด์ค์ฑ์ฉ
- router v6
- Today
- Total
๐ฅ dev-ruby
[์ํํธ์จ์ด๊ณตํ] ๋ชจ๋ํ(Modularity) ๋ณธ๋ฌธ
์ํํธ์จ์ด ๋์์ธ
sw ๋์์ธ์ ์ค์์ฑ?
- ๋์์ธ์ ํ์ง์ด ๊ฐํ๋๋ ๊ณณ์ด๋ค.
- ๋์์ธ์ ํ์ง์ ํ๊ฐํ ์ ์๋ swํํ์ ์ ๊ณตํ๋ค.
์ข์ ์ค๊ณ์ ํน์ง
- ์ค๊ณ๋ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ํ๋ด์ผ ํ๋ค.
- ์ค๊ณ๋ ๋ชจ๋์์ด์ด์ผ ํ๋ค.
- ์ค๊ณ๋ ๋ฐ์ดํฐ์ ์ ์ฐจ์ ๋ํ ๋๋ ทํ๊ณ ๋ถ๋ฆฌ ๊ฐ๋ฅํ ํํ์ ํฌํจํด์ผ ํ๋ค.
- ์ค๊ณ๋ ๋ ๋ฆฝ์ ์ธ ๊ธฐ๋ฅ์ ํน์ฑ์ ๋ํ๋ด๋ ๋ชจ๋๋ก ์ด์ด์ ธ์ผ ํ๋ค.
- ์ค๊ณ๋ ๋ชจ๋๊ณผ ์ธ๋ถ ํ๊ฒฝ ๊ฐ์ ์ฐ๊ฒฐ ๋ณต์ก์ฑ์ ์ค์ด๋ ์ธํฐํ์ด์ค๋ก ์ด์ด์ ธ์ผ ํ๋ค.
- ์ค๊ณ๋ ๋ณํ๋ฅผ ์์ฉํ๊ธฐ ์ฌ์์ผ ํ๋ค.
๋ชจ๋ํ โฌ๏ธ -> ๊ฐ๋ฐ๋น์ฉ โฌ๏ธ -> ์ ์ง๋ณด์ ๋น์ฉ โฌ๏ธ
ํจ๊ณผ์ ์ธ ๋ชจ๋ํ ์ค๊ณ
- ๊ธฐ๋ฅ์ ๋ ๋ฆฝ : ๊ฐ๊ฐ์ ๋ชจ๋์ด ๋ ๋ฆฝ์ ์ธ ๊ธฐ๋ฅ์ ํด์ผํ๋ค.
- ์ถ์ํ ๋ฐ ์ ๋ณด ์๋ ๊ฐ๋ ์ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ
- ๊ฐ ๋ชจ๋์๋ ์๊ตฌ์ฌํญ์ ํน์ ๊ธฐ๋ฅ์ด ์๋ค.
- ๊ฐ ๋ชจ๋์ ์ธ๋ถ์์ ๋ณผ ๋ ๊ฐ๋จํ ์ธํฐํ์ด์ค์ฌ์ผ ํ๋ค.
- 2๊ฐ์ง ์ฒ๋๋ก ์ธก์ ๊ฐ๋ฅํ๋ค.
- coupling : ์ด๋ค ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋์ ์์กดํ๋ ์ ๋
- cohesion : ๋ด์ ์์๋ค์ด ์ผ๋ง๋ ๊ด๋ จ์ฑ ๋๊ฒ ๋ฌถ์ฌ์๋์ง
Coupling
: ๋ ๋ชจ๋๊ฐ์ ์ํธ์์กด์ฑ ์ ๋
๋ฎ์ ์ปคํ๋ง ์์คํ
- ripple effect๋ฅผ ์๋ฐฉ - ๋ชจ๋์ ํ ํฌ์ธํธ๋ฅผ ์์ ํ์ ๋, ๋ค๋ฅธ ๋ชจ๋์ด ์ํฅ์ ๋ฐ์ง ์๊ฒ.
- ์ดํด์ฑ ๊ฐํ
๋ชฉ์ : ์ปคํ๋ง ์ต์ํํ๊ธฐ
- ๋ ๋ฆฝ์ ์ธ ๋ชจ๋๋ก ๋ง๋ ๋ค.
- ์ ํํฐ์ ๋ ์์คํ ๋ํ๋ธ๋ค.
๋ฎ์ ์ปคํ๋ง์ ๋ฌ์ฑํ๋๋ฒ
- ๋ถํ์ํ ๊ด๊ณ ์ ๊ฑฐํ๊ธฐ
- ํ์ํ ๊ด๊ณ๋ ์ต์ํ์ผ๋ก ํ๊ธฐ
์ปคํ๋ง ์ฒ๋
: ์๋ก ๊ฐ์๋ก best์
1. Message Coupling
2. Data Coupling
3. Stamp Coupling
4. Control Coupling
5. External Coupling
6. Common Coupling
7. Content Coupling
1. Message Coupling
: ๋ชจ๋ ๊ฐ์ ์ปคํ๋ง์ด ๊ฐ์ฅ ๋ฎ์
- ๊ฐ์ฅ ๋์จํ ์ ํ์ ์ปคํ๋ง์ด๋ค.
- ์ํ ๋ถ์ฐ์ ํตํด ๋ฌ์ฑํ ์ ์์ผ๋ฉฐ, ์ปดํฌ๋ํธ ํต์ ์ ๋งค๊ฐ๋ณ์ ๋๋ ๋ฉ์์ง ์ ๋ฌ์ ํตํด ์ํ๋๋ค.
- ๋ชจ๋์ ์๋ก ์ข
์๋์ง ์๊ณ ๊ณต์ฉ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ๋ฉ์์ง๋ฅผ ๊ตํํ๋ค.
2. Data Coupling
: ๋ฐ์ดํฐ์ ์ํด ์ปคํ๋ง ๋์ด์ ธ ์์
- ๋งค๊ฐ๋ณ์๋ก ํต์ ํ๋ ๊ฒฝ์ฐ, ๋ ๋ชจ๋์ ๋ฐ์ดํฐ์ ์ํด ์ปคํ๋ง๋๋ค. ๊ฐ ๋งค๊ฐ๋ณ์๋ ๋ฐ์ดํฐ์ ๊ธฐ๋ณธ ์กฐ๊ฐ์ด๋ค.
- ๋ชจ๋์ ํต์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์ปคํ๋ง์ ๋ถ๊ฐํผํ๋ฉฐ ์ต์ํ์ผ๋ก ์ ์ง๋๋ ํ ๋ฌดํดํ๋ค.
โป๊ฒฝ๊ณ โป
- ๋์ ์ธํฐํ์ด์ค๋ฅผ ํผํ๊ณ , ์ต๋ํ ์ข๊ฒ ์ ์งํด๋ผ
- ๊ถ์ฅ์ฌํญ : ๋ณตํฉ ๋ฐ์ดํฐ ์ ์ ๋ฐ ์ฌ์ฉ
- Tramp ๋ฐ์ดํฐ ํผํ๊ธฐ
- ๊ตฌ์กฐ์ฒด๋ฅผ ์ธ ๋ ๋ณด๋ด์ง ์์๋ ๋ ๋ฐ์ดํฐ๋ ๊ฐ์ด ๋ณด๋ด์ง๋ ๊ฒ์ ํผํ๊ธฐ
- ํธ๋จํ ๋ฐ์ดํฐ ์กฐ๊ฐ์ด ๋ ๋ง์ ๋ชจ๋์ ํต๊ณผํ ์๋ก ์ค์๋ก ๋ณ๊ฒฝ๋๊ฑฐ๋ ๊ฒฐํจ์ด ํผ์ง ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ค.
- ๊ถ์ฅ์ฌํญ
- ์ฌ๊ตฌ์กฐํ ํ์(๋ณด๋ผ ํ์ ์๋ ๊ฒ๋ง)
3. Stamp Coupling
: ํ๋์ ๋ชจ๋์ด ๋ค๋ฅธ ํ๋์ ๋ณตํฉ ๋ฐ์ดํฐ ์กฐ๊ฐ์ผ๋ก ์ ๋ฌ๋๋ฉด ๋ ๊ฐ์ ๋ชจ๋์ด ์คํฌํ ๊ฒฐํฉ๋๋ค.
- ์คํฌํ ๊ฒฐํฉ ๋ชจ๋์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฐ์ค๋ฝ๊ณ ๋ถํ์ํ ๋ชจํธ์ฑ์ด ์๋ ๊ฒฝ์ฐ์๋ง ๊ด์ฐฎ๋ค.
: ๋ชจ๋ ์ ์ฒด๊ฐ ์ ๋ฌ๋จ
โป๊ฒฝ๊ณ โป
- ๋ง์ ํ๋๊ฐ ํฌํจ๋ ๋ ์ฝ๋๋ฅผ ํ๋์ ์ผ๋ถ๊ฐ ํ์ํ ๋ชจ๋์ ์ ๋ฌํ์ง ๋ง๋ผ.
- ๊ด๋ จ ์๋ ๋ชจ๋ ๊ฐ์ ์ข ์์ฑ์ ์์ฑํจ.
- ๋ชจํธ์ฑ์ ๋์ ํ๊ณ ์ ์ฐ์ฑ์ ๊ฐ์์ํค๋ฉฐ, ๋ถํ์ํ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ค.
- ๊ถ์ฅ์ฌํญ : ๋ฐ์ดํฐ ๊ตฌ์กฐ์์ ์ค์ ๋ก ์ฌ์ฉ๋๋ ๋ถ๋ถ๋ง ํธ์ถ๋ ๋ชจ๋๋ก ์ ๋ฌ๋๋๋ก ๋ชจ๋์ ์ธํฐํ์ด์ค๋ฅผ ์ขํ๋ค.
- int ValidatePhoneNumber(char* phone)
- ๋ฒ๋ค๋ง์ ๊ด๋ จ ์๋ ๋ฐ์ดํฐ ํญ๋ชฉ์ ์ธ๊ณต ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ์์งํ๋ ๊ฒ์ ์๋ฏธํจ.
- ๋ฒ๋ค๋ง์ ๋ถํ์ํ ๋ชจํธํจ์ ์ ๊ณตํ๋ค. -> ์ฐ๊ด์ฑ์ด ์๋ ๊ฒ์ ๋ฒ๋ค๋ง ํ์ง๋ง๋ผ.
- ๊ถ์ฅ์ฌํญ
- ๊ด๋ จ ์๋ ๋ฐ์ดํฐ ํญ๋ชฉ์ ์ธ๊ณต ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ์์งํ์ง ๋ง ๊ฒ.
- ๋ฒ๋ค๋ง์ ํ๊ณ ๊ธฐ๋ณธ ๋ฐ์ดํฐ์ ๋จ์ ํฉ์ฑ ์ ํ์ ์ฌ์ฉํ์ฌ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํด๋ผ.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฏธ ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ํด์ผ ํจ.
- ์ฆ, ๋๋ฉ์ธ ์ ๋ฌธ๊ฐ๊ฐ ์๋ฏธ๋ฅผ ์ดํดํ ์ ์๋ ๊ฒฝ์ฐ์๋ง ๋ฒ๋ค๋ง ์ฑํํ๋ค.
4. Control Coupling
: ์์ข์ ์ปคํ๋ง์
: ๋ ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋์ ์ ์ดํ ์๋๋ฅผ ๊ฐ์ง๊ณ coupling๋์ด ์๋ ๊ฒฝ์ฐ์ด๋ค.
์ ์ด๋ฐฉํฅ
- Forward : caller๊ฐ callee์ ๋ด๋ถ ํ๋ฆ์ ์ ์ด
- Backward : callee๊ฐ caller์ ๋ด๋ถ ํ๋ฆ์ ์ ์ด
Forward Control
- MatchCustomerRecords๋ SystemIOControl ๋ชจ๋์ ๋ก์ง ์ค ์ฌ์ฉํ ๋ถ๋ถ์ ๋ช
์์ ์ผ๋ก ๊ฒฐ์ ํจ.
- caller๋ ํธ์ถ๋ ๋ชจ๋์ ๋
ผ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๋์ง ์์์ผ ํจ.
๊ถ์ฅ์ฌํญ
- ๋ ์ ์ ์ผ๋ก ์คํ๋๋ ๊ฐ ๋ก์ง์ ๋ํด ์๋ก์ด ๋ชจ๋์ ์ ์ํ์ฌ ํธ์ถ๋ ๋ชจ๋์ ๋ถํ ํ๋ค.
Backward Control
- ํธ์ถ๋ ๋ชจ๋์ ํธ์ถํ ๋ชจ๋์ ์ผ๋ถ ๊ธฐ๋ฅ์ ๊ฐ์ ํ๋ค.
- ์ด๊ฒ์ ํธ์ถ๋ ๋ชจ๋์ ์ ์ฐ์ฑ์ ๊ฐ์์ํจ๋ค.
๊ถ์ฅ์ฌํญ
- ์ ์ด ํ๋๊ทธ ๋์ descriptive ํ๋๊ทธ ์ฌ์ฉ -> ํ์๋ฅผ ๋ฆฌํดํ์ง ๋ง๊ณ , ์ํ์ ๋ณด๋ฅผ ๋ฆฌํดํ๋ ๊ฒ์ด ์ข์
5. External Coupling
: ๋ ๊ตฌ์ฑ ์์๋ ์ธ๋ถ์์ ๋ถ๊ณผ๋ ๊ฒ์ ๊ณต์ ํ๋ค.
์ธ๋ถ ๋๊ตฌ ๋ฐ ์ฅ์น์์ ํต์ ๊ณผ ๊ด๋ จ๋จ.
- External file
- Device interface
- Protocol
- Data format
6. Common Coupling
: ๋ ๊ฐ์ ๋ชจ๋์ด ๋์ผํ ์ ์ญ ๋ฐ์ดํฐ ์์ญ์ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ
common coupling์ด ๋์ ์ด์
- Ripple effect
- ์ ์ญ์ ์ผ๋ก ๊ฒฐํฉ๋ ๋ชจ๋์ ์ ์ฐ์ฑ ๋ถ์กฑ
- ์๊ฐ์ ์๊ฒฉ์ฑ์ด ๋์ ๋จ (์ธ์ ๋ณ์๋ฅผ ์์ ํด์ผํ ์ง?)
- ๋์ผํ ๊ธ๋ก๋ฒ ์์ญ์ ๋ค์ฉ๋๋ก ์ ์ฉํ๋ ํ์
- ๊ธ๋ก๋ฒ ์์ญ์ ํ์ฉ๋ ํ์ ๋ฐ ์ถ์ ์ ์ด๋ ค์
๊ถ์ฅ์ฌํญ
- ์ผ๋ถ ๋ชจ๋์ ์๋ฏธ ์๋ ์ ์ญ ๋ณ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ํ -> ๊ฐ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๋ ํ์์ด ๋ ์ข์
- ๋ชจ๋ ๋ฒ์์ ๋ณ์๋ก ์ ์ธํด์ ์ ์ญ ์์ญ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ํํ๋ค. -> ๊ฐ์ ์ ์ญ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ผ๋ฆฌ ๋ชจ๋๋ก ์ชผ๊ฐ๋ผ
- ๊ฐ ์ ์ญ ๋ณ์์ ๋ํ ์ก์ธ์ค ํจ์ ์ ์ -> ์ ์ญ๋ณ์์ ์ก์ธ์ค ํ๋ ํจ์๋ฅผ ๋ฐ๋ก ์ ์ํด์ ์ฌ์ฉํด๋ผ
7. Content Coupling
: ๋ ๋ชจ๋์ด ์ด๋ค ์์ผ๋ก๋ ๋ค๋ฅธ ๋ชจ๋์ ๋ด๋ถ๋ฅผ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ
- ๋ชจ๋์์ ๋ถ๊ธฐ๋๊ฑฐ๋ ๋ค๋ฅธ ๋ชจ๋๋ก ๋์ด๊ฐ
- ํ ๋ชจ๋์ ๋ค๋ฅธ ๋ชจ๋ ๋ด์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐ(๋ณ๊ฒฝ)ํ๋ค.
- ์) ์ด์ ๋ธ๋ฆฌ ํ๋ก๊ทธ๋จ, 'goto'๋ฌธ
Cohesion
: ๋ชจ๋ ๋ด ์์์ ๊ธฐ๋ฅ์ ๊ด๋ จ์ฑ์ ๊ฐ๋ ์ธก์
- ๋ชฉํ : Cohesion ์ต๋ํํ๊ธฐ
- ์์๊ฐ ์๋ก ๊ฐ๋ ฅํ๊ณ ์ง์ ์ผ๋ก ๊ด๋ จ๋์ด ์๋ ๋ชจ๋์ ๋ง๋ ๋ค.
- Coupling๊ณผ Cohesion ๊ฐ์ ๊ด๊ณ
- ์์คํ ๋ถํ ์ ํ๊ฐํ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ
- ๋ชจ๋์ Cohesion์ ์ข ์ข ์์คํ ์ ๋ค๋ฅธ ๋ชจ๋๊ณผ ์ผ๋ง๋ ๋ฐ์ ํ๊ฒ Coupling๋๋์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
-> ์์ง๋ ฅ โฌ๏ธ -> ์ปคํโฌ๏ธ (๋ฐ๋๋ ์ฑ๋ฆฝx)
Cohesion ์ฒ๋
: ์๋ก ๊ฐ์๋ก best
1. Functional Cohesion
2. Sequential Cohesion
3. Communicational Cohesion
4. Procedural Cohesion
5. Temporal Cohesion
6. Logical Cohesion
7. Coincidental Cohesion
1. Functional Cohesion
: ๊ธฐ๋ฅ์ ์ผ๋ก ์์ง๋ ฅ์๋ ๋ชจ๋์ ํ๋์ ๋ฌธ์ ๊ด๋ จ ์์
์คํ์ ๋ชจ๋ ๊ธฐ์ฌํ๋ ์์๋ฅผ ํฌํจํ๋ค.
-> ๋ฑ ํ๊ฐ์ง ์ผ๋ง ํ๋ ๋ชจ๋๋ก ๊ตฌ์ฑํ๋ผ
- functional cohesion์ ๋ชจ๋์ ๊ฐ๋ ฅํ๊ณ ๋จ์ผํ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์๋ค.
- ์)
- ๊ฐ๋์ cosine๊ณ์ฐ
- ์ํ๋ฒณ ๊ตฌ๋ฌธ ํ์ธ
- ๋ค๋ฅธ ํ๋์ ์ฝ๋งค์ด์ง ์๊ณ ํ ๊ฐ์ง ์ผ๋ง ์ํํ์ฌ ์๋ฃํ๋ค.
2. Sequential Cohesion
: ํ ํ๋์ ์ถ๋ ฅ ๋ฐ์ดํฐ๊ฐ ๋ค์ ํ๋์ ์ ๋ ฅ ๋ฐ์ดํฐ ์ญํ ์ ํ๋ ๊ฒฝ์ฐ
- Sequentially cohesive module์ ์ผ๋ฐ์ ์ผ๋ก ์ข์ ๊ฒฐํฉ์ ๊ฐ์ง๋ฉฐ ์ฝ๊ฒ ์ ์ง๋๋ค.
๊ถ์ฅ์ฌํญ
- functional cohesion ๋ชจ๋๋ก ๋ณํํด๋ผ
- Sequential Cohesion vs Functional Cohesion
- Functional Cohesion ๋ชจ๋์ ์์ฉ ์์ญ์ ์ด๋ค ๊ฐ๋ ์ ํด๋นํ ์ ์์ง๋ง Sequential Cohesion ๋ชจ๋์ ๊ทธ๋ ์ง ์๋ค.
- Sequential Cohesion์ Functional Cohesion๋ณด๋ค ์ฌ์ฌ์ฉ์ฑ์ด ๋จ์ด์ง๋ค.
-> o,x๋ฌธ์ ๋์ฌ ๋ฏ
3. Communicational Cohesion
: ๋์ผํ ์ ๋ ฅ ๋๋ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ํ๋์ ๊ธฐ์ฌํ๋ ์์์ ๋ชจ๋
- Communicational Cohesion vs Sequential Cohesion
- ์์ฉ ๊ฐ๋ฅํ cohesion๊ณผ ์์ฉ ๊ฐ๋ฅํ coupling์ด ์์ด์ผ ํ๋ค.
- Sequential Cohesion๋ชจ๋์ ๋ฐ๋์ ์ ํด์ง ์์๋๋ก ์งํ๋์ด์ผ ํ์ง๋ง,Communicational Cohesion๋ชจ๋์์๋ ์คํ์์๊ฐ ์ค์ํ์ง ์๋ค.
โป๊ฒฝ๊ณ โป
- ํธ์ถ์๊ฐ ๋ฐํ ๊ฐ์ ์ผ๋ถ๋ง ํ์ํ ๊ฒฝ์ฐ : ์ผ๋ถ ๋ชจ๋์ ๊ณ ๊ฐ์ ์ด๋ฆ์ ์ฐพ์์ผ ํ๊ณ ๋์ถ ์์ก์๋ ๊ด์ฌ์ด ์๋ค.
- ๋ชจ๋์ ๋์ถ ์์ก์ ํ๊ธฐํ๊ฑฐ๋ ๊ณ ๊ฐ ์ด๋ฆ์ ์ฐพ๊ธฐ ์ํด ์์ฒด ์ฝ๋๊ฐ ํ์ํ๋ค.
๊ถ์ฅ์ฌํญ
- ๊ฐ ๊ธฐ๋ณธ ๋ฐํ ๊ฐ์ ๋ํด Functional Cohesionํ ๋ชจ๋์ ์ ์ํ๋ค.
- ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ํ๋ ๊ฐ์ ์ฝ๋ ๊ณต์
- ์ฒ์ 20๋ช ์ ์ง์์ ๋ํ ๊ธ์ฌ ๋ณด๊ณ ์๋ง ์์ฑํ๋ ค๋ฉด ์ด๋ป๊ฒ ํ๋?
๊ถ์ฅ์ฌํญ
- Functional Cohesionํ ๋ชจ๋๋ก ์ ์
4. Procedural Cohesion
: Procedural Cohesionํ ๋ชจ๋์ ์ ์ด๊ฐ ๊ฐ ํ๋์์ ๋ค์ ํ๋์ผ๋ก ํ๋ฅด๋ ์๋ก ๋ค๋ฅธ, ๊ฐ๋ฅํ ๊ด๋ จ ์๋ ํ๋์ ๊ด์ฌํ๋ ์์์ด๋ค.
- ๋จ์ผ ๋ฌธ์ ๊ด๋ จ ๊ธฐ๋ฅ๋ณด๋ค๋ ์คํ ์์์ ๋ฐ๋ผ ๊ด๋ จ๋๋ค.
๊ถ์ฅ์ฌํญ
- ๊ด๋ จ ์๋ ํ๋์ ์ ๊ฑฐํ์ฌ ์์ฐจ์ /๊ธฐ๋ฅ์ ์์ง๋ ฅ์ผ๋ก ์ ํํ๋ค.
- ๋จ์ผ ๋ฃจํ๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ง์ ๋ค๋ฅธ ํ๋ ์ํํ๊ฒ ๋จ
- table-A์ table-B๋ ๊ฐ๊ฐ 100๊ฐ์ ์์๊ฐ ์๋ ์ ํ ๊ด๋ จ์ด ์๋ ํ
์ด๋ธ์ด๋ค.
- table-B์ ๊ธธ์ด๊ฐ 120์ผ๋ก ๋ณ๊ฒฝ๋๊ฑฐ๋ table-B์ ์์๊ฐ table-A-sum์ ์์กดํ๊ฒ ๋๋ฉด ์ด๋ป๊ฒ ๋๋๊ฐ?
๊ถ์ฅ์ฌํญ
- ๋ ๊ฐ์ ํจ์๋ก ์ชผ๊ฐ๊ธฐ
5. Temporal Cohesion
: ์์๋ค์ด ์๊ฐ์ ๊ด๋ จ๋ ํ๋์ ๊ด์ฌํ๋ ๋ชจ๋
์์๋ ์ฒ๋ฆฌ๋๋ ์์ ์ ๋ฐ๋ผ ๊ทธ๋ฃนํ๋๋ค.
- ํ๋ก๊ทธ๋๋จธ๋ ์๊ฐ์ ์ํด์๋ง ๊ด๋ จ๋ ํ๋๋ค ์ฌ์ด์์ ์ฝ๋๋ฅผ ๊ณต์ ํ๋ ค๊ณ ํ๋ฉฐ, ๋ชจ๋์ ์ฌ์ฌ์ฉํ๊ธฐ ์ด๋ ต๋ค.
์์)
- ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ ์ ๋ชจ๋ ๋ณ์ ์ด๊ธฐํ
- ์ด๋ ค ์๋ ๋ชจ๋ ํ์ผ์ ๋ซ๋๋ค.
- ์ค๋ฅ ๋ก๊ทธ๋ฅผ ์์ฑํ๋ค.
- ์ฌ์ฉ์ ์๋ฆผ์ ์ํด ๋ชจ๋ ๋ฉ์์ง ์ฒ๋ฆฌ
๊ถ์ฅ์ฌํญ
- ์ด๊ธฐํ ๋ฐ ์ข ๋ฃ์ ๊ฒฝ์ฐ, mighty ๋ชจ๋(๋ชจ๋ ๊ฑธ ๋ค ํ๋ ๋ชจ๋) ๋์ ๊ธฐ๋ฅ ๊ด๋ จ ๋ฐ์ดํฐ๋ณ๋ก ๋ณ๋์ ์ด๊ธฐํ ๋ฐ ์ข ๋ฃ ๋ชจ๋์ ์ ์
6. Logical Cohesion
: ์คํํ ํ๋์ด ๋ชจ๋ ์ธ๋ถ์์ ์ ํ๋๋ ๋์ผํ ์ผ๋ฐ ๋ฒ์ฃผ์ ํ๋์ ๊ธฐ์ฌํ๋ ์์
-> ๋น์ทํ ์ผ์ ํ๋ค๊ณ ์ฃ๋ค ๋ชจ์๋๋ ๊ฒ
- ๋์ผํ ์ผ๋ฐ ํ๋์ ์ฌ๋ฌ ๊ฐ ํฌํจ
- ํ๋ ์ค ํ๋๊ฐ ์ฃผ์ด์ง ํ๋๊ทธ ํ๋ผ๋ฏธํฐ์ ์ํด ์ํ๋จ
- ์ผ๋ถ ํ๋ผ๋ฏธํฐ๋ ๋น์๋๊ธฐ๋ ํจ
๊ถ์ฅ์ฌํญ
- ๊ธฐ๋ฅ์ ์์ง๋ ฅ์ ๊ฐ์ง ์ฌ๋ฌ ๋ชจ๋๋ก ๋๋๋ค.
7. Coincidental Cohesion
: ์์๋ค์ด ์๋ก ์๋ฏธ ์๋ ๊ด๊ณ์ ํ๋์ ๊ธฐ์ฌํ๋ ๋ชจ๋
- ๋ชจ๋์ ์ผ๋ถ๋ถ์ ์์ค ์ฝ๋์์์ ์์น๋ง ๊ด๋ จ์ด ์๋ค.
- ์ผ๋ถ ๊ธฐ๋ฅ์ ์ํํ๋ ๋ฐ ํ์ํ ์์๊ฐ ์์คํ ์ ์ฒด์ ํฉ์ด์ ธ ์๋ค.
- ์ฐ๋ฐ์ ์ด๊ณ ์ต์ ์ ํํ
์ต์ข ์ ๋ฆฌ
'์ํํธ์จ์ด๊ณตํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ํํธ์จ์ด๊ณตํ] ํ์๊ด๋ฆฌ (0) | 2021.12.12 |
---|---|
[์ํํธ์จ์ด๊ณตํ] Verification & Validation (0) | 2021.12.12 |
[์ํํธ์จ์ด๊ณตํ] Design-Pattern (0) | 2021.12.12 |
[์ํํธ์จ์ด๊ณตํ] ๊ฐ์ฒด์งํฅ์ค๊ณ (0) | 2021.12.12 |