Skip to content

Latest commit

ย 

History

History

software-engineering

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 
ย 
ย 
ย 
ย 

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

์ž‘์„ฑ์ž : ์žฅ์ฃผ์„ญ, ์ด์„ธ๋ช…

Table of Contents

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„

๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ vs ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋‹ค.

  • ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ :

    ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์–ด๋–ป๊ฒŒ(HOW) ๋ชฉ์ ์„ ๋‹ฌ์„ฑ ํ•  ์ง€์— ์ดˆ์ ์ด ๋งž์ถ”์–ด์ ธ ์žˆ๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ƒํƒœ์™€ ๊ทธ๊ฒƒ์„ ๋ณ€๊ฒฝ์‹œํ‚ค๋Š” ๊ตฌ๋ฌธ์˜ ๊ด€์ ์—์„œ ์—ฐ์‚ฐ์„ ์„ค๋ช…ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋‹ค. ๊ทธ๋ž˜์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์‚ฌ์šฉ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด์„œ๋Š” ๋ช…์‹œ๋˜์–ด ์žˆ๊ณ  ๋ชฉํ‘œ์— ๋Œ€ํ•ด์„œ๋Š” ๋ช…์‹œ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ปดํ“จํ„ฐ๊ฐ€ ์ˆ˜ํ–‰ํ•  ๋ช…๋ น๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์จ๋‚ด๋ ค๊ฐ€๋Š”๋ฐ ์ผ๋ฐ˜์ ์ธ ์˜ˆ์‹œ๋กœ๋Š” C, C++, Java, Paskal, Ruby ๋“ฑ ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ์›ฌ๋งŒํ•œ ์ ˆ์ฐจํ˜•, ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋“ค์€ ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค.

  • ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ :

    ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€ ์ •์˜๋กœ ๋‚˜๋‰œ๋‹ค.

    1. ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋ฌด์—‡์„(WHAT) ํ• ์ง€์— ์ดˆ์ ์ด ๋งž์ถ”์–ด์ ธ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ช…์‹œํ•˜์ง€ ์•Š๊ณ  ๋ชฉํ‘œ์— ๋Œ€ํ•ด์„œ๋งŒ ๋ช…์‹œ ํ•œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด HTML ๊ณผ ๊ฐ™์ด ๋ฌด์—‡์„ ์›น์— ๋‚˜ํƒ€๋‚ผ์ง€์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ์ด์ง€ ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ๋‚˜ํƒ€๋‚ผ์ง€๋ฅผ ๊ณ ๋ฏผ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.
    2. ํ•จ์ˆ˜ํ˜•, ๋…ผ๋ฆฌํ˜•, ์ œํ•œํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์“ฐ์ธ ๊ฒฝ์šฐ ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ช…๋ นํ˜• ์–ธ์–ด์™€ ๋Œ€๋น„๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค์„ ์„ ์–ธํ˜•์œผ๋กœ ํ†ต์นญํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์ค‘ ๋…ผ๋ฆฌํ˜•, ์ œํ•œํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๊ฐ™์€ ๊ฒฝ์šฐ ๋ช…๋ฐฑํžˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๊ณ  ๊ตฌํ˜„๋„ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ๋ฒˆ์งธ ์ •์˜๋ฅผ ๋”ฐ๋ฅด๋Š” ์—„๋ฐ€ํ•œ ์˜๋ฏธ์˜ ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์•„๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ์ด์œ 

"์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๊ทธ๋ƒฅ ์ƒ๊ฐํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๊ณ , ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๊ธฐ์กด๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‹น์‹ ์€ ์•„๋งˆ๋„ ์˜ˆ์ „ ๋ฐฉ์‹์œผ๋กœ ์ ˆ๋Œ€ ๋Œ์•„๊ฐ€์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค."

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋‚˜ ๋ฐฉ์‹์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๋Š” ์‚ฌ๊ณ ๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰ ๊ธฐ์กด์˜ ์‚ฌ๊ณ ๋ฐฉ์‹์„ ์ „ํ™˜ํ•˜์—ฌ ์‚ฌ๊ณ ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ์ ‘๊ทผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€?

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ์ž๋ฃŒ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ•™์  ํ•จ์ˆ˜์˜ ๊ณ„์‚ฐ์œผ๋กœ ์ทจ๊ธ‰ํ•˜๊ณ  ์ƒํƒœ์™€ ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ€๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ํ•˜๋‚˜์ด๋‹ค. ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒƒ์„ ๊ฐ•์กฐํ•˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ฌ๋ฆฌ ํ•จ์ˆ˜ํ˜•ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ•จ์ˆ˜์˜ ์‘์šฉ์„ ๊ฐ•์กฐํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์‹์ด๋‚˜ ์„ ์–ธ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ๋”ฐ๋ฅด๊ณ  ์žˆ๋‹ค.

  • ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•จ์ˆ˜์™€ ์ˆ˜ํ•™์  ํ•จ์ˆ˜์˜ ์ฐจ์ด

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

    ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ (์ˆ˜ํ•™์ ) ํ•จ์ˆ˜ : ์ด ํ•จ์ˆ˜์˜ ์ถœ๋ ฅ๊ฐ’์€ ํ•จ์ˆ˜์— ์ž…๋ ฅ๋œ ์ธ์ˆ˜์—๋งŒ ์˜์กดํ•˜๋ฏ€๋กœ ์ธ์ˆ˜ x์— ๋Œ€ํ•ด ํ•จ์ˆ˜ f ๋ฅผ ํ˜ธ์ถœ ํ•˜๋ฉด f(x) ๋ผ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ด๊ฒƒ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ๋™์ž‘์„ ์˜ˆ์ธกํ•˜๊ธฐ ํ›จ์”ฌ ์‰ฌ์›Œ์ง„๋‹ค. (ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋ฐœ ํ•ต์‹ฌ ๋™๊ธฐ)

    ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ˆœ์ˆ˜ํ•จ์ˆ˜(pure function) ์„ ์กฐํ•ฉํ•˜๊ณ  ๊ณต์œ ์ƒํƒœ(shared state), ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ(mutable data) ๋ฐ ๋ถ€์ž‘์šฉ(side-effects) ์„ ํ”ผํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค์ด๋‹ค.

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฃผ์š” ๊ฐœ๋…

  1. ์ˆœ์ˆ˜ ํ•จ์ˆ˜(pure function) : ๋ฌด์กฐ๊ฑด ๊ฐ™์€ ์ž…๋ ฅ์ด ์ฃผ์–ด์ง€๋ฉด ๊ฐ™์€ ์ถœ๋ ฅ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋˜ํ•œ ๋ถ€์ž‘์šฉ์ด ์—†๋Š” ํ•จ์ˆ˜ ์ด๋‹ค.
  2. ํ•ฉ์„ฑ ํ•จ์ˆ˜(function composition) : ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋‘˜ ์ด์ƒ์˜ ํ•จ์ˆ˜๋ฅผ ์กฐํ•ฉํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. f(g(x))๋กœ ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค. ํ•ฉ์„ฑ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ด์šฉํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ค‘์š”ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.
  3. ๊ณต์œ  ์ƒํƒœ(shared state) : ๊ณต์œ  ๋ฒ”์œ„(shared scope) ๋‚ด์— ์žˆ๋Š” ๋ณ€์ˆ˜, ๊ฐ์ฒด ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด๊ฑฐ๋‚˜ ๋ฒ”์œ„ ๊ฐ„์— ์ „๋‹ฌ๋˜๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ์ž…๋‹ˆ๋‹ค.
  4. ๋ถˆ๋ณ€์„ฑ(Immutability) : ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๊ฐ์ฒด๋ž€ ์ƒ์„ฑํ•œ ํ›„์— ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋Š” ๊ฐ์ฒด์ด๋‹ค. ๋ถˆ๋ณ€์„ฑ์€ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ ๊ฐœ๋…์ด๋‹ค. ๋ถˆ๋ณ€์„ฑ์„ ๋นผ๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„์ด ์†์‹ค๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  5. ๋ถ€์ž‘์šฉ(side effects) : ๋ฐ˜ํ™˜๊ฐ’ ์ด์™ธ์— ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜ ์™ธ๋ถ€์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ถ€์ž‘์šฉ์ด ์—†๋Š” ์ˆœ์ˆ˜ํ•œ ํ•จ์ˆ˜๋Š” ์Šค๋ ˆ๋“œ ์ธก๋ฉด์—์„œ ์•ˆ์ „ํ•˜๊ณ  ๋ณ‘๋ ฌ์ ์ธ ๊ณ„์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์™ธ๋ถ€ ๋ณ€์ˆ˜ ๋˜๋Š” ๊ฐ์ฒด ์†์„ฑ ์ˆ˜์ •
    • ์ฝ˜์†”์—์„œ ๋กœ๊น…
    • ํ™”๋ฉด์— ์“ฐ๊ธฐ ์ž‘์—…
    • ํŒŒ์ผ์— ์“ฐ๊ธฐ ์ž‘์—…
    • ๋„คํŠธ์›Œํฌ์— ์“ฐ๊ธฐ ์ž‘์—…
    • ์™ธ๋ถ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ํŠธ๋ฆฌ๊ฑฐ
    • ๋ถ€์ž‘์šฉ์„ ๋™๋ฐ˜ํ•œ ๋‹ค๋ฅธ ํ•จ์ˆ˜ ํ˜ธ์ถœ
  6. ๊ณ ์ฐจํ•จ์ˆ˜(high order function) : ํ•จ์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ์ทจ๊ธ‰ํ•˜๊ฑฐ๋‚˜, ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ๋˜๋Š” ๋‘˜ ๋‹ค์ธ ํ•จ์ˆ˜์ด๋‹ค.
    • ์ฝœ๋ฐฑ ํ•จ์ˆ˜, ํ”„๋กœ๋ฏธ์Šค, ๋ชจ๋‚˜๋“œ ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์…˜, ํšจ๊ณผ ๋˜๋Š” ๋น„๋™๊ธฐ ํ๋ฆ„์„ ์ถ”์ƒํ™”ํ•˜๊ฑฐ๋‚˜ ๋ถ„๋ฆฌ
    • ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€ํ•ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋งŒ๋“ฌ
    • ํ•ฉ์„ฑ ํ•จ์ˆ˜๋‚˜ ์žฌ์‚ฌ์šฉ์˜ ๋ชฉ์ ์œผ๋กœ ์ปค๋ง ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ธ์ˆ˜๋ฅผ ํ•จ์ˆ˜์— ๋ถ€๋ถ„์ ์œผ๋กœ ์ ์šฉ
    • ํ•จ์ˆ˜ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ค๊ณ , ์ž…๋ ฅ ํ•จ์ˆ˜์˜ ํ•ฉ์„ฑ์„ ๋ฐ˜ํ™˜

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด์ „ ํŒจ๋Ÿฌ๋‹ค์ž„

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

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€?

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

๋˜ํ•œ ์ด๋Ÿฌํ•œ ๊ฐ์ฒด๋“ค ๋ผ๋ฆฌ ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉด์„œ ์–ด๋– ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์„ฑ

  1. ์ถ”์ƒํ™”(Abstraction)

    ์–ด๋–ค ์˜์—ญ์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ์†์„ฑ์ด๋‚˜ ํ–‰๋™์„ ์ถ”์ถœํ•˜๋Š” ์ž‘์—… , ์ฆ‰ ๋ชจ๋ธํ™”

    • ์‚ฌ๋ฌผ๋“ค์˜ ๊ณตํ†ต๋œ ํŠน์ง•, ์ฆ‰ ์ถ”์ƒ์  ํŠน์ง•์„ ํŒŒ์•…ํ•ด ์ธ์‹์˜ ๋Œ€์ƒ์œผ๋กœ ์‚ผ๋Š” ํ–‰์œ„
    • ๊ตฌ์ฒด์ ์ธ ์‚ฌ๋ฌผ๋“ค์˜ ๊ณตํ†ต์ ์ธ ํŠน์ง•์„ ํŒŒ์•…ํ•ด์„œ ์ด๋ฅผ ํ•˜๋‚˜์˜ ๊ฐœ๋…(์ง‘ํ•ฉ)์œผ๋กœ ๋‹ค๋ฃจ๋Š” ์ˆ˜๋‹จ

    ๊ตฌ์ฒด์ ์ธ ๊ฐœ๋…์— ์˜์กด

    switch(๋™๋ฌผ์˜ ์ข…๋ฅ˜){
     case ์‚ฌ์ž : //somthing
     case ํ˜ธ๋ž‘์ด : // something
     case ํ† ๋ผ : // someting
    }

    ์ƒˆ๋กœ์šด ์ข…์ด ์ถ”๊ฐ€ ๋˜๋ฉด ์ฝ”๋“œ๋ฅผ ์ƒˆ๋กœ ์ถ”๊ฐ€ ํ•ด์•ผํ•จ

    ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์— ์˜์กด

    void something(Animal a){
     a.something();
    }

    ์ƒˆ๋กœ์šด ์ข…์ด ๋‚˜์™€๋„ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋’ค์—์„œ ๋‹คํ˜•์„ฑ์— ์˜ํ•œ ์˜ค๋ฒ„๋ผ์ด๋“œ๋กœ ์ฒ˜๋ฆฌ

  2. ์บก์Šํ™”(Encapsulation)

    ๋†’์€ ์‘์ง‘๋„(Cohesion) ๊ณผ ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„(Coupling) ๋ฅผ ์œ ์ง€ํ•ด์•ผ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์ฒ˜ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ์‘์ง‘๋„ : ๋ชจ๋“ˆ(ํด๋ž˜์„œ) ๋‚ด์—์„œ ์š”์†Œ๋“ค์ด ์–ผ๋งˆ๋‚˜ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€, ์‘์ง‘๋„๋Š” ์ •๋ณด ์€๋‹‰์„ ํ†ตํ•ด ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์ •๋ณด๋Š” ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. Ex) private
    • ๊ฒฐํ•ฉ๋„ : ์–ด๋– ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ๋‹ค๋ฅธ ๋ชจ๋“ˆ(ํด๋ž˜์Šค)์— ์–ผ๋งˆ๋‚˜ ์˜์กด์ ์ธ์ง€
  3. ์ผ๋ฐ˜ํ™”(Generalization) : ์ƒ์†

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

    • ์ผ๋ฐ˜ํ™”๋ฅผ ์ด์šฉ ํ•˜๋ฉด ์ƒ์œ„ ํด๋ž˜์Šค๋กœ ๋ถ€ํ„ฐ ์ƒ์†๋ฐ›์€ ํ•˜์œ„ ํด๋ž˜์Šค๋Š” ๋ชจ๋“  ์†์„ฑ(ํ•„๋“œ)๊ณผ ์—ฐ์‚ฐ(๋ฉ”์†Œ๋“œ)์„ ๋‹ค์‹œ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ์ž์‹ ์˜ ๊ฒƒ์œผ๋กœ ์‚ฌ์šฉ ํ•  ์ˆ˜์žˆ๋‹ค.
    • ์ƒ์†๋ฐ›์€ ์†์„ฑ๊ณผ ์—ฐ์‚ฐ ์™ธ์— ์ƒˆ๋กœ์šด ์†์„ฑ๊ณผ ์—ฐ์‚ฐ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ํด๋ž˜์Šค๋ฅผ ์žฌ์‚ฌ์šฉ ํ•˜๋ฏ€๋กœ์„œ ์†Œํ”„ํŠธ์›จ์–ด ์žฌ์‚ฌ์šฉ์„ฑ์„ ์ฆ๋Œ€์‹œํ‚ค๋Š” ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋‹ค.
  4. ๋‹คํ˜•์„ฑ(Polymorphism)

    1. Pure Polymorphism : ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ๊ฐ™์€ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›์•˜์„๋•Œ ๊ฐ์ž์˜ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๋Šฅ๋ ฅ์ด๋‹ค.

      • ์ผ๋ฐ˜ํ™”์™€ ํ•จ๊ป˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋ณ€ํ™”์— ์œ ์—ฐํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.
      • ๋‹คํ˜•์„ฑ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์–ด๋–ค ํด๋ž˜์Šค๊ฐ€ ์ฐธ์กฐ ๋˜์—ˆ๋Š”์ง€ ๋ฌด๊ด€ํ•˜๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    2. Ad hoc polymorphism : Overridng & Overloading

    3. Generics (parameter type) : T (type parameter, ์–ด๋–ค ํƒ€์ž…์ด ์™€๋„ ๋ฌด๊ด€)

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

  1. SRP(๋‹จ์ผ ์ฑ…์ž„์˜ ์›์น™ : Single Responsibility Principle) : ์ž‘์„ฑ๋œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ๋งŒ ๊ฐ€์ง€๋ฉฐ ํด๋ž˜์Šค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ์„œ๋น„์Šค๋Š” ๊ทธ ํ•˜๋‚˜์˜ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์ง‘์ค‘๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์›์น™

  2. OCP(๊ฐœ๋ฐฉํ์‡„์˜ ์›์น™ : Open Close Principle) : ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ตฌ์„ฑ์š”์†Œ๋Š” ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ๊ณ , ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์›์น™. ๋ณ€๊ฒฝ์€ ์ตœ์†Œํ™” ํ•˜๊ณ  ํ™•์žฅ์„ ์ตœ๋Œ€ํ™”

  3. LSP(๋ฆฌ์Šค์ฝ”๋ธŒ ์น˜ํ™˜์˜ ์›์น™ : The Liskov Substitution Principle) : ์„œ๋ธŒํƒ€์ž…์€ ์–ธ์ œ๋‚˜ ๊ธฐ๋ฐ˜ ํƒ€์ž…์œผ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์›์น™, ์ฆ‰ ํ•ญ์ƒ ํ•˜์œ„ ํด๋ž˜์Šค๋Š” ์ƒ์œ„ ํด๋ž˜์Šค๋ฅผ ๋Œ€์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒ์œ„ํด๋ž˜์Šค๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋“ค์— ๋Œ€ํ•ด์„  ํ•˜์œ„ํด๋ž˜์Šค๋Š” ๋‹น์—ฐํžˆ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์›์น™์ด๋‹ค.

  4. ISP(์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ์˜ ์›์น™ : Interface Segregation Principle) : ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž์‹ ์ด ์ด์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”์„œ๋“œ์— ์˜์กดํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค๋Š” ์›์น™์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™์€ ํฐ ๋ฉ์–ด๋ฆฌ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋“ค์„ ๊ตฌ์ฒด์ ์ด๊ณ  ์ž‘์€ ๋‹จ์œ„๋“ค๋กœ ๋ถ„๋ฆฌ์‹œํ‚ด์œผ๋กœ์จ ํด๋ผ์ด์–ธํŠธ๋“ค์ด ๊ผญ ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ๋“ค๋งŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. SRP ๋Š” ํด๋ž˜์Šค์˜ ๋‹จ์ผ ์ฑ…์ž„์ด๋ผ๋ฉด ISP๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋‹จ์ผ ์ฑ…์ž„์„ ๊ฐ•์กฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  5. DIP(์˜์กด์„ฑ ์—ญ์ „์˜ ์›์น™ : Dependency Inversion Principle) : ์ž์ฃผ ๋ณ€ํ™”ํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค ๋ณด๋‹ค๋Š” ๋ณ€ํ™”ํ•˜๊ธฐ ์–ด๋ ค์šด ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ์ƒ์œ„(์ถ”์ƒ) ํด๋ž˜์Šค์™€ ๊ด€๊ณ„๋ฅผ ๋งบ์œผ๋ผ๋Š” ์›์น™


์• ์ž์ผ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค

์•„๋ž˜์˜ ์ž๋ฃŒ์—์„œ ์ž์„ธํ•œ ์„ค๋ช…๊ณผ ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


์งˆ์˜์‘๋‹ต

์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์„ ๋งํ•ด๋ณด๋ฉฐ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ ๊ฒ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํด๋ฆญํ•˜๋ฉด ๋‹ต๋ณ€ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ง€์›์ž์˜ ๊ฒฝํ—˜์„ ์Šคํฌ๋Ÿผ, XP, ํญํฌ์ˆ˜ ๋ชจ๋ธ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ• ๋“ฑ์˜ ์ง„ํ–‰ ๊ณผ์ •์„ ์„ค๋ช…ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๋‹ต์•ˆ์˜ ํ•œ ์˜ˆ์‹œ๋กœ ์ฐธ์กฐํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

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

์• ์ž์ผ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•์ด ์ƒ๊ฒจ๋‚˜๊ฒŒ ๋œ ๋ฐฐ๊ฒฝ์— ๋Œ€ํ•ด์„œ ์„ค๋ช… ํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”?

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

์š”์ฆ˜ ๋งŽ์€ ๊ธฐ์—…๋“ค์ด ์• ์ž์ผ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋”ฐ๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿด๊นŒ์š”?

  • ๋ณ€ํ™”์— ๋Œ€ํ•ด ์‹ ์†ํ•˜๊ณ  ๋Šฅ๋™์ ์ธ ๋Œ€์‘์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ดํ•ด๊ด€๊ณ„์ž๋“ค๊ณผ ํšจ๊ณผ์ ์ธ ์†Œํ†ต์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฐœ๋ฐœ์— ์ข€ ๋” ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ๋‹จ๊ณ„๋ฅผ ๊ธฐํš-์„ค๊ณ„-๊ตฌํ˜„-ํ…Œ์ŠคํŠธ ์ด๋ ‡๊ฒŒ ๋„ค ๊ฐ€์ง€ ๋‹จ๊ณ„๋กœ ๋ถ„๋ฅ˜ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ๋ณธ์ธ์ด ์ƒ๊ฐํ•˜๊ธฐ์— ๊ฐ€์žฅ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์ด ๋งŽ์ด ์š”๊ตฌ๋˜๋Š” ๋‹จ๊ณ„๋Š” ์–ด๋””๋ผ๊ณ  ์ƒ๊ฐ ํ•˜์‹œ๋‚˜์š”? ๊ทธ ์ด์œ ์™€ ํ•จ๊ป˜ ๋‹ต๋ณ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

2021๋…„ ํ˜„์žฌ ์†Œํ”„ํŠธ์›จ์–ด ์ƒ๋ช… ์ฃผ๊ธฐ ๋‹จ๊ณ„ ์ค‘ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์ด ๊ฐ€์žฅ ๋งŽ์ด ์š”๊ตฌ๋˜๋Š” ๋‹จ๊ณ„๋Š” 'ํ…Œ์ŠคํŠธ' ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.
์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

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

Validation๊ณผ Verification ์ด๋ผ๋Š”๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ๊ตญ์–ด๋กœ ํ’€์ดํ•˜๋ฉด ๋‘˜๋‹ค ๊ฒ€์ฆ, ํ™•์ธ์ด๋ผ๋Š” ๋œป์œผ๋กœ ๋˜‘๊ฐ™์ด ํ•ด์„์ด ๋˜๋Š”๋ฐ ์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™์˜ ์ž…์žฅ์—์„œ ๋ณด๋ฉด ์ด ๋‘ ๋‹จ์–ด๋Š” ์„œ๋กœ ๋น„์Šทํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋œป์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‘˜์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”?

  • Validation : ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ธฐ๋Šฅ๊ณผ ๋ชฉ์ ์ด ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜๋Š”๊ฐ€, ์ผ์น˜ํ•˜๋Š”๊ฐ€, ๋ˆ„๋ฝ๋œ ์š”๊ตฌ์‚ฌํ•ญ์€ ์—†๋Š”๊ฐ€
  • Verification : ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ž…๋ ฅ์— ๋Œ€ํ•ด ์ถœ๋ ฅ ๊ฐ’์ด ์š”๊ตฌ์‚ฌํ•ญ์—์„œ ์›ํ•˜๋Š” ๋ฐ”์™€ ์ผ์น˜ํ•˜๋Š”๊ฐ€ ์ฆ‰, ๋ฒ„๊ทธ๊ฐ€ ์—†๋Š”๊ฐ€

์š”๊ตฌ์‚ฌํ•ญ ๋ช…์„ธ์„œ๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? ์™œ ํ•„์š”ํ•œ๊ฐ€์š”?

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

  • ์ œํ’ˆ์˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ํ•ฉ์˜๋ฅผ ์ˆ˜์›”ํ•˜๊ฒŒ ๋„์ถœํ•ด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ๋น„์šฉ๊ณผ ์Šค์ผ€์ค„์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋Š” ์ง€ํ‘œ๊ฐ€ ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
  • ํšจ์œจ์ ์ธ ๊ฐœ๋ฐœ ๊ณ„ํš์„ ์„ธ์šธ ์ˆ˜ ์žˆ๊ณ  ์ œํ’ˆ ํ…Œ์ŠคํŠธ, ๊ฒ€์ฆ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค๋ฅผ ์ œ๊ณตํ•ด์ค๋‹ˆ๋‹ค.
  • ์ œํ’ˆ์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ์ž๋ฃŒ ์ž…๋‹ˆ๋‹ค.