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

#6 ์ž๊ฒฉ์ฆ ๐Ÿ—‚๏ธ/5-1 ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 1. ์š”๊ตฌ์‚ฌํ•ญ ํ™•์ธ

์š”๊ตฌ์‚ฌํ•ญ ํ™•์ธ
์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ๋ฐฉ๋ฒ•๋ก  ์ข…๋ฅ˜
  • ๊ตฌ์กฐ์  ๋ฐฉ๋ฒ•๋ก  - ์ „์ฒด ์‹œ์Šคํ…œ์„ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ฉํ•˜๋Š” ๋ถ„ํ• ๊ณผ ์ •๋ณต ์ ‘๊ทผ ๋ฐฉ์‹์˜ ๋ฐฉ๋ฒ•๋ก 
  • ์ •๋ณด๊ณตํ•™ ๋ฐฉ๋ฒ•๋ก  - ์ •๋ณด์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๊ด€๋ฆฌ ์ ˆ์ฐจ์™€ ์ž‘์—… ๊ธฐ๋ฐ˜์„ ์ฒด๊ณ„ํ™”ํ•œ ๋ฐฉ๋ฒ•๋ก 
  • ๊ฐ์ฒด ์ง€ํ–ฅ ๋ฐฉ๋ฒ•๋ก  - ‘๊ฐ์ฒด’๋ผ๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„๋กœ ์‹œ์Šคํ…œ์„ ๋ถ„์„ ๋ฐ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก 
  • ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ๋ฐฉ๋ฒ•๋ก  - ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐ๋ฆฝํ•ด์„œ ํ•˜๋‚˜์˜ ์ƒˆ๋กœ์šด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก 
  • ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก  - ์ ˆ์ฐจ๋ณด๋‹ค ์‚ฌ๋žŒ์ด ์ค‘์‹ฌ์ด ๋˜์–ด ๋ณ€ํ™”์— ์œ ์—ฐํ•˜๊ณ  ์‹ ์†ํ•˜๊ฒŒ ์ ์šฉํ•˜๋ฉด์„œ ํšจ์œจ์ ์œผ๋กœ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋ก 
  • ์ œํ’ˆ ๊ณ„์—ด ๋ฐฉ๋ฒ•๋ก  - ํŠน์ • ์ œํ’ˆ์— ์ ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ณตํ†ต๋œ ๊ธฐ๋Šฅ์„ ์ •์˜ํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก 
  • SDLC (์†Œํ”„ํŠธ์›จ์–ด ์ƒ๋ช… ์ฃผ๊ธฐ)SDLC ๋ชจ๋ธ ์ข…๋ฅ˜
    • ํญํฌ์ˆ˜ ๋ชจ๋ธ Waterfall Model
      • ๋งˆ๋ฌด๋ฆฌ ์ง€์€ ํ›„ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€๋Š” ๋ชจ๋ธ
    • ํ”„๋กœํ† ํƒ€์ดํ•‘ ๋ชจ๋ธ Prototype Model
      • ๊ณ ๊ฐ์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ˜์˜ํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ๋ชจ๋ธ
    • ๋‚˜์„ ํ˜• ๋ชจ๋ธ Spiral Model
      • ์œ„ํ—˜์„ ์ตœ์†Œํ™”, ์ ์ง„์  ๋ชจํ˜•
      • ๊ณ„ํš ์ˆ˜๋ฆฝ → ์œ„ํ—˜ ๋ถ„์„ → ๊ฐœ๋ฐœ → ๊ณ ๊ฐ ํ‰๊ฐ€ (๊ณ„์œ„๊ฐœ๊ณ )
    • ์• ์ž์ผ ๋ชจ๋ธ Agile Model
      • ์š”๊ตฌ ์‚ฌํ•ญ ๋ณ€ํ™”์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ผ์ •ํ•œ ์ฃผ๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๊ฐœ๋ฐœํ•˜๋Š” ๋ชจ๋ธ
  • ์‹œ์Šคํ…œ ์š”๊ตฌ๋ถ„์„๋ถ€ํ„ฐ ์œ ์ง€๋ณด์ˆ˜๊นŒ์ง€ ์ „ ๊ณต์ •์„ ์ฒด๊ณ„ํ™”ํ•œ ์ ˆ์ฐจ
  • ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก 
    • ์˜์‚ฌ์†Œํ†ต, ์šฉ๊ธฐ, ๋‹จ์ˆœ์„ฑ, ์กด์ค‘, ํ”ผ๋“œ๋ฐฑ
    • ์Šคํฌ๋Ÿผ Scrum
      • ํŒ€์›๋“ค์ด ์Šค์Šค๋กœ ํŒ€์„ ๊ตฌ์„ฑ
      • 2~4์ฃผ ๊ธฐ๊ฐ„
      • ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•œ ์ œํ’ˆ๊ธฐ๋Šฅ ๋ชฉ๋ก(Product Backlog)์„ ์ž‘์„ฑ
      • ์Šคํ”„๋ฆฐํŠธ ๊ณ„ํš ํšŒ์˜ → ์Šคํ”„๋ฆฐํŠธ → ์ผ์ผ ์Šคํฌ๋Ÿผ ํšŒ์˜ → ์Šคํ”„๋ฆฐํŠธ ๊ฒ€ํ†  ํšŒ์˜ → ์Šคํ”„๋ฆฐํŠธ ํšŒ๊ณ 
      1. ์ œํ’ˆ ์ฑ…์ž„์ž(Product Owner)๊ฐ€ Backlog ์ž‘์„ฑ
      2. ์Šคํฌ๋Ÿผ ๋งˆ์Šคํ„ฐ(SM; Scrum Master): ๊ฐ€์ด๋“œ ์—ญํ• 
    • XP (eXtreme Programming)
      1. Pair Programming ์ง ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ํ•จ๊ป˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ˆ˜ํ–‰ํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ๊ณต๋™์œผ๋กœ ๋‚˜๋ˆ  ๊ฐ–๋Š” ํ™˜๊ฒฝ์„ ์กฐ์„ฑ
      2. Collective Ownership ๊ณต๋™ ์ฝ”๋“œ ์†Œ์œ : ๊ฐœ๋ฐœ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ๊ณต๋™์œผ๋กœ ์†Œ์œ 
      3. Test-Driven Development ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ: ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์ „์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๋ฏ€๋กœ ๋ฌด์—‡์„ ํ•ด์•ผํ•˜๋Š”์ง€ ์ •ํ™•ํžˆ ํŒŒ์•…, ํ…Œ์ŠคํŠธ๊ฐ€ ์ง€์†์ ์œผ๋กœ ์ง„ํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŒ… ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉ
      4. Whole Team ์ „์ฒด ํŒ€: ๊ฐœ๋ฐœ์— ์ฐธ์—ฌํ•˜๋Š” ๋ชจ๋“  ๊ตฌ์„ฑ์› (๊ณ ๊ฐ ํฌํ•จ)๋“ค์€ ๊ฐ์ž ์ž์‹ ์˜ ์—ญํ• ์ด ์žˆ๊ณ  ๊ทธ ์—ญํ• ์—๋Œ€ํ•œ ์ฑ…์ž„์„ ๊ฐ€์ ธ์•ผํ•จ
      5. Continuous Integration ๊ณ„์†์ ์ธ ํ†ตํ•ฉ: ๋ชจ๋“ˆ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ  ๊ฐœ๋ฐœ๋œ ์ฝ”๋“œ๋“ค์€ ํ•˜๋‚˜์˜ ์ž‘์—…์ด ๋งˆ๋ฌด๋ฆฌ ๋  ๋•Œ๋งˆ๋‹ค ์ง€์†์ ์œผ๋กœ ํ†ตํ•ฉ ๋จ
      6. Refactoring ๋ฆฌํŒฉํ† ๋ง: ํ”„๋กœ๊ทธ๋žจ์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์ˆ˜์ •ํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•จ, ํ”„๋กœ๊ทธ๋žจ ๊ธฐ๋Šฅ์˜ ๋ณ€๊ฒฝ ์—†์ด ์‹œ์Šคํ…œ์„ ์žฌ๊ตฌ์„ฑํ•จ
      7. Small Releases ์†Œ๊ทœ๋ชจ ๋ฆด๋ฆฌ์ฆˆ: ๋ฆด๋ฆฌ์ฆˆ ๊ธฐ๊ฐ„์„ ์งง๊ฒŒ ๋ฐ˜๋ณตํ•จ์œผ๋กœ์จ ๊ณ ๊ฐ ์š”๊ตฌ ๋ณ€ํ™”์— ์‹ ์†ํžˆ ๋Œ€์‘ ๊ฐ€๋Šฅ
      • ๋ฆด๋ฆฌ์ฆˆ ํ…Œ์ŠคํŠธ๋งˆ๋‹ค ๊ณ ๊ฐ์„ ์ง์ ‘ ์ฐธ์—ฌ์‹œํ‚ด์œผ๋กœ์จ ์š”๊ตฌํ•œ ๊ธฐ๋Šฅ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ณ ๊ฐ์ด ์ง์ ‘ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจํ˜•
      • ๋ฆด๋ฆฌ์ฆˆ ๊ณ„ํš ์ˆ˜๋ฆฝ → ์ดํ„ฐ๋ ˆ์ด์…˜ → ์Šน์ธ ๊ฒ€์‚ฌ → ์†Œ๊ทœ๋ชจ ๋ฆด๋ฆฌ์ฆˆ

DB ์„ค๊ณ„ ์ ˆ์ฐจ

 

๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์›์น™ SOLID
  • SRP ๋‹จ์ผ์ฑ…์ž„ (Single Responsibility Principle)

์ž‘์„ฑ๋œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ๋งŒ ๊ฐ€์ง€๋ฉฐ ํด๋ž˜์Šค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ์„œ๋น„์Šค๋Š” ๊ทธ ํ•˜๋‚˜์˜ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์ง‘์ค‘๋˜์–ด์žˆ์–ด์•ผ ํ•จ

  • OCP ๊ฐœ๋ฐฉํ์‡„ (Open Close Principle)

ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ๊ณ , ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค

  • LSP ๋ฆฌ์Šค์ฝ”๋ธŒ ์น˜ํ™˜ (The Liskov Substitution Principle)

์„œ๋ธŒ ํƒ€์ž…์€ ์–ธ์ œ๋‚˜ ๊ธฐ๋ฐ˜ ํƒ€์ž…๊ณผ ํ˜ธํ™˜๊ฐ€๋Šฅํ•ด์•ผํ•จ

  • ISP ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ (Interface Segregation Principle)

์ž์‹ ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•„์•ผํ•จ

  • DIP ์˜์กด์„ฑ ์—ญ์ „ (Dependency Inversion Principle)

ํ•˜์œ„ ๋ชจ๋“ˆ์˜ ๋ณ€๊ฒฝ์ด ์ƒ์œ„ ๋ชจ๋“ˆ์ด ๋ณ€๊ฒฝ์„ ์š”๊ตฌํ•˜๋Š” ์œ„๊ณ„๊ด€๊ณ„๋ฅผ ๋Š๋Š” ์˜๋ฏธ์˜ ์—ญ์ „

 

๋ฆฌํŒฉํ† ๋ง Refactoring

์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•จ

์†Œํ”„ํŠธ์›จ์–ด ๋ชจ๋“ˆ์˜ ์™ธ๋ถ€์  ๊ธฐ๋Šฅ์€ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ๋‚ด๋ถ€์ ์œผ๋กœ ๊ตฌ์กฐ, ๊ด€๊ณ„ ๋“ฑ์„ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ธฐ๋ฒ•

์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ ๋ณต์žกํ•œ ์ฝ”๋“œ์˜ ๋‹จ์ˆœํ™”, ์†Œ์Šค์˜ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ
์œ ์—ฐํ•œ ์‹œ์Šคํ…œ ์†Œํ”„ํŠธ์›จ์–ด ์š”๊ตฌ ์‚ฌํ•ญ ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•œ ๋Œ€์‘
์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ ์ •์ œ ๋ฐ ์ตœ์ ํ™”๋œ ์†Œ์Šค์˜ ์žฌ์‚ฌ์šฉ
ํ’ˆ์งˆ ํ–ฅ์ƒ ์†Œํ”„ํŠธ์›จ์–ด ์˜ค๋ฅ˜ ๋ฐœ๊ฒฌ์ด ์šฉ์ดํ•˜์—ฌ ํ’ˆ์งˆ ํ–ฅ์ƒ

UML (Unified Modeling Language)

๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ์˜์‚ฌ์†Œํ†ต์„ ์›ํ™œํ•˜๊ฒŒ ์ด๋ฃจ์–ด์ง€๋„๋ก ํ‘œ์ค€ํ™”ํ•œ ๋Œ€ํ‘œ์ ์ธ ๊ฐ์ฒด์ง€ํ–ฅ ๋ชจ๋ธ๋ง ์–ธ์–ด

 

Diagram

์‚ฌ๋ฌผ๊ณผ ๊ด€๊ณ„๋ฅผ ๋„ํ˜•์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ

  • ๊ตฌ์กฐ์  ๋‹ค์ด์–ด๊ทธ๋žจ - ์ •์  ๋ชจ๋ธ๋ง
    • ํด๋ž˜์Šค ****(Class) ๋‹ค์ด์–ด๊ทธ๋žจ : ํด๋ž˜์Šค์™€ ํด๋ž˜์Šค๊ฐ€ ๊ฐ€์ง€๋Š” ์†์„ฑ
    • ๊ฐ์ฒด ****(Object) ๋‹ค์ด์–ด๊ทธ๋žจ : ํŠน์ • ์‹œ์ ์˜ ๊ฐ์ฒด์™€ ๊ฐ์ฒด ์‚ฌ์ด์˜ ๊ด€๊ณ„๋กœ ํ‘œํ˜„, ๋Ÿผ๋ฐ”์šฐ ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐ์ฒด ๋ชจ๋ธ๋ง
    • ์ปดํฌ๋„ŒํŠธ(Component) ๋‹ค์ด์–ด๊ทธ๋žจ : ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๊ด€๊ณ„ / ๊ตฌํ˜„ ๋‹จ๊ณ„
    • ๋ฐฐ์น˜ (Deployment) ๋‹ค์ด์–ด๊ทธ๋žจ : ๊ฒฐ๊ณผ๋ฌผ, ํ”„๋กœ์„ธ์Šค, ์ปดํฌ๋„ŒํŠธ ๋“ฑ ๋ฌผ๋ฆฌ์  ์š”์†Œ๋“ค์˜ ์œ„์น˜๋ฅผ ํ‘œํ˜„ / ๊ตฌํ˜„ ๋‹จ๊ณ„
    • ๋ณตํ•ฉ์ฒด ๊ตฌ์กฐ(Composite Structure) ๋‹ค์ด์–ด๊ทธ๋žจ : ๋ณตํ•ฉ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š” ํด๋ž˜์Šค๋‚˜ ์ปดํฌ๋„ŒํŠธ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„
    • ํŒจํ‚ค์ง€(Package) ๋‹ค์ด์–ด๊ทธ๋žจ : ์œ ์Šค์ผ€์ด์Šค๋‚˜ ํด๋ž˜์Šค ๋“ฑ์˜ ์š”์†Œ๋“ค์„ ๊ทธ๋ฃนํ™”ํ•œ ํŒจํ‚ค์ง€๋“ค์˜ ์˜์กด ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„
  • ํ–‰์œ„ ๋‹ค์ด์–ด๊ทธ๋žจ - ๋™์  ๋ชจ๋ธ๋ง
    • ์œ ์Šค์ผ€์ด์Šค(UseCase) : ์‚ฌ์šฉ์ž ์š”๊ตฌ ๋ถ„์„ / ์‚ฌ์šฉ์ž์™€ ๊ณต์œ 
    • ์‹œํ€€์Šค(Sequence) : ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ์‹œ์Šคํ…œ์ด๋‚˜ ๊ฐ์ฒด๋“ค์ด ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฉ”์‹œ์ง€
    • ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜(Communication): ๋™์ž‘์— ์ฐธ์—ฌํ•˜๋Š” ๊ฐ์ฒด๋“ค์ด ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฉ”์‹œ์ง€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„
    • ์ƒํƒœ(State): ์ƒํƒœ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š”์ง€ ํ‘œํ˜„, ๋Ÿผ๋ฐ”์šฐ ๊ฐ์ฒด์ง€ํ–ฅ ๋™์  ๋ชจ๋ธ๋ง
    • ํ™œ๋™(Activity): ๊ฐ์ฒด์˜ ์ฒ˜๋ฆฌ ๋กœ์ง, ์ฒ˜๋ฆฌ์˜ ํ๋ฆ„์„ ์ˆœ์„œ๋Œ€๋กœ ํ‘œํ˜„ / ์‚ฌ์šฉ์ž์™€ ๊ณต์œ 
    • ์ƒํ˜ธ์ž‘์šฉ ๊ฐœ์š”(Interaction Overview): ์ œ์–ด ํ๋ฆ„ ํ‘œํ˜„
    • ํƒ€์ด๋ฐ(Timing): ๊ฐ์ฒด ์ƒํƒœ ๋ณ€ํ™”์™€ ์‹œ๊ฐ„ ์ œ์•ฝ์„ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œํ˜„
  • ์Šคํ…Œ๋ ˆ์˜ค ํƒ€์ž…
    • <<include>> ํฌํ•จ
    • <<extends>> ํ™•์žฅ
    • <<interface>> ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜
    • <<exception>> ์˜ˆ์™ธ ์ •์˜
    • <<constructor>> ์ƒ์„ฑ์ž
  • UML์—์„œ ํ‘œํ˜„ํ•˜๋Š” ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์™ธ ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ํ‘œํ˜„
  • ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›ŒํฌํŠน์„ฑ
    • ๋ชจ๋“ˆํ™” Modularity
    • ์žฌ์‚ฌ์šฉ์„ฑ Reusability
    • ํ™•์žฅ์„ฑ Extensibility
    • ์ œ์–ด์˜ ์—ญํ๋ฆ„ Inversion Of Control
    ์ข…๋ฅ˜
    • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ
    • ์ „์ž์ •๋ถ€ ํ”„๋ ˆ์ž„์›Œํฌ
    • ๋‹ท๋„ท ํ”„๋ ˆ์ž„์›Œํฌ
  • ๋Ÿผ๋ฐ”์šฐ ๊ฐ์ฒด์ง€ํ–ฅ ๋ถ„์„

LIST