
๋ด๊ฐ ๋ณด๋ ค๊ณ ์ ๋ฆฌํ ๊ฒ
โถ ๋์ ํ = ํญํฌ์ + ํ๋กํ ํ์ + ์ํ ๋ถ์ ๊ธฐ๋ฅ ์ถ๊ฐ
โถ ์ ์์ผ(Agile) = ์ผ์ ํ ์งง์ ์ฃผ๊ธฐ ๋ฐ๋ณตํ๋ฉฐ ๊ฐ๋ฐ ์งํ
Ex, XP(eXtreme Programming), Scrum, FDD(๊ธฐ๋ฅ์ค์ฌ), ๋ฆฐ(LEAN), DSDM(Dynamic System. Development Method)
1. ํ๋ก์ ํธ ๊ณํ
โถ ํํฅ์ ๋น์ฉ์ฐ์ ๊ธฐ๋ฒ
- ์ ๋ฌธ๊ฐ ๊ฐ์ ๊ธฐ๋ฒ : ์ธ๋ถ ์ ๋ฌธ๊ฐ์๊ฒ ๋น์ฉ ์ฐ์ ์๋ขฐ (๊ฐ๊ด์ )
- ๋ธํ์ด ๊ธฐ๋ฒ: ํ ๋ช ์ ์กฐ์ ์์ ์ฌ๋ฌ ์ ๋ฌธ๊ฐ์ ์๊ฒฌ์ ์ข ํฉํ์ฌ ์ฐ์
โถ ์ํฅ์ ๋น์ฉ ์ฐ์ ๊ธฐ๋ฒ
- LOC ๊ธฐ๋ฒ : a + 4c + b / 6 (๋๊ด์น a, ๋น๊ด์น b, ๊ธฐ๋์นc)
โถ ์ํ์ ๋น์ฉ ์ฐ์
- COCOMO(Constructive Cost Model) : ๋ณดํด์ด ์ ์ / ์์์ฝ๋ ๋ผ์ธ์ ๊ธฐ๋ฐ
์ ํ | ์กฐ์งํ(Organic) | ์ค,์๊ท๋ชจ SW์ฉ / 5๋ง ๋ผ์ธ(50KDSI) ์ดํ |
๋ฐ๋ถ๋ฆฌํ(Semi-detached) | 30๋ง ๋ผ์ธ (300KDSI) ์ดํ์ ํธ๋์ญ์ ์ฒ๋ฆฌ ์์คํ | |
๋ด์ฅํ(Embedded) | 30๋ง ๋ผ์ธ (300KDSI) ์ด์์ ์ต๋ํ ๊ท๋ชจ SW๊ด๋ฆฌ |
- PUTNAM: Rayleigh Norden ๊ณก์ ์ ๋ ธ๋ ฅ ๋ถํฌ๋๋ฅผ ๊ธฐ์ด๋ก ํ๋ค.
(โ SLIM: Rayleigh-Norden ๊ณก์ / Putnam ๋ชจํ ๊ธฐ์ด๋ก ๊ฐ๋ฐ๋ ์๋ํ ์ถ์ ๋๊ตฌ)
- Function Point(FP): SW ๊ธฐ๋ฅ ์ฆ๋ ์์ธ์ ๊ฐ์ค์น ๋ถ์ฌ ํ ํฉ์ฐํ์ฌ ๊ธฐ๋ฅ์ ์ ์ฐ์ถ
(โ ESTIMACS: FP๋ชจํ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ๊ฐ๋ฐ๋ ์๋ํ ์ถ์ ๋๊ตฌ)
โถ ๋คํธ์ํฌ ์ฐจํธ
PERT (Program Evaluation and Review Technique) |
- ํ๋ก์ ํธ ์์
์ํธ๊ด๊ณ๋ฅผ ๋คํธ์ํฌ๋ก ํํ - ์ ๋ ธ๋(์์ )๊ณผ ๊ฐ์ (ํ์ดํ)๋ก ๊ตฌ์ฑ(@๋ถํ์คํ ๋ด์ฉ) โ ๊ฐ์ ์๋ ์์ ๋ณ ๋๊ด์น/๊ธฐ๋์น/๋น๊ด์น ๊ธฐ์ฌ |
CPM (Critical Path method) |
- ๋ฏธ๊ตญ Dupont ํ์ฌ์์ ํํ๊ณต์ฅ ์ ์ง/๊ด๋ฆฌ ์ํด ๊ฐ๋ฐ - ๋ ธ๋(์์ ) / ๊ฐ์ (์์ ์ ํ ์์กด ๊ด๊ณ) / ๋ฐ์ค(์ด์ ํ) ๊ตฌ์ฑ - ๊ฐ์ (ํ์ดํ)์ ํ๋ฆ์ ๋ฐ๋ผ ์์ ์งํ(@ํ์คํ ์ํฉ) |
โญ CPM์ ์๊ณ๊ฒฝ๋ก ๊ตฌํ๋ ๋ฌธ์ ๋จ๊ณจ์
โถ ๊ฐํธ ์ฐจํธ
- ๊ฐ ์์ ์ ์์ / ์ข ๋ฃ ์ผ์ ์ ๋ง๋ ๋ฐ(Bar) ๋ํ๋ฅผ ์ด์ฉํ์ฌ ํํ
- ์๊ฐ์ (Time-line) ์ฐจํธ (์ํ ๋ง๋ ๊ธธ์ด = ์์ ๊ธฐ๊ฐ)
- ์์ ๊ฒฝ๋ก๋ ํํ ๋ถ๊ฐ / ๊ณํ ๋ณํ์ ๋ํ ์ ์์ฑ์ด ๋ฎ์
2. ์๊ตฌ์ฌํญ ๋ถ์
๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ | ์ค์ ์์คํ
์ํ์ ํ์ํ ๊ธฐ๋ฅ ๊ด๋ จ ์๊ตฌ์ฌํญ ex) ๊ธ์ต ์์คํ ์ ์กฐํ/์ธ์ถ/์ ๊ธ/์ก๊ธ ๊ธฐ๋ฅ์ด ์์ด์ผ ํ๋ค. |
๋น๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ | ์ฑ๋ฅ, ๋ณด์, ํ์ง, ์์ ์ฑ ๋ฑ ์ค์ ์ํ์ ๋ณด์กฐ์ ์ธ ์๊ตฌ์ฌํญ โญ์ฑ๋ฅ์ ๋น๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ์ด๋ค. ex) ๋ชจ๋ ํ๋ฉด์ด 3์ด ์ด๋ด์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ผ ํ๋ค. |
โถ ์๊ตฌ์ฌํญ ๊ฐ๋ฐ ํ๋ก์ธ์ค
โ ๋์ถ/์ถ์ถ | ์ดํด๊ด๊ณ์๋ค์ด ๋ชจ์ฌ ์๊ตฌ์ฌํญ ์ ์(์๋ณํ๊ณ ์ดํดํ๋ ๊ณผ์ ) Ex. ์ธํฐ๋ทฐ, ์ค๋ฌธ, ๋ธ๋ ์ธ์คํ ๋ฐ, ์ฒญ์ทจ, ํ๋กํ ํ์ดํ, ์ ์ค์ผ์ด์ค |
โก ๋ถ์ | ์ฌ์ฉ์ ์๊ตฌ์ฌํญ์ ํ๋น์ฑ ์กฐ์ฌ / ๋น์ฉ ๋ฐ ์ผ์ ์ ๋ํ ์ ฒ์ฝ ์ค์ Ex. ๊ด์ฐฐ, ๊ฐ๋ ๋ชจ๋ธ๋ง, ์ ํ ๋ถ์, ์๊ตฌ์ฌํญ ์ ์ ๋ฌธ์ํ |
โข ๋ช ์ธ | ์๊ตฌ์ฌํญ ์ฒด๊ณ์ ๋ถ์ ํ ์น์ธ๊ฐ๋ฅํ๋๋ก ๋ฌธ์ํ |
โฃ ํ์ธ/๊ฒ์ฆ | ์ ๊ตฌ์ฌํญ ๋ช ์ธ์๊ฐ ์ ํํ๊ณ ์์ ํ๊ฒ ์์ฑ๋์๋์ง ๊ฒํ |
โถ ์๊ตฌ์ฌํญ ๋ถ์ ๋๊ตฌ
์๊ตฌ์ฌํญ ๋ถ์ CASE (Computer Aided SW Engineering) |
- SADT : SoftTech ์ฌ์์ ๊ฐ๋ฐ / ๊ตฌ์กฐ์ ๋ถ์ ๋ฐ ์ค๊ณ๋ถ์ - SREM : ์ค์๊ฐ ์ฒ๋ฆฌ SW ์์คํ ์์ ์๊ตฌ์ฌํญ ๋ช ํํ ๊ธฐ์ ๋ชฉ์ - PSL / PSA: ๋ฌธ์ ๊ธฐ์ ์ธ์ด ๋ฐ ์๊ตฌ์ฌํญ ๋ฌธ์ ๋ณด๊ณ ์ ์ถ๋ ฅ - TAGS : ์์คํ ๊ณตํ ๋ฐฉ๋ฒ ์์ฉ์ ๋ํ ์๋ ์ ๊ทผ ๋ฐฉ๋ฒ |
โญ HIPO (Hierarchy Inpupt Process Output) |
- ํํฅ์ ์ค๊ณ ๋ฐฉ์ / ๊ฐ์์ , ์ด์ฒด์ , ์ธ๋ถ์ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๊ตฌ์ฑ ๊ธฐ๋ฅ๊ณผ ์๋ฃ์ ์์กด ๊ด๊ณ ๋์ ํํ / ์ดํด์ฝ๊ณ ์ ์ง๋ณด์ ๊ฐ๋จ |
โถ ๊ตฌ์กฐ์ ๋ถ์ ๋ชจ๋ธ
- ๋ฐ์ดํฐ ์๋ฃ ํ๋ฆ๋(DFD, Data flow diagram)

- ์๋ฃ ์ฌ์ (DD, Data Dictionary)

โถ ๊ฐ์ฒด์งํฅ ๋ถ์ ๋ชจ๋ธ
- Booch(๋ถ์น): ๋ฏธ์์ , ๊ฑฐ์์ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋ชจ๋ ์ฌ์ฉ (ํด๋์ค/๊ฐ์ฒด ๋ถ์ ๋ฐ ์๋ณ)
- Jacobson(์ ์ด์ฝฅ์จ): Use case๋ฅผ ์ฌ์ฉ (์ฌ์ฉ์, ์ธ๋ถ ์์คํ ์ด ์์คํ ๊ณผ ์ํธ ์์ฉ)
- Coad-Yourdon: E-R๋ค์ด์ด๊ทธ๋จ ์ฌ์ฉ / ๊ฐ์ฒด์ ํ์ ๋ชจ๋ธ๋ง
- Wrifs-Brock: ๋ถ์๊ณผ ์ค๊ณ ๊ตฌ๋ถ์ด ์์ผ๋ฉฐ ๊ณ ๊ฐ ๋ช ์ธ์ ํ๊ฐ ํ ์ค๊ณ ์์ ๊น์ง ์ฐ์ ์ํ
- Rumbaugh(๋ผ๋ฐ์ฐ): ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ, โญ ๊ฐ์ฒด/๋๊ธฐ/๊ธฐ๋ฅ ๋ชจ๋ธ๋ก ๊ตฌ๋ถ
โถ ๋ผ๋ฐ์ฐ
- ๊ฐ์ฒด ๋ชจ๋ธ๋ง(Object) โ ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ / ๊ฐ์ฒด๋ค ๊ฐ์ ๊ด๊ณ ๊ท์ /์ ์
- ๋์ ๋ชจ๋ธ๋ง(Dynamic) โ ์ํ ๋ค์ด์ด๊ทธ๋จ / ์์คํ ๋์ ์ธ ํ์ ๊ธฐ์
- ๊ธฐ๋ฅ ๋ชจ๋ธ๋ง(Function) โ ์๋ฃ ํ๋ฆ๋(DFD) / ๋ค์์ ํ๋ก์ธ์ค๋ค ๊ฐ์ ์ฒ๋ฆฌ ๊ณผ์ ํํ
โถ ์๊ตฌ์ฌํญ ๋ช ์ธ
์ ํ ๋ช ์ธ | ์ํ์ ์๋ฆฌ VDM, Z, Petri-net, CSP |
๋น์ ํ ๋ช ์ธ | ์์ฐ์ด, ๊ทธ๋ฆผ ์ค์ฌ FSM, Decision Table, E-R๋ชจ๋ธ, State Chart |
3. ์ํํธ์จ์ด ์ค๊ณ
โญ ์ํคํ ์ณ ํจํด
โ Layer
์์คํ ์ ๊ณ์ธต์ผ๋ก ๊ตฌ๋ถํ๋ ๊ณ ์ ์ ๋ฐฉ์(OSI ์ฐธ์กฐ ๋ชจ๋ธ)
โ Client-server
ํ๋์ ์๋ฒ ์ปดํฌ๋ํธ์ ๋ค์์ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ
ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ์์ฒญ/์๋ต ์ ์ธ ์ ์๋ก ๋ ๋ฆฝ์
* ์ปดํฌ๋ํธ(Component): ๋ ๋ฆฝ์ ์ ๋ฌด/๊ธฐ๋ฅ ์ํ ์ํ ์คํ ์ฝ๋ ๊ธฐ๋ฐ ๋ชจ๋
โ Pipe-Filter
๋ฐ์ดํฐ ์คํธ๋ฆผ ์ ์ฐจ์ ๊ฐ ๋จ๊ณ๋ฅผ ํํฐ ์ปดํฌ๋ํธ๋ก ์บก์ํ ํ
๋ฐ์ดํฐ ์ ์ก / ์ฌ์ฌ์ฉ ๋ฐ ํ์ฅ ์ฉ์ด / ํํฐ ์ปดํฌ๋ํธ ์ฌ๋ฐฐ์น ๊ฐ๋ฅ
๋จ๋ฐฉํฅ์ผ๋ก ํ๋ฅด๋ฉฐ, ํํฐ ์ด๋ ์ ์ค๋ฒํค๋ ๋ฐ์
๋ณํ, ๋ฒํผ๋ง, ๋๊ธฐํ ์ ์ฉ ( ex. UNIX ์ - Shell)
โ Model-View-Controller
๋ชจ๋ธ(Model): ์๋ธ ์์คํ ์ ํต์ฌ ๊ธฐ๋ฅ ๋ฐ ๋ฐ์ดํฐ ๋ณด๊ด
๋ทฐ(View): ์ฌ์ฉ์์๊ฒ ์ ๋ณด ํ์
์ปจํธ๋กค๋ฌ(Controller): ์ฌ์ฉ์๋ก๋ถํฐ ๋ฐ์ ์ ๋ ฅ ์ฒ๋ฆฌ
โ ๊ฐ ๋ถ๋ถ์ ๊ฐ๋ณ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌ๋์ด ์๋ก ์ํฅ X
โ Master-slave
๋ง์คํฐ์์ ์ฌ๋ ์ด๋ธ ์ปดํฌ๋ํธ๋ก ์์ ๋ถํ /๋ถ๋ฆฌ/๋ฐฐํฌ ํ ์ฌ๋ ์ด๋ธ์์ ์ฒ๋ฆฌ๋๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ค์ ๋๋ ค ๋ฐ์ (๋ณ๋ ฌ ์ปดํจํ )
โ Broker
์ปดํฌ๋ํธ์ ์ฌ์ฉ์๋ฅผ ์ฐ๊ฒฐ (๋ถ์ฐ ํ๊ฒฝ ์์คํ )
โ Peer-to-Peer
ํผ์ด๋ฅผ ํ ์ปดํฌ๋ํธ๋ก ์ฐ์ ํ ๊ฐ ํผ์ด๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ ์๋, ์๋ฒ๊ฐ ๋ ์๋ ์์ (๋ฉํฐ์ค๋ ๋ฉ)
โ Event-bus
์์ค๊ฐ ํน์ ์ฑ๋์ ์ด๋ฒคํธ ๋ฉ์์ง๋ฅผ ๋ฐํ ์ ํด๋น ์ฑ๋์ ๊ตฌ๋ ํ ๋ฆฌ์ค๋๋ค์ด ๋ฉ์ธ์ง๋ฅผ ๋ฐ์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํจ
โ Blackboard
์ปดํฌ๋ํธ๋ค์ด ๊ฒ์์ ํตํด ๋ธ๋๋ณด๋์์ ์ํ๋ ๋ฐ์ดํฐ ์ ์ก
โ Interpreter
ํน์ ์ธ์ด๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ํด์ํ๋ ์ปดํฌ๋ํธ ์ค๊ณ
โญ UML (Unified Modeling Launguage)
- ๊ตฌ์ฑ์์ : ์ฌ๋ฌผ, ๊ด๊ณ, ๋ค์ด์ด๊ทธ๋จ- Rumbaugh, Booch, Jacobson ๋ฑ ๊ฐ์ฒด์งํฅ ๋ฐฉ๋ฒ๋ก ์ ์ฅ์ ํตํฉ* ์ธํฐํ์ด์ค: ํด๋์ค/์ปดํฌ๋ํธ๊ฐ ๊ตฌํํด์ผ ํ๋ ์คํผ๋ ์ด์ ์ธํธ๋ฅผ ์ ์ํ๋ ๋ชจ๋ธ ์์
โถ ์ฌ๋ฌผ (Things) : ๊ตฌ์กฐ(๊ฐ๋ , ๋ฌผ๋ฆฌ์ ์์) / ํ๋ /๊ทธ๋ฃน / ์ฃผํด(๋ถ๊ฐ์ ์ค๋ช , ์ ์ฝ์กฐ๊ฑด)
โถ ๊ด๊ณ(Relationship)
UML์ ๊ด๊ณ๋ ์ฌ๋ฌผ๊ณผ ์ฌ๋ฌผ ์ฌ์ด์ ์ฐ๊ด์ฑ์ ํํํ๋ ๊ฒ์ด๋ค. โ 2024๋ 3์ฐจ์ ๋์์ ์ ๋์ฌ ๊ฒ ๊ฐ์ง๋ง ๊ตณ์ด ์ ๋ฆฌํฉ๋๋ค.
1) ์ฐ๊ด ๊ด๊ณ(Association)
2๊ฐ ์ด์์ ์ฌ๋ฌผ์ด ์๋ก ๊ด๋ จ๋์ด ์๋ ๊ด๊ณ ์ด๋ค. ์ฌ๋ฌผ ์ฌ์ด์ ๋ค์ค๋๋ฅผ ํํํ ์ ์์.

ํ์์ ํ ํ๊ต์ ๋ค๋๋ ๊ด๊ณ์ด๋ฉฐ ํ์์ 1๋ช ์ด์์ด๋ค.

์ ์์ ํ์์ ๊ฐ๋ฅด์น๊ณ ํ์์ ์ ์์๊ฒ ๊ฐ๋ฅด์นจ ๋ฐ๋ ๊ด๊ณ์ด๋ค.
ํ์์ ํ ๋ช
์ด์์ ์ ์์ผ๋ก๋ถํฐ ๊ฐ๋ฅด์นจ์ ๋ฐ๊ณ , ์ ์์ ํ ๋ช
์ด์์ ํ์์ ๊ฐ๋ฅด์น๋ค.
2) ์งํฉ(Aggregation)
ํ๋์ ์ฌ๋ฌผ์ด ๋ค๋ฅธ ์ฌ๋ฌผ์ ํฌํจ๋์ด์๋ ๊ด๊ณ์ธ ๊ฒ์ ๋ํ๋ด๊ณ ์๋ก ๋
๋ฆฝ์ ์ด๋ค.

ํ๋ฆฐํฐ๋ ์ปดํจํฐ์ ์ฐ๊ฒฐํด์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์ปดํจํฐ์ ์ฐ๊ฒฐํด์ ์ฌ์ฉํ ์๋ ์๋ค.
๋ค๋ฅธ ์ปดํจํฐ์ ์ฐ๊ฒฐ์ด ๊ฐ๋ฅํ๋ฏ๋ก ๋
๋ฆฝ์ ์ด๋ผ๊ณ ํ ์ ์๋ค.
3) ํฌํจ(Composition)
์งํฉ๊ณผ ๋น์ทํ ํฌํจ๊ด๊ณ์ด์ง๋ง ๋ค๋ฅธ์ ์ ์๋ก ๋
๋ฆฝ๋ ์ ์๋ค.
(ํฌํจํ๋์ชฝ์ด ์ฌ๋ผ์ง๋ฉด ํฌํจ๋ ์ชฝ์ ์ฌ๋ผ์ง)

๋ฌธ์ ์ด ์ ์๋ ์ด์ ๋ ํ๋์ด๋ฉฐ ํด๋น ์ด์ ๋ก๋ ๋ค๋ฅธ ๋ฌธ์ ์ด ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฌธ์ด ์์ด์ง๋ฉด ์ด์ ๋ ๋ ์ด์ ํ์์๋ค.
4) ์ผ๋ฐํ(Generalization)
์์๊ด๊ณ๋ผ๊ณ ํ ์ ์๋ค. ์ผ๋ฐํ๋ผ๋ ๋ง ๊ทธ๋๋ก ํ๋์ ์ฌ๋ฌผ๋ก ๋ฌถ์ด์ ๋ํ๋ด๋ ๊ฒ์ด๋ค.

์ฌ์(์์)์ ์ฝ๋ผ๋ฆฌ(์์)๋ ๋๋ฌผ(๋ถ๋ชจ)์ด๋ค.
5. ์์กด(Dependency)
์๋ก ์ฐ๊ด์ ์์ผ๋ ํ์ํ ๋๋ง ๊ด๊ณ๊ฐ ํ์ฑ๋๋ ๊ฒ์ ๋ํ๋ธ๋ค.

๋ฑ๊ธ์ด ๋์ผ๋ฉด ํ ์ธ์จ์ ์ ์ฉํ๊ณ ๋ฑ๊ธ์ด ๋ฎ์ผ๋ฉด ํ ์ธ์จ์ ์ ์ฉํ์ง ์๋๋ค.
6. ์ค์ฒดํ(Realization)
์ด๋ ํ ๊ด๊ณ๋ก ์ฌ๋ฌผ์ ๊ทธ๋ฃนํ ํ ์ ์๋ ๊ฒ์ ๋ํ๋ธ๋ค.

๋นํ๊ธฐ์ ์๋ ๋ ์ ์๋ ํ๋์ผ๋ก ๊ทธ๋ฃน์ง์ ์ ์๋ค.
โญ ๋ค์ด์ด๊ทธ๋จ (Diagram)
๊ตฌ์กฐ, ์ ์ ๋ค์ด์ด๊ทธ๋จ |
ํด๋์ค(Class) | ํด๋์ค ์ฌ์ด์ ๊ด๊ณ ๋ฐ ์์ฑ ํํ |
๊ฐ์ฒด(Object) | ์ธ์คํด์ค๋ฅผ ๊ฐ์ฒด์ ๊ฐ์ฒด ์ฌ์ด์ ๊ด๊ณ๋ก ํํ | |
์ปดํฌ๋ํธ(Component) | ๊ตฌํ ๋ชจ๋ธ์ธ ์ปดํฌ๋ํธ ๊ฐ์ ๊ด๊ณ ํํ | |
๋ฐฐ์น(Deployment) | ๋ฌผ๋ฆฌ์ ์์(HW/SW)์ ์๊ธฐ/๊ตฌ์กฐ ํํ | |
๋ณตํฉ์ฒด๊ตฌ์กฐ (Composite Structure) |
ํด๋์ค ๋ฐ ์ปดํฌ๋ํธ์ ๋ณตํฉ์ฒด ๋ด๋ถ ๊ตฌ์กฐ ํํ | |
ํจํค์ง(Package) | UML์ ๋ค์ํ ๋ชจ๋ธ์์๋ฅผ ๊ทธ๋ฃนํํ์ฌ ๋ฌถ์ | |
ํ์, ๋์ ๋ค์ด์ด๊ทธ๋จ |
์ ์ค์ผ์ด์ค(use case) | ์ฌ์ฉ์์ ์๊ตฌ๋ฅผ ๋ถ์ (์ฌ์ฉ์ ๊ด์ ) โ ์ฌ์ฉ์(Actor) + ์ฌ์ฉ ์ฌ๋ก(Use Case) |
์ํ์ค(Sequence) | ์์คํ
/๊ฐ์ฒด๋ค์ด ์ฃผ๊ณ ๋ฐ๋ ๋ฉ์์ง ํํ โ ๊ตฌ์ฑ ํญ๋ชฉ: ์กํฐ / ๊ฐ์ฒด / ์๋ช ์ / ๋ฉ์์ง ์ ์ด ์ผ๊ฐํ |
|
์ปค๋ฎค๋์ผ์ด์ (Communication) | ๊ฐ์ฒด๋ค์ด ์ฃผ๊ณ ๋ฐ๋ ๋ฉ์ธ์ง์ ๊ฐ์ฒด ๊ฐ์ ์ฐ๊ด๊ด๊ณ๊น์ง ํํ | |
์ํ(State) | ๋ค๋ฅธ ๊ฐ์ฒด์์ ์ํธ์์ฉ์ ๋ฐ๋ผ ์ํ๊ฐ ์ด๋ป๊ฒ ๋ณํํ๋์ง ํํ | |
ํ๋(Activity) | ๊ฐ์ฒด์ ์ฒ๋ฆฌ ๋ก์ง ๋ฐ ์กฐ๊ฑด์ ๋ฐ๋ฅธ ์ฒ๋ฆฌ์ ํ๋ฆ์ ์์์ ๋ฐ๋ผ ํํ | |
ํ์ด๋ฐ(Timing) | ๊ฐ์ฒด ์ํ ๋ณํ์ ์๊ฐ ์ ์ฝ ๋ช ์์ ์ผ๋ก ํํ | |
์ํธ์์ฉ ๊ฐ์ (Interaction Overview) |
์ํธ์์ฉ ๋ค์ด์ด๊ทธ๋จ ๊ฐ ์ ์ด ํ๋ฆ ํํ |
โถ UI ์ค๊ณ
- ์ง๊ด์ฑ, ์ ํจ์ฑ, ํ์ต์ฑ, ์ ์ฐ์ฑ
- CLI(Command Line) : ํ ์คํธ
- GUI(Graphical) : ๊ทธ๋ํฝ
- NUI(Natural): ๋ง/ํ๋
- VUI(Voice): ์์ฑ
- OUI(Organic): ์ฌ๋ฌผ๊ณผ ์ฌ์ฉ์ ์ํธ์์ฉ
โถ UI ์ค๊ณ ๋๊ตฌ
- Wireframe : ๊ธฐํ ์ด๊ธฐ ๋จ๊ณ์ ๋๋ต์ ์ธ ๋ ์ด์์ ์ค๊ณ
- StoryBoard: ์ต์ข ์ ์ธ ์ฐ์ถ ๋ฌธ์
- Prototype: ์์ด์ดํ๋ ์ / ์คํ ๋ฆฌ๋ณด๋์ ์ธํฐ๋์ ์ ์ฉ, ์ค์ ๊ตฌํ๋ ๊ฒ์ฒ๋ผ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ ๋์ ์ธ ํํ ๋ชจํ
- Mockup: ์ค์ ํ๋ฉด๊ณผ ์ ์ฌํ ์ ์ ์ธ ํํ ๋ชจํ
- Use case: ์ฌ์ฉ์ ์ธก๋ฉด ์๊ตฌ์ฌํญ ๋ฐ ๋ชฉํ๋ฅผ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ํํ
4. ์ํํธ์จ์ด ๊ตฌํ
โถ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ ์์ํฌ
- Spring ํ๋ ์์ํฌ : JAVA ํ๋ซํผ์ ์ํ ์คํ ์์ค ๊ฒฝ๋ํ ํ๋ ์์ํฌ (๋์ ์น์ฌ์ดํธ ๊ฐ๋ฐ)
- ์ ์์ ๋ถ ํ๋ ์์ํฌ : ์ฐ๋ฆฌ๋๋ผ ๊ณต๊ณต๋ถ๋ฌธ ์ ๋ณดํ ์ฌ์ ์ ํจ์จ์ ์ธ ์ ๋ณด ์์คํ , ๊ตฌ์ถ ์ง์์ ์ํด ํ์ํ ๊ธฐ๋ฅ/์ํคํ ์ณ ์ ๊ณต
- ๋ท๋ท ํ๋ ์์ํฌ: MS์์ ๊ฐ๋ฐํ Windows ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ, ๊ณตํต์ธ์ด ๋ฐํ์(CLR) ์ด๋ผ๋ ๊ฐ์ ๋จธ์ ์์์ ์๋
โถ API (Application Programming Interface)
- ์ํํธ์จ์ด ๊ฐ ์ธํฐํ์ด์ค (์๋ก ๋ค๋ฅธ ์ํํธ์จ์ด/์๋น์ค ๊ฐ ์ํธ ์์ฉ ์ฉ์ด)
- ์ด์์ฒด์ ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ธฐ๋ฅ์ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ๊ตฌํ
โญ ์์ง๋ (Cohesion)
- ๊ฐ๋ณ ๋ชจ๋์ด ๋ ๋ฆฝ์ ์ธ ๊ธฐ๋ฅ์ผ๋ก ์ ์๋์ด ์๋ ์ ๋
- ์์ง๋ โฒ โ ํ์ง โผ
- ์ธ์ฐ๋๋ฒ : ์ฐ๋์์ ๊ต์๊ฐ
๋์ ์์ง๋๋ถํฐ (์๋๋ก ๊ฐ์๋ก ๋ฎ์ ์์ง๋)
๊ธฐ๋ฅ์ (Function) | ๋ชจ๋ ๋ด๋ถ์ ๋ชจ๋ ๊ธฐ๋ฅ ์์๊ฐ ๋จ์ผ ๋ฌธ์ ์ ์ฐ๊ด๋์ด ์ํ |
์์ฐจ์ (Sequential) | ๋ชจ๋ ๋ด ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ํ๋์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ก ์ฌ์ฉ |
ํต์ ์ (Communication) = ๊ตํ์ |
๋์ผํ ์ /์ถ๋ ฅ์ ์ฌ์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ํ |
์ ์ฐจ์ (Procedural) | ๋ชจ๋ ๋ด ๊ตฌ์ฑ ์์๋ค์ด ๋ค์ ๊ด๋ จ ๊ธฐ๋ฅ์ ์์ฐจ์ ์ผ๋ก ์ํ |
์๊ฐ์ (Temporal) | ํน์ ์๊ฐ ๋ด ์ฒ๋ฆฌ๋๋ ๊ธฐ๋ฅ์ ๋ชจ์ ํ๋์ ๋ชจ๋๋ก ์์ฑ |
๋ ผ๋ฆฌ์ (Logical) | ์ ์ฌํ ์ฑ๊ฒฉ์ ์ฒ๋ฆฌ ์์๋ค๋ก ํ๋์ ๋ชจ๋์ด ํ์ฑ |
์ฐ์ฐ์ (Coincidental) | ๊ฐ ๊ตฌ์ฑ ์์๋ค์ด ์๋ก ๊ด๋ จ์๋ ์์๋ก๋ง ๊ตฌ์ฑ |
โญ ๊ฒฐํฉ๋ (Coupling)
- ๊ฐ๋ณ ๋ชจ๋ ๊ฐ ์ํธ ์์กดํ๋ ์ ๋
- ๊ฒฐํฉ๋ โผ โ ํ์ง โฒ
- ์ธ์ฐ๋ ๋ฒ: ๋ด ๊ณต๋ถ ๋ด๊ฐ ํ ๊ฒ์. ์ ๊ฐ ์คํธ๋ ์ค ๋ฐ์๋์
๋์ ๊ฒฐํฉ๋๋ถํฐ (์๋๋ก ๊ฐ์๋ก ๋ฎ์ ๊ฒฐํฉ๋)
๋ด์ฉ (Content) | ํ ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋์ ๋ด๋ถ ๊ธฐ๋ฅ ๋ฐ ์๋ฃ๋ฅผ ์ง์ ์ฐธ์กฐ/์์ |
๊ณตํต/๊ณต์ (Common) | ๊ณต์ ๋๋ ๊ณตํต ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๋ชจ๋์ด ์ฌ์ฉ (์ ์ญ ๋ณ์ ์ฐธ์กฐ) |
์ธ๋ถ (External) | ํ ๋ชจ๋์์ ์ ์ธํ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ์ ๋ค๋ฅธ ๋ชจ๋์์ ์ฐธ์กฐ |
์ ์ด (Control) | - ํ ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋์ ์์ธํ ์ฒ๋ฆฌ ์ ์ฐจ๋ฅผ ์๊ณ ์์ด ์ด๋ฅผ ํต์ ํ๋ ๊ฒฝ์ฐ๋ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ด ๋ ๋ชจ๋์ ๋ถ๋ฆฌ๋์ด ์ค๊ณ. - ์ฒ๋ฆฌ ๋์ ๊ฐ ๋ฟ๋ง ์๋๋ผ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ ์ด ์์๋ ์ ๋ฌ |
์คํฌํ (Stamp) | - ๋ ๋ชจ๋์ด ๋์ผํ ์๋ฃ ๊ตฌ์กฐ(๋ฐฐ์ด, ์ค๋ธ์ ํธ)๋ฅผ ์กฐํ - ์๋ฃ ๊ตฌ์กฐ ๋ฐ ํฌ๋งท ๋ณํ ์ ์กฐํํ๊ณ ์๋ ๋ชจ๋ ๋ชจ๋์ ์ํฅ |
์๋ฃ (Data) | ๋ชจ๋ ๊ฐ์ ์ธํฐํ์ด์ค๊ฐ ์๋ฃ ์์๋ก๋ง ๊ตฌ์ฑ |
โญ ๊ฐ์ฒด์งํฅ (Object-Oriented)
- ๊ฐ์ฒด์ ์์ฑ, ํด๋์ค์ ๋ฉค๋ฒ, ์ ์ฒด์ ๋ถ๋ถ์ผ๋ก ๋๋ ๋ถ์
๊ฐ์ฒด (Object) |
๊ณ ์ ์๋ณ์ / ํ๋์ ๋
๋ฆฝ๋ ์กด์ฌ / ์ผ์ ํ ๊ธฐ์ต์ฅ์ ๋ณด์ ์ํ(state) = ๊ฐ์ฒด์ ๊ฐ์ง ์ ์๋ ์กฐ๊ฑด, ์์ฑ ๊ฐ์ ์ํด ์ ์ ํ์(์ฐ์ฐ, method) = ๊ฐ์ฒด๊ฐ ๋ฐ์ํ ์ ์๋ ๋ฉ์์ง ์งํฉ |
ํด๋์ค (Class) |
๊ณตํต ์์ฑ๊ณผ ์ฐ์ฐ(ํ์)์ ๊ฐ๋ ๊ฐ์ฒด๋ค์ ์งํฉ / ๋ฐ์ดํฐ ์ถ์ํ ๋จ์ * ์ธ์คํด์ค(Instance): ํด๋์ค์ ์ํ ๊ฐ๊ฐ์ ๊ฐ์ฒด * Operation: ํด๋์ค์ ๋์ / ๊ฐ์ฒด์ ๋ํด ์ ์ฉ๋ ๋ฉ์๋ ์ ์ |
์บก์ํ (Encapsulation) |
๋ฐ์ดํฐ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํจ์๋ฅผ ํ๋๋ก ๋ฌถ์ ์ธ๋ถ ๋ด์ฉ ์ํ(์ ๋ณด ์๋) โ ์ธ๋ถ ์ ๊ทผ ์ ํ ๊ฒฐํฉ๋ ๋ฎ์ / ์ฌ์ฌ์ฉ ์ฉ์ด / ์ธํฐํ์ด์ค ๋จ์ / ์ค๋ฅ ํ๊ธ ํจ๊ณผ ๋ฎ์ |
์์ (Inheritance) |
์์ ํด๋์ค์ ์์ฑ๊ณผ ์ฐ์ฐ์ ํ์ ํด๋์ค๊ฐ ๋ฌผ๋ ค ๋ฐ๋ ๊ฒ * ๋ค์ค ์์: ๋จ์ผ ํด๋์ค๊ฐ ๋ ๊ฐ ์ด์์ ์์ ํด๋์ค๋ก๋ถํฐ ์์ |
๋คํ์ฑ (Polymorphism) |
ํ๋์ ๋ฉ์ธ์ง์ ๊ฐ ๊ฐ์ฒด ๋ณ ๊ณ ์ ํน์ฑ์ ๋ฐ๋ผ ์ฌ๋ฌ ํํ์ ์๋ต |
* ์ค๋ฒ๋ผ์ด๋ฉ(Overriding): ์ฌ์ ์ (๋จ, ๋ฉ์๋ ์ด๋ฆ / ๋งค๊ฐ๋ณ์ / ๋ฐํ ํ์ ์ ๋์ผํด์ผ ํจ - ์ด๋ ธํ ์ด์ )
* ์ค๋ฒ๋ก๋ฉ(Overroading): ๋ฉ์๋ ์ค๋ณต์ ์ (๋ฉ์๋ ์ด๋ฆ์ ๋์ผํ๋ ๋งค๊ฐ๋ณ์์ ๊ฐ์๋ ํ์ ์ ๋ค๋ฅด๊ฒ ์ง์ - ๊ณ์ฐ๊ธฐ)
โญ ๊ฐ์ฒด ์งํฅ ์ค๊ณ 5๋ ์์น(SOLID)
- ๋จ์ผ ์ฑ ์ ์์น (SRP, Single Responsibility Principle) โ ๋ชจ๋ ํด๋์ค&๊ฐ์ฒด๋ ํ๋์ ์ฑ ์๋ง / ์์ ํ ์บก์ํ
- ๊ฐ๋ฐฉ ํ์์ ์์น (OCP, Open Closed Principle) โ ํ์ฅ์๋ Open ํ๊ณ , ์์ ์๋ Close๋์ด์ผ ํ๋ค.
- ๋ฆฌ์ค์ฝํ ๊ต์ฒด ์์น (LSP, Liskov Substitution Principle) โ ์์ ํด๋์ค์ ํ๋ ๊ท์ฝ์ ํ์ ํด๋์ค๊ฐ ์๋ฐํ๋ฉด ์ ๋๋ค.
- ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น (ISP, Interface Segregation Principle) โํด๋ผ์ด์ธํธ๊ฐ ๋น์ฌ์ฉ ๋ฉ์๋์ ์์กดํ์ง ์์์ผ ํ๋ค.
- ์์กด์ฑ ์ญ์ ์์น (DIP, Dependency Inversion Principle) โ ์์กด ๊ด๊ณ ์๋ฆฝ ์ ๋ณํํ๊ธฐ ์ด๋ ค์ด ๊ฒ(์ถ์์ฑ์ด ๋์ ์์ ํด๋์ค) ์ ์์กดํด์ผ ํ๋ค.
โญ GoF(Gang of Four) ๋์์ธ ํจํด
- ์๋ธ ์์คํ ์ ์ํ๋ ์ปดํฌ๋ํธ๋ค๊ณผ ๊ทธ ๊ด๊ณ๋ฅด ์ค๊ณํ๊ธฐ ์ํ ์ฐธ์กฐ ๋ชจ๋ธ
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ค๊ณ ์ ์์ฃผ ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋ํ ๋ฐ๋ณต์ ํด๊ฒฐ ๋ฐฉ๋ฒ
cf) ์ํคํ ์ฒ ํจํฐ๋ ์ ์ฒด ์์คํ ์ ๊ตฌ์กฐ๋ฅผ ์ค๊ณ

[์์ฑ ํจํด]
Abstract Factory | ๊ตฌ์ฒด์ ์ธ ํด๋์ค์ ์์กดํ์ง ์๊ณ , ์๋ก ์ฐ๊ณ ๋๋๊ฑฐ๋ ์์กด์ ์ธ ๊ฐ์ฒด๋ค์ด ์กฐํฉ๋ ์ธํฐํ์ด์ค ์ ๊ณต |
Builder | ๊ฐ์ฒด ์์ฑ ๋จ๊ณ๋ฅผ ์บก์ํ/๋ถ๋ฆฌํ์ฌ ๊ฐ์ฒด๋ฅผ ์กฐ๋ฆฝํ์ฌ ์์ฑ โ ๋์ผํ ๊ฐ์ฒด ์์ฑ ์ ์ฐจ์์ ์๋ก ๋ค๋ฅธ ํํ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณต |
Factory Method | ์์ ํด๋์ค์์ ๊ฐ์ฒด ์์ฑ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ์ง๋ง, ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ํด๋์ค๋ ์๋ธ ํด๋์ค์์ ๊ฒฐ์ ํ๋๋ก ๋ถ๋ฆฌ |
Prototype | ์ํ/์๋ณธ ๊ฐ์ฒด๋ฅผ ๋ณต์ ํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑ |
Singleton | ํด๋์ค์์ ํ๋์ ๊ฐ์ฒด๋ง ์์ฑ ๊ฐ๋ฅํ๋ฉฐ, ํด๋น ๊ฐ์ฒด๋ฅผ ์ด๋์๋ ์ฐธ์กฐํ ์ ์์ง๋ง ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ฐธ์กฐ๋ ๋ถ๊ฐ |
[๊ตฌ์กฐ ํจํด]
Adaptor | ๋นํธํ ์ธํฐํ์ด์ค์ธ ํธํ์ฑ ๋ถ์ฌํ๋๋ก ๋ฐํ |
Bridge | ๊ตฌํ๋ถ์์ ์ถ์์ธต์ ๋ถ๋ฆฌ ํ ๊ฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ณํ/ํ์ฅ ๊ฐ๋ฅ |
Composite | ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ถ๋ถ/์ ์ฒด ๊ณ์ธต ํํ, ๋ณตํฉ/๋จ์ผ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถ ์์ด ์ฌ์ฉ |
Decorator | ์์ ์ฌ์ฉ ์์ด ๊ฐ์ฒด ๊ฐ ๊ฒฐํฉ์ ํตํด ๊ฐ์ฒด ๊ธฐ๋ฅ์ ๋์ ์ผ๋ก ์ถ๊ฐ/ํ์ฅ |
Facade | ์์์ ์ธํฐํ์ด์ค ๊ตฌ์ฑํ์ฌ ์๋ธ ํด๋์ค์ ๊ธฐ๋ฅ์ ๋ณต์กํ๊ฒ ํํํ์ง ์๊ณ ๋จ์ํ ์ธํฐํ์ด์ค๋ก ๊ตฌํ |
Flyweight | ์ธ์คํด์ค๋ฅผ ๊ณต์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ (ํด๋์ค ๊ฒฝ๋ํ) |
Proxy | ์ ๊ทผ์ด ํ๋ ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐํ๋ ์ธํฐํ์ด์ค ์ญํ (๋๋ฆฌ ๊ฐ์ฒด ์ํ) |
[ํ์ ํจํด]
Chain of Responsibility | ์ฒ๋ฆฌ ๊ฐ๋ฅํ ๊ฐ์ฒด๊ฐ ๋ ์ด์ ์กด์ฌํ์ฌ ํ ๊ฐ์ฒด ๋ด ์ฒ๋ฆฌ ๋ถ๊ฐ ์ ๋ค์ ๊ฐ์ฒด๋ก ์ด๊ด |
command | ์์ฒญ ๋ช ๋ น์ด๋ค์ ์ถ์/๊ตฌ์ฒด ํด๋์ค๋ก ๋ถ๋ฆฌํ ํ ๋จ์ํ/์บก์ํ |
Interpreter | ์ธ์ด์ ๋ฌธ๋ฒ ํํ ์ ์ |
Iterator | ์ ๊ทผ์ด ๋น๋ฒํ ๊ฐ์ฒด์ ๋ํด ๋์ผ ์ธํฐํ์ด์ค ์ฌ์ฉ |
Mediator | ๊ฐ์ฒด๋ค๊ฐ ๋ณต์กํ ์ํธ์์ฉ์ ์บก์ํํ์ฌ ๊ฐ์ฒด๋ก ์ ์ ํ ์ค์ฌ |
Memento | ๊ฐ์ฒด๋ฅผ ์ด์ ์ ํน์ ์์ ์ ์ํ๋ก ์ ์ฅํ๊ณ ๋ณต์ (์บก์ํ ์ ์ง) |
Observer | ํ ๊ฐ์ฒด ์ํ ๋ณํ ์ ์์๋์ด ์๋ ๊ฐ์ฒด๋ค์ ๋ณํ ์ ๋ฌ |
State | ๊ฐ์ฒด์ ์ํ์ ๋ฐ๋ผ ๋์ผํ ๋์์ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌ |
Strategy | ๋์ผ ๊ณ์ด ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ณ์ ์ผ๋ก ์บก์ํํ์ฌ ์ํธ ๊ตํ |
Template Method | ์ฌ๋ฌ ํด๋์ค์์ ๊ณตํต ์ฌ์ฉ ๋ฉ์๋๋ฅผ ์์ ํด๋์ค์์ ์ ์ํ๊ณ , ํ์ ํด๋์ค๋ง๋ค ๋ค๋ฅด๊ฒ ๊ตฌํํด์ผ ํ๋ ์ธ๋ถ ์ฌํญ์ ๊ฐ๋ณ ๊ตฌํ |
Visitor | ๊ฐ ํด๋์ค ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก๋ถ ํฐ ์ฒ๋ฆฌ/์ฐ์ฐ ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ์ฌ ๋ณ๋์ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ , ํด๋น ํด๋์ค ๋ฉ์๋๊ฐ ๊ฐ ํด๋์ค๋ฅผ ๋์๋ค๋๋ฉฐ ํน์ ์์ ์ ์ํ โ ๊ฐ์ฒด ๊ตฌ์กฐ ๋ณ๊ฒฝ X / ์๋ก์ด ์ฐ์ฐ๊ธฐ๋ฅ๋ง ์ถ๊ฐ |
5. ์ํํธ์จ์ด ํ ์คํธ
โถ ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ ๊ธฐ๋ณธ ์๋ฆฌ
: ํ ์คํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฒฐํจ์ด ์กด์ฌํจ์ ๋ฐํ๋ ๊ฒ (๋ฌด๊ฒฐํจ์ ์ฆ๋ช ํ ์๋ ์์)
โ ์๋ฒฝํ ํ ์คํธ๋ ๊ทผ์์ ์ผ๋ก ๋ถ๊ฐ๋ฅ (๋ฌดํ ๊ฒฝ๋ก, ๋ฌดํ ์ ๋ ฅ ๋ถ๊ฐ)
- ๊ฒฐํจ ์ง์ค : ํ๋ ํ (Pareto)์ ๋ฒ์น - 20%์ ๋ชจ๋์์ ์ ์ฒด ๊ฒฐํจ 80% ๋ฐ์
- ์ด์ถฉ์ ํจ๋ฌ๋ ์ค : ๋์ผํ ํ ์คํธ ์ผ์ด์ค์ ์ํ ๋ฐ๋ณต ํ ์คํธ๋ ์๋ก์ด ๋ฒ๊ทธ ๋ฐ๊ฒฌ X
- ์ค๋ฅ-๋ถ์ฌ์ ๊ถค๋ณ : ๊ฒฐํจ์ด ์๋ค ํ์ฌ๋ ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ ๋ฏธ์ถฉ์กฑ ์ ํ์ง ์ ํ
- Brooks์ ๋ฒ์น : ์ง์ฐ๋๋ ํ๋ก์ ํธ์ ์ธ๋ ฅ ์ถ๊ฐ ํฌ์ ์ ๋ ์ง์ฐ
โถ ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ ๋ถ๋ฅ
โ ํ๋ก๊ทธ๋จ ์คํ ์ฌ๋ถ
์ ์ ํ ์คํธ | ํ๋ก๊ทธ๋จ ์คํ X / ๋ช
์ธ์, ์์ค ์ฝ๋๋ง ๋ถ์ ex) ๋๋ฃ ๊ฒํ , ์ํฌ ์ค๋ฃจ, ์ธ์คํ์ , ์ฝ๋ ๊ฒ์ฌ |
๋์ ํ ์คํธ | ํ๋ก๊ทธ๋จ ์คํ ํ ์ค๋ฅ ๊ฒ์ฌ ex) ํ์ดํธ/๋ธ๋๋ฐ์ค ํ ์คํธ |
โก ํ ์คํธ ๊ธฐ๋ฐ ํ ์คํธ
๋ช ์ธ ๊ธฐ๋ฐ | ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ์ ๋ํ ๋ช
์ธ๋ฅผ ๋น ์ง ์์ด ํ
์คํธ ์ผ์ด์ค๋ก ๊ตฌํํ๋์ง ํ์ธ ex) ๋๋ฑ ๋ถํ / ๊ฒฝ๊ณ๊ฐ ๋ถ์ (๋ธ๋๋ฐ์ค) |
๊ตฌ์กฐ ๊ธฐ๋ฐ | SW ๋ด๋ถ ๋
ผ๋ฆฌ ํ๋ฏ์ ๋ฐ๋ผ ํ
์คํธ ์ผ์ด์ค ์์ฑ/ํ์ธ ex) ๊ตฌ๋ฌธ ๊ธฐ๋ฐ / ๊ฒฐ์ ๊ธฐ๋ฐ / ์กฐ๊ฑด ๊ธฐ๋ฐ (ํ์ดํธ๋ฐ์ค) |
๊ฒฝํ ๊ธฐ๋ฐ | ํ
์คํฐ์ ๊ฒฝํ์ ๊ธฐ๋ฐ์ผ๋ก ์ํ ex) ์๋ฌ ์ถ์ , ์ฒดํฌ๋ฆฌ์คํธ, ํ์์ ํ ์คํ |
โข ๋ชฉ์ ๊ธฐ๋ฐ ํ ์คํธ
ํ๋ณต (Recovery) | ์์คํ ์ ์ธ์์ ๊ฒฐํจ ๋ถ์ฌ ํ ์ ์์ผ๋ก ํ๋ณต๋๋ ๊ณผ์ ํ์ธ |
์์ (Security) | ์ธ๋ถ ๋ถ๋ฒ ์นจ์ ์ผ๋ก๋ถํฐ ์์คํ ์ ๋ณดํธํ ์ ์๋์ง ํ์ธ |
๊ฐ๋ (Stress) | ๊ณผ๋ถํ ์ SW ์ ์ ๊ตฌ๋ ์ฌ๋ถ ํ์ธ |
์ฑ๋ฅ (Performance) | ์ค์๊ฐ ์ฑ๋ฅ ๋ฐ ์ ์ฒด์ ์ธ ํจ์จ์ฑ ์ง๋จ (์๋ต์๊ฐ, ์ ๋ฌด ์ฒ๋ฆฌ๋) |
๊ตฌ์กฐ (Structure) | SW ๋ด๋ถ ๋ ผ๋ฆฌ์ ๊ฒฝ๋ก ๋ฐ ์์ค ์ฝ๋ ๋ณต์ก๋ ํ๊ฐ |
ํ๊ท (Regression) | SW ๋ด ๋ณ๊ฒฝ ๋๋ ์์ ๋ ์ฝ๋์ ์๋ก์ด ๊ฒฐํจ์ด ์์์ ํ์ธ |
๋ณํ (Parallel) | ๋ณ๊ฒฝ ๋ฐ ๊ธฐ์กด SW์ ๋์ผํ ๋ฐ์ดํฐ ์ ๋ ฅ ํ ๊ฒฐ๊ณผ ๋น๊ต |
โฃ ์๊ฐ(๊ด์ ) ๊ธฐ๋ฐ ํ ์คํธ
๊ฒ์ฆ (Verification) |
๊ฐ๋ฐ์์ ์๊ฐ์์ ์ ํ์ ์์ฐ ๊ณผ์ ํ
์คํธ ex) ๋จ์/ํตํฉ/์์คํ ํ ์คํธ |
ํ์ธ (Validation) |
์ฌ์ฉ์์ ์๊ฐ์์ ์์ฐ๋ ์ ํ์ ๊ฒฐ๊ณผ ํ
์คํธ ex) ์ธ์ ํ ์คํธ (์ํ/๋ฒ ํ) |
โญ ํ์ดํธ๋ฐ์ค ํ ์คํธ (White Box Test)
- ๋ชจ๋ ์์ ๋ด์ฉ(์๋) ์ง์ ๋ณผ ์ ์์ผ๋ฉฐ, ๋ด๋ถ์ ๋ ผ๋ฆฌ์ ์ธ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ํ ์คํธ
- ์์ค ์ฝ๋์ ๋ชจ๋ ๋ฌธ์ฅ์ ํ ๋ฒ ์ด์ ์ํ / ๋ ผ๋ฆฌ์ ๊ฒฝ๋ก ์ ๊ฒ (์ ํ, ๋ฐ๋ณต ์ํ)
- ํ ์คํธ ๋ฐ์ดํฐ ์ ํํ๊ธฐ ์ํด ๊ฒ์ฆ ๊ธฐ์ค ์ปค๋ฒ๋ฆฌ์ง(Coverage) ์ ํฉ
[ํ์ดํธ ๋ฐ์ค ํ ์คํธ ๊ฒ์ฆ ๊ธฐ์ค]
๊ตฌ๋ฌธ ์ปค๋ฒ๋ฆฌ์ง (Statement Coverage) |
ํ๋ก๊ทธ๋จ ๋ด ๋ชจ๋ ๋ช ๋ น๋ฌธ์ ์ ์ด๋ ํ ๋ฒ ์ํ |
๊ฒฐ์ (๋ถ๊ธฐ) ์ปค๋ฒ๋ฆฌ์ง (Branch Coverage) |
ํ๋ก๊ทธ๋จ ๋ด ์ ์ฒด ๊ฒฐ์ ๋ฌธ์ด ์ ์ด๋ ํ ๋ฒ์ ์ฐธ/๊ฑฐ์ง ๊ฒฐ๊ณผ ์ํ |
์กฐ๊ฑด ์ปค๋ฒ๋ฆฌ์ง (Condition Coverage) |
๊ฒฐ์ ๋ช ๋ น๋ฌธ ๋ด์ ๊ฐ ๊ฐ๋ณ ์กฐ๊ฑด์์ด ์ ์ด๋ ํ ๋ฒ์ ์ฐธ/๊ฑฐ์ง ๊ฒฐ๊ณผ ์ํ |
์กฐ๊ฑด/๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง (Condition / Branch) |
์ ์ฒด ์กฐ๊ฑด์ ๋ฟ๋ง ์๋๋ผ ๊ฐ๋ณ ์กฐ๊ฑด์๋ ์ฐธ ํ ๋ฒ ์ด์, ๊ฑฐ์ง ํ ๋ฒ ์ด์ ๊ฒฐ๊ณผ ์ํ |
[ํ์ดํธ๋ฐ์ค ํ ์คํธ ์ข ๋ฅ]
๊ธฐ์ด ๊ฒฝ๋ก ๊ฒ์ฌ (Base Path Testing) |
๋ํ์ ํ์ดํธ๋ฐ์ค ํ
์คํธ ๊ธฐ๋ฒ (๋์ ํ
์คํธ) ํ ์คํธ ์ผ์ด์ค ์ค๊ณ์๊ฐ ์ ์ฐจ์ ์ค๊ผ์ ๋ ผ๋ฆฌ์ ๋ณต์ก์ฑ์ ์ธก์ ํ ์ ์๊ฒ ํด์ฃผ๋ ํ ์คํธ ๊ธฐ๋ฒ ์ธก์ ๊ฒฐ๊ณผ๋ ์คํ ๊ฒฝ๋ก์ ๊ธฐ์ด๋ฅผ ์ ์ํ๋ ์ง์นจ์ผ๋ก ์ฌ์ฉ |
์ ์ด ๊ตฌ์กฐ ๊ฒ์ฌ (Control Structure Testing) |
์กฐ๊ฑด ๊ฒ์ฌ : ํ๋ก๊ทธ๋จ ๋ชจ๋ ๋ด ๋
ผ๋ฆฌ์ ์กฐ๊ฑด ํ
์คํธ ๋ฃจํ ๊ฒ์ฌ : ํ๋ก๊ทธ๋จ ๋ฐ๋ณต(Loop) ๊ตฌ์กฐ ํ ์คํธ ์๋ฃ ํ๋ฆ ๊ฒ์ฌ : ๋ณ์์ ์ ์์ ๋ณ์ ์ฌ์ฉ์ ์์น ํ ์คํธ |
โญ ๋ธ๋๋ฐ์ค ํ ์คํธ (Black Box Test)
- ๋ชจ๋ ๋ด๋ถ์ ๋ด์ฉ ์ ์ ์์
- ์ํํธ์จ์ด ์ธํฐํ์ด์ค์์ ์ค์๋๋ ํ ์คํธ
- SW ๊ฐ ๊ธฐ๋ฅ์ด ์์ ํ ์๋๋๋ ๊ฒ์ ์ ์ฆํ๋ ํ ์คํธ๋ก '๊ธฐ๋ฅ ํ ์คํธ'๋ผ๊ณ ํจ
[๋ธ๋๋ฐ์ค ํ ์คํธ ์ข ๋ฅ]
๋์น ๋ถํ ๊ฒ์ฌ (Equivalence Partition) |
ํ๋ก๊ทธ๋จ ์ ๋ ฅ ์กฐ๊ฑด์ ํ๋นํ ์ ๋ ฅ ์๋ฃ์ ํ๋นํ์ง ์์ ์ ๋ ฅ ์๋ฃ์ ๊ฐ์๋ฅผ ๊ท ๋ฑํ๊ฒ ์งํ |
๊ฒฝ๊ณ๊ฐ ๋ถ์ (Boundary Value) |
์
๋ ฅ ์กฐ๊ฑด์ ๊ฒฝ๊ณ๊ฐ์ ํ
์คํธ ์ผ์ด์ค๋ก ์ ์ ex) ๋ฒ์ ๊ตฌ๊ฐ ์ ๋ : ~์ด์ / ์ดํ / ์ด๊ณผ / ๋ฏธ๋ง |
์์ธ-ํจ๊ณผ ๊ทธ๋ํ ๊ฒ์ฌ (Cause-Effect Graphing) |
์ ๋ ฅ ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ์ ์ถ๋ ฅ์ ์ํฅ์ ๋ฏธ์น๋ ์ํฉ์ ์ฒด๊ณ์ ์ผ๋ก ๋ถ์ ํ ํจ์ฉ์ฑ์ด ๋์ ํ ์คํธ ์ผ์ด์ค ์ ์ |
์ค๋ฅ ์์ธก ๊ฒ์ฌ (Error Guessing) |
๊ณผ๊ฑฐ์ ๊ฒฝํ์ด๋ ํ์ธ์์ ๊ฐ๊ฐ์ผ๋ก ํ ์คํธ ์งํ |
๋น๊ต ๊ฒ์ฌ (Comparison) |
์ฌ๋ฌ ๋ฒ์ ์ ํ๋ก๊ทธ๋จ์ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋์ง ํ์ธ |
โถ ์๊ตฌ์ฌํญ ๊ฒ์ฆ (Requirements Validation)
- ๋๋ฃ ๊ฒํ (Peer Review) : ์์ฑ์๊ฐ ๋ด์ฉ ์ค๋ช ํ ๋๋ฃ๋ค์ด ๊ฒฐํจ ๊ฒํ
- ์ํฌ ์ค๋ฃจ (Walk Through) : ์๊ตฌ์ฌํญ ๋ช ์ธ์ ๋ฏธ๋ฆฌ ๋ฐฐํฌ ํ ์งง์ ๊ฒํ ํ์ ์งํ
- ์ธ์คํ์ (Inspection) : ์์ฑ์ ์ ์ธํ ๋ค๋ฅธ ์ ๋ฌธ๊ฐ๋ค์ด ๊ฒฐํจ ๊ฒํ
โถ ์ํํธ์จ์ด ์๋ช ์ฃผ๊ธฐ (V-๋ชจ๋ธ)

โถ ๊ฐ๋ฐ๋จ๊ณ์ ๋ฐ๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ
โ ๋จ์ํ ์คํธ (Unit Test)
- ์ต์ ๋จ์(๋ชจ๋/์ปดํฌ๋ํธ) ๊ธฐ๋ฐ ํ ์คํธ, ์ฆ๋ก ๊ตฌ์กฐ ๊ธฐ๋ฐ ํ ์คํธ ์งํ / ๊ธฐ๋ฅ์ฑ ํ ์คํธ ์ต์ฐ์
- ์ํํธ์จ์ด๋ฅผ ์ด๋ฃจ๋ ๊ธฐ๋ณธ ๋จ์(๋ ๋ฆฝ์ ๊ธฐ๋ฅ ) ํ ์คํธ
โก ํตํฉ ํ ์คํธ (Integration test)
- ์ธํฐํ์ด์ค ๊ฐ ์์คํ ์ด ์ ์ ์คํ๋๋ ์ง ํ์ธ
- ๋จ์ ํ ์คํธ ํ ๋ชจ๋์ ํตํฉํ๋ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์ค๋ฅ ๋ฐ ๊ฒฐํจ์ ์ฐพ๋ ํ ์คํธ ๊ธฐ๋ฒ
ํํฅ์ (Top-down) |
- ์์ ๋ชจ๋์์ ํ์ ๋ชจ๋ ๋ฐฉํฅ์ผ๋ก ํตํฉ - ๊น์ด ์ฐ์ (Depth first) ํตํฉ๋ฒ / ๋์ด ์ฐ์ (Breadth first) ํตํฉ๋ฒ - ์ด๊ธฐ๋ถํฐ ์ฌ์ฉ์์๊ฒ ์์คํ ๊ตฌ์กฐ ๋ณด์ฌ์ค - ์คํ (Stub) : ๋ชจ๋์ ๊ธฐ๋ฅ์ ๋จ์ํ ์ํํ๋ ๋๊ตฌ (์ํ์ฉ ๋ชจ๋) |
์ํฅ์ (Bottom-up) |
- ํ์ ๋ชจ๋์์ ์์ ๋ชจ๋ ๋ฐฉํฅ์ผ๋ก ํตํฉ - ํ๋์ ์ฃผ์ ์ ์ด ๋ชจ๋๊ณผ ๊ด๋ จ๋ ์ข ์ ๋ชจ๋์ ๊ทธ๋ฃน์ธ ํด๋ฌ์คํฐ(Cluster) ์ ๋๋ผ์ด๋ฒ(Driver) ์ฌ์ฉ / ์คํ (Stub) ๋ฏธ์ฌ์ฉ |
โข ์์คํ ํ ์คํธ (System test)
- ๊ฐ๋ฐ๋ SW์ ์ปดํจํฐ ์์คํ ๋ด ์์ฉ ์ฌ๋ถ ์ ๊ฒ
- ์ค์ ์ฌ์ฉ ํ๊ฒฝ๊ณผ ์ ์ฌํ ํ ์คํธ ํ๊ฒฝ โ ๊ธฐ๋ฅ์ (๋ธ๋๋ฐ์ค) ๋ฐ ๋น๊ธฐ๋ฅ์ (ํ์ดํธ๋ฐ์ค) ํ ์คํธ ๊ตฌ๋ถ
โฃ ์ธ์ ํ
์คํธ (Acceptance test)
- ์ฌ์ฉ์์ ์๊ตฌ ์ฌํญ ์ถฉ์กฑ ์ฌ๋ถ ํ์ธ
- ์ํ ํ ์คํธ : ํต์ ๋ ํ๊ฒฝ์์ ์ฌ์ฉ์๊ฐ ๊ฐ๋ฐ์์ ํจ๊ป ํ์ธ
- ๋ฒ ํ ํ ์คํธ : ํต์ ๋์ง ์์ ํ๊ฒฝ์์ ๊ฐ๋ฐ์ ์์ด ์ฌ๋ฌ ๋ช ์ ์ฌ์ฉ์๊ฐ ๊ฒ์ฆ
โ ํ ์คํธ ๊ด๋ จ ๊ธฐํ ์ฉ์ด
ํ
์คํธ ์๋๋ฆฌ์ค (Test Scenario) |
ํ ์คํธ ์ผ์ด์ค ์ ์ฉ/๋์ ์์์ ๋ฐ๋ผ ์ฌ๋ฌ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ฌถ์ ์งํฉ |
ํ
์คํธ ์ค๋ผํด (Test Oracle) |
ํ ์คํธ ๊ฒฐ๊ณผ์ ์ฐธ/๊ฑฐ์ง ํ๋จ ์ํด ์ฌ์ ์ ์ ์๋ ์ฐธ ๊ฐ์ ๋์ |
- ์ฐธ ์ค๋ผํด (True) : ๋ชจ๋ ํ ์คํธ ์ผ์ด์ค์ ์ ๋ ฅ๊ฐ์ ๊ธฐ๋ ๊ฒฐ๊ณผ ์ ๊ณต
- ์ํ๋ง ์ค๋ผํด (Sampling) : ํน์ ํ ์คํธ ์ผ์ด์ค ์ ๋ ฅ๊ฐ์ ๊ธฐ๋ ๊ฒฐ๊ณผ ์ ๊ณต
- ์ค๋ผํด (Heuristci) : ํน์ ํ ์คํธ ์ผ์ด์ค ์ ๋ ฅ๊ฐ์ ๊ธฐ๋ ๊ฒฐ๊ณผ ์ ๊ณต + ๋๋จธ์ง ์ ๋ ฅ๊ฐ์ ๋ํด์ ์ถ์ ๊ฒฐ๊ณผ ์ ๊ณต
- ์ผ๊ด์ฑ ์ค๋ผํด (Consistent) : ํ ์คํธ ์ผ์ด์ค์ ์ํ ์ /ํ์ ๊ฒฐ๊ณผ๊ฐ ๋์ผ ์ฌ๋ถ ํ์ธ
โ ํ ์คํธ ๊ด๋ จ ๊ธฐํ ์ฉ์ด
ํ
์คํธ ๋๋ผ์ด๋ฒ (Test Driver) |
์ํ ๋์์ ํ์ ๋ชจ๋ ํธ์ถ / ๋ชจ๋ ํ
์คํธ ์ํ ํ์ ๊ฒฐ๊ณผ ๋์ถ โ ์ํฅ์ ํตํฉ ํ ์คํธ์์ ์ฌ์ฉ |
ํ
์คํธ ์คํ
(Test Stub) |
์ ์ด ๋ชจ๋์ด ํธ์ถํ๋ ํ์ ๋ชจ๋์ ์ญํ ๋จ์ ์ํ โ ํํฅ์ ํ ์คํธ์ ์ฌ์ฉ |
ํ
์คํธ ์ํธ (Test Suites) |
์์คํ ์ ์ฌ์ฉ๋๋ ํ ์คํธ ์ผ์ด์ค์ ์งํฉ (์ปดํฌ๋ํธ / ๋ชจ๋) |
ํ
์คํธ ์ผ์ด์ค (Test Case) |
์ฌ์ฉ์์ ์๊ตฌ์ฌํญ ์ค์ ์ฌ๋ถ ํ์ธ ์ํด ์ค๊ณ๋ ํ
์คํธ ํญ๋ชฉ ๋ช
์ธ์ (์ ๋ ฅ๊ฐ, ์คํ ์กฐ๊ฑด, ๊ธฐ๋ ๊ฒฐ๊ณผ ๋ฑ) |
ํ
์คํธ ์คํฌ๋ฆฝํธ (Test Script) |
์๋ํ๋ ํ ์คํธ ์คํ ์ ์ฐจ์ ๋ํ ๋ช ์ธ์ |
๋ชฉ ์ค๋ธ์ ํธ (Mock Object) |
์ฌ์ฉ์์ ํ์ ์กฐ๊ฑด๋ถ ์ ๋ ฅ ์ ๊ณํ๋ ํ์๋ฅผ ์ํํ๋ ๊ฐ์ฒด |
6. ์ํํธ์จ์ด ์ ์ง ๋ณด์
โถ ์์ค ์ฝ๋ ํ์ง ๋ถ์ ๋๊ตฌ
์ ์ ๋ถ์ ๋๊ตฌ (Static Analysis) |
ํ๋ก๊ทธ๋จ ์คํ ์์ด ์ฝ๋ฉ ํ์ค/์คํ์ผ/๊ฒฐํจ ๋ฑ์ ๋ถ์ โ PMD, Checkstyle, SonarQube, Cppcheck, Ccm, Cobertura |
๋์ ๋ถ์ ๋๊ตฌ (Dynamic Analysis) |
ํ๋ก๊ทธ๋จ ์คํํ์ฌ ์ฝ๋ ๋ด ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐ ์ค๋ ๋ ๊ฒฐํจ ๋ฐ๊ฒฌ โ Avalanche, Valgrind, Valance |
โถ ์ํํธ์จ์ด ํ์ ๊ด๋ฆฌ (SCM: Software Configuration Management)
- ๊ฐ๋ฐ ๊ณผ์ ์์ SW ๋ณ๊ฒฝ ์ฌํญ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ผ๋ จ์ ํ๋ / ๊ฐ๋ฐ ์ ์ฒด ๋จ๊ณ ์ ์ฉ
- ์ค์์ฑ : ๋ณ๊ฒฝ์ฌํญ ์ถ์ / ํต์ , ๋ฌด์ ์ ํ ๋ณ๊ฒฝ ๋ฐฉ์ง, ๊ฐ๋ฐ์งํ ์ด๋ ฅ ํ์ธ
- ํ์ ๊ด๋ฆฌ ์ญํ : ๋ฐฐํฌ๋ณธ ๊ณ ๋๋ฆฌ ์ฉ์ด / ๋ถํ์ํ ์์ค ์์ ์ ํ / ์ฌ๋ฌ ๊ฐ๋ฐ์ ๋์ ๊ฐ๋ฐ
โถ ์ํํธ์จ์ด ๋ฒ์ ๊ด๋ฆฌ ๋๊ตฌ
๊ณต์ ํด๋ | ํด๋ผ์ด์ธํธ/์๋ฒ | ๋ถ์ฐ์ ์ฅ์ |
๊ณต์ ํด๋์ ๋ณต์ฌ | ์๋ฒ์์ ๋ฒ์ ์ผ๊ด ๊ด๋ฆฌ | ์๊ฒฉ โ ์ง์ญ ์ ์ฅ์ |
RCS, SCCS, PVCS, QVCS | CVS, SVN, CVSNT, CMBC | Git, GNU arch, DCVS, Bitkeeper, Bazaar |
โถ ํ์ ๊ด๋ฆฌ ๋๊ตฌ
CVS | ์๋ฒ/ํด๋ผ์ด์ธํธ ๊ตฌ์ฑ, ๋ค์์ ์ธ์์ด ๋์ ๋ฒ์ ๊ด๋ฆฌ ๊ฐ๋ฅ |
SVN (Subversion) |
CVS ๊ฐ์ ํด / ๋ชจ๋ ๊ฐ๋ฐ์ trunk ๋๋ ํฐ๋ฆฌ์์ ์ํ Commit ์ํ ์ revision 1์ฉ ์ฆ๊ฐ |
Git | ์๋ฒ(์๊ฒฉ( ์ ์ฅ์์ ๊ฐ๋ฐ์(์ง์ญ) ์ ์ฅ์๊ฐ ๋
๋ฆฝ์ โ Commit ์ค์ ๋ฐ์ํด๋ ์๋ฒ์ ์ํฅ ์์ (๋ถ์ฐ๋ P2P๋ชจ๋ธ) |
โถ SPICE(ISO 15504) vs CMMI(Capability Maturity Model Integration)

'ETC > ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ

๋ด๊ฐ ๋ณด๋ ค๊ณ ์ ๋ฆฌํ ๊ฒ
โถ ๋์ ํ = ํญํฌ์ + ํ๋กํ ํ์ + ์ํ ๋ถ์ ๊ธฐ๋ฅ ์ถ๊ฐ
โถ ์ ์์ผ(Agile) = ์ผ์ ํ ์งง์ ์ฃผ๊ธฐ ๋ฐ๋ณตํ๋ฉฐ ๊ฐ๋ฐ ์งํ
Ex, XP(eXtreme Programming), Scrum, FDD(๊ธฐ๋ฅ์ค์ฌ), ๋ฆฐ(LEAN), DSDM(Dynamic System. Development Method)
1. ํ๋ก์ ํธ ๊ณํ
โถ ํํฅ์ ๋น์ฉ์ฐ์ ๊ธฐ๋ฒ
- ์ ๋ฌธ๊ฐ ๊ฐ์ ๊ธฐ๋ฒ : ์ธ๋ถ ์ ๋ฌธ๊ฐ์๊ฒ ๋น์ฉ ์ฐ์ ์๋ขฐ (๊ฐ๊ด์ )
- ๋ธํ์ด ๊ธฐ๋ฒ: ํ ๋ช ์ ์กฐ์ ์์ ์ฌ๋ฌ ์ ๋ฌธ๊ฐ์ ์๊ฒฌ์ ์ข ํฉํ์ฌ ์ฐ์
โถ ์ํฅ์ ๋น์ฉ ์ฐ์ ๊ธฐ๋ฒ
- LOC ๊ธฐ๋ฒ : a + 4c + b / 6 (๋๊ด์น a, ๋น๊ด์น b, ๊ธฐ๋์นc)
โถ ์ํ์ ๋น์ฉ ์ฐ์
- COCOMO(Constructive Cost Model) : ๋ณดํด์ด ์ ์ / ์์์ฝ๋ ๋ผ์ธ์ ๊ธฐ๋ฐ
์ ํ | ์กฐ์งํ(Organic) | ์ค,์๊ท๋ชจ SW์ฉ / 5๋ง ๋ผ์ธ(50KDSI) ์ดํ |
๋ฐ๋ถ๋ฆฌํ(Semi-detached) | 30๋ง ๋ผ์ธ (300KDSI) ์ดํ์ ํธ๋์ญ์ ์ฒ๋ฆฌ ์์คํ | |
๋ด์ฅํ(Embedded) | 30๋ง ๋ผ์ธ (300KDSI) ์ด์์ ์ต๋ํ ๊ท๋ชจ SW๊ด๋ฆฌ |
- PUTNAM: Rayleigh Norden ๊ณก์ ์ ๋ ธ๋ ฅ ๋ถํฌ๋๋ฅผ ๊ธฐ์ด๋ก ํ๋ค.
(โ SLIM: Rayleigh-Norden ๊ณก์ / Putnam ๋ชจํ ๊ธฐ์ด๋ก ๊ฐ๋ฐ๋ ์๋ํ ์ถ์ ๋๊ตฌ)
- Function Point(FP): SW ๊ธฐ๋ฅ ์ฆ๋ ์์ธ์ ๊ฐ์ค์น ๋ถ์ฌ ํ ํฉ์ฐํ์ฌ ๊ธฐ๋ฅ์ ์ ์ฐ์ถ
(โ ESTIMACS: FP๋ชจํ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ๊ฐ๋ฐ๋ ์๋ํ ์ถ์ ๋๊ตฌ)
โถ ๋คํธ์ํฌ ์ฐจํธ
PERT (Program Evaluation and Review Technique) |
- ํ๋ก์ ํธ ์์
์ํธ๊ด๊ณ๋ฅผ ๋คํธ์ํฌ๋ก ํํ - ์ ๋ ธ๋(์์ )๊ณผ ๊ฐ์ (ํ์ดํ)๋ก ๊ตฌ์ฑ(@๋ถํ์คํ ๋ด์ฉ) โ ๊ฐ์ ์๋ ์์ ๋ณ ๋๊ด์น/๊ธฐ๋์น/๋น๊ด์น ๊ธฐ์ฌ |
CPM (Critical Path method) |
- ๋ฏธ๊ตญ Dupont ํ์ฌ์์ ํํ๊ณต์ฅ ์ ์ง/๊ด๋ฆฌ ์ํด ๊ฐ๋ฐ - ๋ ธ๋(์์ ) / ๊ฐ์ (์์ ์ ํ ์์กด ๊ด๊ณ) / ๋ฐ์ค(์ด์ ํ) ๊ตฌ์ฑ - ๊ฐ์ (ํ์ดํ)์ ํ๋ฆ์ ๋ฐ๋ผ ์์ ์งํ(@ํ์คํ ์ํฉ) |
โญ CPM์ ์๊ณ๊ฒฝ๋ก ๊ตฌํ๋ ๋ฌธ์ ๋จ๊ณจ์
โถ ๊ฐํธ ์ฐจํธ
- ๊ฐ ์์ ์ ์์ / ์ข ๋ฃ ์ผ์ ์ ๋ง๋ ๋ฐ(Bar) ๋ํ๋ฅผ ์ด์ฉํ์ฌ ํํ
- ์๊ฐ์ (Time-line) ์ฐจํธ (์ํ ๋ง๋ ๊ธธ์ด = ์์ ๊ธฐ๊ฐ)
- ์์ ๊ฒฝ๋ก๋ ํํ ๋ถ๊ฐ / ๊ณํ ๋ณํ์ ๋ํ ์ ์์ฑ์ด ๋ฎ์
2. ์๊ตฌ์ฌํญ ๋ถ์
๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ | ์ค์ ์์คํ
์ํ์ ํ์ํ ๊ธฐ๋ฅ ๊ด๋ จ ์๊ตฌ์ฌํญ ex) ๊ธ์ต ์์คํ ์ ์กฐํ/์ธ์ถ/์ ๊ธ/์ก๊ธ ๊ธฐ๋ฅ์ด ์์ด์ผ ํ๋ค. |
๋น๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ | ์ฑ๋ฅ, ๋ณด์, ํ์ง, ์์ ์ฑ ๋ฑ ์ค์ ์ํ์ ๋ณด์กฐ์ ์ธ ์๊ตฌ์ฌํญ โญ์ฑ๋ฅ์ ๋น๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ์ด๋ค. ex) ๋ชจ๋ ํ๋ฉด์ด 3์ด ์ด๋ด์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ผ ํ๋ค. |
โถ ์๊ตฌ์ฌํญ ๊ฐ๋ฐ ํ๋ก์ธ์ค
โ ๋์ถ/์ถ์ถ | ์ดํด๊ด๊ณ์๋ค์ด ๋ชจ์ฌ ์๊ตฌ์ฌํญ ์ ์(์๋ณํ๊ณ ์ดํดํ๋ ๊ณผ์ ) Ex. ์ธํฐ๋ทฐ, ์ค๋ฌธ, ๋ธ๋ ์ธ์คํ ๋ฐ, ์ฒญ์ทจ, ํ๋กํ ํ์ดํ, ์ ์ค์ผ์ด์ค |
โก ๋ถ์ | ์ฌ์ฉ์ ์๊ตฌ์ฌํญ์ ํ๋น์ฑ ์กฐ์ฌ / ๋น์ฉ ๋ฐ ์ผ์ ์ ๋ํ ์ ฒ์ฝ ์ค์ Ex. ๊ด์ฐฐ, ๊ฐ๋ ๋ชจ๋ธ๋ง, ์ ํ ๋ถ์, ์๊ตฌ์ฌํญ ์ ์ ๋ฌธ์ํ |
โข ๋ช ์ธ | ์๊ตฌ์ฌํญ ์ฒด๊ณ์ ๋ถ์ ํ ์น์ธ๊ฐ๋ฅํ๋๋ก ๋ฌธ์ํ |
โฃ ํ์ธ/๊ฒ์ฆ | ์ ๊ตฌ์ฌํญ ๋ช ์ธ์๊ฐ ์ ํํ๊ณ ์์ ํ๊ฒ ์์ฑ๋์๋์ง ๊ฒํ |
โถ ์๊ตฌ์ฌํญ ๋ถ์ ๋๊ตฌ
์๊ตฌ์ฌํญ ๋ถ์ CASE (Computer Aided SW Engineering) |
- SADT : SoftTech ์ฌ์์ ๊ฐ๋ฐ / ๊ตฌ์กฐ์ ๋ถ์ ๋ฐ ์ค๊ณ๋ถ์ - SREM : ์ค์๊ฐ ์ฒ๋ฆฌ SW ์์คํ ์์ ์๊ตฌ์ฌํญ ๋ช ํํ ๊ธฐ์ ๋ชฉ์ - PSL / PSA: ๋ฌธ์ ๊ธฐ์ ์ธ์ด ๋ฐ ์๊ตฌ์ฌํญ ๋ฌธ์ ๋ณด๊ณ ์ ์ถ๋ ฅ - TAGS : ์์คํ ๊ณตํ ๋ฐฉ๋ฒ ์์ฉ์ ๋ํ ์๋ ์ ๊ทผ ๋ฐฉ๋ฒ |
โญ HIPO (Hierarchy Inpupt Process Output) |
- ํํฅ์ ์ค๊ณ ๋ฐฉ์ / ๊ฐ์์ , ์ด์ฒด์ , ์ธ๋ถ์ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๊ตฌ์ฑ ๊ธฐ๋ฅ๊ณผ ์๋ฃ์ ์์กด ๊ด๊ณ ๋์ ํํ / ์ดํด์ฝ๊ณ ์ ์ง๋ณด์ ๊ฐ๋จ |
โถ ๊ตฌ์กฐ์ ๋ถ์ ๋ชจ๋ธ
- ๋ฐ์ดํฐ ์๋ฃ ํ๋ฆ๋(DFD, Data flow diagram)

- ์๋ฃ ์ฌ์ (DD, Data Dictionary)

โถ ๊ฐ์ฒด์งํฅ ๋ถ์ ๋ชจ๋ธ
- Booch(๋ถ์น): ๋ฏธ์์ , ๊ฑฐ์์ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋ชจ๋ ์ฌ์ฉ (ํด๋์ค/๊ฐ์ฒด ๋ถ์ ๋ฐ ์๋ณ)
- Jacobson(์ ์ด์ฝฅ์จ): Use case๋ฅผ ์ฌ์ฉ (์ฌ์ฉ์, ์ธ๋ถ ์์คํ ์ด ์์คํ ๊ณผ ์ํธ ์์ฉ)
- Coad-Yourdon: E-R๋ค์ด์ด๊ทธ๋จ ์ฌ์ฉ / ๊ฐ์ฒด์ ํ์ ๋ชจ๋ธ๋ง
- Wrifs-Brock: ๋ถ์๊ณผ ์ค๊ณ ๊ตฌ๋ถ์ด ์์ผ๋ฉฐ ๊ณ ๊ฐ ๋ช ์ธ์ ํ๊ฐ ํ ์ค๊ณ ์์ ๊น์ง ์ฐ์ ์ํ
- Rumbaugh(๋ผ๋ฐ์ฐ): ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ, โญ ๊ฐ์ฒด/๋๊ธฐ/๊ธฐ๋ฅ ๋ชจ๋ธ๋ก ๊ตฌ๋ถ
โถ ๋ผ๋ฐ์ฐ
- ๊ฐ์ฒด ๋ชจ๋ธ๋ง(Object) โ ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ / ๊ฐ์ฒด๋ค ๊ฐ์ ๊ด๊ณ ๊ท์ /์ ์
- ๋์ ๋ชจ๋ธ๋ง(Dynamic) โ ์ํ ๋ค์ด์ด๊ทธ๋จ / ์์คํ ๋์ ์ธ ํ์ ๊ธฐ์
- ๊ธฐ๋ฅ ๋ชจ๋ธ๋ง(Function) โ ์๋ฃ ํ๋ฆ๋(DFD) / ๋ค์์ ํ๋ก์ธ์ค๋ค ๊ฐ์ ์ฒ๋ฆฌ ๊ณผ์ ํํ
โถ ์๊ตฌ์ฌํญ ๋ช ์ธ
์ ํ ๋ช ์ธ | ์ํ์ ์๋ฆฌ VDM, Z, Petri-net, CSP |
๋น์ ํ ๋ช ์ธ | ์์ฐ์ด, ๊ทธ๋ฆผ ์ค์ฌ FSM, Decision Table, E-R๋ชจ๋ธ, State Chart |
3. ์ํํธ์จ์ด ์ค๊ณ
โญ ์ํคํ ์ณ ํจํด
โ Layer
์์คํ ์ ๊ณ์ธต์ผ๋ก ๊ตฌ๋ถํ๋ ๊ณ ์ ์ ๋ฐฉ์(OSI ์ฐธ์กฐ ๋ชจ๋ธ)
โ Client-server
ํ๋์ ์๋ฒ ์ปดํฌ๋ํธ์ ๋ค์์ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ
ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ์์ฒญ/์๋ต ์ ์ธ ์ ์๋ก ๋ ๋ฆฝ์
* ์ปดํฌ๋ํธ(Component): ๋ ๋ฆฝ์ ์ ๋ฌด/๊ธฐ๋ฅ ์ํ ์ํ ์คํ ์ฝ๋ ๊ธฐ๋ฐ ๋ชจ๋
โ Pipe-Filter
๋ฐ์ดํฐ ์คํธ๋ฆผ ์ ์ฐจ์ ๊ฐ ๋จ๊ณ๋ฅผ ํํฐ ์ปดํฌ๋ํธ๋ก ์บก์ํ ํ
๋ฐ์ดํฐ ์ ์ก / ์ฌ์ฌ์ฉ ๋ฐ ํ์ฅ ์ฉ์ด / ํํฐ ์ปดํฌ๋ํธ ์ฌ๋ฐฐ์น ๊ฐ๋ฅ
๋จ๋ฐฉํฅ์ผ๋ก ํ๋ฅด๋ฉฐ, ํํฐ ์ด๋ ์ ์ค๋ฒํค๋ ๋ฐ์
๋ณํ, ๋ฒํผ๋ง, ๋๊ธฐํ ์ ์ฉ ( ex. UNIX ์ - Shell)
โ Model-View-Controller
๋ชจ๋ธ(Model): ์๋ธ ์์คํ ์ ํต์ฌ ๊ธฐ๋ฅ ๋ฐ ๋ฐ์ดํฐ ๋ณด๊ด
๋ทฐ(View): ์ฌ์ฉ์์๊ฒ ์ ๋ณด ํ์
์ปจํธ๋กค๋ฌ(Controller): ์ฌ์ฉ์๋ก๋ถํฐ ๋ฐ์ ์ ๋ ฅ ์ฒ๋ฆฌ
โ ๊ฐ ๋ถ๋ถ์ ๊ฐ๋ณ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌ๋์ด ์๋ก ์ํฅ X
โ Master-slave
๋ง์คํฐ์์ ์ฌ๋ ์ด๋ธ ์ปดํฌ๋ํธ๋ก ์์ ๋ถํ /๋ถ๋ฆฌ/๋ฐฐํฌ ํ ์ฌ๋ ์ด๋ธ์์ ์ฒ๋ฆฌ๋๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ค์ ๋๋ ค ๋ฐ์ (๋ณ๋ ฌ ์ปดํจํ )
โ Broker
์ปดํฌ๋ํธ์ ์ฌ์ฉ์๋ฅผ ์ฐ๊ฒฐ (๋ถ์ฐ ํ๊ฒฝ ์์คํ )
โ Peer-to-Peer
ํผ์ด๋ฅผ ํ ์ปดํฌ๋ํธ๋ก ์ฐ์ ํ ๊ฐ ํผ์ด๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ ์๋, ์๋ฒ๊ฐ ๋ ์๋ ์์ (๋ฉํฐ์ค๋ ๋ฉ)
โ Event-bus
์์ค๊ฐ ํน์ ์ฑ๋์ ์ด๋ฒคํธ ๋ฉ์์ง๋ฅผ ๋ฐํ ์ ํด๋น ์ฑ๋์ ๊ตฌ๋ ํ ๋ฆฌ์ค๋๋ค์ด ๋ฉ์ธ์ง๋ฅผ ๋ฐ์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํจ
โ Blackboard
์ปดํฌ๋ํธ๋ค์ด ๊ฒ์์ ํตํด ๋ธ๋๋ณด๋์์ ์ํ๋ ๋ฐ์ดํฐ ์ ์ก
โ Interpreter
ํน์ ์ธ์ด๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ํด์ํ๋ ์ปดํฌ๋ํธ ์ค๊ณ
โญ UML (Unified Modeling Launguage)
- ๊ตฌ์ฑ์์ : ์ฌ๋ฌผ, ๊ด๊ณ, ๋ค์ด์ด๊ทธ๋จ- Rumbaugh, Booch, Jacobson ๋ฑ ๊ฐ์ฒด์งํฅ ๋ฐฉ๋ฒ๋ก ์ ์ฅ์ ํตํฉ* ์ธํฐํ์ด์ค: ํด๋์ค/์ปดํฌ๋ํธ๊ฐ ๊ตฌํํด์ผ ํ๋ ์คํผ๋ ์ด์ ์ธํธ๋ฅผ ์ ์ํ๋ ๋ชจ๋ธ ์์
โถ ์ฌ๋ฌผ (Things) : ๊ตฌ์กฐ(๊ฐ๋ , ๋ฌผ๋ฆฌ์ ์์) / ํ๋ /๊ทธ๋ฃน / ์ฃผํด(๋ถ๊ฐ์ ์ค๋ช , ์ ์ฝ์กฐ๊ฑด)
โถ ๊ด๊ณ(Relationship)
UML์ ๊ด๊ณ๋ ์ฌ๋ฌผ๊ณผ ์ฌ๋ฌผ ์ฌ์ด์ ์ฐ๊ด์ฑ์ ํํํ๋ ๊ฒ์ด๋ค. โ 2024๋ 3์ฐจ์ ๋์์ ์ ๋์ฌ ๊ฒ ๊ฐ์ง๋ง ๊ตณ์ด ์ ๋ฆฌํฉ๋๋ค.
1) ์ฐ๊ด ๊ด๊ณ(Association)
2๊ฐ ์ด์์ ์ฌ๋ฌผ์ด ์๋ก ๊ด๋ จ๋์ด ์๋ ๊ด๊ณ ์ด๋ค. ์ฌ๋ฌผ ์ฌ์ด์ ๋ค์ค๋๋ฅผ ํํํ ์ ์์.

ํ์์ ํ ํ๊ต์ ๋ค๋๋ ๊ด๊ณ์ด๋ฉฐ ํ์์ 1๋ช ์ด์์ด๋ค.

์ ์์ ํ์์ ๊ฐ๋ฅด์น๊ณ ํ์์ ์ ์์๊ฒ ๊ฐ๋ฅด์นจ ๋ฐ๋ ๊ด๊ณ์ด๋ค.
ํ์์ ํ ๋ช
์ด์์ ์ ์์ผ๋ก๋ถํฐ ๊ฐ๋ฅด์นจ์ ๋ฐ๊ณ , ์ ์์ ํ ๋ช
์ด์์ ํ์์ ๊ฐ๋ฅด์น๋ค.
2) ์งํฉ(Aggregation)
ํ๋์ ์ฌ๋ฌผ์ด ๋ค๋ฅธ ์ฌ๋ฌผ์ ํฌํจ๋์ด์๋ ๊ด๊ณ์ธ ๊ฒ์ ๋ํ๋ด๊ณ ์๋ก ๋
๋ฆฝ์ ์ด๋ค.

ํ๋ฆฐํฐ๋ ์ปดํจํฐ์ ์ฐ๊ฒฐํด์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์ปดํจํฐ์ ์ฐ๊ฒฐํด์ ์ฌ์ฉํ ์๋ ์๋ค.
๋ค๋ฅธ ์ปดํจํฐ์ ์ฐ๊ฒฐ์ด ๊ฐ๋ฅํ๋ฏ๋ก ๋
๋ฆฝ์ ์ด๋ผ๊ณ ํ ์ ์๋ค.
3) ํฌํจ(Composition)
์งํฉ๊ณผ ๋น์ทํ ํฌํจ๊ด๊ณ์ด์ง๋ง ๋ค๋ฅธ์ ์ ์๋ก ๋
๋ฆฝ๋ ์ ์๋ค.
(ํฌํจํ๋์ชฝ์ด ์ฌ๋ผ์ง๋ฉด ํฌํจ๋ ์ชฝ์ ์ฌ๋ผ์ง)

๋ฌธ์ ์ด ์ ์๋ ์ด์ ๋ ํ๋์ด๋ฉฐ ํด๋น ์ด์ ๋ก๋ ๋ค๋ฅธ ๋ฌธ์ ์ด ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฌธ์ด ์์ด์ง๋ฉด ์ด์ ๋ ๋ ์ด์ ํ์์๋ค.
4) ์ผ๋ฐํ(Generalization)
์์๊ด๊ณ๋ผ๊ณ ํ ์ ์๋ค. ์ผ๋ฐํ๋ผ๋ ๋ง ๊ทธ๋๋ก ํ๋์ ์ฌ๋ฌผ๋ก ๋ฌถ์ด์ ๋ํ๋ด๋ ๊ฒ์ด๋ค.

์ฌ์(์์)์ ์ฝ๋ผ๋ฆฌ(์์)๋ ๋๋ฌผ(๋ถ๋ชจ)์ด๋ค.
5. ์์กด(Dependency)
์๋ก ์ฐ๊ด์ ์์ผ๋ ํ์ํ ๋๋ง ๊ด๊ณ๊ฐ ํ์ฑ๋๋ ๊ฒ์ ๋ํ๋ธ๋ค.

๋ฑ๊ธ์ด ๋์ผ๋ฉด ํ ์ธ์จ์ ์ ์ฉํ๊ณ ๋ฑ๊ธ์ด ๋ฎ์ผ๋ฉด ํ ์ธ์จ์ ์ ์ฉํ์ง ์๋๋ค.
6. ์ค์ฒดํ(Realization)
์ด๋ ํ ๊ด๊ณ๋ก ์ฌ๋ฌผ์ ๊ทธ๋ฃนํ ํ ์ ์๋ ๊ฒ์ ๋ํ๋ธ๋ค.

๋นํ๊ธฐ์ ์๋ ๋ ์ ์๋ ํ๋์ผ๋ก ๊ทธ๋ฃน์ง์ ์ ์๋ค.
โญ ๋ค์ด์ด๊ทธ๋จ (Diagram)
๊ตฌ์กฐ, ์ ์ ๋ค์ด์ด๊ทธ๋จ |
ํด๋์ค(Class) | ํด๋์ค ์ฌ์ด์ ๊ด๊ณ ๋ฐ ์์ฑ ํํ |
๊ฐ์ฒด(Object) | ์ธ์คํด์ค๋ฅผ ๊ฐ์ฒด์ ๊ฐ์ฒด ์ฌ์ด์ ๊ด๊ณ๋ก ํํ | |
์ปดํฌ๋ํธ(Component) | ๊ตฌํ ๋ชจ๋ธ์ธ ์ปดํฌ๋ํธ ๊ฐ์ ๊ด๊ณ ํํ | |
๋ฐฐ์น(Deployment) | ๋ฌผ๋ฆฌ์ ์์(HW/SW)์ ์๊ธฐ/๊ตฌ์กฐ ํํ | |
๋ณตํฉ์ฒด๊ตฌ์กฐ (Composite Structure) |
ํด๋์ค ๋ฐ ์ปดํฌ๋ํธ์ ๋ณตํฉ์ฒด ๋ด๋ถ ๊ตฌ์กฐ ํํ | |
ํจํค์ง(Package) | UML์ ๋ค์ํ ๋ชจ๋ธ์์๋ฅผ ๊ทธ๋ฃนํํ์ฌ ๋ฌถ์ | |
ํ์, ๋์ ๋ค์ด์ด๊ทธ๋จ |
์ ์ค์ผ์ด์ค(use case) | ์ฌ์ฉ์์ ์๊ตฌ๋ฅผ ๋ถ์ (์ฌ์ฉ์ ๊ด์ ) โ ์ฌ์ฉ์(Actor) + ์ฌ์ฉ ์ฌ๋ก(Use Case) |
์ํ์ค(Sequence) | ์์คํ
/๊ฐ์ฒด๋ค์ด ์ฃผ๊ณ ๋ฐ๋ ๋ฉ์์ง ํํ โ ๊ตฌ์ฑ ํญ๋ชฉ: ์กํฐ / ๊ฐ์ฒด / ์๋ช ์ / ๋ฉ์์ง ์ ์ด ์ผ๊ฐํ |
|
์ปค๋ฎค๋์ผ์ด์ (Communication) | ๊ฐ์ฒด๋ค์ด ์ฃผ๊ณ ๋ฐ๋ ๋ฉ์ธ์ง์ ๊ฐ์ฒด ๊ฐ์ ์ฐ๊ด๊ด๊ณ๊น์ง ํํ | |
์ํ(State) | ๋ค๋ฅธ ๊ฐ์ฒด์์ ์ํธ์์ฉ์ ๋ฐ๋ผ ์ํ๊ฐ ์ด๋ป๊ฒ ๋ณํํ๋์ง ํํ | |
ํ๋(Activity) | ๊ฐ์ฒด์ ์ฒ๋ฆฌ ๋ก์ง ๋ฐ ์กฐ๊ฑด์ ๋ฐ๋ฅธ ์ฒ๋ฆฌ์ ํ๋ฆ์ ์์์ ๋ฐ๋ผ ํํ | |
ํ์ด๋ฐ(Timing) | ๊ฐ์ฒด ์ํ ๋ณํ์ ์๊ฐ ์ ์ฝ ๋ช ์์ ์ผ๋ก ํํ | |
์ํธ์์ฉ ๊ฐ์ (Interaction Overview) |
์ํธ์์ฉ ๋ค์ด์ด๊ทธ๋จ ๊ฐ ์ ์ด ํ๋ฆ ํํ |
โถ UI ์ค๊ณ
- ์ง๊ด์ฑ, ์ ํจ์ฑ, ํ์ต์ฑ, ์ ์ฐ์ฑ
- CLI(Command Line) : ํ ์คํธ
- GUI(Graphical) : ๊ทธ๋ํฝ
- NUI(Natural): ๋ง/ํ๋
- VUI(Voice): ์์ฑ
- OUI(Organic): ์ฌ๋ฌผ๊ณผ ์ฌ์ฉ์ ์ํธ์์ฉ
โถ UI ์ค๊ณ ๋๊ตฌ
- Wireframe : ๊ธฐํ ์ด๊ธฐ ๋จ๊ณ์ ๋๋ต์ ์ธ ๋ ์ด์์ ์ค๊ณ
- StoryBoard: ์ต์ข ์ ์ธ ์ฐ์ถ ๋ฌธ์
- Prototype: ์์ด์ดํ๋ ์ / ์คํ ๋ฆฌ๋ณด๋์ ์ธํฐ๋์ ์ ์ฉ, ์ค์ ๊ตฌํ๋ ๊ฒ์ฒ๋ผ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ ๋์ ์ธ ํํ ๋ชจํ
- Mockup: ์ค์ ํ๋ฉด๊ณผ ์ ์ฌํ ์ ์ ์ธ ํํ ๋ชจํ
- Use case: ์ฌ์ฉ์ ์ธก๋ฉด ์๊ตฌ์ฌํญ ๋ฐ ๋ชฉํ๋ฅผ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ํํ
4. ์ํํธ์จ์ด ๊ตฌํ
โถ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ ์์ํฌ
- Spring ํ๋ ์์ํฌ : JAVA ํ๋ซํผ์ ์ํ ์คํ ์์ค ๊ฒฝ๋ํ ํ๋ ์์ํฌ (๋์ ์น์ฌ์ดํธ ๊ฐ๋ฐ)
- ์ ์์ ๋ถ ํ๋ ์์ํฌ : ์ฐ๋ฆฌ๋๋ผ ๊ณต๊ณต๋ถ๋ฌธ ์ ๋ณดํ ์ฌ์ ์ ํจ์จ์ ์ธ ์ ๋ณด ์์คํ , ๊ตฌ์ถ ์ง์์ ์ํด ํ์ํ ๊ธฐ๋ฅ/์ํคํ ์ณ ์ ๊ณต
- ๋ท๋ท ํ๋ ์์ํฌ: MS์์ ๊ฐ๋ฐํ Windows ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ, ๊ณตํต์ธ์ด ๋ฐํ์(CLR) ์ด๋ผ๋ ๊ฐ์ ๋จธ์ ์์์ ์๋
โถ API (Application Programming Interface)
- ์ํํธ์จ์ด ๊ฐ ์ธํฐํ์ด์ค (์๋ก ๋ค๋ฅธ ์ํํธ์จ์ด/์๋น์ค ๊ฐ ์ํธ ์์ฉ ์ฉ์ด)
- ์ด์์ฒด์ ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ธฐ๋ฅ์ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ๊ตฌํ
โญ ์์ง๋ (Cohesion)
- ๊ฐ๋ณ ๋ชจ๋์ด ๋ ๋ฆฝ์ ์ธ ๊ธฐ๋ฅ์ผ๋ก ์ ์๋์ด ์๋ ์ ๋
- ์์ง๋ โฒ โ ํ์ง โผ
- ์ธ์ฐ๋๋ฒ : ์ฐ๋์์ ๊ต์๊ฐ
๋์ ์์ง๋๋ถํฐ (์๋๋ก ๊ฐ์๋ก ๋ฎ์ ์์ง๋)
๊ธฐ๋ฅ์ (Function) | ๋ชจ๋ ๋ด๋ถ์ ๋ชจ๋ ๊ธฐ๋ฅ ์์๊ฐ ๋จ์ผ ๋ฌธ์ ์ ์ฐ๊ด๋์ด ์ํ |
์์ฐจ์ (Sequential) | ๋ชจ๋ ๋ด ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ํ๋์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ก ์ฌ์ฉ |
ํต์ ์ (Communication) = ๊ตํ์ |
๋์ผํ ์ /์ถ๋ ฅ์ ์ฌ์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ํ |
์ ์ฐจ์ (Procedural) | ๋ชจ๋ ๋ด ๊ตฌ์ฑ ์์๋ค์ด ๋ค์ ๊ด๋ จ ๊ธฐ๋ฅ์ ์์ฐจ์ ์ผ๋ก ์ํ |
์๊ฐ์ (Temporal) | ํน์ ์๊ฐ ๋ด ์ฒ๋ฆฌ๋๋ ๊ธฐ๋ฅ์ ๋ชจ์ ํ๋์ ๋ชจ๋๋ก ์์ฑ |
๋ ผ๋ฆฌ์ (Logical) | ์ ์ฌํ ์ฑ๊ฒฉ์ ์ฒ๋ฆฌ ์์๋ค๋ก ํ๋์ ๋ชจ๋์ด ํ์ฑ |
์ฐ์ฐ์ (Coincidental) | ๊ฐ ๊ตฌ์ฑ ์์๋ค์ด ์๋ก ๊ด๋ จ์๋ ์์๋ก๋ง ๊ตฌ์ฑ |
โญ ๊ฒฐํฉ๋ (Coupling)
- ๊ฐ๋ณ ๋ชจ๋ ๊ฐ ์ํธ ์์กดํ๋ ์ ๋
- ๊ฒฐํฉ๋ โผ โ ํ์ง โฒ
- ์ธ์ฐ๋ ๋ฒ: ๋ด ๊ณต๋ถ ๋ด๊ฐ ํ ๊ฒ์. ์ ๊ฐ ์คํธ๋ ์ค ๋ฐ์๋์
๋์ ๊ฒฐํฉ๋๋ถํฐ (์๋๋ก ๊ฐ์๋ก ๋ฎ์ ๊ฒฐํฉ๋)
๋ด์ฉ (Content) | ํ ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋์ ๋ด๋ถ ๊ธฐ๋ฅ ๋ฐ ์๋ฃ๋ฅผ ์ง์ ์ฐธ์กฐ/์์ |
๊ณตํต/๊ณต์ (Common) | ๊ณต์ ๋๋ ๊ณตํต ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๋ชจ๋์ด ์ฌ์ฉ (์ ์ญ ๋ณ์ ์ฐธ์กฐ) |
์ธ๋ถ (External) | ํ ๋ชจ๋์์ ์ ์ธํ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ์ ๋ค๋ฅธ ๋ชจ๋์์ ์ฐธ์กฐ |
์ ์ด (Control) | - ํ ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋์ ์์ธํ ์ฒ๋ฆฌ ์ ์ฐจ๋ฅผ ์๊ณ ์์ด ์ด๋ฅผ ํต์ ํ๋ ๊ฒฝ์ฐ๋ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ด ๋ ๋ชจ๋์ ๋ถ๋ฆฌ๋์ด ์ค๊ณ. - ์ฒ๋ฆฌ ๋์ ๊ฐ ๋ฟ๋ง ์๋๋ผ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ ์ด ์์๋ ์ ๋ฌ |
์คํฌํ (Stamp) | - ๋ ๋ชจ๋์ด ๋์ผํ ์๋ฃ ๊ตฌ์กฐ(๋ฐฐ์ด, ์ค๋ธ์ ํธ)๋ฅผ ์กฐํ - ์๋ฃ ๊ตฌ์กฐ ๋ฐ ํฌ๋งท ๋ณํ ์ ์กฐํํ๊ณ ์๋ ๋ชจ๋ ๋ชจ๋์ ์ํฅ |
์๋ฃ (Data) | ๋ชจ๋ ๊ฐ์ ์ธํฐํ์ด์ค๊ฐ ์๋ฃ ์์๋ก๋ง ๊ตฌ์ฑ |
โญ ๊ฐ์ฒด์งํฅ (Object-Oriented)
- ๊ฐ์ฒด์ ์์ฑ, ํด๋์ค์ ๋ฉค๋ฒ, ์ ์ฒด์ ๋ถ๋ถ์ผ๋ก ๋๋ ๋ถ์
๊ฐ์ฒด (Object) |
๊ณ ์ ์๋ณ์ / ํ๋์ ๋
๋ฆฝ๋ ์กด์ฌ / ์ผ์ ํ ๊ธฐ์ต์ฅ์ ๋ณด์ ์ํ(state) = ๊ฐ์ฒด์ ๊ฐ์ง ์ ์๋ ์กฐ๊ฑด, ์์ฑ ๊ฐ์ ์ํด ์ ์ ํ์(์ฐ์ฐ, method) = ๊ฐ์ฒด๊ฐ ๋ฐ์ํ ์ ์๋ ๋ฉ์์ง ์งํฉ |
ํด๋์ค (Class) |
๊ณตํต ์์ฑ๊ณผ ์ฐ์ฐ(ํ์)์ ๊ฐ๋ ๊ฐ์ฒด๋ค์ ์งํฉ / ๋ฐ์ดํฐ ์ถ์ํ ๋จ์ * ์ธ์คํด์ค(Instance): ํด๋์ค์ ์ํ ๊ฐ๊ฐ์ ๊ฐ์ฒด * Operation: ํด๋์ค์ ๋์ / ๊ฐ์ฒด์ ๋ํด ์ ์ฉ๋ ๋ฉ์๋ ์ ์ |
์บก์ํ (Encapsulation) |
๋ฐ์ดํฐ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํจ์๋ฅผ ํ๋๋ก ๋ฌถ์ ์ธ๋ถ ๋ด์ฉ ์ํ(์ ๋ณด ์๋) โ ์ธ๋ถ ์ ๊ทผ ์ ํ ๊ฒฐํฉ๋ ๋ฎ์ / ์ฌ์ฌ์ฉ ์ฉ์ด / ์ธํฐํ์ด์ค ๋จ์ / ์ค๋ฅ ํ๊ธ ํจ๊ณผ ๋ฎ์ |
์์ (Inheritance) |
์์ ํด๋์ค์ ์์ฑ๊ณผ ์ฐ์ฐ์ ํ์ ํด๋์ค๊ฐ ๋ฌผ๋ ค ๋ฐ๋ ๊ฒ * ๋ค์ค ์์: ๋จ์ผ ํด๋์ค๊ฐ ๋ ๊ฐ ์ด์์ ์์ ํด๋์ค๋ก๋ถํฐ ์์ |
๋คํ์ฑ (Polymorphism) |
ํ๋์ ๋ฉ์ธ์ง์ ๊ฐ ๊ฐ์ฒด ๋ณ ๊ณ ์ ํน์ฑ์ ๋ฐ๋ผ ์ฌ๋ฌ ํํ์ ์๋ต |
* ์ค๋ฒ๋ผ์ด๋ฉ(Overriding): ์ฌ์ ์ (๋จ, ๋ฉ์๋ ์ด๋ฆ / ๋งค๊ฐ๋ณ์ / ๋ฐํ ํ์ ์ ๋์ผํด์ผ ํจ - ์ด๋ ธํ ์ด์ )
* ์ค๋ฒ๋ก๋ฉ(Overroading): ๋ฉ์๋ ์ค๋ณต์ ์ (๋ฉ์๋ ์ด๋ฆ์ ๋์ผํ๋ ๋งค๊ฐ๋ณ์์ ๊ฐ์๋ ํ์ ์ ๋ค๋ฅด๊ฒ ์ง์ - ๊ณ์ฐ๊ธฐ)
โญ ๊ฐ์ฒด ์งํฅ ์ค๊ณ 5๋ ์์น(SOLID)
- ๋จ์ผ ์ฑ ์ ์์น (SRP, Single Responsibility Principle) โ ๋ชจ๋ ํด๋์ค&๊ฐ์ฒด๋ ํ๋์ ์ฑ ์๋ง / ์์ ํ ์บก์ํ
- ๊ฐ๋ฐฉ ํ์์ ์์น (OCP, Open Closed Principle) โ ํ์ฅ์๋ Open ํ๊ณ , ์์ ์๋ Close๋์ด์ผ ํ๋ค.
- ๋ฆฌ์ค์ฝํ ๊ต์ฒด ์์น (LSP, Liskov Substitution Principle) โ ์์ ํด๋์ค์ ํ๋ ๊ท์ฝ์ ํ์ ํด๋์ค๊ฐ ์๋ฐํ๋ฉด ์ ๋๋ค.
- ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น (ISP, Interface Segregation Principle) โํด๋ผ์ด์ธํธ๊ฐ ๋น์ฌ์ฉ ๋ฉ์๋์ ์์กดํ์ง ์์์ผ ํ๋ค.
- ์์กด์ฑ ์ญ์ ์์น (DIP, Dependency Inversion Principle) โ ์์กด ๊ด๊ณ ์๋ฆฝ ์ ๋ณํํ๊ธฐ ์ด๋ ค์ด ๊ฒ(์ถ์์ฑ์ด ๋์ ์์ ํด๋์ค) ์ ์์กดํด์ผ ํ๋ค.
โญ GoF(Gang of Four) ๋์์ธ ํจํด
- ์๋ธ ์์คํ ์ ์ํ๋ ์ปดํฌ๋ํธ๋ค๊ณผ ๊ทธ ๊ด๊ณ๋ฅด ์ค๊ณํ๊ธฐ ์ํ ์ฐธ์กฐ ๋ชจ๋ธ
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ค๊ณ ์ ์์ฃผ ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋ํ ๋ฐ๋ณต์ ํด๊ฒฐ ๋ฐฉ๋ฒ
cf) ์ํคํ ์ฒ ํจํฐ๋ ์ ์ฒด ์์คํ ์ ๊ตฌ์กฐ๋ฅผ ์ค๊ณ

[์์ฑ ํจํด]
Abstract Factory | ๊ตฌ์ฒด์ ์ธ ํด๋์ค์ ์์กดํ์ง ์๊ณ , ์๋ก ์ฐ๊ณ ๋๋๊ฑฐ๋ ์์กด์ ์ธ ๊ฐ์ฒด๋ค์ด ์กฐํฉ๋ ์ธํฐํ์ด์ค ์ ๊ณต |
Builder | ๊ฐ์ฒด ์์ฑ ๋จ๊ณ๋ฅผ ์บก์ํ/๋ถ๋ฆฌํ์ฌ ๊ฐ์ฒด๋ฅผ ์กฐ๋ฆฝํ์ฌ ์์ฑ โ ๋์ผํ ๊ฐ์ฒด ์์ฑ ์ ์ฐจ์์ ์๋ก ๋ค๋ฅธ ํํ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณต |
Factory Method | ์์ ํด๋์ค์์ ๊ฐ์ฒด ์์ฑ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ์ง๋ง, ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ํด๋์ค๋ ์๋ธ ํด๋์ค์์ ๊ฒฐ์ ํ๋๋ก ๋ถ๋ฆฌ |
Prototype | ์ํ/์๋ณธ ๊ฐ์ฒด๋ฅผ ๋ณต์ ํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑ |
Singleton | ํด๋์ค์์ ํ๋์ ๊ฐ์ฒด๋ง ์์ฑ ๊ฐ๋ฅํ๋ฉฐ, ํด๋น ๊ฐ์ฒด๋ฅผ ์ด๋์๋ ์ฐธ์กฐํ ์ ์์ง๋ง ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ฐธ์กฐ๋ ๋ถ๊ฐ |
[๊ตฌ์กฐ ํจํด]
Adaptor | ๋นํธํ ์ธํฐํ์ด์ค์ธ ํธํ์ฑ ๋ถ์ฌํ๋๋ก ๋ฐํ |
Bridge | ๊ตฌํ๋ถ์์ ์ถ์์ธต์ ๋ถ๋ฆฌ ํ ๊ฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ณํ/ํ์ฅ ๊ฐ๋ฅ |
Composite | ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ถ๋ถ/์ ์ฒด ๊ณ์ธต ํํ, ๋ณตํฉ/๋จ์ผ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถ ์์ด ์ฌ์ฉ |
Decorator | ์์ ์ฌ์ฉ ์์ด ๊ฐ์ฒด ๊ฐ ๊ฒฐํฉ์ ํตํด ๊ฐ์ฒด ๊ธฐ๋ฅ์ ๋์ ์ผ๋ก ์ถ๊ฐ/ํ์ฅ |
Facade | ์์์ ์ธํฐํ์ด์ค ๊ตฌ์ฑํ์ฌ ์๋ธ ํด๋์ค์ ๊ธฐ๋ฅ์ ๋ณต์กํ๊ฒ ํํํ์ง ์๊ณ ๋จ์ํ ์ธํฐํ์ด์ค๋ก ๊ตฌํ |
Flyweight | ์ธ์คํด์ค๋ฅผ ๊ณต์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ (ํด๋์ค ๊ฒฝ๋ํ) |
Proxy | ์ ๊ทผ์ด ํ๋ ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐํ๋ ์ธํฐํ์ด์ค ์ญํ (๋๋ฆฌ ๊ฐ์ฒด ์ํ) |
[ํ์ ํจํด]
Chain of Responsibility | ์ฒ๋ฆฌ ๊ฐ๋ฅํ ๊ฐ์ฒด๊ฐ ๋ ์ด์ ์กด์ฌํ์ฌ ํ ๊ฐ์ฒด ๋ด ์ฒ๋ฆฌ ๋ถ๊ฐ ์ ๋ค์ ๊ฐ์ฒด๋ก ์ด๊ด |
command | ์์ฒญ ๋ช ๋ น์ด๋ค์ ์ถ์/๊ตฌ์ฒด ํด๋์ค๋ก ๋ถ๋ฆฌํ ํ ๋จ์ํ/์บก์ํ |
Interpreter | ์ธ์ด์ ๋ฌธ๋ฒ ํํ ์ ์ |
Iterator | ์ ๊ทผ์ด ๋น๋ฒํ ๊ฐ์ฒด์ ๋ํด ๋์ผ ์ธํฐํ์ด์ค ์ฌ์ฉ |
Mediator | ๊ฐ์ฒด๋ค๊ฐ ๋ณต์กํ ์ํธ์์ฉ์ ์บก์ํํ์ฌ ๊ฐ์ฒด๋ก ์ ์ ํ ์ค์ฌ |
Memento | ๊ฐ์ฒด๋ฅผ ์ด์ ์ ํน์ ์์ ์ ์ํ๋ก ์ ์ฅํ๊ณ ๋ณต์ (์บก์ํ ์ ์ง) |
Observer | ํ ๊ฐ์ฒด ์ํ ๋ณํ ์ ์์๋์ด ์๋ ๊ฐ์ฒด๋ค์ ๋ณํ ์ ๋ฌ |
State | ๊ฐ์ฒด์ ์ํ์ ๋ฐ๋ผ ๋์ผํ ๋์์ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌ |
Strategy | ๋์ผ ๊ณ์ด ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ณ์ ์ผ๋ก ์บก์ํํ์ฌ ์ํธ ๊ตํ |
Template Method | ์ฌ๋ฌ ํด๋์ค์์ ๊ณตํต ์ฌ์ฉ ๋ฉ์๋๋ฅผ ์์ ํด๋์ค์์ ์ ์ํ๊ณ , ํ์ ํด๋์ค๋ง๋ค ๋ค๋ฅด๊ฒ ๊ตฌํํด์ผ ํ๋ ์ธ๋ถ ์ฌํญ์ ๊ฐ๋ณ ๊ตฌํ |
Visitor | ๊ฐ ํด๋์ค ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก๋ถ ํฐ ์ฒ๋ฆฌ/์ฐ์ฐ ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ์ฌ ๋ณ๋์ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ , ํด๋น ํด๋์ค ๋ฉ์๋๊ฐ ๊ฐ ํด๋์ค๋ฅผ ๋์๋ค๋๋ฉฐ ํน์ ์์ ์ ์ํ โ ๊ฐ์ฒด ๊ตฌ์กฐ ๋ณ๊ฒฝ X / ์๋ก์ด ์ฐ์ฐ๊ธฐ๋ฅ๋ง ์ถ๊ฐ |
5. ์ํํธ์จ์ด ํ ์คํธ
โถ ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ ๊ธฐ๋ณธ ์๋ฆฌ
: ํ ์คํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฒฐํจ์ด ์กด์ฌํจ์ ๋ฐํ๋ ๊ฒ (๋ฌด๊ฒฐํจ์ ์ฆ๋ช ํ ์๋ ์์)
โ ์๋ฒฝํ ํ ์คํธ๋ ๊ทผ์์ ์ผ๋ก ๋ถ๊ฐ๋ฅ (๋ฌดํ ๊ฒฝ๋ก, ๋ฌดํ ์ ๋ ฅ ๋ถ๊ฐ)
- ๊ฒฐํจ ์ง์ค : ํ๋ ํ (Pareto)์ ๋ฒ์น - 20%์ ๋ชจ๋์์ ์ ์ฒด ๊ฒฐํจ 80% ๋ฐ์
- ์ด์ถฉ์ ํจ๋ฌ๋ ์ค : ๋์ผํ ํ ์คํธ ์ผ์ด์ค์ ์ํ ๋ฐ๋ณต ํ ์คํธ๋ ์๋ก์ด ๋ฒ๊ทธ ๋ฐ๊ฒฌ X
- ์ค๋ฅ-๋ถ์ฌ์ ๊ถค๋ณ : ๊ฒฐํจ์ด ์๋ค ํ์ฌ๋ ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ ๋ฏธ์ถฉ์กฑ ์ ํ์ง ์ ํ
- Brooks์ ๋ฒ์น : ์ง์ฐ๋๋ ํ๋ก์ ํธ์ ์ธ๋ ฅ ์ถ๊ฐ ํฌ์ ์ ๋ ์ง์ฐ
โถ ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ ๋ถ๋ฅ
โ ํ๋ก๊ทธ๋จ ์คํ ์ฌ๋ถ
์ ์ ํ ์คํธ | ํ๋ก๊ทธ๋จ ์คํ X / ๋ช
์ธ์, ์์ค ์ฝ๋๋ง ๋ถ์ ex) ๋๋ฃ ๊ฒํ , ์ํฌ ์ค๋ฃจ, ์ธ์คํ์ , ์ฝ๋ ๊ฒ์ฌ |
๋์ ํ ์คํธ | ํ๋ก๊ทธ๋จ ์คํ ํ ์ค๋ฅ ๊ฒ์ฌ ex) ํ์ดํธ/๋ธ๋๋ฐ์ค ํ ์คํธ |
โก ํ ์คํธ ๊ธฐ๋ฐ ํ ์คํธ
๋ช ์ธ ๊ธฐ๋ฐ | ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ์ ๋ํ ๋ช
์ธ๋ฅผ ๋น ์ง ์์ด ํ
์คํธ ์ผ์ด์ค๋ก ๊ตฌํํ๋์ง ํ์ธ ex) ๋๋ฑ ๋ถํ / ๊ฒฝ๊ณ๊ฐ ๋ถ์ (๋ธ๋๋ฐ์ค) |
๊ตฌ์กฐ ๊ธฐ๋ฐ | SW ๋ด๋ถ ๋
ผ๋ฆฌ ํ๋ฏ์ ๋ฐ๋ผ ํ
์คํธ ์ผ์ด์ค ์์ฑ/ํ์ธ ex) ๊ตฌ๋ฌธ ๊ธฐ๋ฐ / ๊ฒฐ์ ๊ธฐ๋ฐ / ์กฐ๊ฑด ๊ธฐ๋ฐ (ํ์ดํธ๋ฐ์ค) |
๊ฒฝํ ๊ธฐ๋ฐ | ํ
์คํฐ์ ๊ฒฝํ์ ๊ธฐ๋ฐ์ผ๋ก ์ํ ex) ์๋ฌ ์ถ์ , ์ฒดํฌ๋ฆฌ์คํธ, ํ์์ ํ ์คํ |
โข ๋ชฉ์ ๊ธฐ๋ฐ ํ ์คํธ
ํ๋ณต (Recovery) | ์์คํ ์ ์ธ์์ ๊ฒฐํจ ๋ถ์ฌ ํ ์ ์์ผ๋ก ํ๋ณต๋๋ ๊ณผ์ ํ์ธ |
์์ (Security) | ์ธ๋ถ ๋ถ๋ฒ ์นจ์ ์ผ๋ก๋ถํฐ ์์คํ ์ ๋ณดํธํ ์ ์๋์ง ํ์ธ |
๊ฐ๋ (Stress) | ๊ณผ๋ถํ ์ SW ์ ์ ๊ตฌ๋ ์ฌ๋ถ ํ์ธ |
์ฑ๋ฅ (Performance) | ์ค์๊ฐ ์ฑ๋ฅ ๋ฐ ์ ์ฒด์ ์ธ ํจ์จ์ฑ ์ง๋จ (์๋ต์๊ฐ, ์ ๋ฌด ์ฒ๋ฆฌ๋) |
๊ตฌ์กฐ (Structure) | SW ๋ด๋ถ ๋ ผ๋ฆฌ์ ๊ฒฝ๋ก ๋ฐ ์์ค ์ฝ๋ ๋ณต์ก๋ ํ๊ฐ |
ํ๊ท (Regression) | SW ๋ด ๋ณ๊ฒฝ ๋๋ ์์ ๋ ์ฝ๋์ ์๋ก์ด ๊ฒฐํจ์ด ์์์ ํ์ธ |
๋ณํ (Parallel) | ๋ณ๊ฒฝ ๋ฐ ๊ธฐ์กด SW์ ๋์ผํ ๋ฐ์ดํฐ ์ ๋ ฅ ํ ๊ฒฐ๊ณผ ๋น๊ต |
โฃ ์๊ฐ(๊ด์ ) ๊ธฐ๋ฐ ํ ์คํธ
๊ฒ์ฆ (Verification) |
๊ฐ๋ฐ์์ ์๊ฐ์์ ์ ํ์ ์์ฐ ๊ณผ์ ํ
์คํธ ex) ๋จ์/ํตํฉ/์์คํ ํ ์คํธ |
ํ์ธ (Validation) |
์ฌ์ฉ์์ ์๊ฐ์์ ์์ฐ๋ ์ ํ์ ๊ฒฐ๊ณผ ํ
์คํธ ex) ์ธ์ ํ ์คํธ (์ํ/๋ฒ ํ) |
โญ ํ์ดํธ๋ฐ์ค ํ ์คํธ (White Box Test)
- ๋ชจ๋ ์์ ๋ด์ฉ(์๋) ์ง์ ๋ณผ ์ ์์ผ๋ฉฐ, ๋ด๋ถ์ ๋ ผ๋ฆฌ์ ์ธ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ํ ์คํธ
- ์์ค ์ฝ๋์ ๋ชจ๋ ๋ฌธ์ฅ์ ํ ๋ฒ ์ด์ ์ํ / ๋ ผ๋ฆฌ์ ๊ฒฝ๋ก ์ ๊ฒ (์ ํ, ๋ฐ๋ณต ์ํ)
- ํ ์คํธ ๋ฐ์ดํฐ ์ ํํ๊ธฐ ์ํด ๊ฒ์ฆ ๊ธฐ์ค ์ปค๋ฒ๋ฆฌ์ง(Coverage) ์ ํฉ
[ํ์ดํธ ๋ฐ์ค ํ ์คํธ ๊ฒ์ฆ ๊ธฐ์ค]
๊ตฌ๋ฌธ ์ปค๋ฒ๋ฆฌ์ง (Statement Coverage) |
ํ๋ก๊ทธ๋จ ๋ด ๋ชจ๋ ๋ช ๋ น๋ฌธ์ ์ ์ด๋ ํ ๋ฒ ์ํ |
๊ฒฐ์ (๋ถ๊ธฐ) ์ปค๋ฒ๋ฆฌ์ง (Branch Coverage) |
ํ๋ก๊ทธ๋จ ๋ด ์ ์ฒด ๊ฒฐ์ ๋ฌธ์ด ์ ์ด๋ ํ ๋ฒ์ ์ฐธ/๊ฑฐ์ง ๊ฒฐ๊ณผ ์ํ |
์กฐ๊ฑด ์ปค๋ฒ๋ฆฌ์ง (Condition Coverage) |
๊ฒฐ์ ๋ช ๋ น๋ฌธ ๋ด์ ๊ฐ ๊ฐ๋ณ ์กฐ๊ฑด์์ด ์ ์ด๋ ํ ๋ฒ์ ์ฐธ/๊ฑฐ์ง ๊ฒฐ๊ณผ ์ํ |
์กฐ๊ฑด/๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง (Condition / Branch) |
์ ์ฒด ์กฐ๊ฑด์ ๋ฟ๋ง ์๋๋ผ ๊ฐ๋ณ ์กฐ๊ฑด์๋ ์ฐธ ํ ๋ฒ ์ด์, ๊ฑฐ์ง ํ ๋ฒ ์ด์ ๊ฒฐ๊ณผ ์ํ |
[ํ์ดํธ๋ฐ์ค ํ ์คํธ ์ข ๋ฅ]
๊ธฐ์ด ๊ฒฝ๋ก ๊ฒ์ฌ (Base Path Testing) |
๋ํ์ ํ์ดํธ๋ฐ์ค ํ
์คํธ ๊ธฐ๋ฒ (๋์ ํ
์คํธ) ํ ์คํธ ์ผ์ด์ค ์ค๊ณ์๊ฐ ์ ์ฐจ์ ์ค๊ผ์ ๋ ผ๋ฆฌ์ ๋ณต์ก์ฑ์ ์ธก์ ํ ์ ์๊ฒ ํด์ฃผ๋ ํ ์คํธ ๊ธฐ๋ฒ ์ธก์ ๊ฒฐ๊ณผ๋ ์คํ ๊ฒฝ๋ก์ ๊ธฐ์ด๋ฅผ ์ ์ํ๋ ์ง์นจ์ผ๋ก ์ฌ์ฉ |
์ ์ด ๊ตฌ์กฐ ๊ฒ์ฌ (Control Structure Testing) |
์กฐ๊ฑด ๊ฒ์ฌ : ํ๋ก๊ทธ๋จ ๋ชจ๋ ๋ด ๋
ผ๋ฆฌ์ ์กฐ๊ฑด ํ
์คํธ ๋ฃจํ ๊ฒ์ฌ : ํ๋ก๊ทธ๋จ ๋ฐ๋ณต(Loop) ๊ตฌ์กฐ ํ ์คํธ ์๋ฃ ํ๋ฆ ๊ฒ์ฌ : ๋ณ์์ ์ ์์ ๋ณ์ ์ฌ์ฉ์ ์์น ํ ์คํธ |
โญ ๋ธ๋๋ฐ์ค ํ ์คํธ (Black Box Test)
- ๋ชจ๋ ๋ด๋ถ์ ๋ด์ฉ ์ ์ ์์
- ์ํํธ์จ์ด ์ธํฐํ์ด์ค์์ ์ค์๋๋ ํ ์คํธ
- SW ๊ฐ ๊ธฐ๋ฅ์ด ์์ ํ ์๋๋๋ ๊ฒ์ ์ ์ฆํ๋ ํ ์คํธ๋ก '๊ธฐ๋ฅ ํ ์คํธ'๋ผ๊ณ ํจ
[๋ธ๋๋ฐ์ค ํ ์คํธ ์ข ๋ฅ]
๋์น ๋ถํ ๊ฒ์ฌ (Equivalence Partition) |
ํ๋ก๊ทธ๋จ ์ ๋ ฅ ์กฐ๊ฑด์ ํ๋นํ ์ ๋ ฅ ์๋ฃ์ ํ๋นํ์ง ์์ ์ ๋ ฅ ์๋ฃ์ ๊ฐ์๋ฅผ ๊ท ๋ฑํ๊ฒ ์งํ |
๊ฒฝ๊ณ๊ฐ ๋ถ์ (Boundary Value) |
์
๋ ฅ ์กฐ๊ฑด์ ๊ฒฝ๊ณ๊ฐ์ ํ
์คํธ ์ผ์ด์ค๋ก ์ ์ ex) ๋ฒ์ ๊ตฌ๊ฐ ์ ๋ : ~์ด์ / ์ดํ / ์ด๊ณผ / ๋ฏธ๋ง |
์์ธ-ํจ๊ณผ ๊ทธ๋ํ ๊ฒ์ฌ (Cause-Effect Graphing) |
์ ๋ ฅ ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ์ ์ถ๋ ฅ์ ์ํฅ์ ๋ฏธ์น๋ ์ํฉ์ ์ฒด๊ณ์ ์ผ๋ก ๋ถ์ ํ ํจ์ฉ์ฑ์ด ๋์ ํ ์คํธ ์ผ์ด์ค ์ ์ |
์ค๋ฅ ์์ธก ๊ฒ์ฌ (Error Guessing) |
๊ณผ๊ฑฐ์ ๊ฒฝํ์ด๋ ํ์ธ์์ ๊ฐ๊ฐ์ผ๋ก ํ ์คํธ ์งํ |
๋น๊ต ๊ฒ์ฌ (Comparison) |
์ฌ๋ฌ ๋ฒ์ ์ ํ๋ก๊ทธ๋จ์ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋์ง ํ์ธ |
โถ ์๊ตฌ์ฌํญ ๊ฒ์ฆ (Requirements Validation)
- ๋๋ฃ ๊ฒํ (Peer Review) : ์์ฑ์๊ฐ ๋ด์ฉ ์ค๋ช ํ ๋๋ฃ๋ค์ด ๊ฒฐํจ ๊ฒํ
- ์ํฌ ์ค๋ฃจ (Walk Through) : ์๊ตฌ์ฌํญ ๋ช ์ธ์ ๋ฏธ๋ฆฌ ๋ฐฐํฌ ํ ์งง์ ๊ฒํ ํ์ ์งํ
- ์ธ์คํ์ (Inspection) : ์์ฑ์ ์ ์ธํ ๋ค๋ฅธ ์ ๋ฌธ๊ฐ๋ค์ด ๊ฒฐํจ ๊ฒํ
โถ ์ํํธ์จ์ด ์๋ช ์ฃผ๊ธฐ (V-๋ชจ๋ธ)

โถ ๊ฐ๋ฐ๋จ๊ณ์ ๋ฐ๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ
โ ๋จ์ํ ์คํธ (Unit Test)
- ์ต์ ๋จ์(๋ชจ๋/์ปดํฌ๋ํธ) ๊ธฐ๋ฐ ํ ์คํธ, ์ฆ๋ก ๊ตฌ์กฐ ๊ธฐ๋ฐ ํ ์คํธ ์งํ / ๊ธฐ๋ฅ์ฑ ํ ์คํธ ์ต์ฐ์
- ์ํํธ์จ์ด๋ฅผ ์ด๋ฃจ๋ ๊ธฐ๋ณธ ๋จ์(๋ ๋ฆฝ์ ๊ธฐ๋ฅ ) ํ ์คํธ
โก ํตํฉ ํ ์คํธ (Integration test)
- ์ธํฐํ์ด์ค ๊ฐ ์์คํ ์ด ์ ์ ์คํ๋๋ ์ง ํ์ธ
- ๋จ์ ํ ์คํธ ํ ๋ชจ๋์ ํตํฉํ๋ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์ค๋ฅ ๋ฐ ๊ฒฐํจ์ ์ฐพ๋ ํ ์คํธ ๊ธฐ๋ฒ
ํํฅ์ (Top-down) |
- ์์ ๋ชจ๋์์ ํ์ ๋ชจ๋ ๋ฐฉํฅ์ผ๋ก ํตํฉ - ๊น์ด ์ฐ์ (Depth first) ํตํฉ๋ฒ / ๋์ด ์ฐ์ (Breadth first) ํตํฉ๋ฒ - ์ด๊ธฐ๋ถํฐ ์ฌ์ฉ์์๊ฒ ์์คํ ๊ตฌ์กฐ ๋ณด์ฌ์ค - ์คํ (Stub) : ๋ชจ๋์ ๊ธฐ๋ฅ์ ๋จ์ํ ์ํํ๋ ๋๊ตฌ (์ํ์ฉ ๋ชจ๋) |
์ํฅ์ (Bottom-up) |
- ํ์ ๋ชจ๋์์ ์์ ๋ชจ๋ ๋ฐฉํฅ์ผ๋ก ํตํฉ - ํ๋์ ์ฃผ์ ์ ์ด ๋ชจ๋๊ณผ ๊ด๋ จ๋ ์ข ์ ๋ชจ๋์ ๊ทธ๋ฃน์ธ ํด๋ฌ์คํฐ(Cluster) ์ ๋๋ผ์ด๋ฒ(Driver) ์ฌ์ฉ / ์คํ (Stub) ๋ฏธ์ฌ์ฉ |
โข ์์คํ ํ ์คํธ (System test)
- ๊ฐ๋ฐ๋ SW์ ์ปดํจํฐ ์์คํ ๋ด ์์ฉ ์ฌ๋ถ ์ ๊ฒ
- ์ค์ ์ฌ์ฉ ํ๊ฒฝ๊ณผ ์ ์ฌํ ํ ์คํธ ํ๊ฒฝ โ ๊ธฐ๋ฅ์ (๋ธ๋๋ฐ์ค) ๋ฐ ๋น๊ธฐ๋ฅ์ (ํ์ดํธ๋ฐ์ค) ํ ์คํธ ๊ตฌ๋ถ
โฃ ์ธ์ ํ
์คํธ (Acceptance test)
- ์ฌ์ฉ์์ ์๊ตฌ ์ฌํญ ์ถฉ์กฑ ์ฌ๋ถ ํ์ธ
- ์ํ ํ ์คํธ : ํต์ ๋ ํ๊ฒฝ์์ ์ฌ์ฉ์๊ฐ ๊ฐ๋ฐ์์ ํจ๊ป ํ์ธ
- ๋ฒ ํ ํ ์คํธ : ํต์ ๋์ง ์์ ํ๊ฒฝ์์ ๊ฐ๋ฐ์ ์์ด ์ฌ๋ฌ ๋ช ์ ์ฌ์ฉ์๊ฐ ๊ฒ์ฆ
โ ํ ์คํธ ๊ด๋ จ ๊ธฐํ ์ฉ์ด
ํ
์คํธ ์๋๋ฆฌ์ค (Test Scenario) |
ํ ์คํธ ์ผ์ด์ค ์ ์ฉ/๋์ ์์์ ๋ฐ๋ผ ์ฌ๋ฌ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ฌถ์ ์งํฉ |
ํ
์คํธ ์ค๋ผํด (Test Oracle) |
ํ ์คํธ ๊ฒฐ๊ณผ์ ์ฐธ/๊ฑฐ์ง ํ๋จ ์ํด ์ฌ์ ์ ์ ์๋ ์ฐธ ๊ฐ์ ๋์ |
- ์ฐธ ์ค๋ผํด (True) : ๋ชจ๋ ํ ์คํธ ์ผ์ด์ค์ ์ ๋ ฅ๊ฐ์ ๊ธฐ๋ ๊ฒฐ๊ณผ ์ ๊ณต
- ์ํ๋ง ์ค๋ผํด (Sampling) : ํน์ ํ ์คํธ ์ผ์ด์ค ์ ๋ ฅ๊ฐ์ ๊ธฐ๋ ๊ฒฐ๊ณผ ์ ๊ณต
- ์ค๋ผํด (Heuristci) : ํน์ ํ ์คํธ ์ผ์ด์ค ์ ๋ ฅ๊ฐ์ ๊ธฐ๋ ๊ฒฐ๊ณผ ์ ๊ณต + ๋๋จธ์ง ์ ๋ ฅ๊ฐ์ ๋ํด์ ์ถ์ ๊ฒฐ๊ณผ ์ ๊ณต
- ์ผ๊ด์ฑ ์ค๋ผํด (Consistent) : ํ ์คํธ ์ผ์ด์ค์ ์ํ ์ /ํ์ ๊ฒฐ๊ณผ๊ฐ ๋์ผ ์ฌ๋ถ ํ์ธ
โ ํ ์คํธ ๊ด๋ จ ๊ธฐํ ์ฉ์ด
ํ
์คํธ ๋๋ผ์ด๋ฒ (Test Driver) |
์ํ ๋์์ ํ์ ๋ชจ๋ ํธ์ถ / ๋ชจ๋ ํ
์คํธ ์ํ ํ์ ๊ฒฐ๊ณผ ๋์ถ โ ์ํฅ์ ํตํฉ ํ ์คํธ์์ ์ฌ์ฉ |
ํ
์คํธ ์คํ
(Test Stub) |
์ ์ด ๋ชจ๋์ด ํธ์ถํ๋ ํ์ ๋ชจ๋์ ์ญํ ๋จ์ ์ํ โ ํํฅ์ ํ ์คํธ์ ์ฌ์ฉ |
ํ
์คํธ ์ํธ (Test Suites) |
์์คํ ์ ์ฌ์ฉ๋๋ ํ ์คํธ ์ผ์ด์ค์ ์งํฉ (์ปดํฌ๋ํธ / ๋ชจ๋) |
ํ
์คํธ ์ผ์ด์ค (Test Case) |
์ฌ์ฉ์์ ์๊ตฌ์ฌํญ ์ค์ ์ฌ๋ถ ํ์ธ ์ํด ์ค๊ณ๋ ํ
์คํธ ํญ๋ชฉ ๋ช
์ธ์ (์ ๋ ฅ๊ฐ, ์คํ ์กฐ๊ฑด, ๊ธฐ๋ ๊ฒฐ๊ณผ ๋ฑ) |
ํ
์คํธ ์คํฌ๋ฆฝํธ (Test Script) |
์๋ํ๋ ํ ์คํธ ์คํ ์ ์ฐจ์ ๋ํ ๋ช ์ธ์ |
๋ชฉ ์ค๋ธ์ ํธ (Mock Object) |
์ฌ์ฉ์์ ํ์ ์กฐ๊ฑด๋ถ ์ ๋ ฅ ์ ๊ณํ๋ ํ์๋ฅผ ์ํํ๋ ๊ฐ์ฒด |
6. ์ํํธ์จ์ด ์ ์ง ๋ณด์
โถ ์์ค ์ฝ๋ ํ์ง ๋ถ์ ๋๊ตฌ
์ ์ ๋ถ์ ๋๊ตฌ (Static Analysis) |
ํ๋ก๊ทธ๋จ ์คํ ์์ด ์ฝ๋ฉ ํ์ค/์คํ์ผ/๊ฒฐํจ ๋ฑ์ ๋ถ์ โ PMD, Checkstyle, SonarQube, Cppcheck, Ccm, Cobertura |
๋์ ๋ถ์ ๋๊ตฌ (Dynamic Analysis) |
ํ๋ก๊ทธ๋จ ์คํํ์ฌ ์ฝ๋ ๋ด ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐ ์ค๋ ๋ ๊ฒฐํจ ๋ฐ๊ฒฌ โ Avalanche, Valgrind, Valance |
โถ ์ํํธ์จ์ด ํ์ ๊ด๋ฆฌ (SCM: Software Configuration Management)
- ๊ฐ๋ฐ ๊ณผ์ ์์ SW ๋ณ๊ฒฝ ์ฌํญ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ผ๋ จ์ ํ๋ / ๊ฐ๋ฐ ์ ์ฒด ๋จ๊ณ ์ ์ฉ
- ์ค์์ฑ : ๋ณ๊ฒฝ์ฌํญ ์ถ์ / ํต์ , ๋ฌด์ ์ ํ ๋ณ๊ฒฝ ๋ฐฉ์ง, ๊ฐ๋ฐ์งํ ์ด๋ ฅ ํ์ธ
- ํ์ ๊ด๋ฆฌ ์ญํ : ๋ฐฐํฌ๋ณธ ๊ณ ๋๋ฆฌ ์ฉ์ด / ๋ถํ์ํ ์์ค ์์ ์ ํ / ์ฌ๋ฌ ๊ฐ๋ฐ์ ๋์ ๊ฐ๋ฐ
โถ ์ํํธ์จ์ด ๋ฒ์ ๊ด๋ฆฌ ๋๊ตฌ
๊ณต์ ํด๋ | ํด๋ผ์ด์ธํธ/์๋ฒ | ๋ถ์ฐ์ ์ฅ์ |
๊ณต์ ํด๋์ ๋ณต์ฌ | ์๋ฒ์์ ๋ฒ์ ์ผ๊ด ๊ด๋ฆฌ | ์๊ฒฉ โ ์ง์ญ ์ ์ฅ์ |
RCS, SCCS, PVCS, QVCS | CVS, SVN, CVSNT, CMBC | Git, GNU arch, DCVS, Bitkeeper, Bazaar |
โถ ํ์ ๊ด๋ฆฌ ๋๊ตฌ
CVS | ์๋ฒ/ํด๋ผ์ด์ธํธ ๊ตฌ์ฑ, ๋ค์์ ์ธ์์ด ๋์ ๋ฒ์ ๊ด๋ฆฌ ๊ฐ๋ฅ |
SVN (Subversion) |
CVS ๊ฐ์ ํด / ๋ชจ๋ ๊ฐ๋ฐ์ trunk ๋๋ ํฐ๋ฆฌ์์ ์ํ Commit ์ํ ์ revision 1์ฉ ์ฆ๊ฐ |
Git | ์๋ฒ(์๊ฒฉ( ์ ์ฅ์์ ๊ฐ๋ฐ์(์ง์ญ) ์ ์ฅ์๊ฐ ๋
๋ฆฝ์ โ Commit ์ค์ ๋ฐ์ํด๋ ์๋ฒ์ ์ํฅ ์์ (๋ถ์ฐ๋ P2P๋ชจ๋ธ) |
โถ SPICE(ISO 15504) vs CMMI(Capability Maturity Model Integration)
