๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿ–ฅ dev-ruby

[์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™] ๋ชจ๋“ˆํ™”(Modularity) ๋ณธ๋ฌธ

์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™

[์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™] ๋ชจ๋“ˆํ™”(Modularity)

ruby_s 2021. 12. 11. 02:15
728x90
๋ฐ˜์‘ํ˜•
SMALL

์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ

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

: ์š”์†Œ๋“ค์ด ์„œ๋กœ ์˜๋ฏธ ์—†๋Š” ๊ด€๊ณ„์˜ ํ™œ๋™์— ๊ธฐ์—ฌํ•˜๋Š” ๋ชจ๋“ˆ

  • ๋ชจ๋“ˆ์˜ ์ผ๋ถ€๋ถ„์€ ์†Œ์Šค ์ฝ”๋“œ์—์„œ์˜ ์œ„์น˜๋งŒ ๊ด€๋ จ์ด ์žˆ๋‹ค.
  • ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์š”์†Œ๊ฐ€ ์‹œ์Šคํ…œ ์ „์ฒด์— ํฉ์–ด์ ธ ์žˆ๋‹ค.
  • ์šฐ๋ฐœ์ ์ด๊ณ  ์ตœ์•…์˜ ํ˜•ํƒœ

์ตœ์ข… ์ •๋ฆฌ

728x90
๋ฐ˜์‘ํ˜•
LIST