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

[์ 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 : ํด๋์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋ ๋ ์ํ๋๋ ์ฝ๋ ๊ทธ๋ฃน / ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ๊ธฐ๋ฒ๊ณผ ๋ฌด๊ดํ๋ค.
