๐Ÿ“Certificate/Engineer Information Processing

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ] - [2๊ณผ๋ชฉ] 2023 (01)

Sun A 2024. 1. 9. 21:44

[์ œ 2๊ณผ๋ชฉ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ]

- 2023๋…„๋„ 1ํšŒ์ฐจ (01)

์†Œํ”„ํŠธ์›จ์–ด ํŠน์ง•

โ–ถ ๊ณตํ•™์ ์œผ๋กœ ์ž˜ ์ž‘์„ฑ๋œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ํŠน์ง•

1. ์‚ฌ์šฉ์ž ์š”๊ตฌ์‚ฌํ•ญ ์ถฉ์กฑ

2. ๋†’์€ ์‹ ๋ขฐ์„ฑ

3. ์œ ์ง€ ๋ณด์ˆ˜์˜ ์šฉ์ด์„ฑ

4. ์‚ฌ์šฉ์ž ์ˆ˜์ค€์— ๋งž๋Š” ์‰ฌ์šด ์ธํ„ฐํŽ˜์ด์Šค

5. ์ถฉ๋ถ„ํ•œ ํ…Œ์ŠคํŒ… ์ˆ˜ํ–‰

 

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

โ–ถ ๊ฐœ๋…

1. ์‚ฌ์šฉ์‚ฌ๋ก€๋ฅผ ํ™•์žฅํ•˜์—ฌ ๋ช…์„ธํ•˜๊ฑฐ๋‚˜ ์„ค๊ณ„ ๋‹ค์ด์–ด๊ทธ๋žจ, ์›์‹œ ์ฝ”๋“œ, ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋“ฑ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ๋ณต์žกํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋˜๋Š” ๋ฐ˜๋ณต, ์‹ค์‹œ๊ฐ„ ๋™์ž‘, ๋ณ‘ํ–‰ ์ฒ˜๋ฆฌ์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด๋‚˜ ๋™์ž‘์„ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

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

 

# ์ธ์ŠคํŽ™์…˜ (Inspection) : ์›Œํฌ์Šค๋ฃจ๋ฅผ ๋ฐœ์ „์‹œํ‚จ ํ˜•ํƒœ / ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ์‚ฐ์ถœ๋œ ๊ฒฐ๊ณผ๋ฌผ์˜ ํ’ˆ์งˆ์„ ํ‰๊ฐ€ํ•˜๊ณ  ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ๋“ฑ์„ ์ œ์‹œ

 

์Šคํƒ์„ ์ด์šฉํ•œ ์ž๋ฃŒ ์ž….์ถœ๋ ฅ

โ–ถ ๋ฐฉ๋ฒ•

ex. ์ˆœ์„œ๊ฐ€ A, B, C, D๋กœ ์ •ํ•ด์ง„ ์ž…๋ ฅ ์ž๋ฃŒ๋ฅผ ์Šคํƒ์— ์ž…๋ ฅํ–ˆ์„ ๋•Œ, ๋‚˜์˜ฌ ์ˆ˜ ์—†๋Š” ์ถœ๋ ฅ ๊ฐ’ ์„ ํƒํ•˜๊ธฐ

โ†’ D, A, B, C

์ด์œ  : ์ž…๋ ฅ (PUSH)๊ณผ ์ถœ๋ ฅ (POP)์„ ํ•  ๋•Œ, ์ˆœ์„œ๋Œ€๋กœ ์ž…๋ ฅ์„ ํ•ด์•ผ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•œ๋ฐ, D๊ฐ€ ์ถœ๋ ฅ์ด ๋์„ ๋•Œ๋Š” ๋‹ค์Œ์— C์™€ B๊ฐ€ ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š” ์ด์ƒ A๊ฐ€ ์ถœ๋ ฅ๋  ์ˆ˜ ์—†๋‹ค.

ํŠธ๋ฆฌ์˜ ์ฐจ์ˆ˜ (Degree) ์™€ ๋‹จ๋ง ๋…ธ๋“œ (Terminal Node)

- ํŠธ๋ฆฌ์˜ ์ฐจ์ˆ˜ : ์ฐจ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ๋…ธ๋“œ์˜ ์ฐจ์ˆ˜๋ฅผ ์˜๋ฏธ

- ๋‹จ๋ง ๋…ธ๋“œ : ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ

 

ํ›„์œ„์‹ (Postfix)

โ–ถ ์—ฐ์‚ฐ ๋ฐฉ๋ฒ•

: ํ›„์œ„ ์—ฐ์‚ฐ์‹

3 4 * 5 6 * +

: ((3*4) + (5*6))

โ‰ซ ํŠธ๋ฆฌ ํ˜•์‹์œผ๋กœ ๋ฐ”๊ฟ”์„œ ์ ๊ธฐ

 

ํ…Œ์ŠคํŠธ์™€ ๋””๋ฒ„๊ทธ ์ •์˜

- ํ…Œ์ŠคํŠธ : ์˜ค๋ฅ˜๋ฅผ ์ฐพ๋Š” ์ž‘์—…

- ๋””๋ฒ„๊น… : ์˜ค๋ฅ˜๋ฅผ ์ถ”์  ๋ฐ ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…

 

 ๋””์ง€ํ„ธ ์ €์ž‘๊ถŒ ๊ด€๋ฆฌ DRM (Digital Rights Management)

: ์ €์ž‘๊ถŒ์ž๊ฐ€ ๋ฐฐํฌํ•œ ๋””์ง€ํ„ธ ์ฝ˜ํ…์ธ ๊ฐ€ ์ €์ž‘๊ถŒ์ž๊ฐ€ ์˜๋„ํ•œ ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉ๋˜๋„๋ก ๋””์ง€ํ„ธ ์ฝ˜ํ…์ธ ์˜ ์ƒ์„ฑ, ์œ ํ†ต, ์ด์šฉ๊นŒ์ง€์˜ ์ „ ๊ณผ์ •์— ๊ฑธ์ณ ์‚ฌ์šฉ๋˜๋Š” ๋””์ง€ํ„ธ ์ฝ˜ํ…์ธ  ๊ด€๋ฆฌ ๋ฐ ๋ณดํ˜ธ ๊ธฐ์ˆ 

: ์ฝ˜ํ…์ธ ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์œ ํ†ตํ•˜๊ธฐ ์œ„ํ•œ ์ „์ž์  ๋ณด์•ˆ ์žฅ์น˜์ธ ๋ณด์•ˆ ์ปจํ…Œ์ด๋„ˆ (Security Container)๋ฅผ ํ†ตํ•ด ๋ถˆ๋ฒ• ์œ ํ†ต๊ณผ ๋ณต์ œ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

1. ๋””์ง€ํ„ธ ์ฝ˜ํ…์ธ ์™€ ๋””๋ฐ”์ด์Šค์˜ ์‚ฌ์šฉ์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋“œ์›จ์–ด ์ œ์กฐ์—…์ž, ์ €์ž‘๊ถŒ์ž, ์ถœํŒ์—…์ž ๋“ฑ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ ‘๊ทผ ์ œ์–ด ๊ธฐ์ˆ ์„ ์˜๋ฏธํ•œ๋‹ค.

2. ๋””์ง€ํ„ธ ๋ฏธ๋””์–ด์˜ ์ƒ๋ช… ์ฃผ๊ธฐ ๋™์•ˆ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ์šฉ ๊ถŒํ•œ ๊ด€๋ฆฌ, ๊ณผ๊ธˆ, ์œ ํ†ต ๋‹จ๊ณ„๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ์ˆ ๋กœ๋„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

3. ํด๋ฆฌ์–ด๋ง ํ•˜์šฐ์Šค (Clearing House)๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฝ˜ํ…์ธ  ๋ผ์ด์„ผ์Šค๋ฅผ ๋ฐœ๊ธ‰ํ•˜๊ณ  ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์ฃผ๋Š” ์‹œ์Šคํ…œ์„ ๋งํ•œ๋‹ค.

 

์†Œํ”„ํŠธ์›จ์–ด ํ˜•์ƒ ๊ด€๋ฆฌ (SCM : Software Confriguration Management)

โ–ถ ๊ฐœ๋…

: ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋œ ์ผ๋ จ์˜ ํ™œ๋™

: ์†Œํ”„ํŠธ์›จ์–ด ๋ณ€๊ฒฝ์˜ ์›์ธ์„ ์•Œ์•„๋‚ด๊ณ  ์ œ์–ดํ•˜๋ฉฐ, ์ ์ ˆํžˆ ๋ณ€๊ฒฝ๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ํ•ด๋‹น ๋‹ด๋‹น์ž์—๊ฒŒ ํ†ต๋ณดํ•œ๋‹ค.

: ํ˜•์ƒ ๊ด€๋ฆฌ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์˜ ์ „ ๋‹จ๊ณ„์— ์ ์šฉ๋˜๋Š” ํ™œ๋™์ด๋ฉฐ, ์œ ์ง€๋ณด์ˆ˜ ๋‹จ๊ณ„์—์„œ๋„ ์ˆ˜ํ–‰๋œ๋‹ค.

: ๊ด€๋ฆฌ ํ•ญ๋ชฉ์—๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ”„๋กœ์ ํŠธ ๊ณ„ํš, ๋ถ„์„์„œ, ์„ค๊ณ„์„œ, ํ”„๋กœ๊ทธ๋žจ, ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค.

: ํ˜•์ƒ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด ๊ฐ€์‹œ์„ฑ๊ณผ ์ถ”์ ์„ฑ์„ ๋ณด์žฅํ•จ์œผ๋กœ์จ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ƒ์‚ฐ์„ฑ๊ณผ ํ’ˆ์งˆ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

โ€ป ๋Œ€ํ‘œ์ ์ธ ํ˜•์ƒ ๊ด€๋ฆฌ ๋„๊ตฌ : Git, CVS, Subversion

 

โ–ถ ํ˜•์ƒ ๊ด€๋ฆฌ ํ•ญ๋ชฉ

1. ํ”„๋กœ์ ํŠธ ์š”๊ตฌ ๋ถ„์„์„œ

2. ์šด์˜ ๋ฐ ์„ค์น˜ ์ง€์นจ์„œ

3. ์†Œ์Šค ์ฝ”๋“œ

* ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ๋น„์šฉ์€ ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

โ–ถ ํ˜•์ƒ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ

1. ํ˜•์ƒ ์‹๋ณ„ : ํ˜•์ƒ ๊ด€๋ฆฌ ๋Œ€์ƒ์— ์ด๋ฆ„๊ณผ ๊ด€๋ฆฌ ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ , ๊ณ„์ธต(Tree) ๊ตฌ์กฐ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ˆ˜์ • ๋ฐ ์ถ”์ ์ด ์šฉ์ดํ•˜๋„๋ก ํ•˜๋Š” ์ž‘์—…

2. ๋ฒ„์ „ ์ œ์–ด : ์†Œํ”„ํŠธ์›จ์–ด ์—…๊ทธ๋ ˆ์ด๋“œ๋‚˜ ์œ ์ง€ ๋ณด์ˆ˜ ๊ณผ์ •์—์„œ ์ƒ์„ฑ๋œ ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ํ˜•์ƒ ํ•ญ๋ชฉ์„ ๊ด€๋ฆฌํ•˜๊ณ , ์ด๋ฅผ ์œ„ํ•ด ํŠน์ • ์ ˆ์ฐจ์™€ ๋„๊ตฌ(Tool)๋ฅผ ๊ฒฐํ•ฉ์‹œํ‚ค๋Š” ์ž‘์—…

3. ํ˜•์ƒ ํ†ต์ œ (๋ณ€๊ฒฝ ๊ด€๋ฆฌ) : ์‹๋ณ„๋œ ํ˜•์ƒ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์š”๊ตฌ๋ฅผ ๊ฒ€ํ† ํ•˜์—ฌ ํ˜„์žฌ์˜ ๊ธฐ์ค€์„  (Base Line)์ด ์ž˜ ๋ฐ˜์˜๋  ์ˆ˜ ์žˆ๋„๋ก ์กฐ์ •ํ•˜๋Š” ์ž‘์—…

4. ํ˜•์ƒ ๊ฐ์‚ฌ : ๊ธฐ์ค€์„ ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ํ™•์ธ, ๊ฒ€์ฆ, ๊ฒ€์—ด ๊ณผ์ •์„ ํ†ตํ•ด ๊ณต์‹์ ์œผ๋กœ ์Šน์ธํ•˜๋Š” ์ž‘์—…

5. ํ˜•์ƒ ๊ธฐ๋ก (์ƒํƒœ ๋ณด๊ณ ) : ํ˜•์ƒ์˜ ์‹๋ณ„, ํ†ต์ œ, ๊ฐ์‚ฌ ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ก.๊ด€๋ฆฌํ•˜๊ณ  ๋ณด๊ณ ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ž‘์—…

 

๋นŒ๋“œ ์ž๋™ํ™” ๋„๊ตฌ

โ–ถ ๊ฐœ๋…

1. ๋นŒ๋“œ๋ž€ ์†Œ์Šค ์ฝ”๋“œ ํŒŒ์ผ๋“ค์„ ์ปดํŒŒ์ผํ•œ ํ›„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ชจ๋“ˆ์„ ๋ฌถ์–ด ์‹คํ–‰ ํŒŒ์ผ๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ด๋ฉฐ, ์ด๋Ÿฌํ•œ ๋นŒ๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ๋นŒ๋“œ ์ž๋™ํ™” ๋„๊ตฌ๋ผ๊ณ  ํ•œ๋‹ค. 

2. ์• ์ž์ผ ํ™˜๊ฒฝ์—์„œ๋Š” ํ•˜๋‚˜์˜ ์ž‘์—…์ด ๋งˆ๋ฌด๋ฆฌ๋  ๋•Œ๋งˆ๋‹ค ๋ชจ๋“ˆ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ ์„œ ๊ฐœ๋ฐœ๋œ ์ฝ”๋“œ๋“ค์ด ์ง€์†์ ์œผ๋กœ ํ†ตํ•ฉ๋˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ์ง€์†์ ์ธ ํ†ตํ•ฉ (Continuous Integration) ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๋นŒ๋“œ ์ž๋™ํ™” ๋„๊ตฌ๋Š” ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉ๋œ๋‹ค.

3. ๋นŒ๋“œ ์ž๋™ํ™” ๋„๊ตฌ์˜ ์ข…๋ฅ˜ : ant, Make, Maven, Gradle, Jenkins ๋“ฑ [์ด ์ค‘ ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ :  Jenkins, Gradle]

 

โ–ถ ๋นŒ๋“œ ์ž๋™ํ™” ๋„๊ตฌ ์ข…๋ฅ˜ ๋ฐ ์„ค๋ช…

- Jenkins

   : JAVA ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ ์†Œ์Šค ํ˜•ํƒœ. ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋นŒ๋“œ ์ž๋™ํ™” ๋„๊ตฌ

   : ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ๋„๊ตฌ

   : SVN, Git ๋“ฑ ๋Œ€๋ถ€๋ถ„์˜ ํ˜•์ƒ ๊ด€๋ฆฌ ๋„๊ตฌ์™€ ์—ฐ๋™์ด ๊ฐ€๋Šฅ

   : ์นœ์ˆ™ํ•œ Web GUI ์ œ๊ณต์œผ๋กœ ์‚ฌ์šฉ์ด ์‰ฝ๋‹ค.

   : ์—ฌ๋Ÿฌ ๋Œ€์˜ ์ปดํ“จํ„ฐ๋ฅผ ์ด์šฉํ•œ ๋ถ„์‚ฐ ๋นŒ๋“œ๋‚˜ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

- Gradle

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

   : ์•ˆ๋“œ๋กœ์ด๋“œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์ •ํ•˜๋ฉด, JAVA, C/C++, Python ๋“ฑ์˜ ์–ธ์–ด๋„ ๋นŒ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

   : Groovy๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋งŒ๋“  DSL(Domain Specific Language)์„ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

   : Gradle์€ ์‹คํ–‰ํ•  ์ฒ˜๋ฆฌ ๋ช…๋ น๋“ค์„ ๋ชจ์•„ ํƒœ์Šคํฌ(Task)๋กœ ๋งŒ๋“  ํ›„ ํƒœ์Šคํฌ ๋‹จ์œ„๋กœ ์‹คํ–‰ํ•œ๋‹ค.

   : ์ด์ „์— ์‚ฌ์šฉํ–ˆ๋˜ ํƒœ์Šคํฌ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์˜ ํƒœ์Šคํฌ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋นŒ๋“œ ์บ์‹œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ๋นŒ๋“œ์˜ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

ํ™”์ดํŠธ ๋ฐ•์Šค ํ…Œ์ŠคํŠธ

โ–ถ ํŠน์ง•

1. ํ”„๋กœ๊ทธ๋žจ์˜ ์ œ์–ด ๊ตฌ์กฐ์— ๋”ฐ๋ผ ์„ ํƒ, ๋ฐ˜๋ณต ๋“ฑ์˜ ๋ถ„๊ธฐ์  ๋ถ€๋ถ„๋“ค์„ ์ˆ˜ํ–‰ํ•จ์œผ๋กœ์จ ๋…ผ๋ฆฌ์  ๊ฒฝ๋กœ๋ฅผ ์ œ์–ดํ•œ๋‹ค.

2. ๋ชจ๋“ˆ์˜ ์›์‹œ ์ฝ”๋“œ๋ฅผ ์˜คํ”ˆ์‹œํ‚จ ์ƒํƒœ์—์„œ ์›์‹œ ์ฝ”๋“œ์˜ ๋…ผ๋ฆฌ์ ์ธ ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ํ…Œ์ŠคํŠธํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•

โ†’ ํ™”์ดํŠธ๋ฐ•์Šค ๋ฐ์ŠคํŠธ์˜ ์ดํ•ด๋ฅผ ์œ„ํ•ด ๋…ผ๋ฆฌ ํ๋ฆ„๋„ (Logic-Flow Diagram)์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

3. ์„ค๊ณ„๋œ ์ ˆ์ฐจ์— ์ดˆ์ ์„ ๋‘” ๊ตฌ์กฐ์  ํ…Œ์ŠคํŠธ๋กœ ํ”„๋กœ์‹œ์ € ์„ค๊ณ„์˜ ์ œ์–ด ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋ฉฐ, ํ…Œ์ŠคํŠธ ๊ณผ์ •์˜ ์ดˆ๊ธฐ์— ์ ์šฉ

4. ์›์‹œ ์ฝ”๋“œ์˜ ๋ชจ๋“  ๋ฌธ์žฅ์„ ํ•œ ๋ฒˆ ์ด์ƒ ์‹คํ–‰ํ•จ์œผ๋กœ์จ ์ˆ˜ํ–‰๋œ๋‹ค.

5. ๋ฐ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด ์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•จ์œผ๋กœ์จ ์˜ค๋ฅ˜๋ฅผ ์ฐพ๋Š” ๋™์  ํ…Œ์ŠคํŠธ(Dynamic Test)์— ํ•ด๋‹นํ•œ๋‹ค.

6. ๋ฐ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๊ฒ€์ฆ ๊ธฐ์ค€ (Test coverage)์„ ์ •ํ•œ๋‹ค.

 

โ–ถ ์ข…๋ฅ˜

1. ๊ธฐ์ดˆ ๊ฒฝ๋กœ ๊ฒ€์‚ฌ (Base Path Testing) : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ค๊ณ„์ž๊ฐ€ ์ ˆ์ฐจ์  ์„ค๊ณ„์˜ ๋…ผ๋ฆฌ์  ๋ณต์žก์„ฑ์„ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•

2. ์ œ์–ด ๊ตฌ์กฐ ๊ฒ€์‚ฌ (Control Structure Testing)

- ์กฐ๊ฑด ๊ฒ€์‚ฌ (Condition Testing) : ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋“ˆ ๋‚ด์— ์žˆ๋Š” ๋…ผ๋ฆฌ์  ์กฐ๊ฑด์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ค๊ณ„ ๊ธฐ๋ฒ•

- ๋ฃจํ”„ ๊ฒ€์‚ฌ (Loop Testing) : ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฐ˜๋ณต (Loop) ๊ตฌ์กฐ์— ์ดˆ์ ์„ ๋งž์ถฐ ์‹ค์‹œํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ค๊ณ„ ๊ธฐ๋ฒ•

- ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๊ฒ€์‚ฌ (Data Flow Testing) : ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ณ€์ˆ˜์˜ ์ •์˜์™€ ๋ณ€์ˆ˜ ์‚ฌ์šฉ์˜ ์œ„์น˜์— ์ดˆ์ ์„ ๋งž์ถฐ ์‹ค์‹œํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ค๊ณ„ ๊ธฐ๋ฒ•

 

์•ŒํŒŒ, ๋ฒ ํƒ€ ํ…Œ์ŠคํŠธ

1. ์•ŒํŒŒ ํ…Œ์ŠคํŠธ : ๊ฐœ๋ฐœ์ž์˜ ์žฅ์†Œ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐœ๋ฐœ์ž ์•ž์—์„œ ํ–‰ํ•˜๋Š” ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•

2. ๋ฒ ํƒ€ ํ…Œ์ŠคํŠธ : ์„ ์ •๋œ ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๋ช…์˜ ์‚ฌ์šฉ์ž ์•ž์—์„œ ํ–‰ํ•˜๋Š” ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•

 

ํ…Œ์ŠคํŠธ ์˜ค๋ผํด

โ–ถ ์ข…๋ฅ˜

1. ์ฐธ(True) ์˜ค๋ผํด : ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•ด ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์˜ค๋ผํด. ๋ฐœ์ƒ๋œ ๋ชจ๋“  ์˜ค๋ฅ˜๋ฅผ ๊ฒ€์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

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

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

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

 

EAI (Enterprise Application Intergration)

โ–ถ  ๊ฐœ๋…

: ๊ธฐ์—… ๋‚ด ๊ฐ์ข… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ํ”Œ๋žซํผ ๊ฐ„์˜ ์ •๋ณด ์ „๋‹ฌ, ์—ฐ๊ณ„, ํ†ตํ•ฉ ๋“ฑ ์ƒํ˜ธ ์—ฐ๋™์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์†”๋ฃจ์…˜

 

โ–ถ ๊ตฌ์ถ• ์œ ํ˜•

1. Point-to-Point : ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ†ตํ•ฉ ๋ฐฉ์‹์œผ๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ 1:1๋กœ ์—ฐ๊ฒฐํ•˜๋ฉฐ ๋ณ€๊ฒฝ ๋ฐ ์žฌ์‚ฌ์šฉ์ด ์–ด๋ ต๋‹ค.

2. Hub & Spoke : ๋‹จ์ผ ์ ์ ‘์ž„ ํ—ˆ๋ธŒ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ์ค‘์•™ ์ง‘์ค‘ํ˜• ๋ฐฉ์‹์œผ๋กœ, ํ™•์žฅ ๋ฐ ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜์ง€๋งŒ ํ—ˆ๋ธŒ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์‹œ์Šคํ…œ ์ „์ฒด์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

3. Message Bus (ESB ๋ฐฉ์‹) : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์ด์— ๋ฏธ๋“ค์›จ์–ด๋ฅผ ๋‘์–ด ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚˜๋ฉฐ ๋Œ€์šฉ๋Ÿ‰ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

4. Hybrid : Hub & Spoke์™€ Message Bus์˜  ํ˜ผํ•ฉ ๋ฐฉ์‹์œผ๋กœ, ๊ทธ๋ฃน ๋‚ด์—์„œ๋Š” Hub & Spoke ๋ฐฉ์‹์„, ๊ทธ๋ฃน ๊ฐ„์—๋Š” Message Bus  ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. 

 

ํŠธ๋ฆฌ ์šดํ–‰๋ฒ• (INORDER, PREORDER)

โ–ถ INORDER 

: Left โ†’ D(ํ˜„์žฌ ๋…ธํŠธ)  โ†’ Right

โ–ถ PREORDER

: D โ†’ Left โ†’ Right

 

๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋„๊ตฌ xUnit

โ–ถ ๊ฐœ๋…

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

: Java์šฉ์˜ JUnit, C++์šฉ์˜ CppUnit, .NET์šฉ์˜ NUnit, Http์šฉ์˜ HttpUnit ๋“ฑ ๋‹ค์–‘ํ•œ ์–ธ์–ด์— ์ ์šฉ๋˜๋ฉด์„œ xUnit์œผ๋กœ ํ†ต์นญ๋˜๊ณ  ์žˆ๋‹ค.

 

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

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

2. ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ์ด ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋น„์šฉ์˜ ๋Œ€๋ถ€๋ถ„์„ ์ฐจ์ง€ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๊ธฐ์กด ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ๋“ค์˜ ๊ฐœ์กฐ ๋ฐ ๊ฐœ์„ ์„ ํ†ตํ•ด ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ค๋ ค๋Š” ๊ธฐ์ˆ ์ด๋‹ค. 

3. ๊ธฐ์กด ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ธฐ๋Šฅ์„ ๊ฐœ์กฐํ•˜๊ฑฐ๋‚˜ ๊ฐœ์„ ํ•˜๋ฏ€๋กœ, ์˜ˆ๋ฐฉ ์œ ์ง€๋ณด์ˆ˜ ์ธก๋ฉด์—์„œ ์†Œํ”„ํŠธ์›จ์–ด ์œ„๊ธฐ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

4. ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ˆ˜๋ช…์ด ์—ฐ์žฅ๋˜๊ณ , ์†Œํ”„ํŠธ์›จ์–ด ๊ธฐ์ˆ ์ด ํ–ฅ์ƒ๋  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„๋„ ๋‹จ์ถ•๋œ๋‹ค.

5. ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๊ฐ€ ์ค„์–ด๋“ค๊ณ , ๋น„์šฉ์ด ์ ˆ๊ฐ๋œ๋‹ค.

6. ์œ„ํ—˜ ๋ถ€๋‹ด์ด ๊ฐ์†Œํ•˜๊ณ  ์‹œ์Šคํ…œ ๋ช…์„ธ์˜ ์˜ค๋ฅ˜๋ฅผ ์–ต์ œํ•œ๋‹ค.

 

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„ ๊ธฐ๋ฒ•

โ–ถ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„ ๊ธฐ๋ฒ• ์ข…๋ฅ˜

1. ๋ถ„ํ•  ์ •๋ณต/๋ถ„ํ•  ํ†ต์น˜ (Divide and Conquer) : ํฐ ๋ฌธ์ œ๋ฅผ ๋ณด๋‹ค ์ž‘์€ ๋ฌธ์ œ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๋Š” ์ „๋žต

2. ๋™์  ๊ณ„ํš๋ฒ• (Dynamic Programming) : ์•„๋ž˜ ๋‹จ๊ณ„์˜ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ๋ถ€ํ„ฐ ํ•ด๊ฒฐํ•˜๋ฉด์„œ ์ ์ฐจ ์ƒ์œ„๋กœ ๋‚˜์•„๊ฐ€๋Š” ์ƒํ–ฅ์‹ ์ ‘๊ทผ ๋ฐฉ์‹

3. ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Greedy Algorithm) : ์™„๋ฒฝํ•œ ํ•ด๊ฒฐ์ฑ… ๋ณด๋‹ค๋Š” ์ฐจ์„ ์ฑ…์„ ๋ชฉํ‘œ๋กœ ํ•˜๋ฉฐ, ์ƒํ™ฉ์— ๋งž๋Š” ํ•ด๊ฒฐ์ฑ…์„ ์ฆ‰์„์—์„œ ๋ชจ์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹

4. ๋ฐฑํŠธ๋ž˜ํ‚น (Backtracking) : ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ (Depth First Search) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•œ ๊ธฐ๋ฒ•์œผ๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ๋ชจ๋“  ๊ฐ€๋Šฅ์„ฑ์„ ํŠธ๋ฆฌ๋กœ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ์‹

 

โ€ป Static Block : ํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋  ๋•Œ ์ˆ˜ํ–‰๋˜๋Š” ์ฝ”๋“œ ๊ทธ๋ฃน / ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„ ๊ธฐ๋ฒ•๊ณผ ๋ฌด๊ด€ํ•˜๋‹ค.

 

๋Œ“๊ธ€์ˆ˜2