๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๐ŸŒฎ ๐Ÿ’ฌ
๐Ÿ“œ ์ž๊ฒฉ์ฆ/์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ

์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ํ•„๊ธฐ ํ•ต์‹ฌ ์š”์•ฝ | 1๊ณผ๋ชฉ : ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„

by ๋ฐ”์ฟ„๋ฆฌ 2025. 1. 11.

โœจ ์†Œํ”„ํŠธ์›จ์–ด ์ƒ๋ช… ์ฃผ๊ธฐ Software Life Cycle

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋‹จ๊ณ„์™€ ๊ฐ ๋‹จ๊ณ„๋ณ„ ์ฃผ์š” ํ™œ๋™, ๊ทธ๋ฆฌ๊ณ  ํ™œ๋™์˜ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ์‚ฐ์ถœ๋ฌผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

 

โœจ ํญํฌ์ˆ˜ ๋ชจํ˜• Waterfall Model

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์€ ์ด์ „ ๋‹จ๊ณ„๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์—†๋‹ค.

๊ฐ ๋‹จ๊ณ„๋ฅผ ํ™•์‹คํžˆ ๋งค๋“ญ์ง“๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฒ ์ €ํ•˜๊ฒŒ ๊ฒ€ํ† ํ•˜์—ฌ ์Šน์ธ ๊ณผ์ •์„ ๊ฑฐ์นœ ํ›„์— ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ (์„ ํ˜• ์ˆœ์ฐจ์ )

์ „ํ†ต์ , ๊ณ ์ „์ 

 

โœจ ๋‚˜์„ ํ˜• ๋ชจํ˜• Spiral Model, ์ ์ง„์  ๋ชจํ˜•

๋ณดํ—ดBoehm์ด ์ œ์•ˆํ•œ ๊ฒƒ

๋‚˜์„ ์„ ๋”ฐ๋ผ ๋Œ๋“ฏ์ด ์—ฌ๋Ÿฌ๋ฒˆ์˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๊ณผ์ •์„ ๊ฑฐ์ณ ์ ์ง„์ ์œผ๋กœ ์™„๋ฒฝํ•œ ์ตœ์ข… ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœ

 

โœจ ์• ์ž์ผ ๋ชจํ˜• Agile Model

๊ณ ๊ฐ ์š”๊ตฌ์‚ฌํ•ญ ๋ณ€ํ™”์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ผ์ •ํ•œ ์ฃผ๋ฆฌ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฐœ๋ฐœ๊ณผ์ •

์ข‹์€ ๊ฒƒ์„ ๋น ๋ฅด๊ณ  ๋‚ญ๋น„ ์—†๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ณ ๊ฐ๊ณผ์˜ ์†Œํ†ต์— ์ดˆ์ ์„ ๋งž์ถ˜ ๋ฐฉ๋ฒ•๋ก !

 

โœจ ์• ์ž์ผ ๊ฐœ๋ฐœ 4๊ฐ€์ง€ ํ•ต์‹ฌ ๊ฐ€์น˜

1. ํ”„๋กœ์„ธ์Šค์™€ ๋„๊ตฌ๋ณด๋‹ค๋Š” ๊ฐœ์ธ ์ƒํ˜ธ์ž‘์šฉ์— ๋” ๊ฐ€์น˜๋ฅผ ๋‘”๋‹ค.

2. ๋ฐฉ๋Œ€ํ•œ ๋ฌธ์„œ๋ณด๋‹ค๋Š” ์‹คํ–‰๋˜๋Š” SW์— ๋” ๊ฐ€์น˜๋ฅผ ๋‘”๋‹ค.

3. ๊ณ„์•ฝ ํ˜‘์ƒ๋ณด๋‹ค๋Š” ๊ณ ๊ฐ๊ณผ ํ˜‘์—…์— ๋” ๊ฐ€์น˜๋ฅผ ๋‘”๋‹ค.

4. ๊ณ„ํš์„ ๋”ฐ๋ฅด๊ธฐ ๋ณด๋‹ค๋Š” ๋ณ€ํ™”์— ๋ฐ˜์‘ํ•˜๋Š” ๊ฒƒ์— ๋” ๊ฐ€์น˜๋ฅผ ๋‘”๋‹ค.

 

โœจ ์Šคํฌ๋Ÿผ

ํŒ€์ด ์ค‘์‹ฌ์ด ๋˜์–ด ๊ฐœ๋ฐœ์˜ ํšจ์œจ์„ฑ์„ ๋†’์ธ๋‹ค

์ œํ’ˆ ์ฑ…์ž„์ž PO

์Šคํฌ๋Ÿผ ๋งˆ์Šคํ„ฐ SM

๊ฐœ๋ฐœํŒ€ DT

 

โœจ XP (eXtreme Programming)

์ˆ˜์‹œ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ณ ๊ฐ์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๊ฐ์˜ ์ฐธ์—ฌ์™€ ๊ฐœ๋ฐœ ๊ณผ์ •์˜ ๋ฐ˜๋ณต์„ ๊ทน๋Œ€ํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ

์งง๊ณ  ๋ฐ˜๋ณต์ ์€ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ, ๋‹จ์ˆœํ•œ ์„ค๊ณ„, ๊ณ ๊ฐ์˜ ์ ๊ทน์ ์ธ ์ฐธ์—ฌ

๋ฆด๋ฆฌ์ฆˆ ๊ธฐ๊ฐ„์„ ์งง๊ฒŒ ๋ฐ˜๋ณต

- ํ•ต์‹ฌ ๊ฐ€์น˜ : ์šฉ๊ธฐCourage, ๋‹จ์ˆœ์„ฑ Simplicity, ์˜์‚ฌ์†Œํ†ตCommunication, ํ”ผ๋“œ๋ฐฑFeedback, ์กด์ค‘ Respect

 

โœจ ํ˜„ํ–‰ ์‹œ์Šคํ…œ ํŒŒ์•…

1๋‹จ๊ณ„) ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ํŒŒ์•…, ์‹œ์Šคํ…œ ๊ธฐ๋Šฅ ์ฐจ์•…, ์‹œ์Šคํ…œ ์ธํ„ฐํŽ˜์ด์Šค ํŒŒ์•…

2๋‹จ๊ณ„) ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ ํŒŒ์•…, ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ ํŒŒ์•…

3๋‹จ๊ณ„) ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ ํŒŒ์•…, ๋„คํŠธ์›ŒํŠธ ๊ตฌ์„ฑ ํŒŒ์•…

 

โœจ ์šด์˜์ฒด์ œ OS

์ปดํ“จํ„ฐ์˜ ์‹œ์Šคํ…œ์˜ ์ž์›๋“ค์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ

์‚ฌ์šฉ์ž๊ฐ€ ์ปดํ“จํ„ฐ๋ฅผ ํŽธ๋ฆฌํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด

 

โœจ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ DBMS

์‚ฌ์šฉ์ž์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์ด์—์„œ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์— ๋”ฐ๋ผ ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•ด ์ฃผ๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด

 

โœจ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ WAS

์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์— ๋”ฐ๋ผ ๋ณ€ํ•˜๋Š” ๋™์ ์ธ ์ฝ˜ํ…์ธ ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฏธ๋“ค์›จ์–ด middleware

๋ฐ์ดํ„ฐ ์ ‘๊ทผ, ์„ธ์…˜ ๊ด€๋ฆฌ, ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ๋“ฑ์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ œ๊ณต

- Tomcat, GlassFish, JBoss, Jetty, JEUS, Resin, WebLogic, WebSphere ...

 

โœจ ์š”๊ตฌ์‚ฌํ•ญ ์ •์˜

- ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ : ์‹œ์Šคํ…œ์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€, ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋Š”์ง€

- ๋น„๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ

 

โœจ ์š”๊ตฌ์‚ฌํ•ญ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค

1. ๋„์ถœ : ์ธํ„ฐ๋ทฐ, ๋ธŒ๋ ˆ์ธ์Šคํ† ๋ฐ, ์›Œํฌ์ƒต, ํ”„๋กœํ† ํƒ€์ดํ•‘, ์œ ์Šค์ผ€์ด์Šค

2. ๋ถ„์„ : DFD, DD

3. ๋ช…์„ธ : ์†Œ๋‹จ์œ„ ๋ช…์„ธ์„œ

4. ํ™•์ธ (๊ฒ€์ฆ)

 

โœจ ์š”๊ตฌ์‚ฌํ•ญ ๋ช…์„ธ ๊ธฐ๋ฒ•

- ์ •ํ˜• : ์ˆ˜ํ•™์  ์›๋ฆฌ ๊ธฐ๋ฐ˜, ๋ชจ๋ธ ๊ธฐ๋ฐ˜

- ๋น„์ •ํ˜• : ์ƒํƒœ/๊ธฐ๋Šฅ/๊ฐ์ฒด ์ค‘์‹ฌ

 

โœจ ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„์˜ ๊ฐœ์š”

๊ฐœ๋ฐœ ๋Œ€์ƒ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ดํ•ดํ•˜๊ณ  ๋ฌธ์„œํ™”(๋ช…์„ธํ™”)ํ•˜๋Š” ํ™œ๋™

- UML(Unified Modeling Language), ์ž๋ฃŒํ๋ฆ„๋„(DFD), ์ž๋ฃŒ ์‚ฌ์ „(DD), ์†Œ๋‹จ์œ„ ๋ช…์„ธ์„œ(Mini-Spec.), ๊ฐœ์ฒด ๊ด€๊ณ„๋„(ERD), ์ƒํƒœ ์ „์ด๋„(STD), ์ œ์–ด ๋ช…์„ธ์„œ ...

 

โœจ ์ž๋ฃŒ ํ๋ฆ„๋„ DFD

Data Flow Diagram

์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„์—์„œ ์ž๋ฃŒ์˜ ํ๋ฆ„ ๋ฐ ๋ณ€ํ™˜ ๊ณผ์ •๊ณผ ๊ฐ€๋Šฅ์„ ๋„ํ˜„ ์ค‘์‹ฌ์œผ๋กœ ๊ธฐ์ˆ ํ•˜๋Š” ๋ฐฉ๋ฒ•

= ์ž๋ฃŒ ํ๋ฆ„ ๊ทธ๋ž˜ํ”„, ๋ฒ„๋ธ” ์ฐจํŠธ

- ํ”„๋กœ์„ธ์ŠคProcess : ์›์ด๋‚˜ ๋‘ฅ๊ทผ ์‚ฌ๊ฐํ˜•

- ์ž๋ฃŒ ํ๋ฆ„Flow : ํ™”์‚ดํ‘œ ์œ„์— ์ž๋ฃŒ์˜ ์ด๋ฆ„์„ ๊ธฐ์ž…

- ์ž๋ฃŒ ์ €์žฅ์†ŒData Store : ๋„ํ˜• ์•ˆ์— ์ž๋ฃŒ ์ €์žฅ์†Œ ์ด๋ฆ„์„ ๊ธฐ์ž…

- ๋‹จ๋งTerminator : ์‹œ์Šคํ…œ๊ณผ ๊ต์‹ ํ•˜๋Š” ์™ธ๋ถ€ ๊ฐœ์ฒด, ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์Œ, ๋„ํ˜• ์•ˆ์— ์ด๋ฆ„ ๊ธฐ์ž…

 

โœจ ์ž๋ฃŒ ์‚ฌ์ „ DD

Data Dictionary

์ž๋ฃŒ ํ๋ฆ„๋„์— ์žˆ๋Š” ์ž๋ฃŒ๋ฅผ ๋” ์ž์„ธํžˆ ์ •์˜ํ•˜๊ณ  ๊ธฐ๋ก

๋ฐ์ดํ„ฐ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ฐ์ดํ„ฐ = ๋ฐ์ดํ„ฐ์˜ ๋ฐ์ดํ„ฐ = ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ Meta Data

- = : ์ž๋ฃŒ์˜ ์ •์˜

- + : ์ž๋ฃŒ์˜ ์—ฐ๊ฒฐ

- ( ) : ์ž๋ฃŒ์˜ ์ƒ๋žต

- [ | ] : ์ž๋ฃŒ์˜ ์„ ํƒ

- { } : ์ž๋ฃŒ์˜ ๋ฐ˜๋ณต

- * * : ์ž๋ฃŒ์˜ ์„ค๋ช…

 

โœจ ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„์„ ์œ„ํ•œ CASE (์ž๋™ํ™” ๋„๊ตฌ)

์š”๊ตฌ์‚ฌํ•ญ์„ ์ž๋™์œผ๋กœ ๋ถ„์„ํ•˜๊ณ , ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„ ๋ช…์„ธ์„œ๋ฅผ ๊ธฐ์ˆ ํ•˜๋„๋ก ๊ฐœ๋ฐœ๋œ ๋„๊ตฌ

- SADT, SREM, PSL/PSA, TAGS

 

โœจ HIPO

Hierarchy Input Process Output

์‹œ์Šคํ…œ ๋ถ„์„ ๋ฐ ์„ค๊ณ„๋‚˜ ๋ฌธ์„œํ™”ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ฒ•

- ๊ธฐํ˜ธ, ๋„ํ‘œ ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ณด๊ธฐ ์‰ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ๋กœ ์‰ฝ๋‹ค.

- ๊ธฐ๋Šฅ๊ณผ ์ž๋ฃŒ์˜ ์˜์กด ๊ด€๊ณ„๋ฅผ ๋™์‹œ์— ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โœจ UML

Unified Modeling Language

์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์ž์™€ ๊ณ ๊ฐ ๋˜๋Š” ๊ฐœ๋ฐœ์ž ์ƒํ˜ธ๊ฐ„์˜ ์˜์‚ฌ์†Œํ†ต์ด ์›ํ™œํ•˜๊ฒŒ ์ด๋ฃจ์–ด์ง€๋„๋ก ํ‘œ์ค€ํ™”ํ•œ ๋Œ€ํ‘œ์ ์ธ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด

- ์‚ฌ๋ฌผThings, ๊ด€๊ณ„Relationships, ๋‹ค์ด์–ด๊ทธ๋žจDiagram

 

โœจ ๊ด€๊ณ„ Relationships

์‚ฌ๋ฌผ๊ณผ ์‚ฌ๋ฌผ ์‚ฌ์ด์˜ ์—ฐ๊ด€์„ฑ์„ ํ‘œํ˜„

- ์—ฐ๊ด€Association ๊ด€๊ณ„ : 2๊ฐœ ์ด์ƒ์˜ ์‚ฌ๋ฌผ์ด ์„œ๋กœ ๊ด€๋ จ๋จ

- ์ง‘ํ•ฉAggregation ๊ด€๊ณ„ : ํ•˜๋‚˜์˜ ์‚ฌ๋ฌผ์ด ๋‹ค๋ฅธ ์‚ฌ๋ฌผ์— ํฌํ•จ๋จ

- ํฌํ•จComposition ๊ด€๊ณ„ : ํฌํ•จํ•˜๋Š” ์‚ฌ๋ฌผ์˜ ๋ณ€ํ™”๊ฐ€ ํฌํ•จ๋˜๋Š” ์‚ฌ๋ฌผ์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์นจ

- ์ผ๋ฐ˜ํ™”Generalization ๊ด€๊ณ„ : ํ•˜๋‚˜์˜ ์‚ฌ๋ฌผ์ด ๋‹ค๋ฅธ ์‚ฌ๋ฌผ์— ๋น„ํ•ด ๋” ์ผ๋ฐ˜์ ์ธ์ง€ ๊ตฌ์ฒด์ ์ธ์ง€

- ์˜์กดDependency ๊ด€๊ณ„ : ์‚ฌ๋ฌผ ์‚ฌ์ด์— ์—ฐ๊ด€์€ ์žˆ์œผ๋‚˜ ์„œ๋กœ์—๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ๋Š” ์งง์€ ์‹œ๊ฐ„๋™์•ˆ๋งŒ ์—ฐ๊ด€์„ ์œ ์ง€ํ•จ

- ์‹ค์ฒดํ™”Realization ๊ด€๊ณ„ : ์‚ฌ๋ฌผ์ด ํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ํ•ด์•ผํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ์„œ๋กœ๋ฅผ ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๊ณ„

 

โœจ ๋‹ค์ด์–ด๊ทธ๋žจ

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

- ์ •์  ๋ชจ๋ธ๋ง : ๊ตฌ์กฐ์  ๋‹ค์ด์–ด๊ทธ๋žจ (ํด๋ž˜์Šค, ๊ฐ์ฒด ๋‹ค์ด์–ด๊ทธ๋žจ ...)

- ๋™์  ๋ชจ๋ธ๋ง : ํ–‰์œ„ ๋‹ค์ด์–ด๊ทธ๋žจ (์œ ์Šค์ผ€์ด์Šค, ์ƒํƒœ ๋‹ค์ด์–ด๊ทธ๋žจ ...)

 

โœจ ์Šคํ…Œ๋ ˆ์˜ค ํƒ€์ž…

UML์—์„œ ํ‘œํ˜„ํ•˜๋Š” ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์™ธ์— ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

- ๊ธธ๋Ÿฌ๋ฉงGuilemet์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒนํ™”์‚ด๊ด„ํ˜ธ(<< >>) ์‚ฌ์ด์— ํ‘œํ˜„ํ•  ํ˜•ํƒœ๋ฅผ ๊ธฐ์ˆ 

- ex) <<include>>, <<extend>> ...

 

โœจ ์œ ์Šค์ผ€์ด์ŠคUse Case ๋‹ค์ด์–ด๊ทธ๋žจ

๊ฐœ๋ฐœ๋  ์‹œ์Šคํ…œ๊ณผ ๊ด€๋ จ๋œ ์™ธ๋ถ€ ์š”์†Œ๋“ค, ์ฆ‰ ์‚ฌ์šฉ์ž์™€ ๋‹ค๋ฅธ ์™ธ๋ถ€ ์‹œ์Šคํ…œ๋“ค์ด ๊ฐœ๋ฐœ๋  ์‹œ์Šคํ…œ์„ ์ด์šฉํ•ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ์ž์˜ ๊ด€์ View์—์„œ ํ‘œํ˜„ํ•œ ๊ฒƒ

- ์‹œ์Šคํ…œ, ์•กํ„ฐ, ์œ ์Šค์ผ€์ด์Šค, ๊ด€๊ณ„

 

โœจ ํด๋ž˜์ŠคClass ๋‹ค์ด์–ด๊ทธ๋žจ

๊ตฌ์„ฑ ์š”์†Œ : ํด๋ž˜์Šค, ์ œ์•ฝ์กฐ๊ฑด, ๊ด€๊ณ„

 

โœจ ์ˆœ์ฐจSequence ๋‹ค์ด์–ด๊ทธ๋žจ

์‹œ์Šคํ…œ์ด๋‚˜ ๊ฐ์ฒด๋“ค์ด ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ ์‹œ๊ฐ„์˜ ํ๋ฆ„์— ๋”ฐ๋ผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๊ณผ์ •์„ ์•กํ„ฐ, ๊ฐ์ฒด, ๋ฉ”์„ธ์ง€ ๋“ฑ์˜ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„

๊ตฌ์„ฑ ์š”์†Œ : ์•กํ„ฐ, ๊ฐ์ฒด, ์ƒ๋ช…์„ , ์‹คํ–‰ ์ƒ์ž, ๋ฉ”์‹œ์ง€

 

โœจ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค UI

- CLI : Command

- GUI : Graphical

- NUI : Natural

- OUI : Organic

 

โœจ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ณธ ์›์น™

- ์ง๊ด€์„ฑ

- ์œ ํšจ์„ฑ : ์‚ฌ์šฉ์ž์˜ ๋ชฉ์ ์„ ์ •ํ™•ํ•˜๊ณ  ์™„๋ฒฝํ•˜๊ฒŒ ๋‹ฌ์„ฑ

- ํ•™์Šต์„ฑ

- ์œ ์—ฐ์„ฑ : ์š”๊ตฌ์‚ฌํ•ญ์„ ์ตœ๋Œ€ํ•œ ์ˆ˜์šฉ, ์‹ค์ˆ˜ ์ตœ์†Œํ™”

 

โœจ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„ ์ง€์นจ

- ์‚ฌ์šฉ์ž ์ค‘์‹ฌ

- ์‚ฌ์šฉ์„ฑ

- ์‹ฌ๋ฏธ์„ฑ

- ์˜ค๋ฅ˜ ๋ฐœ์ƒ ํ•ด๊ฒฐ : ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ•ด์•ผ ํ•จ

 

โœจ UI ์„ค๊ณ„ ๋„๊ตฌ

- ์™€์ด์–ดํ”„๋ ˆ์ž„ : ๊ธฐํš ๋‹จ๊ณ„ ์ดˆ๊ธฐ, ๋ผˆ๋Œ€ ์„ค๊ณ„, ๊ฐœ๋ฐœ์ž๋‚˜ ๋””์ž์ด๋„ˆ ๋“ฑ์ด ๋ ˆ์ด์–ด์›ƒ์„ ํ˜‘์˜/ํ˜„์žฌ ์ง„ํ–‰ ์ƒํƒœ ๊ณต์œ  (์†๊ทธ๋ฆผ)

- ๋ชฉ์—… : ์™€์ด์–ดํ”„๋ ˆ์ž„๋ณด๋‹ค ์ข€ ๋” ์‹ค์ œ ํ™”๋ฉด๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋งŒ๋“  ์ •์ ์ธ ํ˜•ํƒœ์˜ ๋ชจํ˜•

- ์Šคํ† ๋ฆฌ๋ณด๋“œ : ์ฝ˜ํ…์ธ ์— ๋Œ€ํ•œ ์„ค๋ช…, ํŽ˜์ด์ง€ ๊ฐ„ ์ด๋™ ํ๋ฆ„ (ํŒŒ์›Œํฌ์ธํŠธ)

- ํ”„๋กœํ† ํƒ€์ž… : ์‹ค์ œ ๊ตฌํ˜„๋œ ๊ฒƒ ์ฒ˜๋Ÿผ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ๋™์ ์ธ ํ˜•ํƒœ

- ์œ ์Šค์ผ€์ด์Šค : ์‚ฌ์šฉ์ž ์ธก๋ฉด์—์„œ์˜ ์š”๊ตฌ์‚ฌํ•ญ

 

โœจ ํ’ˆ์งˆ ์š”๊ตฌ์‚ฌํ•ญ

๊ธฐ๋Šฅ์„ฑ, ์‹ ๋ขฐ์„ฑ, ์‚ฌ์šฉ์„ฑ, ํšจ์œจ์„ฑ, ์œ ์ง€ ๋ณด์ˆ˜์„ฑ, ์ด์‹์„ฑ

 

โœจ ์ƒ์œ„ ์„ค๊ณ„์™€ ํ•˜์œ„ ์„ค๊ณ„

- ์ƒ์œ„ ์„ค๊ณ„ : ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„, ์˜ˆ๋น„ ์„ค๊ณ„ / ์‹œ์Šคํ…œ ์ „์ฒด์ ์ธ ๊ตฌ์กฐ / ๊ตฌ์กฐ, DB, ์ธํ„ฐํŽ˜์ด์Šค

- ํ•˜์œ„ ์„ค๊ณ„ : ๋ชจ๋“ˆ ์„ค๊ณ„, ์ƒ์„ธ ์„ค๊ณ„ / ์‹œ์Šคํ…œ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ ๋ฐ ํ–‰์œ„ / ์ปดํฌ๋„ŒํŠธ, ์ž๋ฃŒ ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

โœจ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ณ ์„ค๊ณ„์˜ ๊ธฐ๋ณธ ์›๋ฆฌ

๋ชจ๋“ˆํ™”, ์ถ”์ƒํ™”, ๋‹จ๊ณ„์  ๋ถ„ํ•ด(ํ•˜ํ–ฅ์‹ ์„ค๊ณ„ ์ „๋žต, ๋ฌธ์ œ๋ฅผ ์ƒ์œ„์˜ ์ค‘์š” ๊ฐœ๋…์œผ๋กœ๋ถ€ํ„ฐ ํ•˜์œ„์˜ ๊ฐœ๋…์œผ๋กœ ๊ตฌ์ฒดํ™”), ์ •๋ณด ์€๋‹‰

 

โœจ ํŒŒ์ดํ”„-ํ•„ํ„ฐ ํŒจํ„ด Pipe-Filter Pattern

๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ ์ ˆ์ฐจ์˜ ๊ฐ ๋‹จ๊ณ„๋ฅผ ํ•„ํ„ฐFilter ์ปดํฌ๋„ŒํŠธ๋กœ ์บก์Šํ™”ํ•˜์—ฌ ํŒŒ์ดํ”„Pipe๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ํŒจํ„ด

- ํ•„ํ„ฐ ์ปดํฌ๋„ŒํŠธ๋Š” ์žฌ์‚ฌ์šฉ์„ฑ์ด ์ข‹๊ณ , ์ถ”๊ฐ€๊ฐ€ ์‰ฌ์›Œ ํ™•์žฅ์ด ์šฉ์ดํ•˜๋‹ค.

- ํ•„ํ„ฐ ํ…€ํฌ๋„ŒํŠธ๋“ค์„ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

- ํŒŒ์ดํ”„-ํ•„ํ„ฐ ํŒจํ„ด์€ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜, ๋ฒ„ํผ๋ง, ๋™๊ธฐํ™” ๋“ฑ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

- ๋Œ€ํ‘œ์ ์œผ๋กœ UNIX์˜ ์‰˜(Shell)

 

โœจ Model-View-Controller Pattern

์„œ๋ธŒ์‹œ์Šคํ…œ์„ 3๊ฐœ์˜ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์กฐํ™”ํ•˜๋Š” ํŒจํ„ด

- ๋ชจ๋ธ : ์„œ๋ธŒ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€

- ๋ทฐ : ์‚ฌ์šฉ์ž์—๊ฒŒ ์ •๋ณด๋ฅผ ํ‘œ์‹œ

- ์ปจํŠธ๋กค๋Ÿฌ : ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ๋œ ๋ณ€๊ฒฝ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋ธ์—๊ฒŒ ๋ช…๋ น์„ ๋ณด๋ƒ„

 

โœจ ๊ฐ์ฒด Object

๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋ฌถ์–ด ๋†“์€(์บก์Šํ™”ํ•œ) ํ•˜๋‚˜์˜ ์†Œํ”„ํŠธ์›จ์–ด ๋ชจ๋“ˆ

- ๋…๋ฆฝ์ ์œผ๋กœ ์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

- ๊ฐ์ฒด๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด = ์ƒํƒœ State → ์ƒํƒœ๋Š” ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋ณ€ํ•œ๋‹ค.

- ๊ฐ์ฒด์™€ ๊ฐ์ฒด๋Š” ์ƒํ˜ธ ์—ฐ๊ด€์„ฑ์— ์˜ํ•œ ๊ด€๊ณ„๊ฐ€ ํ˜•์„ฑ๋œ๋‹ค.

- ๊ฐ์ฒด๊ฐ€ ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์‹œ์ง€Message์˜ ์ง‘ํ•ฉ์„ ํ–‰์œ„๋ผ๊ณ  ํ•˜๋ฉฐ, ๊ฐ์ฒด๋Š” ํ–‰์œ„์˜ ํŠน์ง•์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

- ์ผ์ •ํ•œ ๊ธฐ์–ต ์žฅ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

โœจ ํด๋ž˜์Šค Class

๊ณตํ†ต๋œ ์†์„ฑ๊ณผ ์—ฐ์‚ฐ(ํ–‰์œ„)์„ ๊ฐ–๋Š” ๊ฐ์ฒด์˜ ์ง‘ํ•ฉ์œผ๋กœ, ๊ฐ์ฒด์˜ ์ผ๋ฐ˜์ ์ธ ํƒ€์ž…Type์„ ์˜๋ฏธ

- ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋“ค์ด ๊ฐ–๋Š” ์†์„ฑ๊ณผ ์—ฐ์‚ฐ์„ ์ •์˜ํ•˜๊ณ  ์žˆ๋Š” ํ‹€

- ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ƒํ™”ํ•˜๋Š” ๋‹จ์œ„

- ํด๋ž˜์Šค์— ์†ํ•œ ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋ฅผ ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ํ•˜๋ฉฐ, ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ์ธ์Šคํ„ด์Šคํ™”๋ผ๊ณ  ํ•œ๋‹ค.

 

โœจ ์บก์Šํ™” Encapsulation

๋ฐ์ดํ„ฐ(์†์„ฑ)์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๊ฒƒ์„ ์˜๋ฏธ

- ์บก์Šํ™”๋œ ๊ฐ์ฒด๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ์™ธํ•œ ์„ธ๋ถ€ ๋‚ด์šฉ์ด ์€ํ(์ •๋ณด ์€๋‹‰)๋˜์–ด ์™ธ๋ถ€์—์„œ์˜ ์ ‘๊ทผ์ด ์ œํ•œ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€ ๋ชจ๋“ˆ์˜ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ํŒŒ๊ธ‰ ํšจ๊ณผ๊ฐ€ ์ ๋‹ค.

- ์บก์Šํ™”๋œ ๊ฐ์ฒด๋“ค์€ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

- ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ์ƒ๋Œ€ ๊ฐ์ฒด์˜ ์„ธ๋ถ€ ๋‚ด์šฉ์€ ์•Œ ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋‹จ์ˆœํ•ด์ง€๊ณ  ๊ฐ์ฒด ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์•„์ง„๋‹ค.

 

โœจ ์ƒ์† Inheritance

์ด๋ฏธ ์ •์˜๋œ ์ƒ์œ„(๋ถ€๋ชจ) ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์†์„ฑ๊ณผ ์—ฐ์‚ฐ์„ ํ•˜์œ„(์ž์‹) ํด๋ž˜์Šค๊ฐ€ ๋ฌผ๋ ค๋ฐ›๋Š” ๊ฒƒ

 

โœจ ๋‹คํ˜•์„ฑ Polymorphism

๋ฉ”์‹œ์ง€์— ์˜ํ•ด ๊ฐ์ฒด(ํด๋ž˜์Šค)๊ฐ€ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋  ๋•Œ ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•ด ๊ฐ๊ฐ์˜ ๊ฐ์ฒด(ํด๋ž˜์Šค)๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณ ์œ ํ•œ ๋ฐฉ๋ฒ•(ํŠน์„ฑ)์œผ๋กœ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ์˜๋ฏธ

- ๊ฐ์ฒด(ํด๋ž˜์Šค)๋“ค์€ ๋™์ผํ•œ ๋ฉ”์†Œ๋“œ๋ช…์„ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ฐ™์€ ์˜๋ฏธ์˜ ์‘๋‹ต์„ ํ•œ๋‹ค.

- ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ƒ์—์„œ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋‚˜ ์—ฐ์‚ฐ์ž๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋“ค์„ ๊ฐ™์€ ํด๋ž˜์Šค์— ์†ํ•œ ์ธ์Šคํ„ด์Šค์ฒ˜๋Ÿผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

* ์˜ค๋ฒ„๋กœ๋”ฉ Overloading : ๋ฉ”์†Œ๋“œMethod์˜ ์ด๋ฆ„์€ ๊ฐ™์ง€๋งŒ ์ธ์ˆ˜๋ฅผ ๋ฐ›๋Š” ์ž๋ฃŒํ˜•๊ณผ ๊ฐœ์ˆ˜๋ฅผ ๋‹ฌ๋ฆฌํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

* ์˜ค๋ฒ„๋ผ์ด๋”ฉ Overriding (๋ฉ”์†Œ๋“œ ์žฌ์ •์˜) : ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์ •์˜ํ•œ ๋ฉ”์†Œ๋“œ์™€ ์ด๋ฆ„์€ ๊ฐ™์ง€๋งŒ ๋ฉ”์†Œ๋“œ ์•ˆ์˜ ์‹คํ–‰ ์ฝ”๋“œ๋ฅผ ๋‹ฌ๋ฆฌํ•˜์—ฌ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์žฌ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โœจ ์—ฐ๊ด€์„ฑ Relationship

- is member of : ์—ฐ๊ด€ํ™”

- is instance of : ๋ถ„๋ฅ˜ํ™”

- is part of : ์ง‘๋‹จํ™”

- is a : ์ผ๋ฐ˜ํ™”(๊ณตํ†ต์ ์ธ ์„ฑ์งˆ๋“ค๋กœ ์ถ”์ƒํ™”ํ•œ ์ƒ์œ„ ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑ), ํŠน์ˆ˜ํ™”/์ƒ์„ธํ™”(์ƒ์œ„ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฒดํ™”ํ•˜์—ฌ ํ•˜์œ„ ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑ)

 

โœจ ๊ฐ์ฒด์ง€ํ–ฅ ๋ถ„์„์˜ ๋ฐฉ๋ฒ•๋ก 

- ๋Ÿผ๋ฐ”์šฐ Rumbaugh : ๊ฐ€์žฅ ์ผ๋ฐ˜์ , ๋ถ„์„ ํ™œ๋™์„ ๊ฐ์ฒด ๋ชจ๋ธ/๋™์  ๋ชจ๋ธ/๊ธฐ๋Šฅ ๋ชจ๋ธ๋กœ ๋‚˜๋ˆ„์–ด ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

- ๋ถ€์น˜ Booch : ๋ฏธ์‹œ์ Micro ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์™€ ๊ฑฐ์‹œ์ Macro ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋Š” ๋ถ„์„ ๋ฐฉ๋ฒ•, ํด๋ž˜์Šค์™€ ๊ฐ์ฒด๋“ค์„ ๋ถ„์„ ๋ฐ ์‹๋ณ„ํ•˜๊ณ  ํด๋ž˜์Šค์˜ ์†์„ฑ๊ณผ ์—ฐ์‚ฐ์„ ์ •์˜

- Jacobson : Use Case ๊ฐ–์˜คํ•˜์—ฌ ์‚ฌ์šฉ

- Coad์™€ Yourdon : E-R ๋‹ค์ด์–ด๊ทธ๋žจ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ ํ–‰์œ„๋ฅผ ๋ชจ๋ธ๋ง

- Wirfs-Brock : ๋ถ„์„๊ณผ ์„ค๊ณ„ ๊ฐ„์˜ ๊ตฌ๋ถ„ ์—†๊ณ , ๊ณ ๊ฐ ๋ช…์„ธ์„œ๋ฅผ ํ‰๊ฐ€ํ•ด์„œ ์„ค๊ณ„ ์ž‘์—…๊นŒ์ง€ ์—ฐ์†์ ์œผ๋กœ ์ˆ˜ํ–‰

 

โœจ ๋Ÿผ๋ฐ”์šฐ Rumbaugh ๋ถ„์„ ๊ธฐ๋ฒ•

๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ทธ๋ž˜ํ”ฝ ํ‘œ๊ธฐ๋ฒ•์„ ์ด์šฉํ•˜์—ฌ ๋ชจ๋ธ๋งํ•˜๋Š” ๊ธฐ๋ฒ• = ๊ฐ์ฒด ๋ชจ๋ธ๋ง ๊ธฐ๋ฒ• OMT

(1) ๊ฐ์ฒด ๋ชจ๋ธ๋ง = ์ •๋ณด ๋ชจ๋ธ๋ง : ์‹œ์Šคํ…œ์—์„œ ์š”๊ตฌ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ฐพ์•„๋‚ด์–ด ์†์„ฑ๊ณผ ์—ฐ์‚ฐ ์‹๋ณ„ ๋ฐ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ทœ์ •ํ•˜์—ฌ ๊ฐ์ฒด ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ

(2) ๋™์  ๋ชจ๋ธ๋ง : ์ƒํƒœ ๋‹ค์ด์–ด๊ทธ๋žจ์‘ ์ด์šฉํ•˜์—ฌ ์‹œ๊ฐ„์˜ ํ๋ฆ„์— ๋”ฐ๋ฅธ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ์ œ์–ด ํ๋ฆ„, ์ƒํ˜ธ ์ž‘์šฉ, ๋™์ž‘ ์ˆœ์„œ ๋“ฑ์˜ ๋™์ ์ธ ํ–‰์œ„๋ฅผ ํ‘œํ˜„

(3) ๊ธฐ๋Šฅ ๋ชจ๋ธ๋ง : ์ž๋ฃŒ ํ๋ฆ„๋„ DFD๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค๋“ค ๊ฐ„์˜ ์ž๋ฃŒ ํ๋ฆ„์„ ์ค‘์‹ฌ์œผ๋กœ ์ฒ˜๋ฆฌ ๊ณผ์ •์„ ํ‘œํ˜„

 

โœจ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์›์น™ SOLID

- S ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ : ๊ฐ์ฒด๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ!

- O ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™ : ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„

- L ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ : ์ž์‹ ํด๋ž˜์Šค๋Š” ์ตœ์†Œํ•œ ์ž์‹ ์˜ ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ๊ฐ€๋Šฅํ•œ ํ–‰์œ„๋Š” ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค!

- I ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ : ์ž์‹ ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค์™€ ์˜์กด ๊ด€๊ณ„๋ฅผ ๋งบ๊ฑฐ๋‚˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค!

- D ์˜์กด ์—ญ์ „ ์›์น™ : ๊ฐ ๊ฐ์ฒด๋“ค๊ฐ„์˜ ์˜์กด ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝ๋  ๋•Œ, ์ถ”์ƒ์„ฑ์ด ๋‚ฎ์€ ํด๋ž˜์Šค๋ณด๋‹ค ์ถ”์ƒ์„ฑ์ด ๋†’์€ ํด๋ž˜์Šค์™€ ์˜์กด ๊ด€๊ณ„๋ฅผ ๋งบ์–ด์•ผ ํ•œ๋‹ค!

 

โœจ ๊ฒฐํ•ฉ๋„ Coupling

๋ชจ๋“ˆ ๊ฐ„์— ์ƒํ˜ธ ์˜์กดํ•˜๋Š” ์ •๋„

๋‘ ๋ชจ๋“ˆ ์‚ฌ์ด์˜ ์—ฐ๊ด€ ๊ด€๊ณ„

- ๊ฒฐํ•ฉ๋„๊ฐ€ ์•ฝํ• ์ˆ˜๋ก ํ’ˆ์งˆ์ด ๋†’๊ณ , ๊ฐ•ํ• ์ˆ˜๋ก ํ’ˆ์งˆ์ด ๋‚ฎ๋‹ค.

- ๊ฒฐํ•ฉ๋„์˜ ์ข…๋ฅ˜

(์•ฝํ•จ, ์ข‹์Œ) ์ž๋ฃŒ ๊ฒฐํ•ฉ๋„ : ๋ชจ๋“ˆ ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ž๋ฃŒ ์š”์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ ๋  ๋•Œ

์Šคํƒฌํ”„(๊ฒ€์ธ) ๊ฒฐํ•ฉ๋„ : ๋ชจ๋“ˆ ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ฐฐ์—ด์ด๋‚˜ ๋ ˆ์ฝ”๋“œ ๋“ฑ์˜ ์ž๋ฃŒ ๊ตฌ์กฐ๊ฐ€ ์ „๋‹ฌ๋  ๋•Œ

์ œ์–ด ๊ฒฐํ•ฉ๋„ : ์–ด๋–ค ๋ชจ๋“ˆ์ด ๋‹ค๋ฅธ ๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ๋…ผ๋ฆฌ์ ์ธ ํ๋ฆ„์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์ œ์–ด ์‹ ํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ†ต์‹ ํ•˜๊ฑฐ๋‚˜ ์ œ์–ด ์š”์†Œ๋ฅผ ์ „๋‹ฌ

์™ธ๋ถ€ ๊ฒฐํ•ฉ๋„ : ์–ด๋–ค ๋ชจ๋“ˆ์—์„œ ์„ ์–ธํ•œ ๋ฐ์ดํ„ฐ(๋ณ€์ˆ˜)๋ฅผ ์™ธ๋ถ€์˜ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ์ฐธ์กฐํ•  ๋•Œ

๊ณตํ†ต ๊ฒฐํ•ฉ๋„ : ๊ณต์œ ๋˜๋Š” ๊ณตํ†ต ๋ฐ์ดํ„ฐ·์˜์—ญ์„ ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์ด ์‚ฌ์šฉํ•  ๋•Œ

(๊ฐ•ํ•จ, ๋‚˜์จ) ๋‚ด์šฉ ๊ฒฐํ•ฉ๋„ : ํ•œ ๋ชจ๋“ˆ์ด ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ ๋‚ด๋ถ€ ๊ธฐ๋Šฅ ๋ฐ ๊ทธ ๋‚ด๋ถ€ ์ž๋ฃŒ๋ฅผ ์ง์ ‘ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ

 

โœจ ์‘์ง‘๋„ Cohesion

์ •๋ณด ์€๋‹‰ ๊ฐœ๋…์„ ํ™•์žฅํ•œ ๊ฒƒ

๋ช…๋ น์–ด๋‚˜ ํ˜ธ์ถœ๋ฌธ ๋“ฑ ๋ชจ๋“ˆ์˜ ๋‚ด๋ถ€ ์š”์†Œ๋“ค์˜ ์„œ๋กœ ๊ด€๋ จ๋˜์–ด ์žˆ๋Š” ์ •๋„

๋ชจ๋“ˆ์ด ๋…๋ฆฝ์ ์ธ ๊ธฐ๋Šฅ์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ๋Š” ์ •๋„

- ์‘์ง‘๋„๊ฐ€ ๊ฐ•ํ• ์ˆ˜๋ก ํ’ˆ์งˆ์ด ์ข‹๊ณ , ์•ฝํ• ์ˆ˜๋ก ํ’ˆ์งˆ์ด ๋‚ฎ๋‹ค.

- ์‘์ง‘๋„์˜ ์ข…๋ฅ˜

(๊ฐ•ํ•จ, ์ข‹์Œ) ๊ธฐ๋Šฅ์  ์‘์ง‘๋„ : ๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ ์š”์†Œ๋“ค์ด ๋‹จ์ผ ๋ฌธ์ œ์™€ ์—ฐ๊ด€๋˜์–ด ์ˆ˜ํ–‰๋  ๊ฒฝ์šฐ

์ˆœ์ฐจ์  ์‘์ง‘๋„ : ๋ชจ๋“ˆ ๋‚ด ํ•˜๋‚˜์˜ ํ™œ๋™์œผ๋กœ๋ถ€ํ„ฐ ๋‚˜์˜จ ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ ๋‹ค์Œ ํ™œ๋™์˜ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ

๊ตํ™˜(ํ†ต์‹ )์  ์‘์ง‘๋„ : ๋™์ผํ•œ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ๋ชจ์˜€์„ ๊ฒฝ์šฐ

์ ˆ์ฐจ์  ์‘์ง‘๋„ : ๋ชจ๋“ˆ์ด ๋‹ค์ˆ˜์˜ ๊ด€๋ จ ๊ธฐ๋Šฅ์„ ๊ฐ€์งˆ ๋•Œ ๋ชจ๋“ˆ ์•ˆ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ๊ทธ ๊ธฐ๋Šฅ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ๊ฒฝ์šฐ

์‹œ๊ฐ„์  ์‘์ง‘๋„ : ํŠน์ • ์‹œ๊ฐ„์— ์ฒ˜๋ฆฌ๋˜๋Š” ๋ช‡ ๊ฐœ์˜ ๊ธฐ๋Šฅ์„ ๋ชจ์•„ ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ๋กœ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ

๋…ผ๋ฆฌ์  ์‘์ง‘๋„ : ์œ ์‚ฌํ•œ ์„ฑ๊ฒฉ์„ ๊ฐ–๊ฑฐ๋‚˜ ํŠน์ • ํ˜•ํƒœ๋กœ ๋ถ„๋ฅ˜๋˜๋Š” ์ฒ˜๋ฆฌ ์š”์†Œ๋“ค๋กœ ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ์ด ํ˜•์„ฑ๋˜๋Š” ๊ฒฝ์šฐ

(์•ฝํ•จ, ๋‚˜์จ) ์šฐ์—ฐ์  ์‘์ง‘๋„ : ๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ์„œ๋กœ ๊ด€๋ จ ์—†๋Š” ์š”์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ

 

โœจ ํŒฌ์ธ Fan-In / ํŒฌ์•„์›ƒ Fan-Out

- ํŒฌ์ธ : ์–ด๋–ค ๋ชจ๋“ˆ์„ ์ œ์–ด(ํ˜ธ์ถœ)ํ•˜๋Š” ๋ชจ๋“ˆ์˜ ์ˆ˜

- ํŒฌ์•„์›ƒ : ์–ด๋–ค ๋ชจ๋“ˆ์— ์˜ํ•ด ์ œ์–ด(ํ˜ธ์ถœ)๋˜๋Š” ๋ชจ๋“ˆ์˜ ์ˆ˜

→ ํŒฌ์ธ : A๋Š” 0 / B,C,D,E,G๋Š” 1 / F,H,I๋Š” 2

→ ํŒฌ์•„์›ƒ : H,I๋Š” 0 / C,E,F,G๋Š” 1 / B,D๋Š” 2 / A๋Š” 3

 

โœจ N-S ์ฐจํŠธ

Nassi-Schneiderman Chart

๋…ผ๋ฆฌ์˜ ๊ธฐ์ˆ ์— ์ค‘์ ์„ ๋‘” ๋„ํ˜•์„ ์ด์šฉํ•œ ํ‘œํ˜„ ๋ฐฉ๋ฒ•

= ๋ฐ•์Šค ๋‹ค์ด์–ด๊ทธ๋žจ = Chapin Chart

 

โœจ ๊ณตํ†ต ๋ชจ๋“ˆ

์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ

๊ณตํ†ต ๋ชจ๋“ˆ์„ ๊ตฌํ˜„ํ•  ๋•Œ๋Š” ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก 5๊ฐ€์ง€ ๋ช…์„ธ ๊ธฐ๋ฒ•์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค.

(1) ์ •ํ™•์„ฑ

(2) ๋ช…ํ™•์„ฑ

(3) ์™„์ „์„ฑ

(4) ์ผ๊ด€์„ฑ

(5) ์ถ”์ ์„ฑ : ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์˜ ์ถœ์ฒ˜, ๊ด€๋ จ ์‹œ์Šคํ…œ ๋“ฑ์˜ ๊ด€๊ณ„๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑ

 

โœจ ํšจ๊ณผ์ ์ธ ๋ชจ๋“ˆ ์„ค๊ณ„ ๋ฐฉ์•ˆ

- ๊ฒฐํ•ฉ๋„๋Š” ์ค„์ด๊ณ  ์‘์ง‘๋„๋Š” ๋†’์—ฌ์„œ ๋ชจ๋“ˆ์˜ ๋…๋ฆฝ์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ธ๋‹ค.

- ๋ชจ๋“ˆ์˜ ์ œ์–ด ์˜์—ญ ์•ˆ์—์„œ ๊ทธ ๋ชจ๋“ˆ์˜ ์˜ํ–ฅ ์˜์—ญ์„ ์œ ์ง€

- ๋ณต์žก๋„์™€ ์ค‘๋ณต์„ฑ์„ ์ค„์ด๊ณ  ์ผ๊ด€์„ฑ์„ ์œ ์ง€

- ๋ชจ๋“ˆ ํฌ๊ธฐ๋Š” ์‹œ์Šคํ…œ์˜ ์ „๋ฐ˜์ ์ธ ๊ธฐ๋Šฅ๊ณผ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ํฌ๊ธฐ๋กœ ๋ถ„ํ•ด

- ํšจ๊ณผ์ ์ธ ์ œ์–ด๋ฅผ ์œ„ํ•ด ๋ชจ๋“ˆ ๊ฐ„์˜ ๊ณ„์ธต์  ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๋Š” ์ž๋ฃŒ๊ฐ€ ์ œ์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค. 

 

โœจ ๋””์ž์ธ ํŒจํ„ด Design Pattern

๊ฐ ๋ชจ๋“ˆ์˜ ์„ธ๋ถ„ํ™”๋œ ์—ญํ• ์ด๋‚˜ ๋ชจ๋“ˆ๋“ค ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ˆ˜์ค€์˜ ์„ธ๋ถ€์ ์ธ ๊ตฌํ˜„ ๋ฐฉ์•ˆ์„ ์„ค๊ณ„ํ•  ๋•Œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ์ „ํ˜•์ ์ธ ํ•ด๊ฒฐ ๋ฐฉ์‹ ๋˜๋Š” ์˜ˆ์ œ

- ๋ฌธ์ œ ๋ฐ ๋ฐฐ๊ฒฝ, ์‹ค์ œ ์ ์šฉ๋œ ์‚ฌ๋ก€, ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์ƒ˜ํ”Œ ์ฝ”๋“œ ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

- ๊ฐœ๋ฐœ ๊ณผ์ • ์ค‘์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ƒˆ๋กœ ํ•ด๊ฒฐ์ฑ…์„ ๊ตฌ์ƒํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฌธ์ œ์— ํ•ด๋‹นํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ !

- GoF์˜ ๋””์ž์ธ ํŒจํ„ด์€ ์œ ํ˜•์— ๋”ฐ๋ผ ์ƒ์„ฑ ํŒจํ„ด 5๊ฐœ, ๊ตฌ์กฐ ํŒจํ„ด 7๊ฐœ, ํ–‰์œ„ ํŒจํ„ด 11๊ฐœ ์ด 23๊ฐœ์˜ ํŒจํ„ด์œผ๋กœ ๊ตฌ์„ฑ

- ๊ฐ์ฒด์ง€ํ–ฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์„ค๊ณ„์™€ ๊ตฌํ˜„์„ ๋‹ค๋ฃจ๋ฏ€๋กœ ๋‹ค๋ฅธ ๊ธฐ๋ฐ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

 

โœจ ์ƒ์„ฑ ํŒจํ„ด Creational Pattern

๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ๊ด€๋ จ๋œ ํŒจํ„ด, ์ด 5๊ฐœ

๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์ฐธ์กฐ ๊ณผ์ •์„ ์บก์Šํ™” ํ•˜์—ฌ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋˜์–ด๋„ ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ์— ์˜ํ–ฅ์„ ํฌ๊ฒŒ ๋ฐ›์ง€ ์•Š๋„๋ก ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์— ์œ ์—ฐ์„ฑ์„ ๋”ํ•ด์ค€๋‹ค.

- ์ถ”์ƒ ํŒฉํ† ๋ฆฌ : ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค์— ์˜์กดํ•˜์ง€ ์•Š๊ณ , ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์„œ๋กœ ์—ฐ๊ด€·์˜์กดํ•˜๋Š” ๊ฐ์ฒด๋“ค์˜ ๊ทธ๋ฃน์œผ๋กœ ์ƒ์„ฑํ•˜์—ฌ ์ถ”์ƒ์ ์œผ๋กœ ํ‘œํ˜„, ์—ฐ๊ด€๋œ ์„œ๋ธŒ ํด๋ž˜์Šค๋ฅผ ๋ฌถ์–ด ํ•œ ๋ฒˆ์— ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ

- ๋นŒ๋” : ์ž‘๊ฒŒ ๋ถ„๋ฆฌ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฑด์ถ• ํ•˜๋“ฏ์ด ์กฐํ•ฉํ•˜๋ ค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ, ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ ๊ณผ์ •๊ณผ ํ‘œํ˜„ ๋ฐฉ๋ฒ•์„ ๋ถ„๋ฆฌํ•˜๊ณ  ์žˆ์–ด, ๋™์ผํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์—์„œ๋„ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ์Œ

- ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ : ๊ฐ์ฒด ์ƒ์„ฑ์„ ์„œ๋ธŒ ํด๋ž˜์Šค์—์„œ ์ปค๋ฆฌํ•˜๋„๋ก ๋ถ„๋ฆฌํ•˜์—ฌ ์บก์Šํ™”ํ•œ ํŒจํ„ด, ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์ •์˜ํ•˜๊ณ  ์‹ค์ œ ์ƒ์„ฑ์€ ์„œ๋ธŒ ํด๋ž˜์Šค๊ฐ€ ๋‹ด๋‹นํ•จ, ๊ฐ€์ƒ ์ƒ์„ฑ์ž ํŒจํ„ด์ด๋ผ๊ณ ๋„ ํ•จ

- ํ”„๋กœํ† ํƒ€์ž… : ์›๋ณธ ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํŒจํ„ด, ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ๋น„์ฃต์ด ํฐ ๊ฒฝ์šฐ ์ฃผ๋กœ ์ด์šฉ

- ์‹ฑ๊ธ€ํ†ค : ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์–ด๋””์„œ๋“  ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ฐธ์กฐํ•  ์ˆ˜๋Š” ์—†์Œ, ํด๋ž˜์Šค ๋‚ด์—์„œ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋ฟ์ž„์„ ๋ณด์žฅํ•˜๋ฉฐ, ๋ถˆํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ์Œ

 

โœจ ๊ตฌ์กฐ ํŒจํ„ด Structual Pattern

ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ๋” ํฐ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํŒจํ„ด, ์ด 7๊ฐœ

๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋„์™€์ค€๋‹ค

- ์–ด๋Œ‘ํ„ฐ : ๊ธฐ์กด์˜ ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๋•Œ

- ๋ธŒ๋ฆฌ์ง€ : ๊ตฌํ˜„๋ถ€์—์„œ ์ถ”์ƒ์ธต์„ ๋ถ„๋ฆฌํ•˜์—ฌ, ์„œ๋กœ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•œ ํŒจํ„ด, ๊ธฐ๋Šฅ๊ณผ ๊ตฌํ˜„์„ ๋‘๊ฐœ์˜ ๋ณ„๋„ ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„

- ์ปดํฌ์ง€ํŠธ : ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง„ ๋ณตํ•ฉ ๊ฐ์ฒด์™€ ๋‹จ์ผ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถ„์—†์ด ๋‹ค๋ฃจ๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด

- ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ : ๊ฐ์ฒด ๊ฐ„์˜ ๊ฒฐํ•ฉ์„ ํ†ตํ•ด ๋Šฅ๋™์ ์œผ๋กœ ๊ธฐ๋Šฅ๋“ค์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด

- ํผ์‹ธ๋“œ Facade : ๋ณต์žกํ•œ ์„œ๋ธŒ ํด๋ž˜์Šค๋“ค์„ ํ”ผํ•ด ๋” ์‚ฌ์šฐ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•จ์œผ๋กœ์จ ์„œ๋ธŒ ํด๋ž˜์Šค๋“ค์˜ ๊ธฐ๋Šฅ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํŒจํ„ด, ์„œ๋ธŒ ํด๋ž˜์Šค๋“ค ์‚ฌ์ด์˜ ํ†ตํ•ฉ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” Wrapper ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

- ํ”Œ๋ผ์ด์›จ์ดํŠธ : ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ๊ฐ€๋Šฅํ•œ ํ•œ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•˜๋Š” ํŒจํ„ด

- ํ”„๋ก์‹œ Proxy : ์ ‘๊ทผ์ด ์–ด๋ ค์šด ๊ฐ์ฒด์™€ ์—ฌ๊ธฐ์— ์—ฐ๊ฒฐํ•˜๋ ค๋Š” ๊ฐ์ฒด ์‚ฌ์ด์—์„œ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํŒจํ„ด

 

โœจ ํ–‰์œ„ ํŒจํ„ด Behavioral Pattern

ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด๋“ค์ด ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‚˜ ์ฑ…์ž„ ๋ถ„๋ฐฐ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋Š” ํŒจํ„ด, ์ด 11๊ฐœ

ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ž‘์—…์„ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋กœ ๋ถ„๋ฐฐํ•˜๋ฉด์„œ ๊ฒฐํ•ฉ๋„๋ฅผ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

- ์ฑ…์ž„ ์—ฐ์‡„

- ์ปค๋งจ๋“œ : ์š”์ฒญ์„ ๊ฐ์ฒด์˜ ํ˜•ํƒœ๋กœ ์บก์Šํ™”ํ•˜์—ฌ ์žฌ์ด์šฉํ•˜๊ฑฐ๋‚˜ ์ตœ์†Œํ•  ์ˆ˜ ์žˆ๋„๋ก ์š”์ฒญ์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋กœ๊ทธ์— ๋‚จ๊ธฐ๋Š” ํŒจํ„ด

- ์ธํ„ฐํ”„๋ฆฌํ„ฐ : ์–ธ์–ด์— ๋ฌธ๋ฒ• ํ‘œํ˜„์„ ์ •์˜ํ•˜๋Š” ํŒจํ„ด, SQL์ด๋‚˜ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์‚ฌ์šฉ

- ๋ฐ˜๋ณต์ž : ์ž๋ฃŒ ๊ตฌ์กฐ์™€ ๊ฐ™์ด ์ ‘๊ทผ์ด ์žฆ์€ ๊ฐ์ฒด์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋Š” ํŒจํ„ด

- ์ค‘์žฌ์ž : ์ˆ˜๋งŽ์€ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ๋ณต์žกํ•œ ์ƒํ˜ธ์ž‘์šฉ์„ ๋งต์Šˆ๋กœํ•˜ํ•˜์—ฌ ๊ฐ์ฒด๋กœ ์ •์˜ํ•˜๋Š” ํŒจํ„ด

- ๋ฉ”๋ฉ˜ํ†  : Ctrl+Z ๊ฐ™์€ ๋˜๋Œ๋ฆฌ๊ธฐ ๊ธฐ๋Šฅ

- ์˜ต์„œ๋ฒ„ : ํ•œ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ™”ํ•˜๋ฉด ๊ฐ์ฒด์— ์ƒ์†๋˜์–ด ์žˆ๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์—๊ฒŒ ๋ณ€ํ™”๋œ ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ํŒจํ„ด

- ์ƒํƒœ : ๊ฐ์ฒด์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๋™์ผํ•œ ๋™์ž‘์„ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ

- ์ „๋žต : ๋™์ผํ•œ ๊ณ„์—ด์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์บก์Šํ™”ํ•˜์—ฌ ์ƒํ˜ธ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ •์˜ํ•˜๋Š” ํŒจํ„ด

- ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ : ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ๊ณจ๊ฒฉ์„ ์ •์˜ํ•˜๊ณ , ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์„ธ๋ถ€ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌ์ฒดํ™”ํ•˜๋Š” ๊ตฌ์กฐ์˜ ํŒจํ„ด

- ๋ฐฉ๋ฌธ์ž : ๊ฐ ํด๋ž˜์Šค๋“ค์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์—์„œ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ณ„๋„์˜ ํด๋ž˜์Šค๋กœ ๊ตฌ์„ฑํ•˜๋Š” ํŒจํ„ด, ๋ถ„๋ฆฌ๋œ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์€ ๊ฐ ํด๋ž˜์Šค๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

โœจ ์š”๊ตฌ์‚ฌํ•ญ ๊ฒ€์ฆ ๋ฐฉ๋ฒ•

- ์š”๊ตฌ์‚ฌํ•ญ ๊ฒ€ํ†  : ์š”๊ตฌ์‚ฌํ•ญ ๋ช…์„ธ์„œ์˜ ์˜ค๋ฅ˜ ํ™•์ธ ๋ฐ ํ‘œ์ค€ ์ค€์ˆ˜ ์—ฌ๋ถ€ ๋“ฑ์˜ ๊ฒฐํ•จ ์—ฌ๋ถ€๋ฅผ ์ปดํ†  ๋‹ด๋‹น์ž๋“ค์ด ์ˆ˜์ž‘์—…์œผ๋กœ ๋ถ„์„

(1) ๋™๋ฃŒ๊ฒ€ํ†  : ๋ช…์„ธ์„œ ์ž‘์„ฑ์ž๊ฐ€ ๋ช…์„ธ์„œ ๋‚ด์šฉ์„ ์ง์ ‘ ์„ค๋ช…ํ•˜๊ณ  ๋™๋ฃŒ๋“ค์ด ์ด๋ฅผ ๋“ค์œผ๋ฉด์„œ ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌ

(2) ์›Œํฌ์Šค๋ฃจ : ๊ฒ€ํ†  ํšŒ์˜ ์ „์— ๋ช…์„ธ์„œ๋ฅผ ๋ฏธ๋ฆฌ ๋ฐฐํฌํ•˜์—ฌ ์‚ฌ์ „ ๊ฒ€ํ† ํ•œ ํ›„, ์งง์€ ๊ฒ€ํ† ํšŒ์˜๋ฅผ ํ†ตํ•ด ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌ

(3) ์ธ์ŠคํŽ™์…˜ : ๋ช…์„ธ์„œ ์ž‘์„ฑ์ž๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ๊ฒ€ํ†  ์ „๋ฌธ๊ฐ€๋“ค์ด ์š”๊ตฌ์‚ฌํ•ญ ๋ช…์„ธ์„œ๋ฅผ ํ™•์ธํ•˜๋ฉด์„œ ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌ

- ํ”„๋กœํ† ํƒ€์ดํ•‘ : ์‹ค์ œ ๊ฐœ๋ฐœ๋  ์†Œํ”„ํŠธ์›จ์–ด์— ๋Œ€ํ•œ ๊ฒฌ๋ณธํ’ˆ(Prototype)์„ ๋งŒ๋“ค์–ด ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ ์˜ˆ์ธก

- ํ…Œ์ŠคํŠธ ์„ค๊ณ„ : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ดํ›„์— ์š”๊ตฌ์‚ฌํ•ญ์ด ํ˜„์‹ค์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ์ง€ ๊ฒ€ํ† 

- CASE ๋„๊ตฌ ํ™œ์šฉ : ์ผ๊ด€์„ฑ ๋ถ„์„์„ ํ†ตํ•ด ๋ณ€๊ฒฝ์‚ฌํ•ญ์˜ ์ถ”์  ๋ฐ ๋ถ„์„, ๊ด€๋ฆฌํ•˜๊ณ , ํ‘œ์ค€ ์ค€์ˆ˜ ์—ฌ๋ถ€ ํ™•์ธ

 

โœจ ๋ฏธ๋“ค์›จ์–ด Middleware

Middle + Software

์šด์˜์ฒด์ œ์™€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ, ๋˜๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์—์„œ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด

- DB : DB๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒฝ์šฐ ๋ณดํ†ต 2-Tier ์•„ํ‚คํ…์ฒ˜๋ผ๊ณ  ํ•จ

- RPC : Remote Procedure Call ์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ

- MOM : ๋ฉ”์„ธ์ง€ ์ง€ํ–ฅ ๋ฏธ๋“ค์›จ์–ด, ์˜จ๋ผ์ธ ์—…๋ฌด๋ณด๋‹ค๋Š” ์ด๊ธฐ์ข… ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ์‹œ์Šคํ…œ์˜ ๋ฐ์ดํ„ฐ ๋™๊ธฐ๋ฅผ ์œ„ํ•ด ๋งŽ์ด ์‚ฌ์šฉ

- TP-Monitor : ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ๋ชจ๋‹ˆํ„ฐ, ์‚ฌ์šฉ์ž ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•ด๋„ ๋น ๋ฅธ ์‘๋‹ต ์†๋„๋ฅผ ์œ ์ง€ํ•ด์•ผํ•˜๋Š” ์—…๋ฌด์— ์ฃผ๋กœ ์‚ฌ์šฉ (ํ•ญ๊ณต๊ธฐ๋‚˜ ์ฒ ๋„ ์˜ˆ์•ฝ ์—…๋ฌด)

- ORB : ๊ฐ์ฒด ์š”์ฒญ ๋ธŒ๋กœ์ปค, ๊ฐน์ฒด ์ง€ํ–ฅ ๋ฏธ๋“ค์›จ์–ด๋กœ ์ฝ”๋ฐ”(CORBA) ํ‘œ์ค€ ์ŠคํŽ™์„ ๊ตฌํ˜„ํ•œ ๋ฏธ๋“ค์›จ์–ด

- WAS : ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์— ๋”ฐ๋ผ ๋ณ€ํ•˜๋Š” ๋™์ ์ธ ์ฝ˜ํ…์ธ ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ, ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ํ™˜๊ฒฝ๋ณด๋‹ค๋Š” ์›น ํ™˜๊ฒฝ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฏธ๋“ค์›จ์–ด