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๏ธโฃ
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)
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 ๊ตฌ์ฑ์์
โท 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์ ๊ตฌ์ฑ ๋ฐ ํ๋ฆ
์ฝํ
์ธ ์ ๊ณต์(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 ๊ตฌ์ฑ์์