[CS] ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์ถ•
๋ฐ˜์‘ํ˜•

 

 

 

 

01 ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ ๊ฐœ๋…
02 ํ”„๋กœ์ ํŠธ ๊ณ„ํš ๋ฐ ๋ถ„์„
03 ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„
04 ํ™”๋ฉด ์„ค๊ณ„
05 ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„
06 ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„
07 ๊ฐ์ฒด์ง€ํ–ฅ ๊ตฌํ˜„
08 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ ๊ด€๋ฆฌ
09 ์†Œํ”„ํŠธ์›จ์–ด ์œ ์ง€ ๋ณด์ˆ˜
10 ์ œํ’ˆ ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง•


01  ์†Œํ”„ํŠธ์›จ์–ด  ๊ณตํ•™  ๊ฐœ๋…

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

1.  ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ (Software  Engineering) 

  • ์†Œํ”„ํŠธ์›จ์–ด ์œ„๊ธฐ๋ฅผ ๊ทน๋ณตํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ํ’ˆ์งˆ ๋†’์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ํ•™๋ฌธ

2.  ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์˜ 3R โญโญ

โ‘ด ์—ญ๊ณตํ•™(Reverse Engineering)

- ๊ธฐ์กด ๊ฐœ๋ฐœ๋œ ์‹œ์Šคํ…œ์„ CASE ๋„๊ตฌ๋ฅผ  ์ด์šฉํ•˜์—ฌ  ์š”๊ตฌ  ๋ถ„์„์„œ ์„ค๊ณ„์„œ ๋“ฑ์˜ ๋ฌธ์„œ๋กœ ์ถ”์ถœํ•˜๋Š” ์ž‘์—…

โ‘ต ์žฌ๊ณตํ•™(Re-Engineering)

- ๊ธฐ์กด ์†Œํ”„ํŠธ์›จ์–ด์˜  ๊ธฐ๋Šฅ์„  ๊ฐœ์„ ์‹œํ‚ค๋Š”  ๋ฐฉ๋ฒ• (์˜ˆ๋ฐฉ ์œ ์ง€๋ณด์ˆ˜  ์ธก๋ฉด)
- ์˜ˆ๋ฐฉ ์œ ์ง€๋ณด์ˆ˜ ์ธก๋ฉด์—์„œ ์†Œํ”„ํŠธ์›จ์–ด ์œ„๊ธฐ ํ•ด๊ฒฐ (Preventive  Maintenance) 
   [์žฌ๊ณตํ•™  ๊ณผ์ •]
   ๋ถ„์„(Analysis)  →  ์žฌ๊ตฌ์„ฑ(Restructuring)  →  ์—ญ๊ณตํ•™(Reverse  Engineering)  →  ์ด๊ด€(Migration)

โ‘ถ ์žฌ์‚ฌ์šฉ(Reuse)

- ์žฌ์‚ฌ์šฉ  ๋ฐฉ๋ฒ•
โ‘   ํ•ฉ์„ฑ  ์ค‘์‹ฌ (Composition  Based,  ๋ธ”๋ก ๊ตฌ์„ฑ): ๋ชจ๋“ˆ์„ ๋ผ์›Œ ๋งž์ถฐ ์™„์„ฑ 
โ‘ก  ์ƒ์„ฑ  ์ค‘์‹ฌ (Generation  Based,  ํŒจํ„ด ๊ตฌ์„ฑ): ์ถ”์ƒํ™” ํ˜•ํƒœ

3.  ์†Œํ”„ํŠธ์›จ์–ด  ๊ฐœ๋ฐœ  ๋‹จ๊ณ„ (๊ณ„๋ถ„์„ค๊ตฌํ…Œ์œ )

๊ณ„ํš → ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„ → ์„ค๊ณ„ → ๊ตฌํ˜„ → ํ…Œ์ŠคํŠธ → ์œ ์ง€๋ณด์ˆ˜

 

 

Section  2.  ์†Œํ”„ํŠธ์›จ์–ด  ๊ฐœ๋ฐœ  ๋ฐฉ๋ฒ•๋ก 

1.  ์†Œํ”„ํŠธ์›จ์–ด  ๊ฐœ๋ฐœ  ๋ฐฉ๋ฒ•๋ก   ์ข…๋ฅ˜โญ

โ‘ด ๊ตฌ์กฐ์  ๋ฐฉ๋ฒ•๋ก 

- ์ ˆ์ฐจ์ง€ํ–ฅ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก 
- ์ „์ฒด ์‹œ์Šคํ…œ์„ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ฉ. (ํ•˜ํ–ฅ์‹ ๋ฐฉ๋ฒ•๋ก ) ๋‚˜์”จ-์Šˆ๋‚˜์ด๋”๋งŒ ์ฐจํŠธ ์‚ฌ์šฉ(๋„ํ˜•์‹, ์ œ์–ด ๋…ผ๋ฆฌ ๊ตฌ์กฐ, ๋ช…ํ™•ํ•œ ์‹๋ณ„)

โ‘ต ์ •๋ณด๊ณตํ•™ ๋ฐฉ๋ฒ•๋ก 

- ๊ธฐ์—…์˜  ์ฃผ์š” ๋ถ€๋ถ„์„ ํ†ตํ•ฉ ์ ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ๋ฐฉ๋ฒ•๋ก 
- ์ •๋ณด์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๊ด€๋ฆฌ ์ ˆ์ฐจ์™€ ์ž‘์—… ๊ธฐ๋ฐ˜์„ ์ฒด๊ณ„ํ™”

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

๏‚Ÿ ํ˜„์‹ค์„ธ๊ณ„์˜ ๊ฐœ์ฒด(Entity)๋ฅผ ์†์„ฑ(Atrribute)๊ณผ ๋ฉ”์„œ๋“œ(Method)ํ˜•ํƒœ๋กœ ํ‘œํ˜„
๏‚Ÿ๋ณต์žกํ•œ ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ์‚ฌ๋žŒ์ด ์ดํ•ดํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‹œ์Šคํ…œ์— ์ ์šฉ

โ‘ท CBD(Component  Based  Development) ๋ถ„์„ ๋ฐฉ๋ฒ•๋ก 

- ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐํ•ฉํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ๊ฐœ๋ฐœ
- ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐ๋ฆฝํ•ด ํ•˜๋‚˜์˜ ์ƒˆ๋กœ์šด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ(์ƒ์‚ฐ์„ฑ, ํ™•์žฅ์„ฑ, ์žฌ์‚ฌ์šฉ)

โ‘ธ ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก 

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

๋”๋ณด๊ธฐ
  • ์ œํ’ˆ ๊ณ„์—ด ๋ฐฉ๋ฒ•๋ก  : ํŠน์ • ์ œํ’ˆ์— ์ ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ณตํ†ต๋œ ๊ธฐ๋Šฅ์„ ์ •์˜ํ•ด ๊ฐœ๋ฐœ, ์ž„๋ฒ ๋””๋“œ์— ์œ ์šฉ

 

2.  ์†Œํ”„ํŠธ์›จ์–ด  ๊ฐœ๋ฐœ  ๋ชจ๋ธ (SDLC ๋ชจ๋ธ, SDLC=์†Œํ”„ํŠธ์›จ์–ด ์ƒ๋ช…์ฃผ๊ธฐ, ์‹œ์Šคํ…œ์˜ ์ „ ๊ณต์ •์„ ์ฒด๊ณ„ํ™”ํ•œ ์ ˆ์ฐจ)โญ

โ‘ด ํญํฌ์ˆ˜ ๋ชจ๋ธ(Waterfall Model)

๊ณ„ํš ๋ถ„์„ ์„ค๊ณ„ ๊ตฌํ˜„ ํ…Œ์ŠคํŠธ ์šด์˜  ๋“ฑ  ์ „  ๊ณผ์ •์„  ์ˆœ์ฐจ์ ์œผ๋กœ  ์ ‘๊ทผํ•˜๋Š”  ๊ฐœ๋ฐœ๋ชจ๋ธ

โ‘ต ํ”„๋กœํ† ํƒ€์ดํ•‘ ๋ชจ๋ธ(Prototyping Model)

๏‚Ÿ ์ฃผ์š”  ๊ธฐ๋Šฅ์„  ์‹œ์ œํ’ˆ  ํ˜•ํƒœ๋กœ  ๊ตฌํ˜„ํ•˜์—ฌ  ์™„์„ฑํ•ด๊ฐ€๋Š”  ๋ชจ๋ธ

โ‘ถ ๋‚˜์„ ํ˜• ๋ชจ๋ธ(Spiral  Model)โญโญ

๏‚Ÿ ์œ„ํ—˜  ๋ถ„์„์„  ์ถ”๊ฐ€ํ•œ  ์ ์ฆ์   ๊ฐœ๋ฐœ  ๋ชจ๋ธ
๏‚Ÿ ๊ณ„ํš  → ์œ„ํ—˜๋ถ„์„  → ๊ฐœ๋ฐœ  → ํ‰๊ฐ€

โ‘ท RAD(Rapid  Application  Development) ๋ชจ๋ธ

๏‚Ÿ CASE ๋„๊ตฌ๋ฅผ  ์ด์šฉํ•ด  ๋น ๋ฅธ  ์‹œ์Šคํ…œ์„  ๊ฐœ๋ฐœ

โ‘ธ  V  ๋ชจํ˜•

๏‚Ÿ ๋‹จ์œ„  ํ…Œ์ŠคํŠธ →  ํ†ตํ•ฉ  ํ…Œ์ŠคํŠธ → ์‹œ์Šคํ…œ  ํ…Œ์ŠคํŠธ → ์ธ์ˆ˜  ํ…Œ์ŠคํŠธ

โ‘น 4์„ธ๋Œ€ ๊ธฐ๋ฒ•(4th  Generation  Techniques)

๏‚Ÿ ์š”๊ตฌ์‚ฌํ•ญ  ๋ช…์„ธ์„œ๋กœ๋ถ€ํ„ฐ  ์›์‹œ์ฝ”๋“œ๋ฅผ  ์ž๋™์œผ๋กœ  ์ƒ์„ฑํ•   ์ˆ˜  ์žˆ๊ฒŒ  ํ•ด์ฃผ๋Š”  ๋ชจ๋ธ

 

3.  ์• ์ž์ผ(Agile) ๋ฐฉ๋ฒ•๋ก 

โ‘ด  ์• ์ž์ผ  ๋ฐฉ๋ฒ•๋ก ์˜  ๊ฐœ๋…

๏‚Ÿ ์‹ ์†ํ•œ  ๋ฐ˜๋ณต  ์ž‘์—…์„  ํ†ตํ•ด  ์‹ค์ œ  ์ž‘๋™  ๊ฐ€๋Šฅํ•œ  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ  ๊ฐœ๋ฐœํ•˜๋Š”  ๋ฐฉ๋ฒ•๋ก 

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

โ‘ต  ์• ์ž์ผ  ์„ ์–ธ๋ฌธ

๏‚Ÿ ๊ณต์ •๊ณผ  ๋„๊ตฌ๋ณด๋‹ค  ๊ฐœ์ธ๊ณผ  ์ƒํ˜ธ์ž‘์šฉ์„
๏‚Ÿ ํฌ๊ด„์ ์ธ  ๋ฌธ์„œ๋ณด๋‹ค  ์ž‘๋™ํ•˜๋Š”  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ
๏‚Ÿ ๊ณ„์•ฝ  ํ˜‘์ƒ๋ณด๋‹ค  ๊ณ ๊ฐ๊ณผ์˜  ํ˜‘๋ ฅ์„
๏‚Ÿ ๊ณ„ํš์„  ๋”ฐ๋ฅด๊ธฐ๋ณด๋‹ค  ๋ณ€ํ™”์—  ๋Œ€์‘ํ•˜๊ธฐ๋ฅผ
๏‚Ÿ ์šฐ๋ฆฌ๋Š”  ์™ผ์ชฝ  ํ•ญ๋ชฉ์˜  ๊ฐ€์น˜๋ฅผ  ์ธ์ •ํ•˜๋ฉด์„œ๋„  ์˜ค๋ฅธ์ชฝ  ํ•ญ๋ชฉ์„  ๋”  ์ค‘์š”ํ•˜๊ฒŒ  ์—ฌ๊ธด๋‹ค.

โ‘ถ  ์• ์ž์ผ  ๋ฐฉ๋ฒ•๋ก   ์ข…๋ฅ˜

1)  XP(eXtream  Programming)โญ

โ‘   XP  5๊ฐ€์ง€  ํ•ต์‹ฌ๊ฐ€์น˜
๏‚Ÿ ์šฉ๊ธฐ, ์กด์ค‘, ์˜์‚ฌ์†Œํ†ต, ํ”ผ๋“œ๋ฐฑ, ๋‹จ์ˆœ์„ฑ
- ์˜์‚ฌ์†Œํ†ต ๊ฐœ์„ ๊ณผ ์ฆ‰๊ฐ์  ํ”ผ๋“œ๋ฐฑ

โ‘ก  12๊ฐ€์ง€  ์‹ค์ฒœ์‚ฌํ•ญ
    - ์ง ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Pair Programming) : ๊ฐœ๋ฐœ์ž ๋‘˜์ด์„œ ์ง ์ฝ”๋”ฉ
    - ๊ณต๋™ ์ฝ”๋“œ ์†Œ์œ (Collective Ownership) : ์‹œ์Šคํ…œ ์ฝ”๋“œ๋Š” ๋ˆ„๊ตฌ๋“ ์ง€ ์–ธ์ œ๋ผ๋„ ์ˆ˜์ • ๊ฐ€๋Šฅ
    - ์ง€์†์ ์ธ ํ†ตํ•ฉ(Continuous Integration) : ๋งค์ผ ์—ฌ๋Ÿฌ ๋ฒˆ์”ฉ SWํ†ตํ•ฉ, ๋นŒ๋“œ ํ•ด์•ผํ•จ
    - ๊ณ„ํš ์„ธ์šฐ๊ธฐ(Planning Process) :๊ฐœ๋ฐœ์ž๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ๋ถ€๋ถ„์—์„œ ์ง€์—ฐ๋  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์•Œ๋ ค์ค˜์•ผํ•จ
    - ์ž‘์€ ๋ฆด๋ฆฌ์ฆˆ(Small Release) : ์ž‘์€ ์‹œ์Šคํ…œ ๋จผ์ € ๋งŒ๋“ค๊ณ  ์งง์€ ๋‹จ์œ„ ์—…๋ฐ์ดํŠธ
    - ๋ฉ”ํƒ€ํฌ์–ด(Metathor) : ๊ณตํ†ต์ ์ธ ์ด๋ฆ„ ์ฒด๊ณ„์™€ ์‹œ์Šคํ…œ ์„œ์ˆ ์„œ๋ฅผ ํ†ตํ•ด ๊ณ ๊ฐ๊ณผ ๊ฐœ๋ฐœ์ž๊ฐ„์˜ ์˜์‚ฌ์†Œํ†ต์„ ์›ํ™œํ•˜๊ฒŒ
    - ๊ฐ„๋‹จํ•œ ๋””์ž์ธ(Simple Design): ์š”๊ตฌ์‚ฌํ•ญ์— ์ ํ•ฉํ•œ ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ์‹œ์Šคํ…œ ์„ค๊ณ„
    - ํ…Œ์ŠคํŠธ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ(Test Driven Develop)
    - ๋ฆฌํŒฉํ† ๋ง(Refactoring) : ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋Šฅ์€ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ์ค‘๋ณต์ œ๊ฑฐ, ๋‹จ์ˆœํ™” ๋“ฑ์„ ์œ„ํ•ด ์‹œ์Šคํ…œ ์žฌ๊ตฌ์„ฑ
    - 40์‹œ๊ฐ„ ์ž‘์—… : 40์‹œ๊ฐ„ ์ด์ƒ ์ผ X
    - ๊ณ ๊ฐ ์ƒ์ฃผ(On Site Customer) : ๊ฐœ๋ฐœ์ž๋“ค์˜ ์งˆ๋ฌธ์— ๋Œ€๋‹ตํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ๊ฐ ํ’€ํƒ€์ž„ ์ƒ์ฃผ
    - ์ฝ”๋“œ ํ‘œ์ค€(Coding Standard) : ํšจ๊ณผ์ ์ธ ๊ณต๋™ ์ž‘์—…์„ ์œ„ํ•ด ์ฝ”๋”ฉ ํ‘œ์ค€์„ ์ •์˜

2)  ์Šคํฌ๋Ÿผ (Scrum)โญ

๏‚Ÿ ๋งค์ผ ์ •ํ•ด์ง„ ์‹œ๊ฐ„, ์žฅ์†Œ์—์„œ ์งง์€ ์‹œ๊ฐ„์˜ ๊ฐœ๋ฐœ
๏‚Ÿ ๊ฐœ๋ฐœ  ์ฃผ๊ธฐ๋Š” 30์ผ  ์ •๋„๋กœ  ์กฐ์ ˆํ•˜๊ณ   ๊ฐœ๋ฐœ  ์ฃผ๊ธฐ๋งˆ๋‹ค  ์‹ค์ œ  ๋™์ž‘ํ•   ์ˆ˜  ์žˆ๋Š”  ๊ฒฐ๊ณผ๋ฅผ  ์ œ๊ณต
๏‚Ÿ ์Šคํ”„๋ฆฐํŠธ  ๊ณ„ํš  ํšŒ์˜๋ฅผ  ํ†ตํ•ด  ์Šคํ”„๋ฆฐํŠธ ๋ฐฑ๋กœ๊ทธ๋ฅผ  ์ž‘์„ฑํ•œ๋‹ค.

  • ๋ฐฑ๋กœ๊ทธ(Backlog) : ์ œํ’ˆ๊ณผ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์š”๊ตฌ์‚ฌํ•ญ
  • ์Šคํ”„๋ฆฐํŠธ(Sprint) : 2~4์ฃผ์˜ ์งง์€ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ ๋ฐ˜๋ณต์  ์ˆ˜ํ–‰
  • ์Šคํฌ๋Ÿผ ๋ฏธํŒ…(Scrum Meeting) : ๋งค์ผ 15๋ถ„ ์ •๋„ ๋ฏธํŒ…
  • ์Šคํฌ๋Ÿผ ๋งˆ์Šคํ„ฐ(Scrum Master) : ํ”„๋กœ์ ํŠธ ๋ฆฌ๋”
  • ์Šคํ”„๋ฆฐํŠธ ํšŒ๊ณ (Sprint Retrospective) : ์Šคํ”„๋ฆฐํŠธ ์ฃผ๊ธฐ ๋˜๋Œ์•„๋ณด๋ฉฐ ๊ทœ์น™ ์ค€์ˆ˜ ์—ฌ๋ถ€, ๊ฐœ์„ ์  ํ™•์ธ
  • ๋ฒˆ ๋‹ค์šด ์ฐจํŠธ(Burn Down Chart)



3)  ๊ทธ  ์™ธ  ์• ์ž์ผ  ๋ฐฉ๋ฒ•๋ก 

โ‘   ํฌ๋ฆฌ์Šคํ„ธ(Crystal)
๏‚Ÿ ํ”„๋กœ์ ํŠธ์˜  ๊ทœ๋ชจ์™€  ์˜ํ–ฅ์˜  ํฌ๊ธฐ์—  ๋”ฐ๋ผ์„œ  ์—ฌ๋Ÿฌ  ์ข…๋ฅ˜์˜  ๋ฐฉ๋ฒ•๋ก ์„  ์ œ๊ณต

โ‘ก  FDD(Feature-Driven  Development)
๏‚Ÿ ์‹ ๊ทœ  ๊ธฐ๋Šฅ  ๋‹จ์œ„๋กœ  ํ•˜๋Š”  ๊ฐœ๋ฐœ  ๋ฐฉ๋ฒ•๋ก 

โ‘ข  ASD(Adaptive  Software  Development)
๏‚Ÿ ํ•ฉ๋™  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ๊ฐœ๋ฐœ์„  ์‚ฌ์šฉํ•˜๋Š”  ๋ฐฉ๋ฒ•๋ก 

โ‘ฃ  ๋ฆฐ(Lean)โญ
๏‚Ÿ ๋„์š”ํƒ€  ๋ฆฐ  ์‹œ์Šคํ…œ  ํ’ˆ์งˆ๊ธฐ๋ฒ•์„  ์†Œํ”„ํŠธ์›จ์–ด  ๊ฐœ๋ฐœ  ํ”„๋กœ์„ธ์Šค์—  ์ ์šฉํ•ด์„œ  ๋‚ญ๋น„  ์š”์†Œ๋ฅผ  ์ œ๊ฑฐํ•˜์—ฌ  ํ’ˆ์งˆ์„  ํ–ฅ์ƒ์‹œํ‚จ 
๋ฐฉ๋ฒ•๋ก 
๏‚Ÿ ๋‚ญ๋น„์ œ๊ฑฐ, ํ’ˆ์งˆ ๋‚ด์žฌํ™”, ์ง€์‹ ์ฐฝ์ถœ, ๋Šฆ์€ ํ™•์ •, ๋น ๋ฅธ ์ธ๋„, ์‚ฌ๋žŒ ์กด์ค‘, ์ „์ฒด ์ตœ์ ํ™”

 

4.  IT  ์„œ๋น„์Šค  ๊ด€๋ฆฌโญโญ

โ‘ด  SLM(Service  Level  Management)

๏‚Ÿ ์„œ๋น„์Šค์˜  ํ’ˆ์งˆ์„  ๋†’์ด๋Š”  ์ผ๋ จ์˜  ๊ด€๋ฆฌ  ๋ฐ  ํ™œ๋™

โ‘ต  SLA(Service  Level  Agreement)

๏‚Ÿ ์„œ๋น„์Šค  ์ˆ˜์ค€์„  ๋ช…์‹œ์ ์œผ๋กœ  ์ •์˜ํ•œ  ๋ฌธ์„œ

โ‘ถ  ITSM(Information  Technology  Service  Management)

๏‚Ÿ IT, ์„œ๋น„์Šค๋ฅผ  ๊ตฌํ˜„ ์ „๋‹ฌ  ๋ฐ  ๊ด€๋ฆฌํ•˜๊ธฐ  ์œ„ํ•œ  ์ผ๋ จ์˜  ์ •์ฑ…๊ณผ  ๊ด€ํ–‰

โ‘ท  ITIL(IT  Infrastructure  Library)

๏‚Ÿ IT ์„œ๋น„์Šค๋ฅผ  ์‰ฝ๊ฒŒ  ์ œ๊ณตํ•˜๊ณ   ๊ด€๋ฆฌํ•   ์ˆ˜  ์žˆ๋Š”  ๊ฐ€์ด๋“œ  ํ˜น์€  ํ”„๋ ˆ์ž„์›Œํฌ
๏‚Ÿ ITSM์„  ์‹คํ˜„ํ•˜๋Š”  ๋„๊ตฌ  ๋˜๋Š”  ๋ฐฉ๋ฒ•

 


02  ํ”„๋กœ์ ํŠธ  ๊ณ„ํš  ๋ฐ  ๋ถ„์„

Section  1.  ํ”„๋กœ์ ํŠธ  ๊ณ„ํš

1.  ํ”„๋กœ์ ํŠธ  ๊ด€๋ฆฌ

โ‘ด  ํ”„๋กœ์ ํŠธ  ํ•ต์‹ฌ  ๊ด€๋ฆฌ๋Œ€์ƒ(3P)โญ

1)  ์‚ฌ๋žŒ(People)  
2)  ๋ฌธ์ œ(Problem)
3)  ํ”„๋กœ์„ธ์Šค(Process)

โ‘ต  PMBOK(Project  Management  Body  of  Knowledge)

๏‚Ÿ PMI(Project  Management  Institute)์—์„œ  ์ œ์ž‘ํ•œ  ํ”„๋กœ์ ํŠธ  ๊ด€๋ฆฌ  ํ”„๋กœ์„ธ์Šค  ๋ฐ  ์ง€์‹  ์ฒด๊ณ„
๏‚Ÿ ์ฐฉ์ˆ˜ →  ๊ณ„ํš  → ์‹คํ–‰  → ํ†ต์ œ  → ์ข…๋ฃŒ 

 

2.  ๊ฐœ๋ฐœ  ๋น„์šฉ  ์‚ฐ์ •

โ‘ด  ํ•˜ํ–ฅ์‹  ์‚ฐ์ •  ๊ธฐ๋ฒ•(Top-Down)

1)  ์ „๋ฌธ๊ฐ€  ๊ธฐ๋ฒ•
๏‚Ÿ ์กฐ์ง  ๋‚ด  ๊ฒฝํ—˜์ด  ์žˆ๋Š”  ์ „๋ฌธ๊ฐ€์—๊ฒŒ  ๋น„์šฉ  ์‚ฐ์ •์„  ์˜๋ขฐํ•˜์—ฌ  ์‚ฐ์ •ํ•˜๋Š”  ๊ธฐ๋ฒ•

2)  ๋ธํŒŒ์ด  ๊ธฐ๋ฒ•
๏‚Ÿ ์—ฌ๋Ÿฌ  ์ „๋ฌธ๊ฐ€์˜  ์˜๊ฒฌ์„  ์ข…ํ•ฉํ•˜์—ฌ  ํŒ๋‹จํ•˜๋Š”  ๊ธฐ๋ฒ•

โ‘ต  ์ƒํ–ฅ์‹  ์‚ฐ์ •  ๊ธฐ๋ฒ•(Bottom-Up)

1)  LOC(์›์‹œ์ฝ”๋“œ  ๋ผ์ธ  ์ˆ˜)  ๊ธฐ๋ฒ•
๏‚Ÿ ๋น„๊ด€์น˜, ๋‚™๊ด€์น˜, ์ค‘๊ฐ„์น˜๋ฅผ  ์ธก์ •  ํ›„  ์˜ˆ์ธก์น˜๋ฅผ  ๊ตฌํ•˜๊ณ  ์ด๋ฅผ  ์ด์šฉํ•ด  ๋น„์šฉ์„  ์‚ฐ์ •ํ•˜๋Š”  ๊ธฐ๋ฒ• 
0๏ธโƒฃ ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„ = man month๊ฐœ์›” = (LoC/ํ”„๋กœ๊ทธ๋ž˜๋จธ ์›”๊ฐ„ ์ƒ์‚ฐ์„ฑ)/n๋ช…(ํ”„๋กœ์ ํŠธ ์ธ๋ ฅ)

2)  ๋‹จ๊ณ„๋ณ„  ์ธ์›์ˆ˜ (M/M) ๊ธฐ๋ฒ•
๏‚Ÿ ์†Œํ”„ํŠธ์›จ์–ด  ๊ฐœ๋ฐœ ์ƒ๋ช…์ฃผ๊ธฐ  ๊ฐ  ๋‹จ๊ณ„๋ณ„๋กœ  ์ ์šฉ์‹œ์ผœ  ๋ชจ๋“   ๋‹จ๊ณ„์˜  ๋น„์šฉ์„  ์‚ฐ์ •ํ•˜๋Š”  ๊ธฐ๋ฒ•

โ‘ถ  ์ˆ˜ํ•™์   ์‚ฐ์ •  ๊ธฐ๋ฒ•

1)  COCOMO  ๊ธฐ๋ฒ•โญโญ

๏‚Ÿ ์กฐ์งํ˜•(Organic Mode) : 5๋งŒ  ๋ผ์ธ  ์ดํ•˜ 
๏‚Ÿ ๋ฐ˜๋ถ„๋ฆฌํ˜•(Semidetached Mode) 30๋งŒ  ๋ผ์ธ  ์ดํ•˜ 
๏‚Ÿ ๋‚ด์žฅํ˜•(Embedded Mode) : 30๋งŒ  ๋ผ์ธ  ์ด์ƒ

2)  Putnam  ๊ธฐ๋ฒ•
๏‚Ÿ ์‹œ๊ฐ„์—  ๋”ฐ๋ฅธ  ํ•จ์ˆ˜๋กœ  ํ‘œํ˜„๋˜๋Š”  Rayleigh-Norden ๊ณก์„ ์˜  ๋…ธ๋ ฅ  ๋ถ„ํฌ๋„๋ฅผ  ๊ธฐ์ดˆ๋กœ  ํ•œ๋‹ค .
๏‚Ÿ  ๊ฐœ๋ฐœ์ฃผ๊ธฐ์˜ ๋‹จ๊ณ„๋ณ„๋กœ ์š”๊ตฌํ•  ์ธ๋ ฅ์˜ ๋ถ„ํฌ๋ฅผ ๊ฐ€์ •
๏‚Ÿ SLIM  :  Rayleigh-Norden  ๊ณก์„ ๊ณผ Putnam ์˜ˆ์ธก  ๋ชจํ˜•์„  ๊ธฐ์ดˆ๋กœ  ๊ฐœ๋ฐœํ•œ  ์ž๋™ํ™”  ์ถ”์ •๋„๊ตฌ

3)  ๊ธฐ๋Šฅ  ์ ์ˆ˜  ๊ธฐ๋ฒ•(FP,  Function  Point) 
๏‚Ÿ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€  ๊ฐ€์ง€๋Š”  ๊ธฐ๋Šฅ์˜  ๊ฐœ์ˆ˜๋ฅผ  ๊ธฐ์ค€์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด์˜  ๊ทœ๋ชจ๋ฅผ  ์ธก์ •ํ•˜๋Š”  ๊ธฐ๋ฒ•
๏‚Ÿ ESTIMACS  :  FP๋ชจํ˜•์„  ๊ธฐ์ดˆ๋กœ  ๊ฐœ๋ฐœ๋œ  ์ž๋™ํ™”  ์ถ”์ •  ๋„๊ตฌ
๏‚Ÿ โญ ๊ธฐ๋Šฅ ๋ถ„๋ฅ˜:  ๋‚ด๋ถ€  ๋…ผ๋ฆฌ  ํŒŒ์ผ(ILF), ์™ธ๋ถ€  ์—ฐ๊ณ„ํŒŒ์ผ(EIF), ์™ธ๋ถ€์ž…๋ ฅ(EI), ์™ธ๋ถ€์ถœ๋ ฅ(EO), ์™ธ๋ถ€  ์กฐํšŒ(EQ)    

3.  ๊ฐœ๋ฐœ  ์ผ์ •  ์‚ฐ์ •

โ‘ด  ์ž‘์—…  ์ˆœ์„œ

1)  ์ž‘์—…๋ถ„ํ•ด (Work  Breakdown  Structure) 
2)  CPM  ๋„คํŠธ์›Œํฌ  ์ž‘์„ฑ
3)  ์ตœ์†Œ  ์†Œ์š”  ๊ธฐ๊ฐ„์„  ๊ตฌํ•จ
4)  ์†Œ์š” M/M,  ๊ธฐ๊ฐ„์„  ์‚ฐ์ •ํ•˜์—ฌ CPM ์ˆ˜์ •
5)  ๊ฐ„ํŠธ  ์ฐจํŠธ๋กœ  ํ‘œํ˜„

โ‘ต  WBS(Work  Breakdown  Structure) 

๏‚Ÿ ํ”„๋กœ์ ํŠธ  ๋ชฉํ‘œ๋ฅผ  ๋‹ฌ์„ฑํ•˜๊ธฐ  ์œ„ํ•ด  ํ•„์š”ํ•œ  ํ™œ๋™๊ณผ  ์—…๋ฌด๋ฅผ  ์„ธ๋ถ„ํ™”ํ•˜๋Š”  ์ž‘์—…

โ‘ถ  Network  Chart(PERT/CPM)

1)  PERT/CPM
๏‚Ÿ CPM: ์ฃผ ๊ณต์ •๋ฒ•. ์—ฌ๋Ÿฌ ์ž‘์—…์˜ ์ˆ˜ํ–‰ ์ˆœ์„œ๊ฐ€ ์–ฝํ˜€ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์˜ ์ผ์ • ๊ณ„์‚ฐ
๏‚Ÿ PERT: ์ผ์˜ ์ˆœ์„œ๋ฅผ ๊ณ„ํš์ ์œผ๋กœ ์ •๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜๋ ด ๊ธฐ๋ฒ•, ๋น„๊ด€์น˜, ์ค‘๊ฐ„์น˜, ๋‚™๊ด€์น˜์˜ 3์  ์ถ”์ •๋ฐฉ์‹
๏‚Ÿ ์ž‘์—…์˜  ์„  ํ›„ํ–‰  ๊ด€๊ณ„๋ฅผ  ๊ณ ๋ คํ•˜์—ฌ  ์ „์ฒด์ž‘์—…์˜  ์™„๋ฃŒ์‹œ๊ฐ„์„  ๊ฒฐ์ •ํ•˜๊ณ  (PERT), ์ถ”๊ฐ€๋น„์šฉ  ํˆฌ์ž…์„  ๊ณ ๋ คํ•˜์—ฌ  ์ „์ฒด์ž‘์—… ์™„๋ฃŒ์‹œ๊ฐ„์„  ๋‹จ์ถ•ํ•˜๋Š”(CPM) ๋„คํŠธ์›Œํฌ  ๋ถ„์„  ๊ธฐ๋ฒ•  
๏‚Ÿ ์ž„๊ณ„๊ฒฝ๋กœ(Critical  Path):  ํ”„๋กœ์ ํŠธ๋ฅผ  ๋๋‚ด๊ธฐ  ์œ„ํ•ด  ํ•„์š”ํ•œ  ์ตœ์†Œ  ์†Œ์š”๊ธฐ๊ฐ„


2)  CPM  ์†Œ์ž‘์—…  ๋ฆฌ์ŠคํŠธ

์ž‘์—… ์„ ํ–‰์ž‘์—… ์†Œ์š”๊ธฐ๊ฐ„(์ผ)
A - 15

B
- 10
C A, B 10
D B 25
E C 15



3)  CPM  ๋„คํŠธ์›Œํฌ  ์ž‘์„ฑ     


4)  ์†Œ์š”๊ธฐ๊ฐ„  ์‚ฐ์ •
๏‚Ÿ ์ž„๊ณ„๊ฒฝ๋กœ (Critical  Path)  :  40์ผ
๏‚Ÿ D์˜  ๊ฐ€์žฅ  ๋น ๋ฅธ  ์ฐฉ์ˆ˜์ผ  : 10์ผ
๏‚Ÿ D์˜  ๊ฐ€์žฅ  ๋Šฆ์€  ์ฐฉ์ˆ˜์ผ : 15์ผ
๏‚Ÿ D์˜  ์—ฌ์œ ๊ธฐ๊ฐ„: 5์ผ

โ‘ท  ๊ฐ„ํŠธ  ์ฐจํŠธ(Gantt  chart)

๏‚Ÿ ์ผ์ •  ๊ณ„ํš์˜  ์ตœ์ข…  ์‚ฐ์ถœ๋ฌผ

 

 

Section  2.  ์š”๊ตฌ์‚ฌํ•ญ  ๋ถ„์„

1.  ํ˜„ํ–‰  ์‹œ์Šคํ…œ  ๋ถ„์„

โ‘ด  ํ”Œ๋žซํผ  ๊ธฐ๋Šฅ  ๋ถ„์„

1)  ํ”Œ๋žซํผ  ๊ธฐ๋Šฅ
๏‚Ÿ ์—ฐ๊ฒฐ๊ธฐ๋Šฅ, ๋น„์šฉ๊ฐ์†Œ, ๋ธŒ๋žœ๋“œ  ์‹ ๋ขฐ, ์ปค๋ฎค๋‹ˆํ‹ฐ  ํ˜•์„ฑ

2)  ํ”Œ๋žซํผ์˜  ์œ ํ˜•
๏‚Ÿ ์‹ฑ๊ธ€  ์‚ฌ์ด๋“œ, ํˆฌ  ์‚ฌ์ด๋“œ, ๋ฉ€ํ‹ฐ  ์‚ฌ์ด๋“œ

3)  CPND(Contents  Platform  Network  Device) โญโญ
๏‚Ÿ ์ฝ˜ํ…์ธ ๋ฅผ  ํ”Œ๋žซํผ์—  ๋งž๊ฒŒ  ๊ฐ€๊ณตํ•˜๊ณ   ๋„คํŠธ์›Œํฌ๋ฅผ  ํ†ตํ•ด  ์‚ฌ์šฉ์ž์˜  ๋‹จ๋ง๊ธฐ๋กœ  ์„œ๋น„์Šค๊ฐ€  ์ด๋ฃจ์–ด์ง์„  ํ‘œํ˜„ํ•œ๋‹ค

 

โ‘ต  ๋ฏธ๋“ค์›จ์–ด์˜  ์ข…๋ฅ˜ (Middleware)โญ

1)  ์›๊ฒฉ  ํ”„๋กœ์‹œ์ €  ํ˜ธ์ถœ (RPC,  Remote  Procedure  Call) 
๏‚Ÿ ํด๋ผ์ด์–ธํŠธ๊ฐ€  ์›๊ฒฉ์—์„œ  ๋™์ž‘ํ•˜๋Š”  ํ”„๋กœ์‹œ์ €๋ฅผ  ํ˜ธ์ถœํ•˜๋Š”  ์‹œ์Šคํ…œ

2)  ๋ฉ”์‹œ์ง€  ์ง€ํ–ฅ  ๋ฏธ๋“ค์›จ์–ด (MOM,  Message  Oriented  Middleware) 
๏‚Ÿ ๋ฉ”์‹œ์ง€  ๊ธฐ๋ฐ˜์˜  ๋น„๋™๊ธฐํ˜•  ๋ฉ”์‹œ์ง€๋ฅผ  ์ „๋‹ฌํ•˜๋Š”  ๋ฐฉ์‹์˜  ๋ฏธ๋“ค์›จ์–ด

3)  ORB(Object  Request  Broker)
๏‚Ÿ ๊ฐ์ฒด์ง€ํ–ฅ  ์‹œ์Šคํ…œ์—์„œ  ๊ฐ์ฒด  ๋ฐ  ์„œ๋น„์Šค๋ฅผ  ์š”์ฒญํ•˜๊ณ   ์ „์†กํ•   ์ˆ˜  ์žˆ๋„๋ก  ์ง€์›ํ•˜๋Š”  ๋ฏธ๋“ค์›จ์–ด

4)  DB  ์ ‘์†  ๋ฏธ๋“ค์›จ์–ด
๏‚Ÿ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค  ์„œ๋ฒ„๋ฅผ  ์—ฐ๊ฒฐํ•ด์ฃผ๋Š”  ๋ฏธ๋“ค์›จ์–ด

5)  TP  ๋ชจ๋‹ˆํ„ฐ
๏‚Ÿ ํŠธ๋žœ์žญ์…˜์ด  ์˜ฌ๋ฐ”๋ฅด๊ฒŒ  ์ฒ˜๋ฆฌ๋˜๊ณ   ์žˆ๋Š”์ง€  ๋ฐ์ดํ„ฐ๋ฅผ  ๊ฐ์‹œํ•˜๊ณ   ์ œ์–ด

6)  ์›น  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ์„œ๋ฒ„ (WAS,  Web  Application  Server) 
๏‚Ÿ ๋™์ ์ธ  ์ฝ˜ํ…์ธ ๋ฅผ  ์ฒ˜๋ฆฌํ•˜๊ธฐ  ์œ„ํ•œ  ๋ฏธ๋“ค์›จ์–ด
๏‚Ÿ ์„œ๋ฒ„๊ณ„์ธต์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ ์ œ๊ณต, ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ, ์ด๊ธฐ์ข… ์‹œ์Šคํ…œ ์—ฐ๋™

7)  ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ  ์„œ๋น„์Šค  ๋ฒ„์Šค (ESB,  Enterprise  Service  Bus) 
๏‚Ÿ ๊ธฐ์—…  ์•ˆํŒŽ์—  ์žˆ๋Š”  ๋ชจ๋“   ์‹œ์Šคํ…œ  ํ™˜๊ฒฝ์„  ์—ฐ๋™ํ•˜๋Š”  ๋ฏธ๋“ค์›จ์–ด

 

2.  ์š”๊ตฌ  ๊ณตํ•™

โ‘ด  ์š”๊ตฌ๊ณตํ•™  ๊ฐœ๋…

๏‚Ÿ ๊ณ ๊ฐ  ์š”๊ตฌ๋ฅผ  ์ฒด๊ณ„์ ์œผ๋กœ  ์ˆ˜์ง‘, ๋ถ„์„, ๋ช…์„ธํ™”, ๊ฒ€์ฆํ•˜๊ณ   ์ถ”์ , ๋ณ€๊ฒฝ๋˜๋Š”  ์š”๊ตฌ์‚ฌํ•ญ์„  ๋„์ถœํ•˜๊ณ   ๊ด€๋ฆฌํ•˜๋Š”  ๊ธฐ๋ฒ•

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

๋„์ถœ(Elicitation) → ๋ถ„์„(Analysis) → ๋ช…์„ธ(Specification) →ํ™•์ธ(Validation)
๋„์ถœ - ์ธํ„ฐ๋ทฐ, ์„ค๋ฌธ์กฐ์‚ฌ, ๋ธŒ๋ ˆ์ธ์Šคํ† ๋ฐ ๋“ฑ
๋ถ„์„ - ์ฒญ์ทจ, ์ธํ„ฐ๋ทฐ์™€ ์งˆ๋ฌธ ๊ธฐ์ˆ 
๋ช…์„ธ - ๋น„์ •ํ˜• ๋ช…์„ธ(์ž์—ฐ์–ด ๊ธฐ๋ฐ˜. ์ดํ•ด ์šฉ์ด, ์ •ํ™•์„ฑ ๋ฌธ์ œ) or ์ •ํ˜• ๋ช…์„ธ(์ˆ˜ํ•™์  ๊ธฐ๋ฐ˜. ํ‘œํ˜„ ๊ฐ„๊ฒฐ, ์ดํ•ด ์–ด๋ ค์šด ๋ฌธ์ œ)
ํ™•์ธ - ๋™๋ฃŒ๊ฒ€ํ† , ์›Œํฌ์Šค๋ฃจ, ์ธ์ŠคํŽ™์…˜


โ‘ถ  ์š”๊ตฌ์‚ฌํ•ญ  ๋ถ„์„  ๋„๊ตฌ

1)  ์š”๊ตฌ์‚ฌํ•ญ  ๋ถ„์„  ๋„๊ตฌ CASE(Computer  Aided  Software  Engineering)  
๏‚Ÿ CASE  ๋„๊ตฌ์˜  ๋ถ„๋ฅ˜

๋ถ„๋ฅ˜ ์„ค๋ช…
์ƒ์œ„ CASE - ์ƒ๋ช…์ฃผ๊ธฐ  ์ „๋ฐ˜๋ถ€์—  ์‚ฌ์šฉ๋˜๋ฉฐ, ์†Œํ”„ํŠธ์›จ์–ด์˜  ๊ณ„ํš๊ณผ  ์š”๊ตฌ๋ถ„์„, ์„ค๊ณ„  ๋‹จ๊ณ„๋ฅผ  ์ง€์›ํ•œ๋‹ค
- ๋ชจ์ˆœ๊ฒ€์‚ฌ, ์˜ค๋ฅ˜๊ฒ€์‚ฌ, ์ž๋ฃŒํ๋ฆ„๋„  ์ž‘์„ฑ  ๋“ฑ์˜  ๊ธฐ๋Šฅ์„  ์ˆ˜ํ–‰ํ•œ๋‹ค.
ํ•˜์œ„ CASE - ์ƒ๋ช… ์ฃผ๊ธฐ ํ›„๋ฐ˜๋ถ€์— ์‚ฌ์šฉ๋˜๋ฉฐ, ์ฝ”๋“œ์˜ ์ž‘์„ฑ๊ณผ ํ…Œ์ŠคํŠธ, ๋ฌธ์„œํ™” ํ•˜๋Š” ๊ณผ์ •์„ ์ง€์›ํ•œ๋‹ค.
- ๊ตฌ๋ฌธ ํŽธ์ง‘๊ธฐ, ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
ํ†ตํ•ฉ CASE - ์†Œํ”„ํŠธ์›จ์–ด ์ƒ๋ช…์ฃผ๊ธฐ์— ํฌํ•จ๋˜๋Š” ์ „์ฒด ๊ณผ์ •์„ ์ง€์›ํ•œ๋‹ค.



2)  HIPO(Hierarchy  Input  Process  Output) โญ

โ‘   HIPO์˜  ๊ฐœ๋…
๏‚Ÿ ํ•˜ํ–ฅ์‹  ์†Œํ”„ํŠธ์›จ์–ด  ๊ฐœ๋ฐœ์„  ์œ„ํ•œ  ๋ฌธ์„œํ™”  ๋„๊ตฌ
๏‚Ÿ ์‹œ์Šคํ…œ์˜  ๊ธฐ๋Šฅ์„  ์—ฌ๋Ÿฌ  ๊ฐœ์˜  ๊ณ ์œ   ๋ชจ๋“ˆ๋“ค๋กœ  ๋ถ„ํ• ํ•˜์—ฌ  ์ด๋“ค  ๊ฐ„์˜  ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ  ํ‘œํ˜„ํ•œ  ๋„ํ‘œ

โ‘ก  HIPO  Chart  ์ข…๋ฅ˜
๏‚Ÿ ๊ฐ€์‹œ์   ๋„ํ‘œ(Visual  Table  of  Content)
๏‚Ÿ ์ด์ฒด์   ๋„ํ‘œ(Overview  Diagram)
๏‚Ÿ ์„ธ๋ถ€์   ๋„ํ‘œ(Detail  Diagram) 

 

3.  ์š”๊ตฌ์‚ฌํ•ญ  ๋ถ„์„  ๋ชจ๋ธ๋ง

โ‘ด  ๋ชจ๋ธ๋ง์˜  ๊ฐœ๋…

๏‚Ÿ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ  ๊ตฌ์„ฑํ•˜๋Š”  ๋ชจ๋“ˆ๋“ค์„  ์‹๋ณ„ํ•˜๊ณ , ๋ชจ๋“ˆ๋“ค์˜  ์—ฐ๊ฒฐ์„  ๊ทธ๋ฆผ์œผ๋กœ  ํ‘œํ˜„

โ‘ต  ๋ชจ๋ธ๋ง  ๊ตฌ๋ถ„

๏‚Ÿ ๊ธฐ๋Šฅ  ๋ชจ๋ธ๋ง
๏‚Ÿ ์ •์   ๋ชจ๋ธ๋ง
๏‚Ÿ ๋™์   ๋ชจ๋ธ๋ง

โ‘ถ  ๊ตฌ์กฐ์   ๋ถ„์„  ๋„๊ตฌ

1)  ์ž๋ฃŒ  ํ๋ฆ„๋„ (DFD,  Data  Flow  Diagram)  โญ•
๏‚Ÿ ๊ธฐ๋Šฅ  ์ค‘์‹ฌ์˜  ์‹œ์Šคํ…œ์„  ๋ชจ๋ธ๋งํ•˜๋Š”  ๋ฐ  ์ ํ•ฉ
๏‚Ÿ ์ž๋ฃŒ  ํ๋ฆ„๋„  ๊ตฌ์„ฑ์š”์†Œ

 


2)  ์ž๋ฃŒ์‚ฌ์ „ (DD,  Data  Dictionary) โญ•
๏‚Ÿ ์ž๋ฃŒํ๋ฆ„๋„์—  ๊ธฐ์ˆ ๋œ  ๋ชจ๋“   ์ž๋ฃŒ๋“ค์—  ๋Œ€ํ•œ  ์‚ฌํ•ญ์„  ์ž์„ธํžˆ  ์ •์˜
๏‚Ÿ ์ž๋ฃŒ์‚ฌ์ „  ์‚ฌ์šฉ  ๊ธฐํ˜ธ

๊ธฐํ˜ธ ์˜๋ฏธ ์„ค๋ช…
= ์ž๋ฃŒ์˜ ์ •์˜ ~๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค
+ ์ž๋ฃŒ์˜ ์—ฐ๊ฒฐ ๊ทธ๋ฆฌ๊ณ , ์ˆœ์ฐจ(and)
( ) ์ž๋ฃŒ์˜ ์ƒ๋žต ์ƒ๋žต ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒ
[ | ] ์ž๋ฃŒ์˜ ์„ ํƒ ์—ฌ๋Ÿฌ ๋Œ€์•ˆ ์ค‘ ํ•˜๋‚˜ ์„ ํƒ
{ } ์ž๋ฃŒ์˜ ๋ฐ˜๋ณต ์ž๋ฃŒ์˜ ๋ฐ˜๋ณต
** ์ž๋ฃŒ์˜ ์„ค๋ช… ์ฃผ์„



3)  ์†Œ๋‹จ์œ„  ๋ช…์„ธ์„œ (Mini-Specification)  
๏‚Ÿ ์ž๋ฃŒ  ํ๋ฆ„๋„์—์„œ  ์–ด๋–ค  ์ผ์ด  ์ˆ˜ํ–‰๋˜๋Š”์ง€๋ฅผ  ์ •์˜ํ•˜๊ธฐ  ์œ„ํ•ด  ๊ฐ  ์ฒ˜๋ฆฌ๋“ค์ด  ์ˆ˜ํ–‰ํ•˜๋Š”  ์—…๋ฌด๋ฅผ  ์ƒ์„ธํ•˜๊ฒŒ  ์ž‘์„ฑ


4) ๊ฐœ์ฒด  ๊ด€๊ณ„๋„ (ERD,  Entity  Relationship  Diagram) โญ•
๏‚Ÿ ์‹œ์Šคํ…œ์—์„œ  ์ฒ˜๋ฆฌ๋˜๋Š”  ๊ตฌ์กฐ์ธ  ๊ฐœ์ฒด์™€ ์†์„ฑ, ๊ฐœ์ฒด  ๊ฐ„์˜  ๊ด€๊ณ„๋ฅผ  ํ‘œํ˜„ํ•˜์—ฌ  ๋ชจ๋ธํ™”ํ•˜๋Š”  ๋ฐ  ์‚ฌ์šฉ
๏‚Ÿ ๊ฐœ์ฒด ๊ด€๊ณ„๋„ ๊ตฌ์„ฑ


5) ์ƒํƒœ  ์ „์ด๋„ (STD,  State  Transition  Diagram) 
๏‚Ÿ ์‹œ์Šคํ…œ์—  ์–ด๋–ค  ์ผ์ด  ๋ฐœ์ƒํ•   ๊ฒฝ์šฐ  ์‹œ์Šคํ…œ์˜  ์ƒํƒœ์™€  ์ƒํƒœ  ๊ฐ„์˜  ์ „์ด๋ฅผ  ๋ชจ๋ธํ™”ํ•œ  ๊ฒƒ์œผ๋กœ ์ƒํƒœ  ์ „์ด๋„๋ฅผ  ํ†ตํ•ด  ๊ฐœ , 
๋ฐœ์ž๋Š”  ์‹œ์Šคํ…œ์˜  ํ–‰์œ„๋ฅผ  ์ •์˜

 

โ‘ท  ๊ฐ์ฒด์ง€ํ–ฅ  ๋ถ„์„  ๋ฐฉ๋ฒ•๋ก 

1)  Rumbaugh(๋Ÿผ๋ฐ”์šฐ)  ๋ฐฉ๋ฒ• 1๏ธโƒฃโญ

๏‚Ÿ ๊ฐ€์žฅ  ์ผ๋ฐ˜์ ์œผ๋กœ  ์‚ฌ์šฉ๋˜๋Š”  ๋ฐฉ๋ฒ•์œผ๋กœ  ๋ถ„์„  ํ™œ๋™์„  ๊ฐ์ฒด ๋ชจ๋ธ, ๋™์  ๋ชจ๋ธ, ๊ธฐ๋Šฅ ๋ชจ๋ธ๋กœ  ๋‚˜๋ˆ„์–ด  ์ˆ˜ํ–‰
๏‚Ÿ ๋ถ„์„  ์ ˆ์ฐจ
-  ๊ฐ์ฒด  ๋ชจ๋ธ๋ง (Object  Modeling)  : ๊ฐ์ฒด  ๋‹ค์ด์–ด๊ทธ๋žจ  
-  ๋™์   ๋ชจ๋ธ๋ง (Dynamic  Modeling)  :  ์ƒํƒœ  ๋‹ค์ด์–ด๊ทธ๋žจ
-  ๊ธฐ๋Šฅ  ๋ชจ๋ธ๋ง  (Functional  Modeling)  :  ์ž๋ฃŒํ๋ฆ„๋„(DFD)

2)  Booch(๋ถ€์น˜) ๋ฐฉ๋ฒ•

๏‚Ÿ ๋ฏธ์‹œ์   ๊ฐœ๋ฐœ  ํ”„๋กœ์„ธ์Šค์™€  ๊ฑฐ์‹œ์   ๊ฐœ๋ฐœ  ํ”„๋กœ์„ธ์Šค๋ฅผ  ๋ชจ๋‘  ์‚ฌ์šฉํ•˜๋Š”  ๋ถ„์„  ๋ฐฉ๋ฒ•

3)  Jacobson  ๋ฐฉ๋ฒ•

๏‚Ÿ Use  case๋ฅผ  ๊ฐ•์กฐํ•˜์—ฌ  ์‚ฌ์šฉํ•˜๋Š”  ๋ถ„์„  ๋ฐฉ๋ฒ•

4)  Coad์™€ Yourdon ๋ฐฉ๋ฒ• 

๏‚Ÿ E-R  ๋‹ค์ด์–ด๊ทธ๋žจ์„  ์‚ฌ์šฉํ•˜์—ฌ  ๊ฐ์ฒด์˜  ํ–‰์œ„๋ฅผ  ๋ชจ๋ธ๋งํ•˜๋Š”  ๊ธฐ๋ฒ•

5)  Wirfs-Brock  ๋ฐฉ๋ฒ•

๏‚Ÿ ๋ถ„์„๊ณผ  ์„ค๊ณ„  ๊ฐ„  ๊ตฌ๋ถ„  ์—†์Œ

 

 


  03  ์†Œํ”„ํŠธ์›จ์–ด  ์„ค๊ณ„

 

Section  1.  ์†Œํ”„ํŠธ์›จ์–ด  ์„ค๊ณ„์˜  ๊ธฐ๋ณธ  ์›์น™

1.  ์†Œํ”„ํŠธ์›จ์–ด  ์„ค๊ณ„

โ‘ด  ์†Œํ”„ํŠธ์›จ์–ด  ์„ค๊ณ„์˜  ์ข…๋ฅ˜

โ‘ต  ์†Œํ”„ํŠธ์›จ์–ด  ์„ค๊ณ„์˜  ์›๋ฆฌ

๏‚Ÿ ๋ถ„ํ• ๊ณผ  ์ •๋ณต(Divide  &  Conquer)
๏‚Ÿ ์ถ”์ƒํ™”(Abstraction)  : ๊ณผ์ •, ๋ฐ์ดํ„ฐ, ์ œ์–ด โญ
๏‚Ÿ ๋‹จ๊ณ„์   ๋ถ„ํ•ด(Stepwise  Refinement)
๏‚Ÿ ๋ชจ๋“ˆํ™”(Modulization)
๏‚Ÿ ์ •๋ณด์€๋‹‰(Information  Hiding)

โ‘ถ  ์†Œํ”„ํŠธ์›จ์–ด  ์„ค๊ณ„  ์ ˆ์ฐจ  ๋ฐ  ์œ ํ˜•

โญ ํ˜‘์•ฝ์— ์˜ํ•œ ์„ค๊ณ„ / ์„ ํ–‰์กฐ๊ฑด ๊ฒฐ๊ณผ์กฐ๊ฑด ๋ถˆ๋ณ€์กฐ๊ฑด

 

 

Section  2.  ์†Œํ”„ํŠธ์›จ์–ด  ์•„ํ‚คํ…์ฒ˜

1.  ์†Œํ”„ํŠธ์›จ์–ด  ์•„ํ‚คํ…์ฒ˜

โ‘ด  ์†Œํ”„ํŠธ์›จ์–ด  ์•„ํ‚คํ…์ฒ˜์˜  ํŠน์ง•

๏‚Ÿ ๊ฐ„๋žต์„ฑ, ์ถ”์ƒํ™”, ๊ฐ€์‹œ์„ฑ, ๊ด€์ ๋ชจํ˜•, ์˜์‚ฌ์†Œํ†ต  ์ˆ˜๋‹จ 

โ‘ต  ์†Œํ”„ํŠธ์›จ์–ด  ์•„ํ‚คํ…์ฒ˜  ๋ทฐ 4+1 

1)  4+1  ์†Œํ”„ํŠธ์›จ์–ด  ์•„ํ‚คํ…์ฒ˜  ๋ทฐ  ๊ฐœ๋…

๏‚Ÿ ๊ณ ๊ฐ์˜  ์š”๊ตฌ์‚ฌํ•ญ์„  ์ •๋ฆฌํ•ด  ๋†“์€  ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ  4๊ฐœ์˜  ๊ด€์ ์—์„œ  ๋ฐ”๋ผ๋ณด๋Š”  ์†Œํ”„ํŠธ์›จ์–ด์ ์ธ  ์ ‘๊ทผ  ๋ฐฉ๋ฒ• 
๏‚Ÿ ๋ณต์žกํ•œ  ์†Œํ”„ํŠธ์›จ์–ด  ์•„ํ‚คํ…์ฒ˜๋ฅผ  ๋‹ค์–‘ํ•œ  ์ดํ•ด๊ด€๊ณ„์ž๋“ค์ด  ๋ฐ”๋ผ๋ณด๋Š”  ๊ด€์ 

2)  4+1  View  Model๊ณผ  ๊ตฌ์„ฑ์š”์†Œ

๊ตฌ์„ฑ์š”์†Œ ์„ค๋ช…
๋…ผ๋ฆฌ  ๋ทฐ (Logical  View) - ์‹œ์Šคํ…œ์˜  ๊ธฐ๋Šฅ์ ์ธ  ์š”๊ตฌ์‚ฌํ•ญ
๊ตฌํ˜„  ๋ทฐ (Implementation  View) - ๊ฐœ๋ฐœ์ž  ๊ด€์ ์—์„œ  ์†Œํ”„ํŠธ์›จ์–ด  ๊ตฌํ˜„๊ณผ  ๊ด€๋ฆฌ์ ์ธ  ์ธก๋ฉด์„  ์ปดํฌ๋„ŒํŠธ  ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ํ‘œํ˜„, ๊ตฌ์„ฑ
ํ”„๋กœ์„ธ์Šค  ๋ทฐ  (Process  View) - ์‹œ์Šคํ…œ์˜  ๋™์ž‘์„  ์ค‘์ ์ ์œผ๋กœ  ํ‘œํ˜„, ๋น„๊ธฐ๋Šฅ์ 
๋ฐฐ์น˜  ๋ทฐ  (Deployment  View) = ๋ฐฐํฌ ๋ทฐ - ๋ฌผ๋ฆฌ์ ์ธ  ๋…ธ๋“œ์˜  ๊ตฌ์„ฑ๊ณผ  ์ƒํ˜ธ  ์—ฐ๊ฒฐ  ๊ด€๊ณ„๋ฅผ  ๋ฐฐ์น˜  ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ  ํ‘œํ˜„
์œ ์Šค์ผ€์ด์Šค  ๋ทฐ  (Use  Case  View) - ์•„ํ‚คํ…์ฒ˜๋ฅผ  ๋„์ถœํ•˜๊ณ   ์„ค๊ณ„ํ•˜๋Š”  ์ž‘์—…์„  ์ฃผ๋„ํ•˜๋Š”  ๋ทฐ
- +1์—  ํ•ด๋‹นํ•˜๋ฉฐ  ์œ ์Šค์ผ€์ด์Šค๊ฐ€  ๋‚˜๋จธ์ง€  4๊ฐœ  ๋ทฐ์—  ๋ชจ๋‘  ์ฐธ์—ฌํ•˜๋ฉด์„œ  ์˜ํ–ฅ์„  ์ค€๋‹ค

 

 

2.  ์†Œํ”„ํŠธ์›จ์–ด  ์•„ํ‚คํ…์ฒ˜  ํŒจํ„ด โญ

โ‘ด  ๊ณ„์ธตํ™”  ํŒจํ„ด(Layered  Pattern)

๏‚Ÿ ํ•˜์œ„  ๋ชจ๋“ˆ์„  ๊ทธ๋ฃน์œผ๋กœ  ๋‚˜๋ˆŒ  ์ˆ˜  ์žˆ๋Š”  ๊ตฌ์กฐํ™”๋œ  ํ”„๋กœ๊ทธ๋žจ์—์„œ  ์‚ฌ์šฉ
์„œ๋กœ ๋งˆ์ฃผ ๋ณด๋Š” ๋‘ ๊ฐœ์˜ ๊ณ„์ธต ์‚ฌ์ด์—์„œ๋งŒ ์ƒํ˜ธ์ž‘์šฉ

โ‘ต  ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„  ํŒจํ„ด  (Client-Server  Pattern)

๏‚Ÿ ์„œ๋ฒ„๋Š”  ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ  ์„œ๋น„์Šค๋ฅผ  ์ œ๊ณตํ•˜๋ฉฐ  ๋ฐ์ดํ„ฐ๋ฅผ  ๊ด€๋ฆฌํ•˜๋Š”  ์—ญํ• 
ํ•˜๋‚˜์˜ ์„œ๋ฒ„์™€ ๋‹ค์ˆ˜์˜ ํด๋ผ์ด์–ธํŠธ

โ‘ถ  ๋งˆ์Šคํ„ฐ-์Šฌ๋ ˆ์ด๋ธŒ  ํŒจํ„ด (Master-Slave  Pattern)

๏‚Ÿ ๋งˆ์Šคํ„ฐ  ์ปดํฌ๋„ŒํŠธ๊ฐ€  ๋™๋“ฑํ•œ  ๊ตฌ์กฐ์˜  ์Šฌ๋ ˆ์ด๋ธŒ  ์ปดํฌ๋„ŒํŠธ๋กœ  ์ž‘์—…์„  ๋ถ„์‚ฐํ•˜๊ณ  ์Šฌ๋ ˆ์ด๋ธŒ๊ฐ€  ๊ฒฐ๊ณผ๊ฐ’์„  ๋ฐ˜ํ™˜ํ•˜๋ฉด  ์ตœ์ข…  , 
๊ฒฐ๊ณผ๊ฐ’์„  ๊ณ„์‚ฐํ•˜๋Š”  ๊ตฌ์กฐ

โ‘ท  ํŒŒ์ดํ”„-ํ•„ํ„ฐ  ํŒจํ„ด (Pipe-Filter  Pattern)

๏‚Ÿ ์„œ๋ธŒ์‹œ์Šคํ…œ์ด  ์ž…๋ ฅ๋ฐ์ดํ„ฐ๋ฅผ  ๋ฐ›์•„  ์ฒ˜๋ฆฌํ•˜๊ณ   ๊ฒฐ๊ณผ๋ฅผ  ๋‹ค์Œ  ์„œ๋ธŒ์‹œ์Šคํ…œ์œผ๋กœ  ๋„˜๊ฒจ์ฃผ๋Š”  ๊ณผ์ •์„  ๋ฐ˜๋ณต
๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ

โ‘ธ  ๋ธŒ๋กœ์ปค  ํŒจํ„ด(Broker  Pattern)

๏‚Ÿ ๋ถ„๋ฆฌ๋œ  ์ปดํฌ๋„ŒํŠธ๋กœ  ๊ตฌ์„ฑ๋œ  ๋ถ„์‚ฐ  ์‹œ์Šคํ…œ์—์„œ  ์‚ฌ์šฉ๋˜๋Š”  ํŒจํ„ด
๋ถ„๋ฆฌ๋œ ์ปดํฌ๋„ŒํŠธ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜๊ณ , ์›๊ฒฉ ์„œ๋น„์Šค ์‹คํ–‰์„ ํ†ตํ•ด ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅ

โ‘น  ํ”ผ์–ด  ํˆฌ  ํ”ผ์–ด  ํŒจํ„ด(Peer  to  Peer  Pattern)

๏‚Ÿ ํ”ผ์–ด๋ผ  ๋ถ€๋ฅด๋Š”  ๊ฐ  ์ปดํฌ๋„ŒํŠธ  ๊ฐ„์—  ์„œ๋น„์Šค๋ฅผ  ์ฃผ๊ณ ๋ฐ›๋Š”  ํŒจํ„ด

โ‘บ  ์ด๋ฒคํŠธ ๋ฒ„์Šค  ํŒจํ„ด (Event-Bus  Pattern)

๏‚Ÿ ์ด๋ฒคํŠธ  ๋ฒ„์Šค๋ฅผ  ํ†ตํ•ด  ํŠน์ •  ์ฑ„๋„๋กœ  ๋ฉ”์‹œ์ง€๋ฅผ  ๋ฐœํ–‰

โ‘ป  ๋ชจ๋ธ-๋ทฐ-์ปจํŠธ๋กค๋Ÿฌ  ํŒจํ„ด  (MVC  Pattern,  Model-View-Controller  Pattern) โญ

๏‚Ÿ 3๊ฐœ์˜  ๊ฐ  ์ปดํฌ๋„ŒํŠธ๋Š”  ๊ฐ์ž์˜  ์—ญํ• ์„  ๊ฐ–๊ณ   ์‚ฌ์šฉ์ž์—๊ฒŒ  ์„œ๋น„์Šค๋ฅผ  ์ œ๊ณต
- ๋ชจ๋ธ : ํ•ต์‹ฌ ๊ธฐ๋Šฅ, ๋ฐ์ดํ„ฐ ๋ณด๊ด€ / ๋ทฐ : ์‚ฌ์šฉ์ž์—๊ฒŒ ์ •๋ณด ํ‘œ์‹œ / ์ปจํŠธ๋กค๋Ÿฌ : ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์š”์ฒญ ์ž…๋ ฅ ๋ฐ›์•„ ์ฒ˜๋ฆฌ

โ‘ผ  ๋ธ”๋ž™๋ณด๋“œ  ํŒจํ„ด(Blackboard  Pattern)

๏‚Ÿ ๋ช…ํ™•ํžˆ  ์ •์˜๋œ  ํ•ด๊ฒฐ  ์ „๋žต์ด  ์•Œ๋ ค์ง€์ง€  ์•Š์€  ๋ฌธ์ œ์—  ๋Œ€ํ•ด์„œ  ์œ ์šฉํ•œ  ํŒจํ„ด

โ‘ฝ  ์ธํ„ฐํ”„๋ฆฌํ„ฐ  ํŒจํ„ด(Interpreter  Pattern)

๏‚Ÿ ํŠน์ •  ์–ธ์–ด๋กœ  ์ž‘์„ฑ๋œ  ํ”„๋กœ๊ทธ๋žจ์„  ํ•ด์„ํ•˜๋Š”  ์ปดํฌ๋„ŒํŠธ๋ฅผ  ์„ค๊ณ„ํ•   ๋•Œ  ์‚ฌ์šฉ๋˜๋Š”  ํŒจํ„ด

 

 

Section  3.  UML2๏ธโƒฃโญโญ

1.  UML(Unified  Modeling  Language)

โ‘ด  UML  ๊ฐœ๋…

๏‚Ÿ  ๊ฐ์ฒด์ง€ํ–ฅ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ์‚ฐ์ถœ๋ฌผ์„ ๋ช…์„ธํ™”, ์‹œ๊ฐํ™”, ๋ฌธ์„œํ™” ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋ธ๋ง ๊ธฐ์ˆ ๊ณผ ๋ฐฉ๋ฒ•๋ก ์„ ํ†ตํ•ฉํ•ด์„œ ๋งŒ๋“  ํ‘œ์ค€ํ™”๋œ ๋ฒ”์šฉ ๋ชจ๋ธ๋ง ์–ธ์–ด
๏‚Ÿ ํ”„๋กœ๊ทธ๋žจ  ์„ค๊ณ„๋ฅผ  ํ‘œํ˜„ํ•˜๊ธฐ  ์œ„ํ•ด  ์‚ฌ์šฉํ•˜๋Š”  ํ‘œ๊ธฐ๋ฒ•
๏‚Ÿ ํ”„๋กœ๊ทธ๋žจ  ์–ธ์–ด๊ฐ€  ์•„๋‹Œ  ๊ธฐํ˜ธ์™€  ๋„์‹์„  ์ด์šฉํ•˜์—ฌ  ํ‘œํ˜„ํ•˜๋Š”  ๋ฐฉ๋ฒ•์„  ์ •์˜ํ•œ๋‹ค.

โ‘ต  UML  ํŠน์ง•

๏‚Ÿ ๊ฐ€์‹œํ™”  ์–ธ์–ด,  ๋ช…์„ธํ™”  ์–ธ์–ด,  ๊ตฌ์ถ•  ์–ธ์–ด,  ๋ฌธ์„œํ™”  ์–ธ์–ด 

 

2.  UML  ๊ตฌ์„ฑ์š”์†Œ

โ‘ด  ์‚ฌ๋ฌผ(Things)

โ‘ต  ๊ด€๊ณ„(Relationships)

 

1)  ์ผ๋ฐ˜ํ™”  ๊ด€๊ณ„ (Generalization) 1๏ธโƒฃ

๏‚Ÿ ํ•œ  ํด๋ž˜์Šค๊ฐ€  ๋‹ค๋ฅธ  ํด๋ž˜์Šค๋ฅผ  ํฌํ•จํ•˜๋Š”  ์ƒ์œ„  ๊ฐœ๋…์ผ  ๋•Œ์˜  ๊ด€๊ณ„
๏‚Ÿ ๊ฐ์ฒด์ง€ํ–ฅ  ๊ฐœ๋…์—์„œ๋Š”  ์ผ๋ฐ˜ํ™”  ๊ด€๊ณ„๋ฅผ  ์ƒ์†๊ด€๊ณ„(Inheritance) ๋ผ๊ณ   ํ•จ 
์ƒ์œ„ ๋ชจ๋“ˆ์ด ํ•˜์œ„ ๋ชจ๋“ˆ๋ณด๋‹ค ๋” ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋…์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ํ•˜์œ„ ๋ชจ๋“ˆ์ด ์ƒ์œ„ ๋ชจ๋“ˆ๋ณด๋‹ค ๋” ๊ตฌ์ฒด์ ์ธ ๊ฐœ๋…์„ ๊ฐ€์ง„๋‹ค

2)  ์—ฐ๊ด€๊ด€๊ณ„ (Association) 

๏‚Ÿ 2๊ฐœ  ์ด์ƒ  ์‚ฌ๋ฌผ์ด  ์„œ๋กœ  ๊ด€๋ จ๋œ  ๊ด€๊ณ„
๏‚Ÿ ํ•œ  ํด๋ž˜์Šค๊ฐ€  ๋‹ค๋ฅธ  ํด๋ž˜์Šค์—์„œ  ์ œ๊ณตํ•˜๋Š”  ๊ธฐ๋Šฅ์„  ์‚ฌ์šฉํ•   ๋•Œ  ํ‘œ์‹œ


3) ์˜์กด๊ด€๊ณ„ (Dependency) 

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

4) ์‹ค์ฒดํ™”  ๊ด€๊ณ„ (Realization) 

๏‚Ÿ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ  ๊ตฌํ˜„๋ฐ›์•„  ์ถ”์ƒ  ๋ฉ”์„œ๋“œ๋ฅผ  ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜๋Š”  ๊ฒƒ์„  ์˜๋ฏธ

5)  ์ง‘์•ฝ๊ด€๊ณ„ (Aggregation) -์ง‘ํ•ฉ ๊ด€๊ณ„ 1๏ธโƒฃ

๏‚Ÿ ํ•œ  ๊ฐ์ฒด๊ฐ€  ๋‹ค๋ฅธ  ๊ฐ์ฒด๋ฅผ  ์†Œ์œ ํ•˜๋Š”  ๊ด€๊ณ„ ‘has  a’ 
๏‚Ÿ ์ „์ฒด  ๊ฐ์ฒด์˜  ๋ผ์ดํ”„ํƒ€์ž„๊ณผ  ๋ถ€๋ถ„  ๊ฐ์ฒด์˜  ๋ผ์ดํ”„ํƒ€์ž„์€  ๋…๋ฆฝ์ 
๏‚Ÿ ์ „์ฒด  ๊ฐ์ฒด๊ฐ€  ์‚ฌ๋ผ์ง„๋‹ค  ํ•ด๋„  ๋ถ€๋ถ„  ๊ฐ์ฒด๋Š”  ์‚ฌ๋ผ์ง€์ง€  ์•Š์Œ
ํ•˜๋‚˜์˜ ์‚ฌ๋ฌผ์ด ๋‹ค๋ฅธ ์‚ฌ๋ฌผ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ด€๊ณ„๋กœ ์ „์ฒด์™€ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด์ง€๋ฉฐ ์„œ๋กœ ๋…๋ฆฝ์ ์ด๋‹ค

6)  ํ•ฉ์„ฑ๊ด€๊ณ„ (Composition) - ์ง‘ํ•ฉ๊ด€๊ณ„ 

๏‚Ÿ ๋ถ€๋ถ„  ๊ฐ์ฒด๊ฐ€  ์ „์ฒด  ๊ฐ์ฒด์—  ์†ํ•˜๋Š”  ๊ด€๊ณ„๋กœ  ๊ธด๋ฐ€ํ•œ  ํ•„์ˆ˜์   ๊ด€๊ณ„
๏‚Ÿ ์ „์ฒด  ๊ฐ์ฒด์˜  ๋ผ์ดํ”„ํƒ€์ž„๊ณผ  ๋ถ€๋ถ„  ๊ฐ์ฒด์˜  ๋ผ์ดํ”„  ํƒ€์ž„์€  ์˜์กด์ 
๏‚Ÿ ์ „์ฒด  ๊ฐ์ฒด๊ฐ€  ์—†์–ด์ง€๋ฉด  ๋ถ€๋ถ„  ๊ฐ์ฒด๋„  ์—†์–ด์ง

 


โ‘ถ  ๋‹ค์ด์–ด๊ทธ๋žจ(Diagram)

1)  ๊ตฌ์กฐ  ๋‹ค์ด์–ด๊ทธ๋žจ (ํด๊ฐ์ปด๋ฐฐ๋ณตํŒจ)

์ข…๋ฅ˜ ์„ค๋ช…
ํด๋ž˜์Šค  ๋‹ค์ด์–ด๊ทธ๋žจ  1๏ธโƒฃ2๏ธโƒฃ - ํด๋ž˜์Šค์˜  ์†์„ฑ๊ณผ  ํด๋ž˜์Šค  ์‚ฌ์ด์˜  ๊ด€๊ณ„๋ฅผ  ํ‘œํ˜„
์ ‘๊ทผ์ œํ•œ์ž
public + : ํด๋ž˜์Šค ์™ธ๋ถ€ ์ ‘๊ทผ ํ—ˆ์šฉ
private - : ํด๋ž˜์Šค ๋‚ด๋ถ€ ์ ‘๊ทผ ํ—ˆ์šฉ
protected # : ๋™์ผ ํŒจํ‚ค์ง€/ํŒŒ์ƒ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ
default ~ : ๋™์ผ ํŒจํ‚ค์ง€ ํด๋ž˜์Šค์—์„œ ์ ‘๊ทผ

- ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์€ UML ๋‹ค์ด์–ด๊ทธ๋žจ ์ค‘ ๊ฐ์ฒด๋“ค์„ ํด๋ž˜์Šค๋กœ ์ถ”์ƒํ™”ํ•˜์—ฌ ํ‘œํ˜„ํ•˜๋Š” ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ๋Œ€ํ‘œ์ ์ธ ๊ตฌ์กฐ์  ๋‹ค์ด์–ด๊ทธ๋žจ์ด๋‹ค. ํด๋ž˜์Šค๋Š” ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋“ค์ด ๊ฐ–๋Š” ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ํ‘œํ˜„ํ•œ ๊ฒƒ์œผ๋กœ 3๊ฐœ์˜ ๊ตฌํš์œผ๋กœ ๋‚˜๋ˆ  ์ด๋ฆ„, ์†์„ฑ, ๋ฉ”์†Œ๋“œ๋ฅผ ํ‘œ๊ธฐํ•œ๋‹ค 1๏ธโƒฃ
- ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด ํƒ€์ž…์„ ์ •์˜ํ•˜๊ณ , ๊ทธ๋“ค ๊ฐ„์˜ ์กด์žฌํ•˜๋Š” ์ •์ ์ธ ๊ด€๊ณ„๋ฅผ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ํ‘œํ˜„ํ•œ ๋‹ค์ด์–ด๊ทธ๋žจ2๏ธโƒฃ
๊ฐ์ฒด  ๋‹ค์ด์–ด๊ทธ๋žจ  - ํด๋ž˜์Šค์—  ์†ํ•œ  ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค) ๋ฅผ  ํŠน์ •  ์‹œ์ ์˜  ๊ฐ์ฒด์™€  ๊ฐ์ฒด  ์‚ฌ์ด  ๊ด€๊ณ„๋กœ  ํ‘œํ˜„ 
์ปดํฌ๋„ŒํŠธ  ๋‹ค์ด์–ด๊ทธ๋žจ  - ์ปดํฌ๋„ŒํŠธ  ์‚ฌ์ด  ๊ด€๊ณ„๋‚˜  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ  ํ‘œํ˜„
๋ฐฐ์น˜  ๋‹ค์ด์–ด๊ทธ๋žจ - ๊ฒฐ๊ณผ๋ฌผ, ํ”„๋กœ์„ธ์Šค, ์ปดํฌ๋„ŒํŠธ ๋“ฑ ๋ฌผ๋ฆฌ์  ์š”์†Œ๋“ค์˜ ์œ„์น˜๋ฅผ ํ‘œํ˜„
๋ณตํ•ฉ์ฒด ๋‹ค์ด์–ด๊ทธ๋žจ - ํด๋ž˜์Šค๋‚˜ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ณตํ•ฉ๊ตฌ์กฐ๋ฅผ ๊ฐ€์งˆ ์‹œ ๊ทธ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„
ํŒจํ‚ค์ง€ ๋‹ค์ด์–ด๊ทธ๋žจ 0๏ธโƒฃ(๊ทธ๋ฆผ) - ์œ ์Šค์ผ€์ด์Šค๋‚˜ ํด๋ž˜์Šค ๋“ฑ ๋ชจ๋ธ ์š”์†Œ๋“ค์„ ๊ทธ๋ฃนํ™”ํ•œ ํŒจํ‚ค์ง€๋“ค์˜ ๊ด€๊ณ„ ํ‘œํ˜„

ํŒจํ‚ค์ง€ ๋‹ค์ด์–ด๊ทธ๋žจ

 

2)  ํ–‰์œ„  ๋‹ค์ด์–ด๊ทธ๋žจ (์œ ์‹œ์ปค ์ƒํ™œํƒ€)

์ข…๋ฅ˜ ์„ค๋ช…
์œ ์Šค์ผ€์ด์Šค ๋‹ค์ด์–ด๊ทธ๋žจ - ์‚ฌ์šฉ์ž์˜  ์š”๊ตฌ๋ฅผ  ๋ถ„์„ํ•˜์—ฌ  ๊ธฐ๋Šฅ  ๋ชจ๋ธ๋ง  ์ž‘์—…์—  ์‚ฌ์šฉ๋จ
ํฌํ•จinclude๊ด€๊ณ„ - ํ™•์žฅextend๊ด€๊ณ„ ๊ตฌ๋ถ„ (๋ฐ˜๋“œ์‹œ/๋ฐ˜๋“œ์‹œX)
์‹œํ€€์Šค  ๋‹ค์ด์–ด๊ทธ๋žจ  - ํŠน์ •  ํ–‰๋™์ด  ์–ด๋– ํ•œ  ์ˆœ์„œ๋กœ  ์–ด๋–ค  ๊ฐ์ฒด์™€  ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š”์ง€  ํ‘œํ˜„
์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋‹ค์ด์–ด๊ทธ๋žจ - ๋™์ž‘์—  ์ฐธ์—ฌํ•œ  ๊ฐ์ฒด๋“ค์ด  ์ฃผ๊ณ ๋ฐ›๋Š”  ๋ฉ”์‹œ์ง€์™€  ๊ฐ์ฒด  ๊ฐ„  ์—ฐ๊ด€๊นŒ์ง€  ํ‘œํ˜„
์ƒํƒœ  ๋‹ค์ด์–ด๊ทธ๋žจ  - ๊ฐ์ฒด๊ฐ€  ์ž์‹ ์ด  ์†ํ•œ  ํด๋ž˜์Šค์˜  ์ƒํƒœ  ๋ณ€ํ™”  ๋ฐ  ๋‹ค๋ฅธ  ๊ฐ์ฒด  ๊ฐ„  ์ƒํ˜ธ์ž‘์šฉ์—  ๋”ฐ๋ผ  ์ƒํƒœ  ๋ณ€ํ™”  ํ‘œํ˜„
ํ™œ๋™  ๋‹ค์ด์–ด๊ทธ๋žจ - ์‹œ์Šคํ…œ์ด  ์–ด๋–ค  ๊ธฐ๋Šฅ์„  ์ˆ˜ํ–‰ํ•˜๋Š”์ง€์—  ๋”ฐ๋ผ  ๊ฐ์ฒด  ์ฒ˜๋ฆฌ  ๋กœ์ง์ด๋‚˜  ์กฐ๊ฑด์—  ๋”ฐ๋ฅธ  ์ฒ˜๋ฆฌ  ํ๋ฆ„์„ ์ˆœ์„œ์—  ๋”ฐ๋ผ  ํ‘œํ˜„
์ƒํ˜ธ์ž‘์šฉ  ๋‹ค์ด์–ด๊ทธ๋žจ  - ์ƒํ˜ธ์ž‘์šฉ  ๋‹ค์ด์–ด๊ทธ๋žจ  ๊ฐ„  ์ œ์–ด  ํ๋ฆ„  ํ‘œํ˜„
ํƒ€์ด๋ฐ  ๋‹ค์ด์–ด๊ทธ๋žจ  - ๊ฐ์ฒด  ์ƒํƒœ  ๋ณ€ํ™”์™€  ์‹œ๊ฐ„  ์ œ์•ฝ์„  ๋ช…์‹œ์ ์œผ๋กœ  ํ‘œํ˜„




2๏ธโƒฃUML ๋ชจ๋ธ๋ง์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํด๋ž˜์Šค์™€ ๊ฐ™์€ ๊ธฐํƒ€ ๋ชจ๋ธ ์š”์†Œ ๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ์˜คํผ๋ ˆ์ด์…˜ ์„ธํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ชจ๋ธ ์š”์†Œ

 


 

04  ํ™”๋ฉด  ์„ค๊ณ„

Section  1.  UI  ์„ค๊ณ„

1.  UI(User  Interface)  ๊ฐœ๋… 1๏ธโƒฃ

โ‘ด  UI  ๊ฐœ๋…

๏‚Ÿ ์ปดํ“จํ„ฐ, ์›น  ์‚ฌ์ดํŠธ, ์‹œ์Šคํ…œ  ๋“ฑ์˜  ์ •๋ณด๊ธฐ๊ธฐ์™€  ์‚ฌ์šฉ์ž๊ฐ€  ์„œ๋กœ  ์ƒํ˜ธ์ž‘์šฉ์„  ํ•   ์ˆ˜  ์žˆ๋„๋ก  ์—ฐ๊ฒฐํ•ด์ฃผ๋Š”  ๋งค๊ฐœ์ฒด

โ‘ต  UX(User  eXperience)  ๊ฐœ๋…

๏‚Ÿ ์‚ฌ์šฉ์ž๊ฐ€  ์ปดํ“จํ„ฐ ์›น  ์‚ฌ์ดํŠธ ์‹œ์Šคํ…œ  ๋“ฑ  ์ •๋ณด๊ธฐ๊ธฐ์˜ UI๋ฅผ  ์ง/๊ฐ„์ ‘์ ์œผ๋กœ  ์ด์šฉํ•˜์—ฌ  ๊ฒฝํ—˜ํ•œ  ๋ชจ๋“   ๊ฒƒ 

โ‘ถ  UI  ์œ ํ˜•โญ

1)  CLI(Command  Line  Interface)

๏‚Ÿ ์‚ฌ์šฉ์ž๊ฐ€  ์ปดํ“จํ„ฐ  ์žํŒ์„  ์ด์šฉํ•ด  ๋ช…๋ น์„  ์ž…๋ ฅํ•˜์—ฌ  ์ปดํ“จํ„ฐ๋ฅผ  ์กฐ์ž‘ํ•˜๋Š”  ์‹œ์Šคํ…œ, ๋ช…๋ น์–ด๋ฅผ ํ…์ŠคํŠธ๋กœ

2)  GUI(Graphical  User  Interface) 1๏ธโƒฃ

๏‚Ÿ ๊ทธ๋ž˜ํ”ฝ๊ณผ  ํ…์ŠคํŠธ๋กœ  ์ด๋ฃจ์–ด์ ธ  ์žˆ์–ด, ์‚ฌ์šฉ์ž์˜  ์ž…๋ ฅ์ด๋‚˜  ์ถœ๋ ฅ์ด  ๋งˆ์šฐ์Šค, ์ „์žํŽœ  ๋“ฑ์„  ํ†ตํ•ด  ์ด๋ฃจ์–ด์ง

3)  NUI(Natural  User  Interface) 2๏ธโƒฃ

๏‚Ÿ ํŠน๋ณ„ํ•œ  ํ•˜๋“œ์›จ์–ด  ์—†์ด  ์ธ๊ฐ„์˜  ์ž์—ฐ์Šค๋Ÿฌ์šด  ์›€์ง์ž„์„  ์ธ์‹ํ•˜์—ฌ  ์ •๋ณด๋ฅผ  ์ œ๊ณต, ํ„ฐ์น˜, ์Œ์„ฑ

4)  OUI(Organic  User  Interface)

๏‚Ÿ ํ˜„์‹ค์˜  ๋ชจ๋“   ๊ฒƒ์ด  ์ž…์ถœ๋ ฅ  ์žฅ์น˜๊ฐ€  ๋จ, ํ˜„์‹ค์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋ฌผ

5)  AUI(Auditory  User  Interface)

๏‚Ÿ ๋ณด๋‹ค  ๋‚˜์€  ์‚ฌ์šฉ์ž  ๊ฒฝํ—˜์„  ์ œ๊ณตํ•˜๊ธฐ  ์œ„ํ•ด  ๋งŒ๋“ค์–ด์ง„  ์ž„๋ฒ ๋””๋“œ  ์‚ฌ์šด๋“œ

 

2.  UI  ์„ค๊ณ„

โ‘ด  UI  ์š”๊ตฌ์‚ฌํ•ญ  ๊ตฌ๋ถ„ 1๏ธโƒฃ

๏‚Ÿ ๊ธฐ๋Šฅ์   ์š”๊ตฌ์‚ฌํ•ญ - ์‹œ์Šคํ…œ์ด ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ, ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์š”๊ตฌ์‚ฌํ•ญ(์‚ฌ์šฉ์žUI) / ์‹œ์Šคํ…œ์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€, ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋Š”์ง€ ๋“ฑ ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ œ๊ณต๋ฐ›๊ธฐ๋ฅผ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‚˜ ์‹œ์Šคํ…œ์ด ๋ฐ˜๋“œ์‹œ ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋Š” ๊ธฐ๋Šฅ
๏‚Ÿ ๋น„๊ธฐ๋Šฅ์   ์š”๊ตฌ์‚ฌํ•ญ - ์‹œ์Šคํ…œ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ ์ด์™ธ์˜ ์‚ฌํ•ญ(๋ฐฑ์—”๋“œ) / ํ’ˆ์งˆ์ด๋‚˜ ์ œ์•ฝ์‚ฌํ•ญ๊ณผ ๊ด€๋ จ๋œ ์š”๊ตฌ์‚ฌํ•ญ์œผ๋กœ ์‹œ์Šคํ…œ์˜ ์žฅ๋น„ ๊ตฌ์„ฑ ์„ฑ๋Šฅ, ์ธํ„ฐํŽ˜์ด์Šค, ํ…Œ์ŠคํŠธ, ๋ณด์•ˆ ๋“ฑ์˜ ์š”๊ตฌ์‚ฌํ•ญ

โ‘ต  UI  ์„ค๊ณ„  ์›์น™ (์ง์œ ํ•™์œ )0๏ธโƒฃ 0๏ธโƒฃ โญโญ 

๏‚Ÿ ์ง๊ด€์„ฑ:  ๋ˆ„๊ตฌ๋‚˜  ์‰ฝ๊ฒŒ  ์ดํ•ดํ•˜๊ณ   ์‚ฌ์šฉํ•   ์ˆ˜  ์žˆ์–ด์•ผ  ํ•œ๋‹ค 
๏‚Ÿ ์œ ํšจ์„ฑ:  ์‚ฌ์šฉ์ž์˜  ๋ชฉ์ ์„  ์ •ํ™•ํ•˜๊ฒŒ  ๋‹ฌ์„ฑํ•ด์•ผ  ํ•œ๋‹ค 
๏‚Ÿ ํ•™์Šต์„ฑ:  ๋ˆ„๊ตฌ๋‚˜  ์‰ฝ๊ฒŒ  ๋ฐฐ์šฐ๊ณ   ์ตํž  ์ˆ˜  ์žˆ์–ด์•ผ  ํ•œ๋‹ค
๏‚Ÿ ์œ ์—ฐ์„ฑ:  ์‚ฌ์šฉ์ž์˜  ์š”๊ตฌ์‚ฌํ•ญ์„  ์ตœ๋Œ€ํ•œ  ์ˆ˜์šฉ, ์‹ค์ˆ˜ ๋ฐฉ์ง€ํ•˜๋„๋ก ์ œ์ž‘ํ•ด์•ผ  ํ•œ๋‹ค 

โ‘ถ  UI  ์„ค๊ณ„  ๋„๊ตฌ

1) ์™€์ด์–ดํ”„๋ ˆ์ž„ (Wireframe) 
๏‚Ÿ ์„ (Wire)์œผ๋กœ  ํ‹€ (Frame)์„  ์žก๋Š”๋‹ค๋Š”  ๋œป  , ํ™”๋ฉด ๋‹จ์œ„์˜ ๋ ˆ์ด์•„์›ƒ์„ ์„ค๊ณ„ํ•˜๋Š” ์ž‘์—…

2)  ์Šคํ† ๋ฆฌ๋ณด๋“œ
๏‚Ÿ ๊ฐœ๋ฐœ  ํ›„  ์™„์„ฑ๋œ  ์ฝ˜ํ…์ธ ์˜  ์ตœ์ข…  ๊ฒฐ๊ณผ๋ฅผ  ์˜ˆ์ƒํ•   ์ˆ˜  ์žˆ๋Š”  ๊ธฐ์ดˆ  ๋ฌธ์„œ
๏‚Ÿ  ์ •์ฑ…, ํ”„๋กœ์„ธ์Šค, ์™€์ด์–ด ํ”„๋ ˆ์ž„, ๊ธฐ๋Šฅ ์ •์˜, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™ ๋“ฑ ์„œ๋น„์Šค ๊ตฌ์ถ•์„ ์œ„ํ•œ ์ •๋ณด๊ฐ€ ์ˆ˜๋ก๋œ ๋ฌธ์„œ, ๋””์ž์ด๋„ˆ์™€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ์ฐธ๊ณ ํ•˜๋Š” ์‚ฐ์ถœ ๋ฌธ์„œ

3)  ํ”„๋กœํ† ํƒ€์ž…
๏‚Ÿ ์‹ค์ œ  ์„œ๋น„์Šค์™€  ํก์‚ฌํ•œ  ๋ชจํ˜•์„  ๋งŒ๋“œ๋Š”  ์ž‘์—…
๏‚Ÿ ์ •์ ์ธ ํ™”๋ฉด(์™€์ด์–ด ํ”„๋ ˆ์ž„, ์Šคํ† ๋ฆฌ๋ณด๋“œ)์— ๋™์  ํšจ๊ณผ๋ฅผ ์ ์šฉํ•ด ์‹ค์ œ ๊ตฌํ˜„๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจํ˜•

4)  ๋ชฉ์—…(Mockup) 

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

5)  ์œ ์Šค์ผ€์ด์Šค

๏‚Ÿ ์‚ฌ์šฉ์ž  ์ธก๋ฉด์˜  ์š”๊ตฌ์‚ฌํ•ญ

 

3.  ๊ฐ์„ฑ๊ณตํ•™

โ‘ด ๊ฐ์„ฑ๊ณตํ•™์˜  ๊ฐœ๋…

๏‚Ÿ ์ธ๊ฐ„์˜ ์‹ฌ์ƒ์„ ๊ตฌ์ฒด์ ์ธ ๋ฌผ๋ฆฌ์  ์„ค๊ณ„ ์š”์†Œ๋กœ ๋ฒˆ์—ญํ•˜์—ฌ ์ด๋ฅผ ์‹คํ˜„ํ•˜๋Š”  ๊ธฐ์ˆ 
๏‚Ÿ ์š”์†Œํ™”   → ํ˜•์ƒํ™”   → ๊ตฌํ˜„  → ์ƒ์‚ฐ

โ‘ต  ์ œํ’ˆ๊ณผ  ๊ด€๋ จ๋œ  ์ธ๊ฐ„์˜  ๊ฐ์„ฑ

๏‚Ÿ ๊ฐ๊ฐ์   ๊ฐ์„ฑ, ๊ธฐ๋Šฅ์   ๊ฐ์„ฑ, ๋ฌธํ™”์   ๊ฐ์„ฑ

โ‘ถ  ๊ฐ์„ฑ๊ณตํ•™์˜  ์ ‘๊ทผ  ๋ฐฉ๋ฒ•

1)  1๋ฅ˜  ์ ‘๊ทผ  ๋ฐฉ๋ฒ•
๏‚Ÿ ์ธ๊ฐ„์˜  ์–ดํœ˜๋ฅผ  ์ด์šฉํ•˜์—ฌ  ์ œํ’ˆ์—  ๋Œ€ํ•œ  ์ด๋ฏธ์ง€๋ฅผ  ์กฐ์‚ฌํ•˜๊ณ   ์ œํ’ˆ  ๋””์ž์ธ  ์š”์†Œ์™€  ์—ฐ๊ณ„์‹œํ‚ด
2)  2๋ฅ˜  ์ ‘๊ทผ  ๋ฐฉ๋ฒ•
๏‚Ÿ ๋ฌธํ™”์   ๊ฐ์„ฑ์˜  ์ผ๋ถ€๋ฅผ  ๋ฐ˜์˜ํ•œ  ๊ฐœ๋…
3)  3๋ฅ˜  ์ ‘๊ทผ  ๋ฐฉ๋ฒ•
๏‚Ÿ ํŠน์ •  ์‹œ์ œํ’ˆ์„  ์‚ฌ์šฉํ•˜์—ฌ  ๊ฐ๊ฐ  ์ฒ™๋„๋ฅผ  ๊ณ„์ธกํ•˜๊ณ  ์ •๋Ÿ‰ํ™”๋œ  ๊ฐ’์„  ํ™˜์‚ฐ 

 

Section  2.  UI  ๊ตฌํ˜„

1.  ํ™”๋ฉด  ๋ ˆ์ด์•„์›ƒ  ๊ตฌ์„ฑ

โ‘ด  ๋ ˆ์ด์•„์›ƒ (Layout) ์˜  ๊ฐœ๋…

๏‚Ÿ ํŠน์ •  ๊ณต๊ฐ„์—  ์—ฌ๋Ÿฌ  ๊ตฌ์„ฑ  ์š”์†Œ๋ฅผ  ๋ณด๊ธฐ  ์ข‹๊ฒŒ  ํšจ๊ณผ์ ์œผ๋กœ  ๋ฐฐ์น˜ํ•˜๋Š”  ์ž‘์—…

โ‘ต  HTML5 

๏‚Ÿ ์›น  ํŽ˜์ด์ง€์˜  ๊ธฐ๋ณธ  ๊ตฌ์กฐ๋ฅผ  ๋‹ด๋‹น

โ‘ถ  CSS(Cascading  Style  Sheet)

๏‚Ÿ ์ƒ‰์ƒ์ด๋‚˜  ํฌ๊ธฐ, ์ด๋ฏธ์ง€  ํฌ๊ธฐ๋‚˜  ์œ„์น˜, ๋ฐฐ์น˜  ๋ฐฉ๋ฒ•  ๋“ฑ  ์›น  ๋ฌธ์„œ์˜  ๋””์ž์ธ  ์š”์†Œ๋ฅผ  ๋‹ด๋‹น 

โ‘ท  JavaScript

๏‚Ÿ ์›น  ๋ฌธ์„œ์—  ์‚ฝ์ž…ํ•ด์„œ  ์‚ฌ์šฉํ•˜๋Š”  ์Šคํฌ๋ฆฝํŠธ  ์–ธ์–ด

 


 

 05  ์„œ๋ฒ„  ํ”„๋กœ๊ทธ๋žจ  ๊ตฌํ˜„

Section  1.  ๊ฐœ๋ฐœ  ํ™˜๊ฒฝ  ๊ตฌ์ถ•

 

1.  ์„œ๋ฒ„  ํ™˜๊ฒฝ  ๊ตฌ์ถ•

โ‘ด  ์›น  ์„œ๋ฒ„(WEB) 

๏‚Ÿ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ  ์ •์   ํŒŒ์ผ  (HTML,  CSS,  JS,  ์ด๋ฏธ์ง€)์„  ์ œ๊ณตํ•˜๋Š”  ์›น์„œ๋ฒ„  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด  ์„ค์น˜๋œ  ํ•˜๋“œ์›จ์–ด
๏‚Ÿ Apache  Web  Server,  IIS,  Nginx,  GWS  ๋“ฑ

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

๏‚Ÿ ๋™์ ์ธ  ์›น  ์„œ๋น„์Šค๋ฅผ  ์ œ๊ณตํ•˜๊ธฐ  ์œ„ํ•œ  ๋ฏธ๋“ค์›จ์–ด๊ฐ€  ์„ค์น˜๋œ  ํ•˜๋“œ์›จ์–ด
๏‚Ÿ WebLogic,  WebSpere,  Jeus,  Tomcat  ๋“ฑ

โ‘ถ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค  ์„œ๋ฒ„(DBMS)

๏‚Ÿ ๋ฐ์ดํ„ฐ์˜  ์ €์žฅ๊ณผ  ๊ด€๋ฆฌ๋ฅผ  ์œ„ํ•œ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค  ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€  ์„ค์น˜๋œ  ํ•˜๋“œ์›จ์–ด
๏‚Ÿ Oracle,  MySQL,  MS-SQL  ๋“ฑ

โ‘ท  ํŒŒ์ผ์„œ๋ฒ„

๏‚Ÿ ์‚ฌ์šฉ์ž์˜  ํŒŒ์ผ์„  ์ €์žฅํ•˜๊ณ , ํŒŒ์ผ์„  ๊ณต์œ ํ•   ๋ชฉ์ ์œผ๋กœ  ๊ตฌ์„ฑ๋œ  ํ•˜๋“œ์›จ์–ด 

โ‘ธ  Load  Balancer

๏‚Ÿ ์—ฌ๋Ÿฌ  ๋Œ€์˜  ์„œ๋ฒ„๊ฐ€  ์กด์žฌํ•   ๊ฒฝ์šฐ  ์š”์ฒญ์„  ์ ์ ˆํžˆ  ๋ถ„๋ฐฐํ•ด์ฃผ๋Š”  ์—ญํ• 
๏‚Ÿ ๋ถ„๋ฐฐ  ๋ฐฉ์‹  :  Random,  Least  loaded,  Round  Robin

โ‘น  CDN(Content  Delivery  Network)

๏‚Ÿ ์šฉ๋Ÿ‰์ด  ํฐ  ์ฝ˜ํ…์ธ ๋ฅผ  ๋น ๋ฅธ  ์†๋„๋กœ  ์ œ๊ณตํ•˜๊ธฐ  ์œ„ํ•ด  ์‚ฌ์šฉ์ž์™€  ๊ฐ€๊นŒ์šด  ๊ณณ์—  ๋ถ„์‚ฐ๋˜์–ด  ์žˆ๋Š”  ๋ฐ์ดํ„ฐ  ์ €์žฅ  ์„œ๋ฒ„

 

2.  ๊ฐœ๋ฐœ  ์†Œํ”„ํŠธ์›จ์–ด  ํ™˜๊ฒฝ

โ‘ด  ์‹œ์Šคํ…œ  ์†Œํ”„ํŠธ์›จ์–ด

๏‚Ÿ ์šด์˜์ฒด์ œ(OS,  Operating  System)
๏‚Ÿ JVM(Java  Virtual  Machine)
๏‚Ÿ Web  Server
๏‚Ÿ WAS(Web  Application  Server)
๏‚Ÿ DBMS(DataBase  Management  System)

โ‘ต  ๊ฐœ๋ฐœ  ์†Œํ”„ํŠธ์›จ์–ด (๋นŒ๊ตฌํ…Œํ˜•, ๋นŒ๋“œ๋„๊ตฌ ๊ตฌํ˜„๋„๊ตฌ ํ…Œ์ŠคํŠธ๋„๊ตฌ ํ˜•์ƒ๊ด€๋ฆฌ๋„๊ตฌ)

๏‚Ÿ ์š”๊ตฌ์‚ฌํ•ญ  ๊ด€๋ฆฌ  ๋„๊ตฌ
๏‚Ÿ ์„ค๊ณ„/๋ชจ๋ธ๋ง  ๋„๊ตฌ 
๏‚Ÿ ๊ตฌํ˜„๋„๊ตฌ
๏‚Ÿ ํ…Œ์ŠคํŠธ  ๋„๊ตฌ
๏‚Ÿ ํ˜•์ƒ๊ด€๋ฆฌ  ๋„๊ตฌ

 

3.  IDE(Integrated  Development  Environment)  ๋„๊ตฌ

๏‚Ÿ ์†Œํ”„ํŠธ์›จ์–ด  ๊ฐœ๋ฐœ์—  ํ•„์š”ํ•œ  ๋งŽ์€  ๋„๊ตฌ์˜  ๊ธฐ๋Šฅ์„  ํ•˜๋‚˜๋กœ  ๋ฌถ์–ด  ํ™œ์šฉํ•˜๋Š”  ์†Œํ”„ํŠธ์›จ์–ด

 

4.  ํ˜‘์—…  ๋„๊ตฌ

๏‚Ÿ ์—ฌ๋Ÿฌ  ์‚ฌ์šฉ์ž๊ฐ€  ๊ฐ๊ธฐ  ๋ณ„๊ฐœ์˜  ์ž‘์—…  ํ™˜๊ฒฝ์—์„œ  ํ†ตํ•ฉ๋œ  ํ•˜๋‚˜์˜  ํ”„๋กœ์ ํŠธ๋ฅผ  ๋™์‹œ์—  ์ˆ˜ํ–‰ํ•   ์ˆ˜  ์žˆ๋„๋ก  ๋„์™€์ฃผ๋Š” 
์†Œํ”„ํŠธ์›จ์–ด

 

5.  ํ˜•์ƒ  ๊ด€๋ฆฌ(SCM) ๋„๊ตฌ 0๏ธโƒฃ โญ

โ‘ด  ํ˜•์ƒ  ๊ด€๋ฆฌ  ๋„๊ตฌ์˜  ๊ฐœ๋…

๏‚Ÿ ์†Œํ”„ํŠธ์›จ์–ด  ์ƒ๋ช…์ฃผ๊ธฐ  ๋™์•ˆ  ๋ฐœ์ƒํ•˜๋Š”  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„  ํ†ต์ œํ•˜๊ธฐ  ์œ„ํ•œ  ๊ด€๋ฆฌ  ๋ฐฉ๋ฒ•
0๏ธโƒฃ ๏‚Ÿ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ์—ฌ๋Ÿฌ ๋ฒ„์ „๋“ค์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ผ๋ จ์˜ ํ™œ๋™

 

โ‘ต  ๋ณ€๊ฒฝ  ๊ด€๋ฆฌ / ๋ฒ„์ „  ๊ด€๋ฆฌ / ํ˜•์ƒ  ๊ด€๋ฆฌ 

1)  ๋ณ€๊ฒฝ  ๊ด€๋ฆฌ

๏‚Ÿ ์†Œ์Šค์˜  ๋ณ€๊ฒฝ  ์‚ฌํ•ญ์„  ๊ด€๋ฆฌ

2)  ๋ฒ„์ „  ๊ด€๋ฆฌ

๏‚Ÿ ๋ณ€๊ฒฝ์„  ๊ด€๋ฆฌํ•˜๊ธฐ  ์œ„ํ•œ  ํšจ๊ณผ์ ์ธ  ๋ฐฉ๋ฒ•
๏‚Ÿ ์ฒดํฌ์ธ, ์ฒดํฌ์•„์›ƒ, ๋ฆด๋ฆฌ์ฆˆ, ํผ๋ธ”๋ฆฌ์‹ฑ์˜  ๊ณผ์ •์„  ๋ฒ„์ „์œผ๋กœ  ๊ด€๋ฆฌํ•   ์ˆ˜  ์žˆ๋‹ค.

3)  ํ˜•์ƒ  ๊ด€๋ฆฌ

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

 

โ‘ถ  ํ˜•์ƒ  ๊ด€๋ฆฌ  ์ ˆ์ฐจ โญ์‹ํ†ต๊ฐ๊ธฐโญ

1)  ํ˜•์ƒ  ์‹๋ณ„

๏‚Ÿ ํ˜•์ƒ  ๊ด€๋ฆฌ์˜  ์‹œ์ž‘์œผ๋กœ  ์‹œ์Šคํ…œ์„  ๊ตฌ์„ฑํ•˜๋Š”  ์š”์†Œ๋“ค  ์ค‘  ํ˜•์ƒ  ๊ด€๋ฆฌ์˜  ๋Œ€์ƒ๋“ค์„  ๊ตฌ๋ถ„ํ•˜๊ณ   ๊ด€๋ฆฌ  ๋ชฉ๋ก์˜  ๋ฒˆํ˜ธ๋ฅผ 
์ •์˜ํ•˜์—ฌ  ๋ถ€์—ฌํ•œ๋‹ค.

2)  ํ˜•์ƒ  ํ†ต์ œโญ 0๏ธโƒฃ(์„œ์ˆ )

๏‚Ÿ ์‹๋ณ„๋œ ํ˜•์ƒ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์š”๊ตฌ๋ฅผ ๊ฒ€ํ† ํ•˜์—ฌ ํ˜„์žฌ์˜ ๊ธฐ์ค€์„ ์ด ์ž˜ ๋ฐ˜์˜๋  ์ˆ˜ ์žˆ๋„๋ก ์กฐ์ •ํ•˜๋Š” ์ž‘์—…
๏‚Ÿ  ์†Œํ”„ํŠธ์›จ์–ด  ํ˜•์ƒ  ๋ณ€๊ฒฝ  ์š”์ฒญ์„  ๊ฒ€ํ† ํ•˜๊ณ   ์Šน์ธํ•˜์—ฌ  ํ˜„์žฌ์˜  ๋ฒ ์ด์Šค๋ผ์ธ์—  ๋ฐ˜์˜๋   ์ˆ˜  ์žˆ๋„๋ก  ํ†ต์ œ
๏‚Ÿ ํ˜•์ƒํ†ต์ œ๊ฐ€  ์ด๋ฃจ์–ด์ง€๊ธฐ  ์œ„ํ•ด์„œ๋Š”  ํ˜•์ƒ  ํ†ต์ œ  ์œ„์›ํšŒ (CCB,  Configuration  Control  Board)์˜  ์Šน์ธ์„  ํ†ตํ•œ ๋ณ€๊ฒฝ  ํ†ต์ œ๊ฐ€  ์ด๋ฃจ์–ด์ ธ์•ผ  ํ•œ๋‹ค.

3)  ํ˜•์ƒ  ๊ฐ์‚ฌ

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

4)  ํ˜•์ƒ  ๊ธฐ๋ก / ๋ณด๊ณ 

๏‚Ÿ ํ”„๋กœ์ ํŠธ ํŒ€, ํšŒ์‚ฌ, ํด๋ผ์ด์–ธํŠธ  ๋“ฑ์—๊ฒŒ  ์†Œํ”„ํŠธ์›จ์–ด  ๊ฐœ๋ฐœ  ์ƒํƒœ์—  ๋Œ€ํ•œ  ๋ณด๊ณ ์„œ๋ฅผ  ์ œ๊ณต
๏‚Ÿ ๋ฒ ์ด์Šค๋ผ์ธ  ์‚ฐ์ถœ๋ฌผ์—  ๋Œ€ํ•œ  ๋ณ€๊ฒฝ๊ณผ  ์ฒ˜๋ฆฌ  ๊ณผ์ •์—์„œ์˜  ๋ณ€๊ฒฝ์„  ๋ชจ๋‘  ๊ธฐ๋ก

 

 

6.  ๋ฒ„์ „  ๊ด€๋ฆฌ  ๋„๊ตฌ

 

โ‘ด  ์†Œํ”„ํŠธ์›จ์–ด  ๋ฒ„์ „  ๊ด€๋ฆฌ  ๋„๊ตฌ  ์œ ํ˜•

1)  ๊ณต์œ   ํด๋”  ๋ฐฉ์‹ (RCS,  SCCS) 

๏‚Ÿ ๊ฐœ๋ฐœ์ด  ์™„๋ฃŒ๋œ  ํŒŒ์ผ์„  ๋งค์ผ  ์•ฝ์†๋œ  ์œ„์น˜์˜  ๊ณต์œ   ํด๋”์—  ๋ณต์‚ฌ (ํ•œ ๋ช…๋งŒ)

2)  ํด๋ผ์ด์–ธํŠธ / ์„œ๋ฒ„  ๋ฐฉ์‹ (CVS,  SVN, BitKeeper) 

๏‚Ÿ ์ค‘์•™์—  ๋ฒ„์ „  ๊ด€๋ฆฌ  ์‹œ์Šคํ…œ์ด  ํ•ญ์‹œ  ๋™์ž‘

3)  ๋ถ„์‚ฐ  ์ €์žฅ์†Œ  ๋ฐฉ์‹ (Git

๏‚Ÿ ๋กœ์ปฌ  ์ €์žฅ์†Œ์™€  ์›๊ฒฉ  ์ €์žฅ์†Œ  ๊ตฌ์กฐ

 

โ‘ต  ๋ฒ„์ „  ๊ด€๋ฆฌ  ๋„๊ตฌ๋ณ„  ํŠน์ง• 2๏ธโƒฃ

1)  CVS 

๏‚Ÿ ์˜ค๋žœ  ๊ธฐ๊ฐ„  ์‚ฌ์šฉ๋œ  ํ˜•์ƒ  ๊ด€๋ฆฌ  ๋„๊ตฌ๋กœ, ๋‹ค์–‘ํ•œ  ์šด์˜์ฒด์ œ๋ฅผ  ์ง€์›

2)  SVN

๏‚Ÿ CVS์˜  ๋‹จ์ ์„  ๋ณด์™„ํ•˜๊ธฐ  ์œ„ํ•ด  ๋งŒ๋“ค์–ด์กŒ๋‹ค
๏‚Ÿ ์ตœ์ดˆ  1ํšŒ์—  ํ•œํ•ด  ํŒŒ์ผ  ์›๋ณธ์„  ์ €์žฅํ•˜๊ณ  ๊ทธ  ์ดํ›„์—๋Š”  ์‹ค์ œ  ํŒŒ์ผ์ด  ์•„๋‹Œ  ์›๋ณธ๊ณผ  ์ฐจ์ด์ ์„  ์ €์žฅํ•˜๋Š”  ๋ฐฉ์‹ 

3)  Git

๏‚Ÿ ๋ฆฌ๋ˆ„์Šค  ํ† ๋ฐœ์ฆˆ๊ฐ€  ๋ฆฌ๋ˆ…์Šค  ์ปค๋„์˜  ๊ฐœ๋ฐœ์„  ์œ„ํ•ด  ๋งŒ๋“ค์—ˆ๋‹ค.
๏‚Ÿ ์›๊ฒฉ  Repository์—  ์žฅ์• ๊ฐ€  ์žˆ์–ด๋„  ๋ฒ„์ „  ๊ด€๋ฆฌ๊ฐ€  ๊ฐ€๋Šฅํ•˜๋‹ค.
๏‚Ÿ commit(์ง€์—ญ ์ €์žฅ์†Œ์— ์ €์žฅ), push(์›๊ฒฉ ์ €์žฅ์†Œ์— ๋กœ์ปฌ ์ €์žฅ์†Œ ๋ณ€๊ฒฝ ๋‚ด์—ญ ๋ฐ˜์˜)

4)  Clear  Case

๏‚Ÿ IBM์—์„œ  ๊ฐœ๋ฐœ๋œ  ์œ ๋ฃŒ  ๋ฒ„์ „์˜  ํ˜•์ƒ  ๊ด€๋ฆฌ  ํˆด
๏‚Ÿ ์„œ๋ฒ„๊ฐ€  ๋ถ€์กฑํ•   ๋•Œ  ์„œ๋ฒ„๋ฅผ  ํ•˜๋‚˜์”ฉ  ๋Š˜๋ ค  ํ™•์žฅํ•   ์ˆ˜  ์žˆ๋‹ค.

5)  BitKeeper

๏‚Ÿ SVN๊ณผ  ๋น„์Šทํ•œ  ์ค‘์•™  ํ†ต์ œ  ๋ฐฉ์‹์œผ๋กœ  ๋Œ€๊ทœ๋ชจ  ํ”„๋กœ์ ํŠธ์—์„œ  ๋น ๋ฅธ  ์†๋„๋ฅผ  ๋‚ด๋„๋ก  ๊ฐœ๋ฐœ๋œ  ๋ฒ„์ „๊ด€๋ฆฌ  ๋„๊ตฌ

6)  RCS(Revision  Control  System)

๏‚Ÿ ์†Œ์Šค  ํŒŒ์ผ์˜  ์ˆ˜์ •์„  ํ•œ  ์‚ฌ๋žŒ๋งŒ์œผ๋กœ  ์ œํ•œํ•˜์—ฌ  ๋‹ค์ˆ˜์˜  ์‚ฌ๋žŒ์ด  ํŒŒ์ผ์˜  ์ˆ˜์ •์„  ๋™์‹œ์—  ํ•   ์ˆ˜  ์—†๋„๋ก  ํŒŒ์ผ์„  ์ž ๊ธˆ 
์ฒ˜๋ฆฌํ•˜๋Š”  ๋ฐฉ์‹์œผ๋กœ  ๋ฒ„์ „  ์ปจํŠธ๋กค์„  ์ˆ˜ํ–‰

 

โ‘ถ  ๋ฒ„์ „  ๊ด€๋ฆฌ  ์ฃผ์š”  ์šฉ์–ด

 

7.  ๋นŒ๋“œ  ๋„๊ตฌ

โ‘ด  ๋นŒ๋“œ์˜  ๊ฐœ๋…

๏‚Ÿ ์†Œ์Šค์ฝ”๋“œ  ํŒŒ์ผ๋“ค์„  ์ปดํ“จํ„ฐ์—์„œ  ์‹คํ–‰ํ•   ์ˆ˜  ์žˆ๋Š”  ์†Œํ”„ํŠธ์›จ์–ด๋กœ  ๋ณ€ํ™˜ํ•˜๋Š”  ์ผ๋ จ์˜  ๊ณผ์ •

โ‘ต  ๋นŒ๋“œ  ์ž๋™ํ™”  ๋„๊ตฌ  ์ข…๋ฅ˜โญ

1)  Make

๏‚Ÿ ์œ ๋‹‰์Šค  ๊ณ„์—ด  ์šด์˜์ฒด์ œ์—์„œ  ์ฃผ๋กœ  ์‚ฌ์šฉ๋˜๋Š”  ํ”„๋กœ๊ทธ๋žจ  ๋นŒ๋“œ  ๋„๊ตฌ์ด๋‹ค.

2)  Ant

๏‚Ÿ Java ๊ธฐ๋ฐ˜์˜  ๋นŒ๋“œ  ๋„๊ตฌ๋กœ  ๋‹ค๋ฅธ  ๋นŒ๋“œ  ๋„๊ตฌ๋ณด๋‹ค  ์—ญ์‚ฌ๊ฐ€  ์˜ค๋ž˜๋˜์—ˆ๋‹ค.

3)  Maven

๏‚Ÿ ํ”„๋กœ์ ํŠธ์—  ํ•„์š”ํ•œ  ๋ชจ๋“   ์˜์กด์„ฑ (Dependency)์„  ๋ฆฌ์ŠคํŠธ  ํ˜•ํƒœ๋กœ Maven ์—๊ฒŒ  ์•Œ๋ ค  ๊ด€๋ฆฌํ•   ์ˆ˜  ์žˆ๋„๋ก  ๋•๋Š”  ๋ฐฉ์‹์ด๋‹ค.

4)  Jenkins

๏‚Ÿ Java ๊ธฐ๋ฐ˜์˜  ์˜คํ”ˆ์†Œ์Šค๋กœ ์†Œํ”„ํŠธ์›จ์–ด  ๊ฐœ๋ฐœ  ์‹œ  ์ง€์†์   ํ†ตํ•ฉ ์„œ๋น„์Šค(Continuous  Integration)๋ฅผ  ์ œ๊ณตํ•˜๋Š”  ํˆด

5)  Gradle

๏‚Ÿ Groovy๋ฅผ  ๊ธฐ๋ฐ˜์œผ๋กœ  ํ•œ  ์˜คํ”ˆ  ์†Œ์Šค  ํ˜•ํƒœ์˜  ์ž๋™ํ™”  ๋„๊ตฌ๋กœ  ์•ˆ๋“œ๋กœ์ด๋“œ  ์•ฑ  ๊ฐœ๋ฐœ  ํ™˜๊ฒฝ์—์„œ  ์‚ฌ์šฉ

 

Section  2.  ๊ฐœ๋ฐœ  ํ”„๋ ˆ์ž„์›Œํฌ

1.  ํ”„๋ ˆ์ž„์›Œํฌ์˜  ๊ฐœ๋…

๏‚Ÿ ์†Œํ”„ํŠธ์›จ์–ด  ๊ฐœ๋ฐœ์„  ์œ„ํ•ด  ์ „์ฒด์ ์ธ  ํ‹€์„  ์ œ๊ณตํ•˜๋Š”  ๋ฐ˜์ œํ’ˆ  ํ˜•ํƒœ์˜  ์†Œํ”„ํŠธ์›จ์–ด

2.  ํ”„๋ ˆ์ž„์›Œํฌ์˜  ํŠน์ง•

๏‚Ÿ ๋ชจ๋“ˆํ™”
๏‚Ÿ ์žฌ์‚ฌ์šฉ์„ฑ
๏‚Ÿ ํ™•์žฅ์„ฑ
๏‚Ÿ ์ œ์–ด์˜  ์—ญํ๋ฆ„ โญ

3.  ํ”„๋ ˆ์ž„์›Œํฌ์˜  ๊ตฌ๋ถ„

4.  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (Library) 

๏‚Ÿ ํ”„๋กœ๊ทธ๋žจ  ์–ธ์–ด๊ฐ€  ์‚ฌ์šฉ๋˜๋Š”  ๋ชจ๋“ˆ์„  ๋ชจ์•„๋‘”  ๊ฒƒ

5.  API (Application  Programming  Interface)

๏‚Ÿ ์†Œํ”„ํŠธ์›จ์–ด์—  ์„œ๋น„์Šค๋ฅผ  ์ œ๊ณตํ•˜๋Š”  ํ”„๋กœ๊ทธ๋žจ

 

 

Section  3.  ๋ชจ๋“ˆ  ๊ตฌํ˜„ (๋ชจ๋“ˆ: ํ•˜๋‚˜์˜ ์™„์ „ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋…๋ฆฝ๋œ ์‹ค์ฒด)

1.  ๋‹จ์œ„  ๋ชจ๋“ˆ  ๊ตฌํ˜„

โ‘ด  ํšจ๊ณผ์ ์ธ  ๋ชจ๋“ˆํ™”0๏ธโƒฃ โญโญ

๏‚Ÿ ๋ชจ๋“ˆํ™”๋ž€ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹œ์Šคํ…œ์„ ๋ถ„ํ•ดํ•˜๊ณ  ์ถ”์ƒํ™”ํ•˜๋Š” ๊ธฐ๋ฒ•
๏‚Ÿ ๊ฒฐํ•ฉ๋„๋ฅผ  ๋‚ฎ์ถ”๊ณ   ์‘์ง‘๋„๋ฅผ  ๋†’์—ฌ  ๋ชจ๋“ˆ์˜  ๋…๋ฆฝ์„ฑ์„  ๋†’์ž„
๏‚Ÿ FAN-OUT ์ตœ์†Œํ™”,  FAN-IN ์ฆ๊ฐ€

โ‘ต  ๋‹จ์œ„  ๋ชจ๋“ˆ  ์„ค๊ณ„์˜  ์›๋ฆฌ

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

โ‘ถ  ๋‹จ์œ„  ๋ชจ๋“ˆ  ์ž‘์„ฑ  ์›์น™ (์ •๋ช…์™„์ผ์ถ”)

๏‚Ÿ ์ •ํ™•์„ฑ, ๋ช…ํ™•์„ฑ, ์™„์ „์„ฑ, ์ผ๊ด€์„ฑ, ์ถ”์ ์„ฑ

 

2.  ๊ฒฐํ•ฉ๋„โญโญ 1๏ธโƒฃ1๏ธโƒฃ

โ‘ด  ๊ฒฐํ•ฉ๋„ (Coupling)์˜  ๊ฐœ๋… 

๏‚Ÿ ๋‘  ๋ชจ๋“ˆ  ์‚ฌ์ด์˜  ์—ฐ๊ด€  ๊ด€๊ณ„
๏‚Ÿ ๊ฒฐํ•ฉ๋„๊ฐ€  ๋‚ฎ์„์ˆ˜๋ก  ์ž˜  ์„ค๊ณ„๋œ  ๋ชจ๋“ˆ์ด๋‹ค.

โ‘ต  ๊ฒฐํ•ฉ๋„  ์œ ํ˜• 

๏‚Ÿ ์ž๋ฃŒ  ๊ฒฐํ•ฉ๋„(Data  Coupling) ๊ฒฐํ•ฉ๋„ ๊ฐ€์žฅ ๋‚ฎ์Œ, ์ข‹์€ ํ˜•ํƒœ
๏‚Ÿ ์Šคํƒฌํ”„  ๊ฒฐํ•ฉ๋„(Stamp  Coupling)
๏‚Ÿ ์ œ์–ด  ๊ฒฐํ•ฉ๋„(Control  Coupling)
๏‚Ÿ ์™ธ๋ถ€  ๊ฒฐํ•ฉ๋„(External  Coupling)
๏‚Ÿ ๊ณตํ†ต  ๊ฒฐํ•ฉ๋„(Common  Coupling)
๏‚Ÿ ๋‚ด์šฉ  ๊ฒฐํ•ฉ๋„(Content  Coupling)

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

 

3.  ์‘์ง‘๋„ โญโญ1๏ธโƒฃ

โ‘ด  ์‘์ง‘๋„(Cohesion) ์˜  ๊ฐœ๋…

๏‚Ÿ ๋ชจ๋“ˆ์˜  ๋…๋ฆฝ์„ฑ์„  ๋‚˜ํƒ€๋‚ด๋Š”  ๊ฐœ๋…์œผ๋กœ, ๋ชจ๋“ˆ  ๋‚ด๋ถ€  ๊ตฌ์„ฑ์š”์†Œ  ๊ฐ„  ์—ฐ๊ด€  ์ •๋„  
๏‚Ÿ ์‘์ง‘๋„๋Š”  ๋†’์„์ˆ˜๋ก  ์ข‹๊ณ , ๊ฒฐํ•ฉ๋„๋Š”  ๋‚ฎ์„์ˆ˜๋ก  ์ด์ƒ์  

โ‘ต  ์‘์ง‘๋„  ์œ ํ˜• 

๏‚Ÿ ๊ธฐ๋Šฅ์   ์‘์ง‘๋„(Functional  Cohesion) ์‘์ง‘๋„ ๊ฐ€์žฅ ๋†’์Œ, ์ข‹์€ ํ˜•ํƒœ
๏‚Ÿ ์ˆœ์ฐจ์   ์‘์ง‘๋„(Sequential  Cohesion)
๏‚Ÿ ํ†ต์‹ ์   ์‘์ง‘๋„(Communication  Cohesion)
๏‚Ÿ ์ ˆ์ฐจ์   ์‘์ง‘๋„(Procedural  Cohesion)
๏‚Ÿ ์‹œ๊ฐ„์   ์‘์ง‘๋„(Temporal  Cohesion)
๏‚Ÿ ๋…ผ๋ฆฌ์   ์‘์ง‘๋„(Logical  Cohesion)
๏‚Ÿ ์šฐ์—ฐ์   ์‘์ง‘๋„(Coincidental  Cohesion)

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

 

4.  ํŒฌ์ธ(Fan-in), ํŒฌ์•„์›ƒ (Fan-out)  2๏ธโƒฃ0๏ธโƒฃ

๏‚Ÿ ์†Œํ”„ํŠธ์›จ์–ด์˜  ๊ตฌ์„ฑ์š”์†Œ์ธ  ๋ชจ๋“ˆ์„  ๊ณ„์ธต์ ์œผ๋กœ  ๋ถ„์„ํ•˜๊ธฐ  ์œ„ํ•ด  ํ™œ์šฉ
๏‚Ÿ ํŒฌ์ธ (Fan-in)  : ํ•ด๋‹น  ๋ชจ๋“ˆ๋กœ  ๋“ค์–ด์˜ค๋Š”  ์ƒ์œ„  ๋ชจ๋“ˆ  ์ˆ˜ 
๏‚Ÿ ํŒฌ์•„์›ƒ  (Fan-out)  :  ํ•ด๋‹น  ๋ชจ๋“ˆ์—์„œ  ํ˜ธ์ถœํ•˜๋Š”  ํ•˜์œ„  ๋ชจ๋“ˆ  ์ˆ˜

 

5.  ๊ณตํ†ต  ๋ชจ๋“ˆ  ๊ตฌํ˜„ 

โ‘ด  ๊ณตํ†ต  ๋ชจ๋“ˆ  ๊ตฌํ˜„์š”์†Œ

๊ณตํ†ต ๋ชจ๋“ˆ ๊ตฌํ˜„ ์ ˆ์ฐจ: DTO/VO -> SQL -> DAO -> Service -> Controller -> View
๏‚Ÿ DTO  :  ํ”„๋กœ์„ธ์Šค  ์‚ฌ์ด์—์„œ  ๋ฐ์ดํ„ฐ๋ฅผ  ์ „์†กํ•˜๋Š”  ๊ฐ์ฒด
๏‚Ÿ VO  :  ๋„๋ฉ”์ธ์—์„œ  ์†์„ฑ๋“ค์„  ๋ฌถ์–ด์„œ  ํŠน์ •  ๊ฐ’์„  ๋‚˜ํƒ€๋‚ด๋Š”  ๊ฐ์ฒด
๏‚Ÿ DAO  :  DB์— ์‹ค์งˆ์ ์œผ๋กœ  ์ ‘๊ทผํ•˜๋Š”  ๊ฐ์ฒด
๏‚Ÿ Service  :  DAO  ํด๋ž˜์Šค๋ฅผ ํ˜ธ์ถœํ•˜๋Š”  ๊ฐ์ฒด
๏‚Ÿ Controller:  ๋น„์ฆˆ๋‹ˆ์Šค  ๋กœ์ง์„  ์ˆ˜ํ–‰ํ•˜๋Š”  ๊ฐ์ฒด

โ‘ต  Annotation 

๏‚Ÿ ์ž๋ฐ”์ฝ”๋“œ์—  ์ฃผ์„์ฒ˜๋Ÿผ  ๋‹ฌ์•„  ํŠน์ˆ˜ํ•œ  ์˜๋ฏธ๋ฅผ  ๋ถ€์—ฌํ•œ๋‹ค.

 

 

Section  4.  ์„œ๋ฒ„  ํ”„๋กœ๊ทธ๋žจ  ๊ตฌํ˜„

 

1.  ์„œ๋ฒ„  ํ”„๋กœ๊ทธ๋žจ  ๊ตฌํ˜„

 

โ‘ด  MVC  ๋ชจ๋ธ์˜  ๊ณ„์ธต

1)  ํ”„๋ ˆ์  ํ…Œ์ด์…˜  ๊ณ„์ธต (Presentation  Layer)  

๏‚Ÿ ์‚ฌ์šฉ์ž  ์ธํ„ฐํŽ˜์ด์Šค

2) ์ œ์–ด  ๊ณ„์ธต (Control  Layer)  

๏‚Ÿ ์–ด๋–ค  ์š”์ฒญ์ด  ๋“ค์–ด์™”์„  ๋•Œ  ์–ด๋–ค  ๋กœ์ง์ด  ์ฒ˜๋ฆฌํ•ด์•ผ  ํ•˜๋Š”์ง€๋ฅผ  ๊ฒฐ์ •ํ•œ๋‹ค.

3)  ๋น„์ฆˆ๋‹ˆ์Šค  ๋กœ์ง  ๊ณ„์ธต (Business  Logic  Layer) 

๏‚Ÿ ํ•ต์‹ฌ  ์—…๋ฌด๋ฅผ  ์–ด๋–ป๊ฒŒ  ์ฒ˜๋ฆฌํ•˜๋Š”์ง€์—  ๋Œ€ํ•œ  ๋ฐฉ๋ฒ•์„  ๊ตฌํ˜„ํ•˜๋Š”  ๊ณ„์ธต

4)  ํผ์‹œ์Šคํ„ด์Šค  ๊ณ„์ธต (Persistence  Layer)  

๏‚Ÿ ๋ฐ์ดํ„ฐ  ์ฒ˜๋ฆฌ๋ฅผ  ๋‹ด๋‹นํ•˜๋Š”  ๊ณ„์ธต

5)  ๋„๋ฉ”์ธ  ๋ชจ๋ธ  ๊ณ„์ธต (Domain  Model  Layer)  

๏‚Ÿ ๊ฐ  ๊ณ„์ธต  ์‚ฌ์ด์—  ์ „๋‹ฌ๋˜๋Š”  ์‹ค์งˆ์ ์ธ  ๋น„์ฆˆ๋‹ˆ์Šค  ๊ฐ์ฒด

 

2.  DBMS  ์ ‘์†๊ธฐ์ˆ 

โ‘ด  DBMS  ์ ‘์†๊ธฐ์ˆ   ์ข…๋ฅ˜

๏‚Ÿ ์†Œ์ผ“ํ†ต์‹ 
๏‚Ÿ Vender  API
๏‚Ÿ JDBC(Java  DataBase  Connectivity)
๏‚Ÿ ODBC(Open  DataBase  Connectivity)

 

3.  ORM(Object-Relational  Mapping)  ํ”„๋ ˆ์ž„์›Œํฌ

โ‘ด  ORM  ํ”„๋ ˆ์ž„์›Œํฌ์˜  ๊ฐœ๋…

๏‚Ÿ ๊ฐ์ฒด์™€  ๊ด€๊ณ„ํ˜•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜  ๋ฐ์ดํ„ฐ๋ฅผ  ์ž๋™์œผ๋กœ  ๋งคํ•‘(์—ฐ๊ฒฐ) ํ•ด  ์ฃผ๋Š”  ๊ฒƒ

โ‘ต  ๋งคํ•‘  ๊ธฐ์ˆ   ๋น„๊ต

1)  SQL  Mapper

๏‚Ÿ SQL์„  ๋ช…์‹œํ•˜์—ฌ  ๋‹จ์ˆœํžˆ  ํ•„๋“œ๋ฅผ  ๋งคํ•‘์‹œํ‚ค๋Š”  ๊ฒƒ์ด  ๋ชฉ์ 

2)  OR  Mapping(=ORM)

๏‚Ÿ ๊ฐ์ฒด๋ฅผ  ํ†ตํ•ด  ๊ฐ„์ ‘์ ์œผ๋กœ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ  ๋‹ค๋ฃฌ๋‹ค.

 

4.์‹œํ์–ด  ์ฝ”๋”ฉ (Secure  Coding) 

โ‘ด  OWASP(The  Open  Web  Application  Security  Project)

๏‚Ÿ ์˜คํ”ˆ์†Œ์Šค  ์›น  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ๋ณด์•ˆ  ํ”„๋กœ์ ํŠธ
๏‚Ÿ OWASP  Top  10
-  ์›น  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ์ทจ์•ฝ์   ์ค‘  ๋นˆ๋„๊ฐ€  ๋งŽ์ด  ๋ฐœ์ƒํ•˜๊ณ , ๋ณด์•ˆ์ƒ  ์˜ํ–ฅ์„  ์ค„  ์ˆ˜  ์žˆ๋Š”  10๊ฐ€์ง€๋ฅผ  ์„ ์ •ํ•˜์—ฌ  ๋ฐœํ‘œ

โ‘ต  ์‹œํ์–ด  ์ฝ”๋”ฉ  ๊ฐ€์ด๋“œ

1)  ์ž…๋ ฅ  ๋ฐ์ดํ„ฐ  ๊ฒ€์ฆ  ๋ฐ  ํ‘œํ˜„

๏‚Ÿ ํ”„๋กœ๊ทธ๋žจ  ์ž…๋ ฅ๊ฐ’์—  ๋Œ€ํ•œ  ๊ฒ€์ฆ  ๋ˆ„๋ฝ  ๋˜๋Š”  ๋ถ€์ ์ ˆํ•œ  ๊ฒ€์ฆ, ๋ฐ์ดํ„ฐ  ํ˜•์‹์„  ์ž˜๋ชป  ์ง€์ •ํ•˜์—ฌ  ๋ฐœ์ƒํ•˜๋Š”  ๋ณด์•ˆ  ์•ฝ์ 
๏‚Ÿ ๋ณด์•ˆ  ์•ฝ์   ์ข…๋ฅ˜
-  SQL  Injection
-  XSS(ํฌ๋กœ์Šค  ์‚ฌ์ดํŠธ  ์Šคํฌ๋ฆฝํŠธ) 
-  ์ž์›  ์‚ฝ์ž…
-  ์œ„ํ—˜ํ•œ  ํ˜•์‹  ํŒŒ์ผ  ์—…๋กœ๋“œ
-  ๋ช…๋ น  ์‚ฝ์ž…
-  ๋ฉ”๋ชจ๋ฆฌ  ๋ฒ„ํผ  ์˜ค๋ฒ„ํ”„๋กœ

2)  ๋ณด์•ˆ  ๊ธฐ๋Šฅ

๏‚Ÿ ๋ณด์•ˆ  ๊ธฐ๋Šฅ์„  ๋ถ€์ ์ ˆํ•˜๊ฒŒ  ๊ตฌํ˜„ํ•˜๋Š”  ๊ฒฝ์šฐ  ๋ฐœ์ƒํ•   ์ˆ˜  ์žˆ๋Š”  ๋ณด์•ˆ  ์•ฝ์ 
๏‚Ÿ ๋ณด์•ˆ  ์•ฝ์   ์ข…๋ฅ˜
-  ์ ์ ˆํ•œ  ์ธ์ฆ  ์—†์ด  ์ค‘์š”๊ธฐ๋Šฅ  ํ—ˆ์šฉ
-  ๋ถ€์ ์ ˆํ•œ  ์ธ๊ฐ€
-  ์ทจ์•ฝํ•œ  ์•”ํ˜ธํ™”  ์•Œ๊ณ ๋ฆฌ์ฆ˜  ์‚ฌ์šฉ
-  ํ•˜๋“œ์ฝ”๋”ฉ๋œ  ํŒจ์Šค์›Œ๋“œ
-  ํŒจ์Šค์›Œ๋“œ  ํ‰๋ฌธ  ์ €์žฅ
-  ์ทจ์•ฝํ•œ  ํŒจ์Šค์›Œ๋“œ  ํ—ˆ์šฉ

3)  ์‹œ๊ฐ„  ๋ฐ  ์ƒํƒœ

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

4)  ์—๋Ÿฌ  ์ฒ˜๋ฆฌ

๏‚Ÿ ์—๋Ÿฌ๋ฅผ  ์ฒ˜๋ฆฌํ•˜์ง€  ์•Š๊ฑฐ๋‚˜  ๋ถˆ์ถฉ๋ถ„ํ•˜๊ฒŒ  ์ฒ˜๋ฆฌํ•˜์—ฌ  ์—๋Ÿฌ  ์ •๋ณด์—  ์ค‘์š”  ์ •๋ณด๊ฐ€  ํฌํ•จ๋   ๋•Œ  ๋ฐœ์ƒํ•   ์ˆ˜  ์žˆ๋Š”  ๋ณด์•ˆ  ์•ฝ์ 
๏‚Ÿ ๋ณด์•ˆ  ์•ฝ์   ์ข…๋ฅ˜
-  ์˜ค๋ฅ˜  ๋ฉ”์‹œ์ง€  ์ •๋ณด  ๋…ธ์ถœ
-  ์˜ค๋ฅ˜  ์ƒํ™ฉ  ๋Œ€์‘  ๋ถ€์žฌ
-  ๋ถ€์ ์ ˆํ•œ  ์˜ˆ์™ธ  ์ฒ˜๋ฆฌ

5)  ์ฝ”๋“œ  ์˜ค๋ฅ˜

๏‚Ÿ ๊ฐœ๋ฐœ์ž๊ฐ€  ๋ฒ”ํ•   ์ˆ˜  ์žˆ๋Š”  ์ฝ”๋”ฉ  ์˜ค๋ฅ˜๋กœ  ์ธํ•ด  ์œ ๋ฐœ๋˜๋Š”  ๋ณด์•ˆ  ์•ฝ์ 
๏‚Ÿ ๋ณด์•ˆ  ์•ฝ์   ์ข…๋ฅ˜
-  ๋„  ํฌ์ธํ„ฐ  ์—ญ์ฐธ์กฐ
-  ๋ถ€์ ์ ˆํ•œ  ์ž์›  ํ•ด์ œ
-  ํ•ด์ œ๋œ  ์ž์›  ์‚ฌ์šฉ
-  ์ดˆ๊ธฐํ™”๋˜์ง€  ์•Š์€  ๋ณ€์ˆ˜  ์‚ฌ์šฉ

6)  ์บก์Šํ™”

๏‚Ÿ ์ค‘์š”ํ•œ  ๋ฐ์ดํ„ฐ  ๋˜๋Š”  ๊ธฐ๋Šฅ์„ฑ์„  ๋ถˆ์ถฉ๋ถ„ํ•˜๊ฒŒ  ์บก์Šํ™”ํ•˜๊ฑฐ๋‚˜  ์ž˜๋ชป  ์‚ฌ์šฉํ•ด  ๋ฐœ์ƒํ•˜๋Š”  ๋ณด์•ˆ  ์•ฝ์ 
๏‚Ÿ ๋ณด์•ˆ  ์•ฝ์   ์ข…๋ฅ˜
-  ์ž˜๋ชป๋œ  ์„ธ์…˜์—  ์˜ํ•œ  ์ •๋ณด  ๋…ธ์ถœ
-  ์ œ๊ฑฐ๋˜์ง€  ์•Š์€  ๋””๋ฒ„๊ทธ  ์ฝ”๋“œ
-  ์‹œ์Šคํ…œ  ์ •๋ณด  ๋…ธ์ถœ
-  ์ž˜๋ชป๋œ  ์ ‘๊ทผ  ์ง€์ •์ž

7)  API  ์˜ค์šฉ

๏‚Ÿ ์˜๋„๋œ  ์‚ฌ์šฉ์—  ๋ฐ˜ํ•˜๋Š”  ๋ฐฉ๋ฒ•์œผ๋กœ  API ๋ฅผ  ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜  ๋ณด์•ˆ์—  ์ทจ์•ฝํ•œ  API ๋ฅผ  ์‚ฌ์šฉํ•˜์—ฌ  ๋ฐœ์ƒํ•   ์ˆ˜  ์žˆ๋Š”  ๋ณด์•ˆ  ์•ฝ์ 
๏‚Ÿ ๋ณด์•ˆ  ์•ฝ์   ์ข…๋ฅ˜
-  DNS์—  ์˜์กดํ•œ  ๋ณด์•ˆ  ๊ฒฐ์ •
-  ์ทจ์•ฝํ•œ  ์‚ฌ์šฉ API 

 

Section  5.  ๋ฐฐ์น˜  ํ”„๋กœ๊ทธ๋žจ  ๊ตฌํ˜„

1.  ๋ฐฐ์น˜  ํ”„๋กœ๊ทธ๋žจ

โ‘ด  ๋ฐฐ์น˜์˜  ๊ฐœ๋…

๏‚Ÿ ๋ฐ์ดํ„ฐ๋ฅผ  ์ผ๊ด„์ ์œผ๋กœ  ๋ชจ์•„์„œ  ์ฒ˜๋ฆฌํ•˜๋Š”  ๋Œ€๋Ÿ‰์˜  ์ž‘์—…์„  ์ฒ˜๋ฆฌ <-> ์‹ค์‹œ๊ฐ„๊ณผ ๋ฐ˜๋Œ€

โ‘ต  ๋ฐฐ์น˜  ํ”„๋กœ๊ทธ๋žจ์˜  ํ•„์ˆ˜  ์š”์†Œโญโญ

๏‚Ÿ ๋Œ€์šฉ๋Ÿ‰  ๋ฐ์ดํ„ฐ
๏‚Ÿ ์ž๋™ํ™”
๏‚Ÿ ๊ฒฌ๊ณ ํ•จ
๏‚Ÿ ์•ˆ์ •์„ฑ
๏‚Ÿ ์„ฑ๋Šฅ

โ‘ถ  ์Šค์ผ€์ค„  ๊ด€๋ฆฌ  ์ข…๋ฅ˜

๏‚Ÿ ํฌ๋ก ํƒญ(Crontab)
๏‚Ÿ Spring  Batch
๏‚Ÿ Quartz  Job  Scheduler

 



06  ์ธํ„ฐํŽ˜์ด์Šค  ๊ตฌํ˜„

 

Section  1.  ์ธํ„ฐํŽ˜์ด์Šค  ๊ฐœ์š”

1.  ์ธํ„ฐํŽ˜์ด์Šค  ์‹œ์Šคํ…œ

โ‘ด  ์ธํ„ฐํŽ˜์ด์Šค  ์‹œ์Šคํ…œ์˜  ๊ฐœ๋…

๏‚Ÿ ์„œ๋กœ  ๋‹ค๋ฅธ  ์‹œ์Šคํ…œ, ์žฅ์น˜ ์‚ฌ์ด์—์„œ  ์ •๋ณด๋‚˜  ์‹ ํ˜ธ๋ฅผ  ์ฃผ๊ณ ๋ฐ›์„  ์ˆ˜  ์žˆ๋„๋ก  ๋„์›€์„  ์ฃผ๋Š”  ์‹œ์Šคํ…œ 

โ‘ต  ์ธํ„ฐํŽ˜์ด์Šค  ์‹œ์Šคํ…œ  ๊ตฌ์„ฑ

๏‚Ÿ ์†ก์‹   ์‹œ์Šคํ…œ
๏‚Ÿ ์ˆ˜์‹   ์‹œ์Šคํ…œ
๏‚Ÿ ์ค‘๊ณ„  ์„œ๋ฒ„

 

2.  ์—ฐ๊ณ„  ์‹œ์Šคํ…œ  ๋ถ„๋ฅ˜์™€  ๋ฐ์ดํ„ฐ  ์‹๋ณ„

โ‘ด  ์†ก์ˆ˜์‹   ๋ฐ์ดํ„ฐ  ์‹๋ณ„

๏‚Ÿ ์†ก์ˆ˜์‹   ์ „๋ฌธ  ๊ตฌ์„ฑ

๊ตฌ์„ฑ ์„ค๋ช…
์ „๋ฌธ ๊ณตํ†ต๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค ํ‘œ์ค€ ํ•ญ๋ชฉ์„ ํฌํ•จ
์ „๋ฌธ ๊ฐœ๋ณ„๋ถ€ ์—…๋ฌด์ฒ˜๋ฆฌ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จ
์ „๋ฌธ ์ข…๋ฃŒ๋ถ€ ์ „์†ก ๋ฐ์ดํ„ฐ์˜ ๋์„ ํ‘œ์‹œํ•˜๋Š” ๋ฌธ์ž ํฌํ•จ 

 

 

Section  2.  ์ธํ„ฐํŽ˜์ด์Šค  ์„ค๊ณ„์„œ  ํ™•์ธ

1.  ์ธํ„ฐํŽ˜์ด์Šค  ์„ค๊ณ„์„œ  ๊ตฌ์„ฑ

โ‘ด  ์ธํ„ฐํŽ˜์ด์Šค  ๋ชฉ๋ก

๏‚Ÿ ์—ฐ๊ณ„  ์—…๋ฌด์™€  ์—ฐ๊ณ„์—  ์ฐธ์—ฌํ•˜๋Š”  ์†ก์ˆ˜์‹   ์‹œ์Šคํ…œ์˜  ์ •๋ณด, ์—ฐ๊ณ„  ๋ฐฉ์‹๊ณผ  ํ†ต์‹   ์œ ํ˜•  ๋“ฑ์—  ๋Œ€ํ•œ  ์ •๋ณด

โ‘ต  ์ธํ„ฐํŽ˜์ด์Šค  ์ •์˜์„œ

๏‚Ÿ ๋ฐ์ดํ„ฐ  ์†ก์‹   ์‹œ์Šคํ…œ๊ณผ  ์ˆ˜์‹   ์‹œ์Šคํ…œ  ๊ฐ„์˜  ์†์„ฑ๊ณผ  ์ œ์•ฝ์กฐ๊ฑด  ๋“ฑ์„  ์ƒ์„ธํžˆ  ํฌํ•จํ•œ๋‹ค.

 

 

Section  3.  ์ธํ„ฐํŽ˜์ด์Šค  ๊ธฐ๋Šฅ  ๊ตฌํ˜„

1. ๋‚ด · ์™ธ๋ถ€  ๋ชจ๋“ˆ  ์—ฐ๊ณ„  ๋ฐฉ์‹

โ‘ด  EAI (Enterprise  Application  Integration) (๊ฐ„์ ‘์—ฐ๊ณ„)

1)  EAI์˜ ๊ฐœ๋… โญ 0๏ธโƒฃ 1๏ธโƒฃ  

๏‚Ÿ ๊ธฐ์—…์—์„œ  ์šด์˜๋˜๋Š”  ์„œ๋กœ  ๋‹ค๋ฅธ  ํ”Œ๋žซํผ  ๋ฐ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค  ๊ฐ„์˜  ์ •๋ณด  ์ „๋‹ฌ, ์—ฐ๊ณ„, ํ†ตํ•ฉ์„  ๊ฐ€๋Šฅํ•˜๊ฒŒ  ํ•ด์ฃผ๋Š”  ์†”๋ฃจ์…˜

2)  EAI์˜ ๊ตฌ์ถ•์œ ํ˜•โญ

๏‚Ÿ Point-to-Point / 1:1 ๋‹จ์ˆœ ํ†ตํ•ฉ ๋ฐฉ๋ฒ•
๏‚Ÿ Hub  &  Spoke / ๋‹จ์ผํ•œ ์ ‘์ ์˜ ํ—ˆ๋ธŒ ์‹œ์Šคํ…œ์„ ํ†ตํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ ๋ฐฉ์‹
๏‚Ÿ Message  Bus(ESB๋ฐฉ์‹) / ๋ฏธ๋“ค์›จ์–ด๋ฅผ ๋‘์–ด ์—ฐ๊ณ„ํ•˜๋Š” ํ†ตํ•ฉ ๋ฐฉ์‹
๏‚Ÿ Hybrid / ๊ทธ๋ฃน ๋‚ด๋Š” ํ—ˆ๋ธŒ ์•ค ์Šคํฌํฌ, ๊ทธ๋ฃน ๊ฐ„์—๋Š” ๋ฉ”์‹œ์ง€ ๋ฒ„์Šค

โ‘ต  ESB(Enterprise  Service  Bus) = message bus

๏‚Ÿ ๋‹ค์–‘ํ•œ  ์‹œ์Šคํ…œ๊ณผ  ์—ฐ๋™ํ•˜๊ธฐ  ์œ„ํ•œ  ๋ฉ€ํ‹ฐ  ํ”„๋กœํ† ์ฝœ  ์ง€์›
๏‚Ÿ ๋ฒ„์Šค๋ฅผ  ํ†ตํ•ด  ์ด๊ธฐ์ข…  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„  ์œ ์—ฐ(loosely-coupled) ํ•˜๊ฒŒ  ํ†ตํ•ฉํ•˜๋Š” ํ•ต์‹ฌ  ํ”Œ๋žซํผ
๏‚Ÿ  ๊ธฐ์—…์—์„œ ์šด์˜๋˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ”Œ๋žซํผ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค ๊ฐ„์„ ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์œผ๋กœ ๊ด€๋ฆฌ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ๋น„์Šค ์ค‘์‹ฌ์˜ ํ†ตํ•ฉ์„ ์ง€ํ–ฅํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜, ๋Š์Šจํ•œ ๊ฒฐํ•ฉ ๋ฐฉ์‹

 

2.  ์ธํ„ฐํŽ˜์ด์Šค  ์—ฐ๊ณ„  ๊ธฐ์ˆ 

โ‘ด  Link

๏‚Ÿ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—  ์ œ๊ณตํ•˜๋Š”  DB  Link  ๊ฐ์ฒด๋ฅผ  ์ด์šฉ 

โ‘ต  DB  Connection

๏‚Ÿ DB  Connection  Pool์„  ์ƒ์„ฑํ•˜๊ณ   ์—ฐ๊ณ„  ํ”„๋กœ๊ทธ๋žจ์—์„œ  ํ•ด๋‹น  DB  Connection  Pool๋ช…์„  ์ด์šฉ

โ‘ถ  JDBC

๏‚Ÿ ์ˆ˜์‹   ์‹œ์Šคํ…œ์˜  ํ”„๋กœ๊ทธ๋žจ์—์„œ  JDBC๋“œ๋ผ์ด๋ฒ„๋ฅผ  ์ด์šฉํ•˜์—ฌ  ์†ก์‹   ์‹œ์Šคํ…œ DB์™€  ์—ฐ๊ฒฐ   

โ‘ท  API  /  OpenAPI

๏‚Ÿ ์†ก์‹   ์‹œ์Šคํ…œ์˜  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ํ”„๋กœ๊ทธ๋ž˜๋ฐ  ์ธํ„ฐํŽ˜์ด์Šค  ํ”„๋กœ๊ทธ๋žจ

โ‘ธ  Web  Service (๊ฐ„์ ‘์—ฐ๊ณ„)

๏‚Ÿ WSDL(Web  Services  Description  Language),  UDDI(Universal  Description,  Discovery  and  Integration), 
SOAP(Simple  Object  Access  Protocol)  ํ”„๋กœํ† ์ฝœ์„  ์ด์šฉํ•˜์—ฌ  ์—ฐ๊ณ„

โ‘น  Hyper  Link

๏‚Ÿ ์›น  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ  ํ•˜์ดํผ๋งํฌ(Hyper  Link) ์ด์šฉ 

โ‘บ  Socket (๊ฐ„์ ‘์—ฐ๊ณ„)

๏‚Ÿ ํด๋ผ์ด์–ธํŠธ์˜  ํ†ต์‹   ์š”์ฒญ  ์‹œ  ํด๋ผ์ด์–ธํŠธ์™€  ์—ฐ๊ฒฐํ•˜๊ณ (์ปดํ“จํ„ฐ์— ์•„์˜ˆ ์ง์ ‘ ์—ฐ๊ฒฐ)  ํ†ต์‹ ํ•˜๋Š”  ๋„คํŠธ์›Œํฌ  ๊ธฐ์ˆ 

 


3.  ์ธํ„ฐํŽ˜์ด์Šค  ์ „์†ก  ๋ฐ์ดํ„ฐ

โ‘ด  JSON(JavaScript  Object  Notation)0๏ธโƒฃ

๏‚Ÿ Javascript  ๊ฐ์ฒด  ๋ฌธ๋ฒ•์œผ๋กœ  ๊ตฌ์กฐํ™”๋œ  ๋ฐ์ดํ„ฐ๋ฅผ  ํ‘œํ˜„ํ•˜๊ธฐ  ์œ„ํ•œ  ๋ฌธ์ž  ๊ธฐ๋ฐ˜์˜  ํ‘œ์ค€  ํฌ๋งท
๏‚Ÿ ์†์„ฑ-๊ฐ’ ์Œ ๋˜๋Š” “ํ‚คkey-๊ฐ’value ์Œ”์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์ธ๊ฐ„์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€ ํฌ๋งท
๏‚Ÿ AJAX์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  XML์„ ๋Œ€์ฒดํ•˜๋Š” ์ฃผ์š” ๋ฐ์ดํ„ฐ ํฌ๋งท

โ‘ต  XML(eXtensible  Markup  Language)0๏ธโƒฃ

๏‚Ÿ ์›น์—์„œ  ๊ตฌ์กฐํ™”ํ•œ  ๋ฌธ์„œ๋ฅผ  ํ‘œํ˜„ํ•˜๊ณ   ์ „์†กํ•˜๋„๋ก  ์„ค๊ณ„ํ•œ  ๋งˆํฌ์—…  ์–ธ์–ด
๏‚Ÿ HTML์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ ์ธํ„ฐ๋„ท ์–ธ์–ด, SGML์˜ ๋ณต์žกํ•œ ๋‹จ์ ์„ ๊ฐœ์„ ํ•œ ํŠน์ˆ˜ํ•œ ๋ชฉ์ ์„ ๊ฐ–๋Š” ๋งˆํฌ์—… ์–ธ์–ด

โ‘ถ  YAML(YAML  Ain't  Markup  Language)

๏‚Ÿ ๊ตฌ์„ฑ  ํŒŒ์ผ  ์ž‘์„ฑ์—  ์ž์ฃผ  ์‚ฌ์šฉ๋˜๋Š”  ๋ฐ์ดํ„ฐ  ์ง๋ ฌํ™”  ์–ธ์–ด

โ‘ท  CSV(Comma  Separated  Values)

๏‚Ÿ ๋ช‡  ๊ฐ€์ง€  ํ•„๋“œ๋ฅผ  ์‰ผํ‘œ(,) ๋กœ  ๊ตฌ๋ถ„ํ•œ  ํ…์ŠคํŠธ  ๋ฐ์ดํ„ฐ  ๋ฐ  ํ…์ŠคํŠธ  ํŒŒ์ผ

 

4.  ์ธํ„ฐํŽ˜์ด์Šค  ๊ตฌํ˜„

โ‘ด  AJAX(Asynchronous  JavaScript  and  XML)0๏ธโƒฃ3๏ธโƒฃ

1)  AJAX์˜  ๊ฐœ๋…

๏‚Ÿ ์ „์ฒด  ํŽ˜์ด์ง€๋ฅผ  ์ƒˆ๋กœ๊ณ ์นจํ•˜์ง€  ์•Š๊ณ , ํŽ˜์ด์ง€์˜  ์ผ๋ถ€๋งŒ์„  ๋ณ€๊ฒฝํ•   ์ˆ˜  ์žˆ๋Š”  ๊ธฐ๋ฒ•
๏‚Ÿ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ๋น„๋™๊ธฐ์ ์œผ๋กœ XML ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ณ  ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ์›น ๊ธฐ์ˆ , XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋กœ๋“œ

2)  ๋น„๋™๊ธฐ  ๋ฐฉ์‹

๏‚Ÿ ์›นํŽ˜์ด์ง€๋ฅผ  ๋ฆฌ๋กœ๋“œํ•˜์ง€  ์•Š๊ณ   ๋ฐ์ดํ„ฐ๋ฅผ  ๋ถˆ๋Ÿฌ์˜ค๋Š”  ๋ฐฉ์‹


โ‘ต  SOAP(Simple  Object  Access  Protocol)0๏ธโƒฃ2๏ธโƒฃ

1)  SOAP์˜  ๊ตฌ์„ฑ

โ‘   SOAP(Simple  Object  Access  Protocol) 
๏‚Ÿ HTTP,  HTTPS,  SMTP ๋“ฑ์„  ์‚ฌ์šฉํ•˜์—ฌ XML๊ธฐ๋ฐ˜์˜  ๋ฉ”์‹œ์ง€๋ฅผ  ๋„คํŠธ์›Œํฌ์ƒ์—์„œ  ๊ตํ™˜ํ•˜๋Š”  ํ˜•ํƒœ์˜  ํ”„๋กœํ† ์ฝœ (์‹ค์ œ ํ”„๋กœํ† ์ฝœ)

0๏ธโƒฃ (๊ฐ€)๋Š” HTTP, HTTPS, SMTP ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ xml๊ธฐ๋ฐ˜์˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ๊ตํ™˜ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ๋กœ (๊ฐ€)envelope, ํ—ค๋”, ๋ฐ”๋”” ๋“ฑ์ด ์ถ”๊ฐ€๋œ xml๋ฌธ์„œ์ด๋‹ค. (๊ฐ€)๋Š” ๋ณต์žกํ•˜๊ณ  ๋ฌด๊ฑฐ์šด ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด (๊ฐ€)๋ณด๋‹ค๋Š” restful ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

โ‘ก  UDDI(Universal  Description,  Discovery  and  Integration)
๏‚Ÿ ์ธํ„ฐ๋„ท์—์„œ  ์ „  ์„ธ๊ณ„์˜  ๋น„์ฆˆ๋‹ˆ์Šค  ์—…์ฒด  ๋ชฉ๋ก์—  ์ž์‹ ์˜  ๋ชฉ๋ก์„  ๋“ฑ๋กํ•˜๊ธฐ  ์œ„ํ•œ,  XML ๊ธฐ๋ฐ˜์˜  ๊ทœ๊ฒฉ (๋„์„œ๊ด€)

โ‘ข  WSDL(Web  Services  Description  Language) 1๏ธโƒฃ
๏‚Ÿ ์›น  ์„œ๋น„์Šค  ๊ธฐ์ˆ ์–ธ์–ด  ๋˜๋Š”  ๊ธฐ์ˆ ๋œ  ์ •์˜  ํŒŒ์ผ์˜  ์ด์นญ์œผ๋กœ  XML๋กœ  ๊ธฐ์ˆ  (์„ค๋ช…์„œ)

1๏ธโƒฃ ์›น ์„œ๋น„์Šค์™€ ๊ด€๋ จ๋œ ์„œ์‹์ด๋‚˜ ํ”„๋กœํ† ์ฝœ ๋“ฑ์„ ํ‘œ์ค€์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ธฐ์ˆ ํ•˜๊ณ  ๊ฒŒ์‹œํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด๋กœ XML๋กœ ์ž‘์„ฑ๋˜๋ฉฐ UDDI์˜ ๊ธฐ์ดˆ๊ฐ€ ๋œ๋‹ค. SOAP, XML ์Šคํ‚ค๋งˆ์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ์ธํ„ฐ๋„ท์—์„œ ์›น ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๊ฒƒ์„ ํ†ตํ•ด ์„œ๋ฒ„์—์„œ ์–ด๋– ํ•œ ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•œ์ง€๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

2)  SOAP  ๋ณด์•ˆ  ํ”„๋กœํ† ์ฝœ

๏‚Ÿ SAML (์ธ์ฆ / ๊ถŒํ•œ๊ด€๋ฆฌ)
๏‚Ÿ XKMS (ํ‚ค๊ด€๋ฆฌ)
๏‚Ÿ XACML (์ ‘๊ทผ์ œ์–ด)

 

โ‘ถ  RESTโญ

1)  REST์˜  ๊ฐœ๋…

๏‚Ÿ HTTP  URI ๋ฅผ  ํ†ตํ•ด  ์ž์›์„  ๋ช…์‹œํ•˜๊ณ ,  HTTP  Method(POST,  GET,  PUT,  DELETE)๋ฅผ  ํ†ตํ•ด  ํ•ด๋‹น  ์ž์›์—  ๋Œ€ํ•œ 
CRUD  Operation์„  ์ ์šฉํ•˜๋Š”  ๊ฒƒ (ex. API๋ž‘ ๋น„์Šท, ๋„ค์ด๋ฒ„์›นํˆฐ naver.com/webtoon)
๏‚Ÿ ์›น๊ณผ ๊ฐ™์€ ๋ถ„์‚ฐ ํ•˜์ดํผ๋ฏธ๋””์–ด ํ™˜๊ฒฝ์—์„œ ์ž์›์˜ ์กด์žฌ/์ƒํƒœ ์ •๋ณด๋ฅผ ํ‘œ์ค€ํ™”๋œ HTTP ๋ฉ”์„œ๋“œ๋กœ ์ฃผ๊ณ ๋ฐ›๋Š” ์›น ์•„ํ‚คํ…์ฒ˜ (๋ฆฌ์†Œ์Šค, ๋ฉ”์„œ๋“œ, ๋ฉ”์‹œ์ง€)

2)  REST  ๊ตฌ์„ฑ์š”์†Œ

โ‘   ์ž์›(Resource),  URI
๏‚Ÿ ์„œ๋ฒ„์—  ์กด์žฌํ•˜๋Š”  ๋ฐ์ดํ„ฐ์˜  ์ด์นญ.

โ‘ก  ํ–‰์œ„(Verb),  Method
๏‚Ÿ ํด๋ผ์ด์–ธํŠธ๋Š”  URI๋ฅผ  ์ด์šฉํ•ด  ์ž์›์„  ์ง€์ •ํ•˜๊ณ   ์ž์›์„  ์กฐ์ž‘ํ•˜๊ธฐ  ์œ„ํ•ด  Method๋ฅผ  ์‚ฌ์šฉํ•œ๋‹ค.

โ‘ข  ํ‘œํ˜„(Representation)
๏‚Ÿ REST์—์„œ  ํ•˜๋‚˜์˜  ์ž์›์€ JSON,  XML,  TEXT,  RSS  ๋“ฑ  ์—ฌ๋Ÿฌ  ํ˜•ํƒœ๋กœ  ๋‚˜ํƒ€๋‚ผ  ์ˆ˜  ์žˆ๋‹ค.

3)  CRUD  Operation,  HTTP  Method

๏‚Ÿ Create  :  POST (์ž์›  ์ƒ์„ฑ)
๏‚Ÿ Read  :  GET (์ž์›์˜  ์ •๋ณด  ์กฐํšŒ)
๏‚Ÿ Update  :  PUT (์ž์›์˜  ์ •๋ณด  ์—…๋ฐ์ดํŠธ)
๏‚Ÿ Delete  :  DELETE (์ž์›  ์‚ญ์ œ)

4)  RESTful

๏‚Ÿ REST์˜  ์›๋ฆฌ๋ฅผ  ๋”ฐ๋ฅด๋Š”  ์‹œ์Šคํ…œ

 

5.  ์ธํ„ฐํŽ˜์ด์Šค  ๋ณด์•ˆ

โ‘ด  ์ธํ„ฐํŽ˜์ด์Šค  ๋ณด์•ˆ  ๊ธฐ๋Šฅ  ์ ์šฉ

1)  ๋„คํŠธ์›Œํฌ  ์˜์—ญ

๏‚Ÿ IPSec,  SSL,  S-HTTP  ๋“ฑ  ๋‹ค์–‘ํ•œ  ๋ฐฉ์‹์œผ๋กœ  ์ ์šฉ

2)  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ์˜์—ญ

๏‚Ÿ ์‹œํ์–ด์ฝ”๋”ฉ  ๊ฐ€์ด๋“œ๋ฅผ  ์ฐธ์กฐํ•˜์—ฌ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ์ฝ”๋“œ์ƒ  ๋ณด์•ˆ  ์ทจ์•ฝ์ ์„  ๋ณด์™„ํ•˜๋Š”  ๋ฐฉํ–ฅ์œผ๋กœ  ๋ณด์•ˆ  ๊ธฐ๋Šฅ  ์ ์šฉ

3)  DB  ์˜์—ญ

๏‚Ÿ DB, ์Šคํ‚ค๋งˆ, ์—”ํ‹ฐํ‹ฐ์˜  ์ ‘๊ทผ  ๊ถŒํ•œ  ์ ์šฉ
๏‚Ÿ ๋ฏผ๊ฐ  ๋ฐ์ดํ„ฐ๋ฅผ  ์•”ํ˜ธํ™”, ์ต๋ช…ํ™”  ๋“ฑ์„  ํ†ตํ•ด  ๋ฐ์ดํ„ฐ  ์ž์ฒด  ๋ณด์•ˆ  ๋ฐฉ์•ˆ๋„  ๊ณ ๋ ค

 

 

 

Section  4.  ์ธํ„ฐํŽ˜์ด์Šค  ๊ตฌํ˜„  ๊ฒ€์ฆ

 

1.  ์ธํ„ฐํŽ˜์ด์Šค  ๊ฒ€์ฆ

โ‘ด  ์ธํ„ฐํŽ˜์ด์Šค  ๊ตฌํ˜„  ๊ฒ€์ฆ  ๋„๊ตฌโญโญ

1)  xUnit   

๏‚Ÿ ๋‹ค์–‘ํ•œ  ์–ธ์–ด(์ž๋ฐ”, C++, .Net ๋“ฑ)๋ฅผ  ์ง€์›ํ•˜๋Š”  ๋‹จ์œ„  ํ…Œ์ŠคํŠธ  ํ”„๋ ˆ์ž„  ์›Œํฌ

2)  STAF 

๏‚Ÿ ์„œ๋น„์Šค  ํ˜ธ์ถœ  ๋ฐ  ์ปดํฌ๋„ŒํŠธ  ์žฌ์‚ฌ์šฉ  ๋“ฑ  ๋‹ค์–‘ํ•œ  ํ™˜๊ฒฝ์„  ์ง€์›ํ•˜๋Š”  ํ…Œ์ŠคํŠธ  ํ”„๋ ˆ์ž„์›Œํฌ

3)  FitNesse 

๏‚Ÿ ์›น  ๊ธฐ๋ฐ˜  ํ…Œ์ŠคํŠธ์ผ€์ด์Šค  ์„ค๊ณ„, ์‹คํ–‰, ๊ฒฐ๊ณผ ํ™•์ธ ๋“ฑ์„  ์ง€์›ํ•˜๋Š”  ํ…Œ์ŠคํŠธ  ํ”„๋ ˆ์ž„์›Œํฌ

4)  NTAF 

๏‚Ÿ FitNesse์˜  ์žฅ์ ๊ณผ  STAF์˜  ์žฅ์ ์„  ํ†ตํ•ฉํ•œ Naver(NHN)์˜  ํ…Œ์ŠคํŠธ  ์ž๋™ํ™”  ํ”„๋ ˆ์ž„์›Œํฌ

5)  Selenium 

๏‚Ÿ ๋‹ค์–‘ํ•œ  ๋ธŒ๋ผ์šฐ์ €  ๋ฐ  ๊ฐœ๋ฐœ  ์–ธ์–ด๋ฅผ  ์ง€์›ํ•˜๋Š”  ์›น  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ํ…Œ์ŠคํŠธ  ํ”„๋ ˆ์ž„์›Œํฌ

6)  watir 

๏‚Ÿ Ruby๋ฅผ  ์‚ฌ์šฉํ•˜๋Š”  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ํ…Œ์ŠคํŠธ  ํ”„๋ ˆ์ž„์›Œํฌ

 

โ‘ต  ์ธํ„ฐํŽ˜์ด์Šค  ๊ตฌํ˜„  ๊ฐ์‹œ  ๋„๊ตฌโญ

๏‚Ÿ APM(Application  Performance  Management, ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ)์„  ์‚ฌ์šฉํ•˜์—ฌ  ๋™์ž‘์ƒํƒœ  ๊ฐ์‹œ
๏‚Ÿ ์ข…๋ฅ˜: ์Šค์นด์šฐํ„ฐ(Scouter), ์ œ๋‹ˆํผ(Jennifer) ๋“ฑ

๏‚Ÿ ์Šค์นด์šฐํ„ฐ(SCOUTER) : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ DB Agent๋ฅผ ํ†ตํ•ด ์˜คํ”ˆ ์†Œ์Šค DB๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ๋Šฅ, ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ์‹œ ๊ธฐ๋Šฅ ์ œ๊ณต
๏‚Ÿ ์ œ๋‹ˆํผ(Jennifer) : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ๋ถ€ํ„ฐ ํ…Œ์ŠคํŠธ, ์˜คํ”ˆ, ์šด์˜, ์•ˆ์ •ํ™”๊นŒ์ง€ ์ „ ์ƒ์• ์ฃผ๊ธฐ ๋‹จ๊ณ„ ๋™์•ˆ ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋ถ„์„ํ•ด์ฃผ๋Š” APM ์†Œํ”„ํŠธ์›จ์–ด

 

 


 07  ๊ฐ์ฒด์ง€ํ–ฅ  ๊ตฌํ˜„

 

Section  1.  ๊ฐ์ฒด์ง€ํ–ฅ  ์„ค๊ณ„

1. ๊ฐ์ฒด์ง€ํ–ฅ (OOP,  Object  Oriented  Programming)

โ‘ด  ๊ฐ์ฒด์ง€ํ–ฅ  ๊ฐœ๋…

๏‚Ÿ ํ˜„์‹ค  ์„ธ๊ณ„์˜  ์œ ํ˜•, ๋ฌดํ˜•์˜  ๋ชจ๋“   ๋Œ€์ƒ์„  ๊ฐ์ฒด(Object)๋กœ  ๋‚˜๋ˆ„๊ณ  ๊ฐ์ฒด์˜  ํ–‰๋™(Method) ๊ณผ  ๊ณ ์œ ํ•œ  ๊ฐ’(Attribute)์„ ์ •์˜ํ•˜์—ฌ  ์„ค๊ณ„ํ•˜๋Š”  ๋ฐฉ๋ฒ•

โ‘ต  ๊ฐ์ฒด์ง€ํ–ฅ  ๊ตฌ์„ฑ์š”์†Œ

๏‚Ÿ ํด๋ž˜์Šค(Class)
๏‚Ÿ ๊ฐ์ฒด(Object)
๏‚Ÿ ์†์„ฑ(Attribute)
๏‚Ÿ ๋ฉ”์„œ๋“œ(Method)
๏‚Ÿ ๋ฉ”์‹œ์ง€(Message)

โ‘ถ  ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์˜  ํŠน์ง•โญโญ

1) ์บก์Šํ™” (Encapsulation) 
๏‚Ÿ ๋ฐ์ดํ„ฐ(Attribute) ์™€  ๋ฐ์ดํ„ฐ๋ฅผ  ์ฒ˜๋ฆฌํ•˜๋Š”  ํ–‰๋™(Method)์„  ํ•˜๋‚˜๋กœ  ๋ฌถ์€  ๊ฒƒ 

2)  ์ •๋ณด์€๋‹‰(Information  Hiding) 
๏‚Ÿ ๋‹ค๋ฅธ  ๊ฐ์ฒด์—๊ฒŒ  ์ž์‹ ์˜  ๋ฐ์ดํ„ฐ๋ฅผ  ์ˆจ๊ธฐ๊ณ ,  ์ž์‹ ์ด  ์ •์˜ํ•œ  ํ–‰๋™๋งŒ์„  ํ†ตํ•˜์—ฌ  ์ ‘๊ทผ์„  ํ—ˆ์šฉ

3)  ์ƒ์† (Inheritance) 
๏‚Ÿ ์ƒ์œ„ํด๋ž˜์Šค(๋ถ€๋ชจํด๋ž˜์Šค) ์˜  ๋ชจ๋“   ๋ฐ์ดํ„ฐ์™€  ํ–‰๋™์„  ํ•˜์œ„  ํด๋ž˜์Šค๊ฐ€  ๋ฌผ๋ ค๋ฐ›๋Š”  ๊ฒƒ

4)  ๋‹คํ˜•์„ฑ (Polymorphism) 
๏‚Ÿ ํ•˜๋‚˜์˜  ๋ฉ”์‹œ์ง€์—  ๋Œ€ํ•ด  ๊ฐ  ๊ฐ์ฒด๊ฐ€  ๊ฐ€์ง€๊ณ   ์žˆ๋Š”  ์—ฌ๋Ÿฌ  ๊ฐ€์ง€  ๋ฐฉ๋ฒ•์œผ๋กœ  ์‘๋‹ตํ•   ์ˆ˜  ์žˆ๋Š”  ๊ฐœ๋…

5)  ์ถ”์ƒํ™” (Abstraction)
๏‚Ÿ ์–ด๋–ค  ์‹ค์ฒด๋กœ๋ถ€ํ„ฐ  ๊ณตํ†ต์ ์ธ  ๋ถ€๋ถ„๋“ค๋งŒ  ๋ชจ์•„๋†“์€  ๊ฒƒ

โ‘ท  ๊ฐ์ฒด์ง€ํ–ฅ  ์„ค๊ณ„์›์น™(SOLID)โญโญ2๏ธโƒฃ

1) ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (SRP,  Single  Responsibility  Principle) 
๏‚Ÿ ํ•œ  ํด๋ž˜์Šค๋Š”  ํ•˜๋‚˜์˜  ์ฑ…์ž„๋งŒ์„  ๊ฐ€์ ธ์•ผ  ํ•œ๋‹ค.

2)  ๊ฐœ๋ฐฉ ํ์‡„ ์›์น™ (OCP,  Open-Closed  Principle) 
๏‚Ÿ ํ™•์žฅ์—๋Š”  ์—ด๋ ค  ์žˆ๊ณ , ์ˆ˜์ •์—๋Š”  ๋‹ซํ˜€  ์žˆ์–ด์•ผ  ํ•œ๋‹ค.

3) ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ (LSP,  Liskov  Substitution  Principle)
๏‚Ÿ ์ž์‹  ํด๋ž˜์Šค๋Š”  ์–ธ์ œ๋‚˜  ์ž์‹ ์˜  ๋ถ€๋ชจ  ํด๋ž˜์Šค๋ฅผ  ๋Œ€์ฒดํ•   ์ˆ˜  ์žˆ์–ด์•ผ  ํ•œ๋‹ค.

4) ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ (ISP,  Interface  Segregation  Principle) 2๏ธโƒฃ
๏‚Ÿ ์ž์‹ ์ด  ์‚ฌ์šฉํ•˜์ง€  ์•Š๋Š”  ์ธํ„ฐํŽ˜์ด์Šค๋Š”  ๊ตฌํ˜„ํ•˜์ง€  ๋ง์•„์•ผ  ํ•œ๋‹ค.

5) ์˜์กด์„ฑ ์—ญ์ „ ์›์น™ (DIP,  Dependency  Inversion  Principle)
๏‚Ÿ ์˜์กด  ๊ด€๊ณ„๋ฅผ  ๋งบ์„  ๋•Œ  ์ž์ฃผ  ๋ณ€ํ™”ํ•˜๋Š”  ๊ฒƒ๋ณด๋‹ค  ๋ณ€ํ™”๊ฐ€  ๊ฑฐ์˜  ์—†๋Š”  ๊ฒƒ์—  ์˜์กดํ•ด์•ผ  ํ•œ๋‹ค.


2.  ๋””์ž์ธํŒจํ„ดโญโญ

โ‘ด  ๋””์ž์ธ  ํŒจํ„ด ๊ฐœ๋… (Design  Pattern) 

๏‚Ÿ ๊ฐ์ฒด  ์ง€ํ–ฅ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ  ์„ค๊ณ„๋ฅผ  ํ•   ๋•Œ  ์ž์ฃผ  ๋ฐœ์ƒํ•˜๋Š”  ๋ฌธ์ œ๋“ค์—  ๋Œ€ํ•ด  ์žฌ์‚ฌ์šฉํ•   ์ˆ˜  ์žˆ๋„๋ก  ๋งŒ๋“ค์–ด๋†“์€  ํŒจํ„ด๋“ค์˜ 
๋ชจ์Œ (SW์„ค๊ณ„์—์„œ ๊ณตํ†ต์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ž์ฃผ ์“ฐ์ด๋Š” ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•œ ํŒจํ„ด)

โ‘ต  GoF  ๋””์ž์ธ  ํŒจํ„ด

๏‚Ÿ Gof  ๋””์ž์ธ  ํŒจํ„ด  ๋ถ„๋ฅ˜ 0๏ธโƒฃ(์ƒ๊ตฌํ–‰)

์ƒ์„ฑ ํŒจํ„ด - ๊ฐ์ฒด  ์ƒ์„ฑ๊ณผ  ๊ด€๋ จํ•œ  ํŒจํ„ด
- ๊ฐ์ฒด  ์ƒ์„ฑ์—  ์žˆ์–ด์„œ  ํ”„๋กœ๊ทธ๋žจ  ๊ตฌ์กฐ์—  ์˜ํ–ฅ์„  ํฌ๊ฒŒ  ์ฃผ์ง€  ์•Š๋Š”  ์œ ์—ฐ์„ฑ  ์ œ๊ณต
๊ตฌ์กฐ ํŒจํ„ด - ํด๋ž˜์Šค๋‚˜  ๊ฐ์ฒด๋ฅผ  ์กฐํ•ฉํ•ด์„œ  ๋”  ํฐ  ๊ตฌ์กฐ๋ฅผ  ๋งŒ๋“œ๋Š”  ํŒจํ„ด
ํ–‰์œ„ ํŒจํ„ด - ๊ฐ์ฒด๋‚˜  ํด๋ž˜์Šค  ์‚ฌ์ด์˜  ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜  ์ฑ…์ž„  ๋ถ„๋ฐฐ์—  ๊ด€๋ จ๋œ  ํŒจํ„ด
์ƒ์„ฑ(Creational) ํŒจํ„ด(bprofas) ๊ตฌ์กฐ(Structural) ํŒจํ„ด (abcdffp) ํ–‰์œ„(Behavioral) ํŒจํ„ด1๏ธโƒฃ
- Abstract  Factory
- Builder
- Factory  Method1๏ธโƒฃ
- Prototype
- Singleton
-  Adapter
-  Bridge2๏ธโƒฃ
-  Composite
-  Decorator
-  Facade
-  Flyweight
-  Proxy
-  Chain  of  Responsibility
-  Command
-  Interpreter
-  Iterator
-  Mediator
-  Memento
-  Observer0๏ธโƒฃ2๏ธโƒฃ 
-  State
-  Strategy
-  Template  Method
-  Visitor

 

์ƒ์„ฑ bprofas ๋น„ํ”„๋กœํŒŒ์Šค

builder : ๋ณต์žกํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์กฐ๋ฆฝํ•ด ๋งŒ๋“œ๋Š” ๊ตฌ์กฐ, ๋‹จ๊ณ„๋ณ„๋กœ ์ƒ์„ฑ
prototype : ์ฒ˜์Œ๋ถ€ํ„ฐ ์ผ๋ฐ˜์ ์ธ ์›ํ˜•์„ ๋งŒ๋“ค์–ด ๋†“๊ณ , ๊ทธ๊ฒƒ์„ ๋ณต์‚ฌํ•œ ํ›„, ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ˆ˜์ •ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด
factory method : ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜, ํ•˜์œ„ํด๋ž˜์Šค์—์„œ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
abstract factory : ์„œ๋กœ ์—ฐ๊ด€๋˜๊ฑฐ๋‚˜ ์˜์กด์ ์ธ ๊ฐ์ฒด๋“ค์˜ ์กฐํ•ฉ์„ ๋งŒ๋“œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต
singleton : ์ „์—ญ ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ฐ์ฒด ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ, ๊ทธ ๊ฐ์ฒด๋Š” ์–ด๋””์„œ๋“ ์ง€ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Œ(์ „์—ญ ์ ‘๊ทผ ํ—ˆ์šฉ)

๊ตฌ์กฐ abcdffp

adapter : ๊ธฐ์กด์— ์ƒ์„ฑ๋œ ํด๋ž˜์Šค๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค‘๊ฐ„์—์„œ ๋งž์ถฐ์ฃผ๋Š” ์—ญํ• 
bridge : ๊ธฐ๋Šฅ ๊ณ„์ธต๊ณผ ๊ตฌํ˜„ ๊ณ„์ธต์„ ์—ฐ๊ฒฐ, ๊ตฌํ˜„๋ถ€์—์„œ ์ถ”์ƒ ๊ณ„์ธต ๋ถ„๋ฆฌ
composite : ๊ฐ์ฒด๋“ค์˜ ๊ด€๊ณ„๋ฅผ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ
decorator : ๊ธฐ์กด์— ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” ํด๋ž˜์Šค์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ•ด ๋‚˜๊ฐ, ๊ฐ์ฒด๋“ค์„ ์ƒˆ๋กœ์šด ๊ฐ์ฒด ๋‚ด์— ๋„ฃ์–ด์„œ ์—ฐ๊ฒฐ
facade : ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ๋‹จ์ˆœํ•œ ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต, ์‹œ์Šคํ…œ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ํŒŒ์•… ์‰ฝ๊ฒŒ
flyweight : ๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ, 'ํด๋ž˜์Šค์˜ ๊ฒฝ๋Ÿ‰ํ™”'๋ชฉ์ , RAM์— ๋” ๋งŽ์€ ๊ฐ์ฒด ํฌํ•จํ•  ์ˆ˜ ์žˆ๋„๋ก
proxy : ์‹ค์ฒด ๊ฐ์ฒด์— ๋Œ€ํ•œ '๋Œ€๋ฆฌ', '๋Œ€์ฒด' ๊ฐ์ฒด

ํ–‰์œ„

Mediator : ์ค‘๊ฐ„์— ํ†ต์ œ, ์ค‘์žฌ์ž
Interpreter : ์–ธ์–ด์˜ ๋‹ค์–‘ํ•œ ํ•ด์„, ๊ตฌ๋ฌธ์˜ ํ•ด์„์„ ๋งก๋Š” ํด๋ž˜์Šค ๊ฐ๊ฐ ์ž‘์„ฑ
Iterator : ์ปฌ๋ ‰์…˜ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• ๋…ธ์ถœ์‹œํ‚ค์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๊ทธ ์ง‘ํ•ฉ์ฒด ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์— ์ ‘๊ทผํ•  ๋ฐฉ๋ฒ•์„ ์ œ๊ณต
Template Method : ์ƒ์œ„ ํด๋ž˜์Šค-์ถ”์ƒ, ํ•˜์œ„ ํด๋ž˜์Šค-๊ตฌ์ฒด
Observer : ํ•œ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๊ทธ ๊ฐ์ฒด์— ์˜์กดํ•˜๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์— ์—ฐ๋ฝ
State : ์ƒํƒœ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–‰์œ„ ๋‚ด์šฉ ๋ณ€๊ฒฝ
Visitor : ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฐ ํด๋ž˜์Šค๋ฅผ ๋Œ์•„๋‹ค๋‹ˆ๋ฉฐ ํŠน์ • ์ž‘์—… ์ˆ˜ํ–‰
Command : ๋ช…๋ น์ด ๋“ค์–ด์˜ค๋ฉด ๊ทธ์— ๋งž๋Š” ์„œ๋ธŒ ํด๋ž˜์Šค ์„ ํƒ๋˜์–ด ์‹คํ–‰
Strategy : ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฐ ์ •์˜, ํ–‰์œ„๋ฅผ ํด๋ž˜์Šค๋กœ ์บก์Šํ™”ํ•ด ๋™์ ์œผ๋กœ ํ–‰์œ„ ์ž์œ ๋กญ๊ฒŒ ๋ณ€ํ™˜
Memento : Undo(์ž‘์—…์ทจ์†Œ) ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
Chain of Responsibility : ์ •์ ์œผ๋กœ ์–ด๋–ค ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ์˜ ์—ฐ๊ฒฐ์ด ํ•˜๋“œ ์ฝ”๋”ฉ ๋˜์–ด ์žˆ์„ ๋•Œ, ์ด๋ฅผ ๋™์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐํ•œ ๋””์ž์ธ

 



  08  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ํ…Œ์ŠคํŠธ  ๊ด€๋ฆฌ

 

Section  1.  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ํ…Œ์ŠคํŠธ์ผ€์ด์Šค  ์„ค๊ณ„

1.  ์†Œํ”„ํŠธ์›จ์–ด  ํ…Œ์ŠคํŠธ

โ‘ด  ์†Œํ”„ํŠธ์›จ์–ด  ํ…Œ์ŠคํŠธ์˜  ๊ฐœ๋…

๏‚Ÿ ๊ตฌํ˜„๋œ  ์†Œํ”„ํŠธ์›จ์–ด์˜  ๋™์ž‘๊ณผ  ์„ฑ๋Šฅ, ์‚ฌ์šฉ์„ฑ, ์•ˆ์ •์„ฑ  ๋“ฑ์„  ๋งŒ์กฑํ•˜๊ธฐ  ์œ„ํ•˜์—ฌ  ์†Œํ”„ํŠธ์›จ์–ด์˜  ๊ฒฐํ•จ์„  ์ฐพ์•„๋‚ด๋Š”  ํ™œ๋™

โ‘ต  ์†Œํ”„ํŠธ์›จ์–ด  ํ…Œ์ŠคํŠธ์˜  ํ•„์š”์„ฑโญ

๏‚Ÿ ์˜ค๋ฅ˜  ๋ฐœ๊ฒฌ  ๊ด€์ 
๏‚Ÿ ์˜ค๋ฅ˜  ์˜ˆ๋ฐฉ  ๊ด€์ 
๏‚Ÿ ํ’ˆ์งˆ  ํ–ฅ์ƒ  ๊ด€์ 

โ‘ถ  ์†Œํ”„ํŠธ์›จ์–ด  ํ…Œ์ŠคํŠธ์˜  ๊ธฐ๋ณธ  ์›์น™

๏‚Ÿ ํ…Œ์ŠคํŒ…์€  ๊ฒฐํ•จ์ด  ์กด์žฌํ•จ์„  ๋ฐํžˆ๋Š”  ํ™œ๋™์ด๋‹ค.
๏‚Ÿ ์™„๋ฒฝํ•œ  ํ…Œ์ŠคํŒ…์€  ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
๏‚Ÿ ํ…Œ์ŠคํŒ…์€  ๊ฐœ๋ฐœ  ์ดˆ๊ธฐ์—  ์‹œ์ž‘ํ•ด์•ผ  ํ•œ๋‹ค.
๏‚Ÿ ๊ฒฐํ•จ  ์ง‘์ค‘(Defect  Clustering)
ํŒŒ๋ ˆํ†   ๋ฒ•์น™:  ์ „์ฒด  ๊ฒฐ๊ณผ์˜  80%๊ฐ€ ์ „์ฒด ์›์ธ์˜ 20%์—์„œ  ์ผ์–ด๋‚˜๋Š”  ํ˜„์ƒ
๏‚Ÿ ์‚ด์ถฉ์ œ  ํŒจ๋Ÿฌ๋…์Šค(Presticide  Paradox) (๋”ฐ๋ผ์„œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•จ)0๏ธโƒฃ(์•ฝ์ˆ )
๏‚Ÿ ํ…Œ์ŠคํŒ…์€  ์ •ํ™ฉ(Context) ์—  ์˜์กดํ•œ๋‹ค.
๏‚Ÿ ์˜ค๋ฅ˜-๋ถ€์žฌ์˜  ๊ถค๋ณ€ (Absence  of  Errors  Fallacy) (์˜ค๋ฅ˜ ์—†๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด๋„ ์“ธ๋ฐ ์—†๋Š” ๊ธฐ๋Šฅ์ด๋ฉด ํ•„์š” ์—†์Œ)

 

+ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ตฌ์„ฑ์š”์†Œ 1๏ธโƒฃ โญ
์ž…๋ ฅ ๊ฐ’, ํ…Œ์ŠคํŠธ ์กฐ๊ฑด, ๊ธฐ๋Œ€ ๊ฒฐ๊ณผ

 

2.  ํ…Œ์ŠคํŠธ  ์˜ค๋ผํดโญ

โ‘ด  ํ…Œ์ŠคํŠธ  ์˜ค๋ผํด์˜  ๊ฐœ๋…

๏‚Ÿ ํ…Œ์ŠคํŠธ์˜  ๊ฒฐ๊ณผ๊ฐ€  ์ฐธ์ธ์ง€  ๊ฑฐ์ง“์ธ์ง€๋ฅผ  ํŒ๋‹จํ•˜๊ธฐ  ์œ„ํ•ด์„œ  ์‚ฌ์ „์—  ์ •์˜๋œ  ์ฐธ  ๊ฐ’์„  ์ž…๋ ฅํ•˜์—ฌ  ๋น„๊ตํ•˜๋Š”  ๊ธฐ๋ฒ•  ๋ฐ  ํ™œ๋™

โ‘ต  ํ…Œ์ŠคํŠธ  ์˜ค๋ผํด์˜  ์œ ํ˜•(์ฐธ์ƒ˜ํœด์ผ)

1)  ์ฐธ  ์˜ค๋ผํด (True)
๏‚Ÿ ๋ชจ๋“   ํ…Œ์ŠคํŠธ  ์ผ€์ด์Šค  ์ž…๋ ฅ๊ฐ’์˜  ๊ธฐ๋Œ€  ๊ฒฐ๊ณผ๋ฅผ  ํ™•์ธ

2)  ์ƒ˜ํ”Œ๋ง  ์˜ค๋ผํด (Sampling)
๏‚Ÿ ํŠน์ •ํ•œ  ๋ช‡  ๊ฐœ์˜  ์ž…๋ ฅ  ๊ฐ’์—  ๋Œ€ํ•ด์„œ๋งŒ  ๊ธฐ๋Œ€ํ•˜๋Š”  ๊ฒฐ๊ณผ๋ฅผ  ์ œ๊ณตํ•ด  ์ฃผ๋Š”  ์˜ค๋ผํด

3) ํœด๋ฆฌ์Šคํ‹ฑ  ์˜ค๋ผํด (Heuristic) 
๏‚Ÿ ํŠน์ •  ์ž…๋ ฅ  ๊ฐ’์—  ๋Œ€ํ•ด  ์˜ฌ๋ฐ”๋ฅธ  ๊ฒฐ๊ณผ๋ฅผ  ์ œ๊ณตํ•˜๊ณ , ๋‚˜๋จธ์ง€  ๊ฐ’๋“ค์—  ๋Œ€ํ•ด์„œ๋Š”  ํœด๋ฆฌ์Šคํ‹ฑ(์ถ”์ •) ์œผ๋กœ  ์ฒ˜๋ฆฌํ•˜๋Š”  ์˜ค๋ผํด

4)  ์ผ๊ด€์„ฑ  ๊ฒ€์‚ฌ  ์˜ค๋ผํด(Consistent)
๏‚Ÿ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ๋ณ€๊ฒฝ์ด  ์žˆ์„  ๋•Œ, ์ˆ˜ํ–‰  ์ „๊ณผ  ํ›„์˜  ๊ฒฐ๊ณผ  ๊ฐ’์ด  ๋™์ผํ•œ์ง€  ํ™•์ธํ•˜๋Š”  ์˜ค๋ผํด

 

3.  ํ…Œ์ŠคํŠธ  ๋ ˆ๋ฒจ (๋‹จํ†ต์‹œ์ธ) โญ2๏ธโƒฃ

1๏ธโƒฃ ๋‹จ์œ„ํ…Œ์ŠคํŠธ(์ •์ , ๋™์ ) / 1๏ธโƒฃ ํ†ตํ•ฉํ…Œ์ŠคํŠธ(์ƒํ–ฅ์‹, ํ•˜ํ–ฅ์‹, ๋น…๋ฑ…, ๋ฐฑ๋ณธ) / ์‹œ์Šคํ…œํ…Œ์ŠคํŠธ(๊ธฐ๋Šฅ, ๋น„๊ธฐ๋Šฅ) / ์ธ์ˆ˜ํ…Œ์ŠคํŠธ(2๏ธโƒฃ์•ŒํŒŒ, ๋ฒ ํƒ€)

 

4.  ์†Œํ”„ํŠธ์›จ์–ด  ํ…Œ์ŠคํŠธ  ๊ธฐ๋ฒ•

โ‘ด  ํ”„๋กœ๊ทธ๋žจ  ์‹คํ–‰  ์—ฌ๋ถ€ 2๏ธโƒฃ

๏‚Ÿ ์ •์   ํ…Œ์ŠคํŠธ - ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ํ…Œ์ŠคํŠธ (๋ฆฌ๋ทฐ, ์›Œํฌ์Šค๋ฃจ, ์ธ์ŠคํŽ™์…˜) 0๏ธโƒฃ
๏‚Ÿ ๋™์   ํ…Œ์ŠคํŠธ - ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ŠคํŠธ (ํ™”์ดํŠธ๋ฐ•์Šค, ๋ธ”๋ž™๋ฐ•์Šค)

โ‘ต  ํ…Œ์ŠคํŠธ  ๊ธฐ๋ฒ•

1)  ํ™”์ดํŠธ๋ฐ•์Šค  ํ…Œ์ŠคํŠธ 0๏ธโƒฃ(๊ทธ๋ฆผ ์ˆœ์„œ ๋ฌธ์ œ)

๏‚Ÿ ์†Œํ”„ํŠธ์›จ์–ด์˜  ๋‚ด๋ถ€  ๊ตฌ์กฐ์™€  ๋™์ž‘์„  ๊ฒ€์‚ฌํ•˜๋Š”  ํ…Œ์ŠคํŠธ  ๋ฐฉ์‹

๊ธฐ๋ฒ• ์„ค๋ช…
๋ฌธ์žฅ ๊ฒ€์ฆ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ๋“  ๋ฌธ์žฅ์„ ํ•œ ๋ฒˆ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ฒ€์ฆ
์„ ํƒ(๋ถ„๊ธฐ) ๊ฒ€์ฆ ์„ ํƒํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ๊ฒ€์ฆ
๊ฒฝ๋กœ ๊ฒ€์ฆ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฝ๋กœ ๊ฒ€์‚ฌ
์กฐ๊ฑด ๊ฒ€์ฆ ์กฐ๊ฑด์ด๋‚˜ ๋ฐ˜๋ณต๋ฌธ ๋‚ด ์กฐ๊ฑด์‹์„ ๊ฒ€์‚ฌ


2)  ๊ธฐ์ดˆ  ๊ฒฝ๋กœ  ๊ฒ€์‚ฌ (Basic  Path  Test) 
๏‚Ÿ McCabe๊ฐ€  ์ œ์•ˆํ•œ  ๊ฒƒ์œผ๋กœ  ๋Œ€ํ‘œ์ ์ธ  ํ™”์ดํŠธ๋ฐ•์Šค  ํ…Œ์ŠคํŠธ  ๊ธฐ๋ฒ•
๏‚Ÿ ๊ณ„์‚ฐ์‹  :  V(G)=E-N+2
๊ฐ„์„ -๋…ธ๋“œ+2 / 6-4+2 = 4 (ํ˜น์€ ๋ฉด+1์œผ๋กœ ๊ณ„์‚ฐ ๊ฐ€๋Šฅ)


     

3)  ๋ธ”๋ž™๋ฐ•์Šค  ํ…Œ์ŠคํŠธ โญโญ 2๏ธโƒฃ0๏ธโƒฃ 

๏‚Ÿ ํ”„๋กœ๊ทธ๋žจ์˜  ์š”๊ตฌ์‚ฌํ•ญ  ๋ช…์„ธ๋ฅผ  ๋ณด๋ฉด์„œ  ํ…Œ์ŠคํŠธ, ์ฃผ๋กœ  ๊ตฌํ˜„๋œ  ๊ธฐ๋Šฅ์„  ํ…Œ์ŠคํŠธ
๏‚Ÿ ๋ธ”๋ž™๋ฐ•์Šค  ํ…Œ์ŠคํŠธ  ๊ธฐ๋ฒ•

๊ธฐ๋ฒ• ์„ค๋ช…
๋™๋“ฑ  ๋ถ„ํ•   ๊ธฐ๋ฒ• (Equivalence Partitioning  Testing) 0๏ธโƒฃ1๏ธโƒฃ ์ž…๋ ฅ  ์ž๋ฃŒ์—  ์ดˆ์ ์„  ๋งž์ถฐ  ํ…Œ์ŠคํŠธ  ์ผ€์ด์Šค๋ฅผ  ๋งŒ๋“ค์–ด  ๊ฒ€์‚ฌํ•˜๋Š”  ๋ฐฉ๋ฒ• (90~100์ด๋ฉด 95)
๊ฒฝ๊ณ„๊ฐ’  ๋ถ„์„ (Boundary Value  Analysis) 1๏ธโƒฃ2๏ธโƒฃ - ์ž…๋ ฅ  ๊ฐ’์˜  ์ค‘๊ฐ„๊ฐ’๋ณด๋‹ค  ๊ฒฝ๊ณ„๊ฐ’์—์„œ  ์˜ค๋ฅ˜๊ฐ€  ๋ฐœ์ƒํ•   ํ™•๋ฅ ์ด  ๋†’๋‹ค๋Š”  ์ ์„  ์ด์šฉํ•ด  ์ž…๋ ฅ  ์กฐ๊ฑด์˜  ๊ฒฝ๊ณ„๊ฐ’์„  ํ…Œ์ŠคํŠธ  ์ผ€์ด์Šค๋กœ  ์„ ์ •ํ•œ๋‹ค.
- 80~90 ์˜  ์ž…๋ ฅ  ์กฐ๊ฑด์ด  ์žˆ์„  ๋•Œ,  79,80,81,89,90,91์„  ํ…Œ์ŠคํŠธ  ๊ฐ’์œผ๋กœ  ์„ ์ •ํ•œ๋‹ค
์›์ธ-ํšจ๊ณผ  ๊ทธ๋ž˜ํ”„  ๊ฒ€์‚ฌ (Cause-Effect Graphing  Testing)1๏ธโƒฃ - ์ž…๋ ฅ  ๋ฐ์ดํ„ฐ  ๊ฐ„์˜  ๊ด€๊ณ„์™€  ์ถœ๋ ฅ์—  ์˜ํ–ฅ์„  ๋ฏธ์น˜๋Š”  ์ƒํ™ฉ์„  ์ฒด๊ณ„์ ์œผ๋กœ  ๋ถ„์„ํ•œ  ๋‹ค์Œ  ํšจ์šฉ์„ฑ์ด  ๋†’์€  ํ…Œ์ŠคํŠธ  ์ผ€์ด์Šค๋ฅผ  ์„ ์ •ํ•˜์—ฌ  ๊ฒ€์‚ฌํ•˜๋Š”  ๊ธฐ๋ฒ•
์˜ค๋ฅ˜  ์˜ˆ์ธก  ๊ฒ€์‚ฌ (Error  Guessing) - ๊ณผ๊ฑฐ์˜  ๊ฒฝํ—˜์ด๋‚˜  ํ…Œ์Šคํ„ฐ์˜  ๊ฐ๊ฐ์œผ๋กœ  ํ…Œ์ŠคํŠธํ•˜๋Š”  ๊ธฐ๋ฒ•
๋น„๊ต  ๊ฒ€์‚ฌ (Comparison  Testing) - ์—ฌ๋Ÿฌ  ๋ฒ„์ „์˜  ํ”„๋กœ๊ทธ๋žจ์—  ๋™์ผํ•œ  ํ…Œ์ŠคํŠธ  ์ž๋ฃŒ๋ฅผ  ์ œ๊ณตํ•˜์—ฌ  ๋™์ผํ•œ  ๊ฒฐ๊ณผ๊ฐ€  ์ถœ๋ ฅ๋˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๋Š”  ๊ธฐ๋ฒ•

 

โ‘ถ  ํ…Œ์ŠคํŠธ์—  ๋Œ€ํ•œ  ์‹œ๊ฐ

1) ๊ฒ€์ฆ (Verification)
๏‚Ÿ ์†Œํ”„ํŠธ์›จ์–ด์˜  ๊ฐœ๋ฐœ  ๊ณผ์ •์„  ํ…Œ์ŠคํŠธ

2) ํ™•์ธ (Validation)
๏‚Ÿ ์™„์„ฑ๋œ  ์†Œํ”„ํŠธ์›จ์–ด์˜  ๊ฒฐ๊ณผ๋ฅผ  ํ…Œ์ŠคํŠธ

 

โ‘ท  ํ…Œ์ŠคํŠธ  ๋ชฉ์ 

๋ชฉ์  ์„ค๋ช…
ํšŒ๋ณต(Recovery)  - ์‹œ์Šคํ…œ์—  ๊ณ ์˜๋กœ  ์‹คํŒจ๋ฅผ  ์œ ๋„ํ•˜๊ณ   ์‹œ์Šคํ…œ์ด  ์ •์ƒ์ ์œผ๋กœ  ๋ณต๊ท€ํ•˜๋Š”์ง€  ํ…Œ์ŠคํŠธ
์•ˆ์ „(Security)  - ๋ถˆ๋ฒ•์ ์ธ  ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€  ์ ‘๊ทผํ•˜์—ฌ  ์‹œ์Šคํ…œ์„  ํŒŒ๊ดดํ•˜์ง€  ๋ชปํ•˜๋„๋ก  ์†Œ์Šค์ฝ”๋“œ  ๋‚ด์˜  ๋ณด์•ˆ์ ์ธ  ๊ฒฐํ•จ์„  ๋ฏธ๋ฆฌ  ์ ๊ฒ€ํ•˜๋Š”  ํ…Œ์ŠคํŠธ
๊ฐ•๋„(Stress)  - ์‹œ์Šคํ…œ์—  ๊ณผ๋‹ค  ์ •๋ณด๋Ÿ‰์„  ๋ถ€๊ณผํ•˜์—ฌ  ๊ณผ๋ถ€ํ•˜  ์‹œ์—๋„  ์‹œ์Šคํ…œ์ด  ์ •์ƒ์ ์œผ๋กœ  ์ž‘๋™๋˜๋Š”์ง€๋ฅผ ๊ฒ€์ฆํ•˜๋Š”  ํ…Œ์ŠคํŠธ
์„ฑ๋Šฅ(Performance)   - ์‹œ์Šคํ…œ์˜  ์‘๋‹ตํ•˜๋Š”  ์‹œ๊ฐ„, ์ฒ˜๋ฆฌ๋Ÿ‰, ๋ฐ˜์‘์†๋„  ๋“ฑ์„  ํ…Œ์ŠคํŠธ
๊ตฌ์กฐ(Structure)  - ์‹œ์Šคํ…œ์˜  ๋‚ด๋ถ€  ๋…ผ๋ฆฌ  ๊ฒฝ๋กœ, ์†Œ์Šค์ฝ”๋“œ์˜  ๋ณต์žก๋„๋ฅผ  ํ‰๊ฐ€ํ•˜๋Š”  ํ…Œ์ŠคํŠธ
ํšŒ๊ท€(Regression)  2๏ธโƒฃ  - ๋ณ€๊ฒฝ  ๋˜๋Š”  ์ˆ˜์ •๋œ  ์ฝ”๋“œ์—  ๋Œ€ํ•˜์—ฌ  ์ƒˆ๋กœ์šด  ๊ฒฐํ•จ  ๋ฐœ๊ฒฌ  ์—ฌ๋ถ€๋ฅผ  ํ‰๊ฐ€ํ•˜๋Š”  ํ…Œ์ŠคํŠธ
๋ณ‘ํ–‰(Parallel)  - ๋ณ€๊ฒฝ๋œ  ์‹œ์Šคํ…œ๊ณผ  ๊ธฐ์กด  ์‹œ์Šคํ…œ์—  ๋™์ผํ•œ  ๋ฐ์ดํ„ฐ๋ฅผ  ์ž…๋ ฅ  ํ›„  ๊ฒฐ๊ณผ๋ฅผ  ๋น„๊ตํ•˜๋Š”  ํ…Œ์ŠคํŠธ
A/B  ํ…Œ์ŠคํŠธ  - ๊ธฐ์กด  ์„œ๋น„์Šค A์™€  ์ƒˆ๋กœ  ์ ์šฉํ•˜๊ณ   ์‹ถ์€  ์„œ๋น„์Šค B๋ฅผ ํ†ต๊ณ„์ ์ธ  ๋ฐฉ๋ฒ•์œผ๋กœ  ๋น„๊ตํ•˜์—ฌ ์ƒˆ๋กœ์šด ์„œ๋น„์Šค๊ฐ€  ๊ธฐ์กด  ์„œ๋น„์Šค์—  ๋น„ํ•ด  ์ •๋ง  ํšจ๊ณผ๊ฐ€  ์žˆ๋Š”์ง€  ์•Œ์•„๋ณด๋Š”  ํ…Œ์ŠคํŠธ
์Šค๋ชจํฌ  ํ…Œ์ŠคํŠธ (Smoke) - ๋ณธ๊ฒฉ์ ์ธ  ํ…Œ์ŠคํŠธ  ์ˆ˜ํ–‰์—  ์•ž์„œ  ํ…Œ์ŠคํŠธ  ํ™˜๊ฒฝ์˜  ํ…Œ์ŠคํŠธ๊ฐ€  ๊ฐ€๋Šฅํ•œ์ง€  ์—ฌ๋ถ€๋ฅผ  ํŒ๋‹จํ•˜๊ธฐ  ์œ„ํ•ด  ๊ฐ„๋‹จํ•˜๊ฒŒ  ํ…Œ์ŠคํŠธ

 

โ‘ธ  ํ…Œ์ŠคํŠธ  ์ข…๋ฅ˜(์ „๋ถ€ ๋™์ )

1)  ๋ช…์„ธ  ๊ธฐ๋ฐ˜  ํ…Œ์ŠคํŠธ

๏‚Ÿ ์ฃผ์–ด์ง„  ๋ช…์„ธ๋ฅผ  ๋น ์ง์—†์ด  ํ…Œ์ŠคํŠธ  ์ผ€์ด์Šค๋กœ  ๊ตฌํ˜„ํ•˜๊ณ   ์žˆ๋Š”์ง€  ํ™•์ธํ•˜๋Š”  ํ…Œ์ŠคํŠธ ex.๋ธ”๋ž™๋ฐ•์Šค

2)  ๊ตฌ์กฐ  ๊ธฐ๋ฐ˜  ํ…Œ์ŠคํŠธ

๏‚Ÿ ์†Œํ”„ํŠธ์›จ์–ด  ๋‚ด๋ถ€  ๋…ผ๋ฆฌ  ํ๋ฆ„์—  ๋”ฐ๋ผ  ํ…Œ์ŠคํŠธ  ์ผ€์ด์Šค๋ฅผ  ์ž‘์„ฑํ•˜๊ณ   ํ™•์ธํ•˜๋Š”  ํ…Œ์ŠคํŠธ ex.ํ™”์ดํŠธ๋ฐ•์Šค

3)  ๊ฒฝํ—˜  ๊ธฐ๋ฐ˜  ํ…Œ์ŠคํŠธ

๏‚Ÿ ๊ฒฝํ—˜์ด  ๋งŽ์€  ํ…Œ์Šคํ„ฐ์˜  ์ง๊ด€๊ณผ  ๊ธฐ์ˆ   ๋Šฅ๋ ฅ์„  ๊ธฐ๋ฐ˜์œผ๋กœ  ์ˆ˜ํ–‰ํ•˜๋Š”  ํ…Œ์ŠคํŠธ, ์‹œ๊ฐ„ ๋‹จ์ถ•

 

5.  ํ…Œ์ŠคํŠธ  ์ปค๋ฒ„๋ฆฌ์ง€ 1๏ธโƒฃ

โ‘ด  ํ…Œ์ŠคํŠธ  ์ปค๋ฒ„๋ฆฌ์ง€์˜  ๊ฐœ๋…

๏‚Ÿ ์ฃผ์–ด์ง„  ํ…Œ์ŠคํŠธ  ์ผ€์ด์Šค์—  ์˜ํ•ด  ์ˆ˜ํ–‰๋˜๋Š”  ์†Œํ”„ํŠธ์›จ์–ด์˜  ํ…Œ์ŠคํŠธ  ๋ฒ”์œ„๋ฅผ  ์ธก์ •ํ•˜๋Š”  ํ…Œ์ŠคํŠธ  ํ’ˆ์งˆ  ์ธก์ •  ๊ธฐ์ค€
๏‚Ÿ ํ…Œ์ŠคํŠธ๋ฅผ  ์–ผ๋งˆ๋‚˜  ์ˆ˜ํ–‰ํ–ˆ๋Š”์ง€  ์ธก์ •ํ•˜๋Š”  ๊ธฐ์ค€

โ‘ต  ํ…Œ์ŠคํŠธ  ์ปค๋ฒ„๋ฆฌ์ง€  ์œ ํ˜•

๏‚Ÿ ๊ธฐ๋Šฅ  ๊ธฐ๋ฐ˜  ์ปค๋ฒ„๋ฆฌ์ง€
๏‚Ÿ ๋ผ์ธ  ์ปค๋ฒ„๋ฆฌ์ง€(Line  Coverage)
๏‚Ÿ ์ฝ”๋“œ  ์ปค๋ฒ„๋ฆฌ์ง€(Code  Coverage)

๊ตฌ๋ฌธ: ๊ตฌ๋ฌธ๋“ค์„ ์–ผ๋งˆ๋‚˜ ํ…Œ์ŠคํŠธ ํ–ˆ๋Š”์ง€ / ์กฐ๊ฑด ์ปค๋ฒ„๋ฆฌ์ง€: if(a>=0 && b>=0) ์—ฌ๊ธฐ์„œ a>=0์˜ ์กฐ๊ฑด / ๊ฒฐ์ • ์ปค๋ฒ„๋ฆฌ์ง€: if(a>=0 && b>=0) ์—ฌ๊ธฐ์„œ&nbsp;a>=0 && b>=0

     

 

Section  2.  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ํ†ตํ•ฉ  ํ…Œ์ŠคํŠธ

1.  ๊ฒฐํ•จ๊ด€๋ฆฌ  ๋„๊ตฌ

โ‘ด  ๊ฒฐํ•จ๊ด€๋ฆฌ  ํ”„๋กœ์„ธ์Šค

๏‚Ÿ ์—๋Ÿฌ  ๋ฐœ๊ฒฌ
๏‚Ÿ ์—๋Ÿฌ  ๋“ฑ๋ก
๏‚Ÿ ์—๋Ÿฌ  ๋ถ„์„
๏‚Ÿ ๊ฒฐํ•จ  ํ™•์ •
๏‚Ÿ ๊ฒฐํ•จ  ํ• ๋‹น
๏‚Ÿ ๊ฒฐํ•จ  ์กฐ์น˜
๏‚Ÿ ๊ฒฐํ•จ  ์กฐ์น˜  ๊ฒ€ํ†   ๋ฐ  ์Šน์ธ

โ‘ต  ๊ฒฐํ•จ  ์ถ”์ด  ๋ถ„์„

๏‚Ÿ ๊ฒฐํ•จ  ๋ถ„ํฌ
๏‚Ÿ ๊ฒฐํ•จ  ์ถ”์„ธ 
๏‚Ÿ ๊ฒฐํ•จ  ์—์ด์ง•

2.  ํ…Œ์ŠคํŠธ  ์ž๋™ํ™”  ๋„๊ตฌ

โ‘ด  ํ…Œ์ŠคํŠธ  ์ž๋™ํ™”  ๋„๊ตฌ  ์œ ํ˜•

๏‚Ÿ ์ •์   ๋ถ„์„  ๋„๊ตฌ(Static  Analysis  Tools)
๏‚Ÿ ํ…Œ์ŠคํŠธ  ์‹คํ–‰  ๋„๊ตฌ(Test  Execution  Tools)
๏‚Ÿ ์„ฑ๋Šฅ  ํ…Œ์ŠคํŠธ  ๋„๊ตฌ(Performance  Test  Tools)
๏‚Ÿ ํ…Œ์ŠคํŠธ  ํ†ต์ œ  ๋„๊ตฌ(Test  Control  Tools)
๏‚Ÿ ํ…Œ์ŠคํŠธ  ์žฅ์น˜(Test  Harness)

โ‘ต  ํ…Œ์ŠคํŠธ  ์žฅ์น˜  ๊ตฌ์„ฑ์š”์†Œ

๊ตฌ์„ฑ์š”์†Œ ์„ค๋ช…
ํ…Œ์ŠคํŠธ  ๋“œ๋ผ์ด๋ฒ„ (Test  Driver) 1๏ธโƒฃ - ํ…Œ์ŠคํŠธ  ๋Œ€์ƒ  ํ•˜์œ„  ๋ชจ๋“ˆ์„  ํ˜ธ์ถœํ•˜๊ณ , ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ  ์ „๋‹ฌํ•˜๊ณ , ๋ชจ๋“ˆ  ํ…Œ์ŠคํŠธ  ์ˆ˜ํ–‰  ํ›„์˜ ๊ฒฐ๊ณผ๋ฅผ  ๋„์ถœํ•˜๋Š”  ๋“ฑ  ์ƒํ–ฅ์‹ ํ…Œ์ŠคํŠธ์—  ํ•„์š”ํ•˜๋‹ค
ํ…Œ์ŠคํŠธ  ์Šคํ… (Test  Stub) 1๏ธโƒฃ ์ œ์–ด  ๋ชจ๋“ˆ์ด  ํ˜ธ์ถœํ•˜๋Š”  ํƒ€  ๋ชจ๋“ˆ์˜  ๊ธฐ๋Šฅ์„  ๋‹จ์ˆœํžˆ  ์ˆ˜ํ–‰ํ•˜๋Š”  ๋„๊ตฌ๋กœ  ํ•˜ํ–ฅ์‹  ํ…Œ์ŠคํŠธ์—  ํ•„์š”ํ•˜๋‹ค.
ํ…Œ์ŠคํŠธ  ์ŠˆํŠธ (Test  Suites) - ํ…Œ์ŠคํŠธ  ๋Œ€์ƒ  ์ปดํฌ๋„ŒํŠธ๋‚˜  ๋ชจ๋“ˆ, ์‹œ์Šคํ…œ์—  ์‚ฌ์šฉ๋˜๋Š”  ํ…Œ์ŠคํŠธ  ์ผ€์ด์Šค์˜  ์ง‘ํ•ฉ์„  ๋งํ•œ๋‹ค
ํ…Œ์ŠคํŠธ  ์ผ€์ด์Šค (Test  Case) - ์ž…๋ ฅ ๊ฐ’, ์‹คํ–‰ ์กฐ๊ฑด, ๊ธฐ๋Œ€ ๊ฒฐ๊ณผ ๋“ฑ์˜  ์ง‘ํ•ฉ์„  ๋งํ•œ๋‹ค. (ํ•˜๋‚˜์˜ ์ผ€์ด์Šค)
ํ…Œ์ŠคํŠธ  ์Šคํฌ๋ฆฝํŠธ (Test  Script) - ์ž๋™ํ™”๋œ  ํ…Œ์ŠคํŠธ  ์‹คํ–‰  ์ ˆ์ฐจ์—  ๋Œ€ํ•œ  ๋ช…์„ธ๋ฅผ  ๋งํ•œ๋‹ค.
๋ชฉ  ์˜ค๋ธŒ์ ํŠธ (Mock  Object) - ์‚ฌ์šฉ์ž์˜  ํ–‰์œ„๋ฅผ  ์กฐ๊ฑด๋ถ€๋กœ  ์‚ฌ์ „์—  ์ž…๋ ฅํ•ด  ๋‘๋ฉด, ๊ทธ  ์ƒํ™ฉ์—  ์˜ˆ์ •๋œ  ํ–‰์œ„๋ฅผ  ์ˆ˜ํ–‰ํ•˜๋Š”  ๊ฐ์ฒด๋ฅผ  ๋งํ•œ๋‹ค.


3.  ํ†ตํ•ฉ  ํ…Œ์ŠคํŠธ

โ‘ด  ํ†ตํ•ฉ  ํ…Œ์ŠคํŠธ  ์ˆ˜ํ–‰  ๋ฐฉ๋ฒ•์˜  ๋ถ„๋ฅ˜

์ฐธ๊ณ : ์ƒํ–ฅ+ํ•˜ํ–ฅ์€ ๋ฐฑ๋ณธํ…Œ์ŠคํŠธ

 

 


Section  3.  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ์„ฑ๋Šฅ  ๊ฐœ์„ 

1.  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ์„ฑ๋Šฅ  ์ €ํ•˜  ์›์ธ

๏‚Ÿ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค  ๊ด€๋ จ  ์„ฑ๋Šฅ  ์ €ํ•˜
๏‚Ÿ ๋‚ด๋ถ€  ๋กœ์ง์œผ๋กœ  ์ธํ•œ  ์„ฑ๋Šฅ  ์ €ํ•˜  ์›์ธ
๏‚Ÿ ์™ธ๋ถ€  ํ˜ธ์ถœ๋กœ  ์ธํ•œ  ์„ฑ๋Šฅ  ์ €ํ•˜

 

2.  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ์„ฑ๋Šฅ  ๋ถ„์„

โ‘ด  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ์„ฑ๋Šฅ  ๋ถ„์„  ์ง€ํ‘œ 0๏ธโƒฃ

๏‚Ÿ ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput)  :  ์ผ์ •  ์‹œ๊ฐ„  ๋‚ด์—  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด  ์ฒ˜๋ฆฌํ•˜๋Š”  ์ผ์˜  ์–‘
๏‚Ÿ ์‘๋‹ต  ์‹œ๊ฐ„(Response  Time)  :  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—  ์š”์ฒญ์„  ์ „๋‹ฌํ•œ  ์‹œ๊ฐ„๋ถ€ํ„ฐ  ์‘๋‹ต์ด  ๋„์ฐฉํ•   ๋•Œ๊นŒ์ง€  ๊ฑธ๋ฆฐ  ์‹œ๊ฐ„ 
๏‚Ÿ ๊ฒฝ๊ณผ  ์‹œ๊ฐ„(Turnaround  Time) = ๋ฐ˜ํ™˜ ์‹œ๊ฐ„ : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—  ์š”์ฒญ์„  ์ „๋‹ฌํ•œ  ์‹œ๊ฐ„๋ถ€ํ„ฐ  ์ฒ˜๋ฆฌ๊ฐ€  ์™„๋ฃŒ๋   ๋•Œ๊นŒ์ง€  ๊ฑธ๋ฆฐ  ์‹œ๊ฐ„ 
๏‚Ÿ ์ž์›  ์‚ฌ์šฉ๋ฅ (Resource  Usage)  : ์ž‘์—…์„  ์ฒ˜๋ฆฌํ•˜๋Š”  ๋™์•ˆ์˜ CPU, ๋ฉ”๋ชจ๋ฆฌ  ๋„คํŠธ์›Œํฌ  ์‚ฌ์šฉ๋Ÿ‰  ๋“ฑ์˜  ์ž์›  ์‚ฌ์šฉ๋ฅ 

โ‘ต  ์„ฑ๋Šฅ  ๋ถ„์„  ๋„๊ตฌ

1)  JMeter

๏‚Ÿ HTTP,  FTP๋“ฑ  ๋‹ค์–‘ํ•œ  ํ”„๋กœํ† ์ฝœ์„  ์ง€์›ํ•˜๋Š”  ๋ถ€ํ•˜  ํ…Œ์ŠคํŠธ  ๋„๊ตฌ

2)  LoadUI

๏‚Ÿ ์›น  ์„œ๋น„์Šค์˜  ๋กœ๋“œ  ํ…Œ์ŠคํŠธ

3)  OpenSTA

๏‚Ÿ HTTP,  HTTPS  ํ”„๋กœํ† ์ฝœ์—  ๋Œ€ํ•œ  ๋ถ€ํ•˜  ํ…Œ์ŠคํŠธ  ๋ฐ  ์ƒ์‚ฐํ’ˆ  ๋ชจ๋‹ˆํ„ฐ๋ง  ๋„๊ตฌ

โ‘ถ  ๋ชจ๋‹ˆํ„ฐ๋ง  ๋„๊ตฌ

1)  Scouter

๏‚Ÿ ๋‹จ์ผ  ๋ทฐ  ํ†ตํ•ฉ/์‹ค์‹œ๊ฐ„  ๋ชจ๋‹ˆํ„ฐ๋ง

2)  NMon

๏‚Ÿ ๋ฆฌ๋ˆ…์Šค  ์„œ๋ฒ„  ์ž์›์—  ๋Œ€ํ•œ  ๋ชจ๋‹ˆํ„ฐ๋ง  ๋„๊ตฌ

3)  Zabbix

๏‚Ÿ ์›น๊ธฐ๋ฐ˜  ์„œ๋ฒ„, ์„œ๋น„์Šค, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ๋ชจ๋‹ˆํ„ฐ๋ง  ๋„๊ตฌ 

4)  Jeniffer

๏‚Ÿ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ  ์„œ๋ฒ„๋กœ  ์œ ์ž…๋˜๋Š”  ํŠธ๋žœ์žญ์…˜  ์ˆ˜๋Ÿ‰, ์ฒ˜๋ฆฌ์‹œ๊ฐ„, ์‘๋‹ต์‹œ๊ฐ„, ์ž์›  ํ™œ์šฉ๋ฅ   ๋“ฑ์„  ๋ชจ๋‹ˆํ„ฐ๋ง

 

3. ์ •ํ˜•  ๊ธฐ์ˆ   ๊ฒ€ํ† ํšŒ์˜ (FTR,  Formal  Technical  Review) 

โ‘ด  FTR์˜  ๊ฐœ๋…

๏‚Ÿ ์†Œํ”„ํŠธ์›จ์–ด  ์—”์ง€๋‹ˆ์–ด๊ฐ€  ์ˆ˜ํ–‰ํ•˜๋Š”  ์†Œํ”„ํŠธ์›จ์–ด  ํ’ˆ์งˆ๋ณด์ฆ  ํ™œ๋™(ํšŒ์˜)

โ‘ต  ๊ฒ€ํ† ์ง€์นจ

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

 

4.  ์†Œ์Šค์ฝ”๋“œ  ํ’ˆ์งˆ  ๋ถ„์„ (์ดํ›„ ๋ฆฌํŒฉํ† ๋ง - ๊ธฐ๋Šฅ์€ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ , ์†Œ์Šค ์ฝ”๋“œ๋งŒ ๋ฐ”๊พธ๋Š” ๊ฒƒ , ํ”„๋กœ๊ทธ๋žจ์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์ˆ˜์ •ํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ0๏ธโƒฃ)

โ‘ด  ๋™๋ฃŒ  ๊ฒ€ํ† (Peer  Review)

๏‚Ÿ 2~3๋ช…์ด  ์ง„ํ–‰ํ•˜๋Š”  ๋ฆฌ๋ทฐ์˜  ํ˜•ํƒœ
์ž‘์„ฑ์ž๊ฐ€ ๋ช…์„ธ์„œ ์„ค๋ช…ํ•˜๊ณ  ์ดํ•ด๊ด€๊ณ„์ž๋“ค์ด ์„ค๋ช…์„ ๋“ค์œผ๋ฉด์„œ ๊ฒฐํ•จ ๋ฐœ๊ฒฌ

โ‘ต  ์›Œํฌ์Šค๋ฃจ(Walkthrough)

๏‚Ÿ ๊ณ„ํš๋œ  ๊ฐœ๋ฐœ์ž  ๊ฒ€ํ†   ํšŒ์˜, ๊ฒ€ํ†  ์ž๋ฃŒ ํšŒ์˜ ์ „์— ๋ฏธ๋ฆฌ ๋ฐฐํฌ, ์งง์€ ์‹œ๊ฐ„, ์˜ค๋ฅ˜ ๋ฏธ๋ฆฌ ๊ฒ€ํ† ํ•˜๋Š” ๋ฐ ์˜์˜

โ‘ถ  ์ธ์ŠคํŽ™์…˜(Inspection)

๏‚Ÿ ๊ณต์‹์   ๊ฒ€์‚ฌ  ํšŒ์˜
๏‚Ÿ  ์ €์ž‘์ž ์™ธ์˜ ๋‹ค๋ฅธ ์ „๋ฌธ๊ฐ€ ๋˜๋Š” ํŒ€์ด ๊ฒ€์‚ฌํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์•„๋‚ด๋Š” ๊ณต์‹์  ๊ฒ€ํ†  ๋ฐฉ๋ฒ•
๏‚Ÿ ๊ณ„ํš →  ์‚ฌ์ „๊ต์œก →  ์ค€๋น„ →  ์ธ์ŠคํŽ™์…˜ →  ํšŒ์˜ →  ์ˆ˜์ • →  ํ›„์†์กฐ์น˜ 

 

5.  ์†Œ์Šค์ฝ”๋“œ  ํ’ˆ์งˆ  ๋ถ„์„  ๋„๊ตฌ

๏‚Ÿ ์†Œ์Šค์ฝ”๋“œ  ํ’ˆ์งˆ  ๋ถ„์„  ๋„๊ตฌ  ์ข…๋ฅ˜

๊ตฌ๋ถ„ ๋„๊ตฌ๋ช… ์„ค๋ช…
์ •์  ๋ถ„์„ ๋„๊ตฌ PMD ์ฃผ๋กœ Java์—์„œ ์‚ฌ์šฉํ•˜์ง€๋งŒ, Javascript, PLSQL, XML ๋“ฑ์˜ ์–ธ์–ด๋„ ์ง€์›
checkstyle ์ž๋ฐ” ์ฝ”๋“œ์— ๋Œ€ํ•œ ์†Œ์Šค์ฝ”๋“œ ํ‘œ์ค€ ์ค€์ˆ˜ ๊ฒ€์‚ฌ, ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ ๋„๊ตฌ์— ํ†ตํ•ฉ ๊ฐ€๋Šฅ
SonarQube ์ค‘๋ณต์ฝ”๋“œ, ๋ณต์žก๋„, ์ฝ”๋”ฉ ์„ค๊ณ„ ๋“ฑ์„ ๋ถ„์„ํ•˜๋Š” ์†Œ์Šค ๋ถ„์„ ํ†ตํ•ฉ ํ”Œ๋žซํผ
cppcheck C, C++ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜, ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋“ฑ ๋ฌธ์ œ ๋ถ„์„
ccm ๋‹ค์–‘ํ•œ ์–ธ์–ด์˜ ์ฝ”๋“œ ๋ณต์žก๋„ ๋ถ„์„ ๋„๊ตฌ
cobertura ์ž๋ฐ” ์–ธ์–ด์˜ ์†Œ์Šค์ฝ”๋“œ ๋ณต์žก๋„ ๋ถ„์„ ๋ฐ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ์ธก์ •
๋™์  ๋ถ„์„ ๋„๊ตฌ Avalanche ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ๊ฒฐํ•จ ๋ฐ ์ทจ์•ฝ์  ๋ถ„์„
Valgrind ํ”„๋กœ๊ทธ๋žจ ๋‚ด ์กด์žฌํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์Šค๋ ˆ๋“œ ๊ฒฐํ•จ ๋“ฑ ๋ถ„์„



6.  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ์„ฑ๋Šฅ  ๊ฐœ์„ ํ•˜๊ธฐ

โ‘ด  ์ฝ”๋“œ  ์Šค๋ฉœ(Code  Smell)

๏‚Ÿ ์ปดํ“จํ„ฐ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ  ์ฝ”๋“œ์—์„œ  ๋”  ์‹ฌ๊ฐํ•œ  ๋ฌธ์ œ๋ฅผ  ์ผ์œผํ‚ฌ  ๊ฐ€๋Šฅ์„ฑ์ด  ์žˆ๋Š”  ํ”„๋กœ๊ทธ๋žจ  ์†Œ์Šค์ฝ”๋“œ
๏‚Ÿ ์ฝ”๋“œ  ์Šค๋ฉœ  ๊ด€๋ จ  ์šฉ์–ด
-  ์ŠคํŒŒ๊ฒŒํ‹ฐ  ์ฝ”๋“œ(Spaghetti  Code),  ์™ธ๊ณ„์ธ  ์ฝ”๋“œ

โ‘ต  ๋ฆฌํŒฉํ† ๋ง

๏‚Ÿ ์™ธ๋ถ€  ๋™์ž‘์„  ๋ฐ”๊พธ์ง€  ์•Š์œผ๋ฉด์„œ  ๋‚ด๋ถ€  ๊ตฌ์กฐ๋ฅผ  ๊ฐœ์„ ํ•˜๋Š”  ๋ฐฉ๋ฒ•

โ‘ถ  ํด๋ฆฐ์ฝ”๋“œ

๏‚Ÿ ์˜์กด์„ฑ์„  ์ตœ์†Œ๋กœ  ํ•˜๊ณ   ์‚ฌ๋žŒ์ด  ์ดํ•ดํ•   ์ˆ˜  ์žˆ๋Š”  ๊ฐ€๋…์„ฑ, ๋ชฉ์ ์„ฑ์ด  ๋›ฐ์–ด๋‚œ  ๋ช…ํ™•ํ•œ  ์ฝ”๋“œ
๏‚Ÿ ํด๋ฆฐ์ฝ”๋“œ  ์ž‘์„ฑ  ์›์น™ 
-  ๊ฐ€๋…์„ฑ, ๋‹จ์ˆœ์„ฑ, ์˜์กด์„ฑ ๋ฐฐ์ œ(๋…๋ฆฝ์„ฑ ์ฆ๊ฐ€), ์ค‘๋ณต์„ฑ ์ตœ์†Œํ™”, ์ถ”์ƒํ™”

 

 



  09  ์†Œํ”„ํŠธ์›จ์–ด  ์œ ์ง€๋ณด์ˆ˜

Section  1.  ์†Œํ”„ํŠธ์›จ์–ด  ์œ ์ง€๋ณด์ˆ˜

1.  ์œ ์ง€๋ณด์ˆ˜์˜  ๊ตฌ๋ถ„โญโญ

โ‘ด  ์ˆ˜์ •  ๋ณด์ˆ˜(Corrective  Maintenance)

๏‚Ÿ ์†Œํ”„ํŠธ์›จ์–ด  ๊ตฌ์ถ•  ์‹œ  ํ…Œ์ŠคํŠธ  ๋‹จ๊ณ„์—  ๋ฏธ์ฒ˜  ๋ฐœ๊ฒฌํ•˜์ง€  ๋ชปํ•œ  ์ž ์žฌ์ ์ธ  ์˜ค๋ฅ˜๋ฅผ  ์ฐพ์•„  ์ˆ˜์ •ํ•œ๋‹ค.

โ‘ต  ์ ์‘  ๋ณด์ˆ˜(Adaptive  Maintenance)

๏‚Ÿ ์šด์˜์ฒด์ œ,  ํ•˜๋“œ์›จ์–ด์™€  ๊ฐ™์€  ํ”„๋กœ๊ทธ๋žจ  ํ™˜๊ฒฝ๋ณ€ํ™”์—  ๋งž์ถ”๊ธฐ  ์œ„ํ•ด  ์ˆ˜ํ–‰ํ•˜๋Š”  ์œ ์ง€๋ณด์ˆ˜ 

โ‘ถ  ํ–ฅ์ƒ  ๋ณด์ˆ˜(Perfective  Maintenance)

๏‚Ÿ ๊ธฐ์กด  ๊ธฐ๋Šฅ๊ณผ  ๋‹ค๋ฅธ  ์ƒˆ๋กœ์šด  ๊ธฐ๋Šฅ์„  ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜  ๊ธฐ์กด  ๊ธฐ๋Šฅ์„  ๊ฐœ์„ 

โ‘ท  ์˜ˆ๋ฐฉ  ๋ณด์ˆ˜(Preventive  Maintenance)

๏‚Ÿ ์žฅ๋ž˜์—  ์œ ์ง€๋ณด์ˆ˜์„ฑ  ๋˜๋Š”  ์‹ ๋ขฐ์„ฑ์„  ๋ณด์žฅํ•˜๊ธฐ  ์œ„ํ•ด  ์„ ์ œ์ ์œผ๋กœ ๋ฏธ๋ฆฌ  ํ•˜๋Š”  ์œ ์ง€๋ณด์ˆ˜

 

2.  ์œ ์ง€๋ณด์ˆ˜  ๊ด€๋ จ  ์šฉ์–ด

โ‘ด  ๋ ˆ๊ฑฐ์‹œ  ์‹œ์Šคํ…œ(Legacy  System) 

๏‚Ÿ ๋‚ก์€  ๊ธฐ์ˆ ์ด๋‚˜  ๋ฐฉ๋ฒ•๋ก , ์ปดํ“จํ„ฐ  ์‹œ์Šคํ…œ,  ์†Œํ”„ํŠธ์›จ์–ด  ๋“ฑ์„  ๋งํ•œ๋‹ค.

โ‘ต  ์™ธ๊ณ„์ธ  ์ฝ”๋“œ(Alien  Code)

๏‚Ÿ ์•„์ฃผ  ์˜ค๋ž˜๋˜๊ฑฐ๋‚˜  ์ฐธ๊ณ   ๋ฌธ์„œ  ๋˜๋Š”  ๊ฐœ๋ฐœ์ž๊ฐ€  ์—†์–ด  ์œ ์ง€๋ณด์ˆ˜  ์ž‘์—…์ด  ์–ด๋ ค์šด  ํ”„๋กœ๊ทธ๋žจ  ์ฝ”๋“œ

โ‘ถ  ์ŠคํŒŒ๊ฒŒํ‹ฐ  ์ฝ”๋“œ(Spaghetti  Code)

๏‚Ÿ ๋ณต์žกํ•œ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ  ์†Œ์Šค์ฝ”๋“œ

 



  10  ์ œํ’ˆ  ์†Œํ”„ํŠธ์›จ์–ด  ํŒจํ‚ค์ง•

Section  1.  ๊ตญ์ œ  ํ‘œ์ค€  ์ œํ’ˆ  ํ’ˆ์งˆ  ํŠน์„ฑ

1.  ์ œํ’ˆ  ํ’ˆ์งˆ  ๊ตญ์ œ  ํ‘œ์ค€ โญ

โ‘ด  ISO/IEC  9126์˜  ์†Œํ”„ํŠธ์›จ์–ด  ํ’ˆ์งˆ  ํŠน์„ฑ (๊ธฐ์‹ ์‚ฌํšจ์œ ์ด)

โ‘ต  ISO/IEC  14598  ํ‰๊ฐ€  ํŠน์„ฑ

๋ฐ˜๋ณต(๋™์ผํ‰๊ฐ€์ž) ์žฌํ˜„(๋‹ค๋ฅธ ํ‰๊ฐ€์ž) ๊ณต์ • ๊ฐ๊ด€

โ‘ถ  ISO/IEC  12119  ๊ตฌ์„ฑ์š”์†Œ

9126+14598

โ‘ท  ISO/IEC  25000

๏‚Ÿ ISO/IEC  2500n( ํ’ˆ์งˆ  ์ผ๋ฐ˜  ๋ถ€๋ถ„)
๏‚Ÿ ISO/IEC  2501n(ํ’ˆ์งˆ  ๋ชจ๋ธ  ๋ถ€๋ถ„ )  :  ISO/IEC  9126-1   ํ†ตํ•ฉ
๏‚Ÿ ISO/IEC  2502n(ํ’ˆ์งˆ  ์ธก์ •  ๋ถ€๋ถ„)  :  ISO/IEC  9126-2,3,4   ํ†ตํ•ฉ
๏‚Ÿ ISO/IEC  2503n(ํ’ˆ์งˆ  ์š”๊ตฌ์‚ฌํ•ญ  ๋ถ€๋ถ„) 
๏‚Ÿ ISO/IEC  2504n(ํ’ˆ์งˆ  ํ‰๊ฐ€  ๋ถ€๋ถ„)  :  ISO/IEC  14598   ํ†ตํ•ฉ

 

2.  ํ”„๋กœ์„ธ์Šค  ํ’ˆ์งˆ  ๊ตญ์ œ  ํ‘œ์ค€

โ‘ด  ISO/IEC  12207  ๊ตฌ์„ฑ

โ‘ต  ISO/IEC  15504(SPICE)

ํ‘œ์ค€์„ ๋งŒ๋“ค๊ณ  -> ์ •๋Ÿ‰์  ์ดํ•ด -> ์ตœ์ ํ™”์ธ ๊ฒƒ์€ ๋ชจ๋‘ ๊ณตํ†ต

โ‘ถ  CMM(Capability  Maturity  Model)

โ‘ท  CMMi(Capability  Maturity  Model  Integration)

 

3.  ์„œ๋น„์Šค  ๊ด€๋ฆฌ  ๊ตญ์ œ  ํ‘œ์ค€

๏‚Ÿ ISO/IEC  20000
-  IT ๊ณ ๊ฐ์—๊ฒŒ  ์ œ๊ณตํ•˜๋Š”  ์„œ๋น„์Šค์˜  ์ˆ˜์ค€์„  ๊ฐ๊ด€์ ์œผ๋กœ  ํ‰๊ฐ€
-  IT  ์กฐ์ง  ๊ธฐ๋Šฅ์—  ๋ถ€ํ•ฉ๋˜๋Š”  ๊ฒฌ๊ณ ํ•˜๊ณ   ํ†ตํ•ฉํ™”๋œ  ํ”„๋กœ์„ธ์Šค  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ  ์ œ๊ณต

 

Section  2.  ์ œํ’ˆ  ์†Œํ”„ํŠธ์›จ์–ด  ํŒจํ‚ค์ง•

1.  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ํŒจํ‚ค์ง•  ์ˆœ์„œ

๏‚Ÿ ๊ธฐ๋Šฅ  ์‹๋ณ„
๏‚Ÿ ๋ชจ๋“ˆํ™”
๏‚Ÿ ๋นŒ๋“œ  ์ง„ํ–‰
๏‚Ÿ ์‚ฌ์šฉ์ž  ํ™˜๊ฒฝ  ๋ถ„์„
๏‚Ÿ ํŒจํ‚ค์ง•  ์ ์šฉ  ์‹œํ—˜
๏‚Ÿ ํŒจํ‚ค์ง•  ๋ณ€๊ฒฝ  ๊ฐœ์„ 

 

2.  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜  ๋ฐฐํฌ  ๋„๊ตฌ

โ‘ด  CI/CD

1)  CI(Continuous  Integration)
๏‚Ÿ ์ง€์†์ ์ธ  ํ†ตํ•ฉ
๏‚Ÿ ์—ฌ๋Ÿฌ  ๊ฐœ๋ฐœ์ž๋“ค์˜  ์ƒˆ๋กœ์šด  ์ฝ”๋“œ  ๋ณ€๊ฒฝ  ์‚ฌํ•ญ์„  ์ •๊ธฐ์ ์œผ๋กœ  ๊ณต์œ   ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—  ํ†ตํ•ฉํ•˜๋Š”  ๊ฒƒ

2)  CD(Continuous  Delivery  &  Continuous  Deployment)
๏‚Ÿ ์ง€์†์ ์ธ  ์„œ๋น„์Šค  ์ œ๊ณต  ํ˜น์€  ์ง€์†์ ์ธ  ๋ฐฐํฌ

 

3.  ๋ฆด๋ฆฌ์ฆˆ  ๋…ธํŠธ 0๏ธโƒฃ

๏‚Ÿ ์†Œํ”„ํŠธ์›จ์–ด  ์ œํ’ˆ๊ณผ  ํ•จ๊ป˜  ๋ฐฐํฌ๋˜๋Š”  ๋ฌธ์„œ๋“ค์„  ๋งํ•œ๋‹ค.
0๏ธโƒฃ ๋จธ๋ฆฟ๋ง(Header) - ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ ์ž‘์„ฑ ์‹œ ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ ์ด๋ฆ„, ์†Œํ”„ํŠธ์›จ์–ด ์ด๋ฆ„, ๋ฆด๋ฆฌ์ฆˆ ๋ฒ„์ „, ๋ฆด๋ฆฌ์ฆˆ ๋‚ ์งœ, ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ ๋‚ ์งœ, ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ ๋ฒ„์ „ ๋“ฑ์ด ํฌํ•จ๋œ ํ•ญ๋ชฉ

 

4.  DRM

โ‘ด  DRM(Digital  Rights  Management)์˜  ๊ฐœ๋…

๏‚Ÿ ๊ฐ์ข…  ๋””์ง€ํ„ธ  ์ฝ˜ํ…์ธ ์˜  ๋ถˆ๋ฒ•์ ์ธ  ์‚ฌ์šฉ์„  ์ œํ•œํ•˜๊ณ , ์Šน์ธ๋œ  ์‚ฌ์šฉ์ž์˜  ์ฝ˜ํ…์ธ   ์‚ฌ์šฉ์„  ์ €์ž‘๊ถŒ  ์†Œ์œ ์ž์˜  ์˜๋„์— ๋”ฐ๋ผ  ์ œ์–ดํ•˜๋Š”  ๊ธฐ์ˆ 

โ‘ต  DRM์˜  ๊ตฌ์„ฑ  ๋ฐ  ํ๋ฆ„

ํด๋ฆฌ์–ด๋ง ํ•˜์šฐ์Šค: CGV ๋ณธ์‚ฌ. ํ‚ค/๋ผ์ด์„ผ์Šค ๊ด€๋ฆฌ / ์ฝ˜ํ…์ธ  ์ œ๊ณต์ž: ์˜ํ™” ์ œ์ž‘์‚ฌ / ์ฝ˜ํ…์ธ  ๋ถ„๋ฐฐ์ž: ์˜ํ™”๊ด€ / ์ฝ˜ํ…์ธ  ์†Œ๋น„์ž: ๊ด€๊ฐ

์ฝ˜ํ…์ธ  ์ œ๊ณต์ž(Contents Provider) : ์ฝ˜ํ…์ธ ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ €์ž‘๊ถŒ์ž
์ฝ˜ํ…์ธ  ๋ถ„๋ฐฐ์ž(Contents Distributor) : ์‡ผํ•‘๋ชฐ ๋“ฑ์œผ๋กœ์จ ์•”ํ˜ธํ™”๋œ ์ฝ˜ํ…์ธ  ์ œ๊ณต
ํŒจํ‚ค์ €(Packager) : ์ฝ˜ํ…์ธ ๋ฅผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ๋‹จ์œ„๋กœ ๋ฌถ๋Š” ๊ธฐ๋Šฅ
๋ณด์•ˆ ์ปจํ…Œ์ด๋„ˆ(Security Container) : ์›๋ณธ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์œ ํ†ตํ•˜๊ธฐ ์œ„ํ•œ ์ „์ž์  ๋ณด์•ˆ ์žฅ์น˜
DRM ์ปจํŠธ๋กค๋Ÿฌ(DRM Controller) : ๋ฐฐํฌ๋œ ์ปจํ…์ธ ์˜ ์ด์šฉ ๊ถŒํ•œ์„ ํ†ต์ œ
ํด๋ฆฌ์–ด๋ง ํ•˜์šฐ์Šค(Clearing House) : ์†Œ๋น„์ž์™€ ์œ ํ†ต์—…์ž ์‚ฌ์ด์— ๋ฐœ์ƒํ•˜๋Š” ๊ฑฐ๋ž˜์— ๋Œ€ํ•ด ๋””์ง€ํ„ธ ์ €์ž‘๊ถŒ ๋ผ์ด์„ ์‹ฑ์„ ์ค‘๊ฐœํ•˜๊ณ  ๋ผ์ด์„ ์Šค ๋ฐœ๊ธ‰์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์žฅ์†Œ

 

โ‘ถ  DRM  ์‚ฌ์šฉ  ๊ทœ์น™  ์ œ์–ด  ๊ธฐ์ˆ 

1) ์ฝ˜ํ…์ธ   ์‹๋ณ„  ์ฒด๊ณ„ (Identification) 
๏‚Ÿ ๋””์ง€ํ„ธ  ์ฝ˜ํ…์ธ ์—  ๊ณ ์œ   ์‹๋ณ„  ๋ฒˆํ˜ธ๋ฅผ  ๋ถ€์—ฌํ•˜์—ฌ  ๊ด€๋ฆฌํ•˜๊ณ   ์šด์˜(DOI,  URI)

2)  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ (Meta  Data) 
๏‚Ÿ ์ฝ˜ํ…์ธ ์—  ๊ด€ํ•œ  ๊ตฌ์กฐํ™”๋œ  ๋ฐ์ดํ„ฐ

3)  ๊ถŒ๋ฆฌ  ํ‘œํ˜„  ๊ธฐ์ˆ  (Right  Expression)
๏‚Ÿ ์ฝ˜ํ…์ธ ์—  ๋Œ€ํ•œ  ๊ทœ์น™  ์„ค์ •
๏‚Ÿ XrML(eXtensible  rights  Mark-up  Language)  ๊ธฐ์ˆ ์ด  ๋Œ€ํ‘œ์ 

4)  ๊ถŒ๋ฆฌ  ํ‘œํ˜„  ์ข…๋ฅ˜


โ‘ท  ์ €์ž‘๊ถŒ  ๋ณดํ˜ธ  ๊ธฐ์ˆ 

1)  ์•”ํ˜ธํ™”  ๊ธฐ์ˆ 
๏‚Ÿ ํŠน์ •ํ‚ค๋ฅผ  ๊ฐ€์ง„  ์‚ฌ์šฉ์ž๋งŒ์ด  ํ•ด๋‹น  ์ฝ˜ํ…์ธ ๋ฅผ  ์‚ฌ์šฉํ•   ์ˆ˜  ์žˆ๋„๋ก  ํ•œ๋‹ค.

2) ์œ„๋ณ€์กฐ  ๋ฐฉ์ง€ (Tamper-Proofing) 
๏‚Ÿ ์ฝ˜ํ…์ธ ์—  ์Šน์ธ๋˜์ง€  ์•Š์€  ์กฐ์ž‘์ด  ๊ฐ€ํ•ด์กŒ์„  ๋•Œ,  ์œ„๋ณ€์กฐ  ์‚ฌํ•ญ์„  ๊ฐ์ง€ํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ  ๋ฐœ์ƒ์‹œํ‚ค๋Š”  ๊ธฐ์ˆ 

3) ์›Œํ„ฐ๋งˆํ‚น  (Watermarking) 
๏‚Ÿ ์ฝ˜ํ…์ธ ์—  ์ €์ž‘๊ถŒ  ์ •๋ณด๋ฅผ  ์€๋‹‰ํ•˜์—ฌ  ํ–ฅํ›„  ์ €์ž‘๊ถŒ  ๋ถ„์Ÿ์ด  ์ผ์–ด๋‚   ๊ฒฝ์šฐ, ์ถ”์ ์„  ํ†ตํ•ด  ์ €์ž‘๊ถŒ์ž๋ฅผ  ํ™•์ธํ•   ์ˆ˜  ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š”  ๊ธฐ์ˆ 

๏‚Ÿ ์›Œํ„ฐ๋งˆํ‚น (Watermarking), ํ•‘๊ฑฐํ”„๋ฆฐํŒ… (Fingerprinting)

 

โ‘ธ  DRM  ๊ตฌ์„ฑ์š”์†Œ

 

๋ฐ˜์‘ํ˜•
 ๐Ÿ’ฌ C O M M E N T