[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ] - [1๊ณผ๋ชฉ] 2023 (02)
[์ 1๊ณผ๋ชฉ ์ํํธ์จ์ด ์ค๊ณ]
- 2023๋ ๋ 1ํ์ฐจ (02)
๊ฐ์ฒด์งํฅ ๋ถ์ ๋ฐฉ๋ฒ๋ก
โถ ๋ฐฉ๋ฒ๋ก ์ข ๋ฅ
1. Rumbaugh (๋ผ๋ฐ์ฐ) ๋ฐฉ๋ฒ : ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ผ๋ก, ๋ถ์ ํ๋์ ๊ฐ์ฒด ๋ชจ๋ธ, ๋์ ๋ชจ๋ธ, ๊ธฐ๋ฅ ๋ชจ๋ธ๋ก ๋๋์ด ์ํํ๋ ๋ฐฉ๋ฒ
2. Booch (๋ถ์น) ๋ฐฉ๋ฒ : ๋ฏธ์์ (Micro) ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ๊ฑฐ์์ (Macro) ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋ ๋ถ์ ๋ฐฉ๋ฒ์ผ๋ก, ํด๋์ค์ ๊ฐ์ฒด๋ค์ ๋ถ์ ๋ฐ ์๋ณํ๊ณ ํด๋์ค์ ์์ฑ๊ณผ ์ฐ์ฐ์ ์ ์ํจ
3. Jacobson ๋ฐฉ๋ฒ : Use Case๋ฅผ ๊ฐ์กฐํ์ฌ ์ฌ์ฉํ๋ ๋ถ์ ๋ฐฉ๋ฒ
4. Coad์ Yourdon ๋ฐฉ๋ฒ : E-R ๋ค์ด์ด๊ทธ๋จ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์ ํ์๋ฅผ ๋ชจ๋ธ๋งํ๋ฉฐ, ๊ฐ์ฒด ์๋ณ, ๊ตฌ์กฐ ์๋ณ, ์ฃผ์ ์ ์, ์์ฑ๊ณผ ์ธ์คํด์ค ์ฐ๊ฒฐ ์ ์, ์ฐ์ฐ๊ณผ ๋ฉ์์ง ์ฐ๊ฒฐ ์ ์ ๋ฑ์ ๊ณผ์ ์ผ๋ก ๊ตฌ์ฑํ๋ ๊ธฐ๋ฒ
5. Wirfs-Brock ๋ฐฉ๋ฒ : ๋ถ์๊ณผ ์ค๊ณ ๊ฐ์ ๊ตฌ๋ถ์ด ์๊ณ , ๊ณ ๊ฐ ๋ช ์ธ์๋ฅผ ํ๊ฐํด์ ์ค๊ณ ์์ ๊น์ง ์ฐ์์ ์ผ๋ก ์ํํ๋ ๊ธฐ๋ฒ
์๋ฃ ํ๋ฆ๋ ( DFD )
[7-3]
โถ ๊ฐ๋
[์๊ตฌ์ฌํญ ๋ถ์]์ ๋ฐฉ๋ฒ ์ค ํ ๊ฐ์ง.
# ์๊ตฌ์ฌํญ ๋ถ์ : ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ค์ ์ ์ธ ์ฒซ ๋จ๊ณ๋ก ๊ฐ๋ฐ ๋์์ ๋ํ ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ์ ์ดํดํ๊ณ ๋ฌธ์ํ(๋ช ์ธํ) ํ๋ ํ๋์ ์๋ฏธ
: ์๋ฃ์ ํ๋ฆ ๋ฐ ๋ณํ ๊ณผ์ ๊ณผ ๊ธฐ๋ฅ์ ๋ํ ์ค์ฌ์ผ๋ก ๊ธฐ์ ํ๋ ๋ฐฉ๋ฒ (= ์๋ฃ ํ๋ฆ ๊ทธ๋ํ, ๋ฒ๋ธ ์ฐจํธ)
: ์์คํ ์์ ํ๋ก์ธ์ค์ ์๋ฃ ์ ์ฅ์ ์ฌ์ด์ ์๋ฃ์ ํ๋ฆ์ ๋ํ๋ด๋ ๊ทธ๋ํ๋ก ์๋ฃ ํ๋ฆ๊ณผ ์ฒ๋ฆฌ๋ฅผ ์ค์ฌ์ผ๋ก ํ๋ ๊ตฌ์กฐ์ ๋ถ์ ๊ธฐ๋ฒ์ ์ด์ฉ๋๋ค.
โถ ์๋ฃ ํ๋ฆ๋ ํ๊ธฐ๋ฒ
์๋ฃ ํ๋ฆ (Data Flow) | ํ์ดํ |
์๋ฃ ์ ์ฅ์ (Data Store) | ์ง์ (ํํ์ ) |
๋จ๋ง (Terminator) | ์ฌ๊ฐํ - ์์ ์ด๋ฆ ๊ธฐ์ |
ํ๋ก์ธ์ค (Process) | ์ |
HIPO (Hierarchy Input Process Output)
[8-2]
โถ ๊ฐ๋
: ์์คํ ์ ๋ถ์ ๋ฐ ์ค๊ณ๋ ๋ฌธ์ํํ ๋ ์ฌ์ฉ๋๋ ๊ธฐ๋ฒ์ผ๋ก, ์์คํ ์คํ ๊ณผ์ ์ธ ์ ๋ ฅ, ์ฒ๋ฆฌ, ์ถ๋ ฅ์ ๊ธฐ๋ฅ์ ๋ํ๋ธ๋ค.
1. ๊ธฐ๋ณธ ์์คํ ๋ชจ๋ธ์ ์ ๋ ฅ, ์ฒ๋ฆฌ, ์ถ๋ ฅ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ํํฅ์ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ํ ๋ฌธ์ํ ๋๊ตฌ์ด๋ค.
2. ์ฒด๊ณ์ ์ธ ๋ฌธ์ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
3. ๊ธฐํธ, ๋ํ ๋ฑ์ ์ฌ์ฉํ๋ฏ๋ก ๋ณด๊ธฐ ์ฝ๊ณ ์ดํดํ๊ธฐ๋ ์ฝ๋ค.
4. ๊ธฐ๋ฅ๊ณผ ์๋ฃ์ ์์กด ๊ด๊ณ๋ฅผ ๋์์ ํํํ ์ ์๋ค.
5. ๋ณ๊ฒฝ, ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ๋ค.
6. ์์คํ ์ ๊ธฐ๋ฅ์ ์ฌ๋ฌ ๊ฐ์ ๊ณ ์ ๋ชจ๋๋ค๋ก ๋ถํ ํ์ฌ ์ด๋ค ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ๊ณ์ธต ๊ตฌ์กฐ๋ก ํํํ ๊ฒ์ HIPO Chart ๋ผ๊ณ ํ๋ค.
7. HIPO ์ฐจํธ ์ข ๋ฅ์๋ ๊ฐ์์ ๋ํ, ์ด์ฒด์ ๋ํ, ์ธ๋ถ์ ๋ํ๊ฐ ์๋ค.
์ํ ๋ค์ด์ด๊ทธ๋จ
[9-4]
โถ ๊ฐ๋
- ํ์(Behavioral) ๋ค์ด์ด๊ทธ๋จ์ ์ข ๋ฅ ์ค ํ๋
1. ํ๋์ ๊ฐ์ฒด๊ฐ ์์ ์ด ์ํ ํด๋์ค์ ์ํ ๋ณํ ํน์ ๋ค๋ฅธ ๊ฐ์ฒด์์ ์ํธ ์์ฉ์ ๋ฐ๋ผ ์ํ๊ฐ ์ด๋ป๊ฒ ๋ณํํ๋ ์ง๋ฅผ ํํํ๋ค.
2. ์ด๋ฒคํธ(event)์ ์ํ ๊ฐ์ฒด๋ค์ ์ํ ๋ณํ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ํํํ๋ค.
3. ๋ผ๋ฐ์ฐ(Runbaugh) ๊ฐ์ฒด์งํฅ ๋ถ์ ๊ธฐ๋ฒ์์ ๋์ ๋ชจ๋ธ๋ง์ ํ์ฉ๋๋ค.
UML ํ์ฅ ๋ชจ๋ธ - ์คํ ๋ ์ค ํ์
[9-4]
โถ ๊ฐ๋
: ์คํ ๋ ์ค ํ์ ์ UML์์ ํํํ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์ธ์ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ํํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
: ์ฌ์ฉ ๊ธฐํธ - โชโซ
์ ์ค์ผ์ด์ค ๋ค์ด์ด๊ทธ๋จ (Use Case Diagram)
[10-1]
โถ ๊ฐ๋
: ๊ฐ๋ฐ๋ ์์คํ ๊ณผ ๊ด๋ จ๋ ์ธ๋ถ ์์๋ค, ์ฆ ์ฌ์ฉ์์ ๋ค๋ฅธ ์ธ๋ถ ์์คํ ๋ค์ด ๊ฐ๋ฐ๋ ์์คํ ์ ์ด์ฉํด ์ํํ ์ ์๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ์์ ๊ด์ ์์ ํํํ ๊ฒ
- ์ธ๋ถ ์์์ ์์คํ ๊ฐ์ ์ํธ ์์ฉ์ ํ์ธํ ์ ์๋ค.
- ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ์ ๋ถ์ํ๊ธฐ ์ํ ๋๊ตฌ๋ก ์ฌ์ฉ๋๋ค.
- ์์คํ ์ ๋ฒ์๋ฅผ ํ์ ํ ์ ์๋ค.
1. ์์คํ ๊ณผ ์ํธ ์์ฉํ๋ ์ธ๋ถ ์์คํ ์ ์ํฐ๋ก ํ์ ํ๋ค.
2. ์ ์ค์ผ์ด์ค๋ ์ฌ์ฉ์ ์ธก๋ฉด์์์ ์๊ตฌ์ฌํญ์ผ๋ก, ์ฌ์ฉ์๊ฐ ์ํ๋ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ์ํํ ๋ด์ฉ์ ๊ธฐ์ ํ๋ค.
3. ์์คํ ์กํฐ๋ ๋ค๋ฅธ ํ๋ก์ ํธ์์ ์ด๋ฏธ ๊ฐ๋ฐ๋์ด ์ฌ์ฉ๋๊ณ ์์ผ๋ฉฐ, ๋ณธ ์์คํ ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฑ ์๋ก ์ฐ๋๋๋ ์์คํ ์ ๋งํ๋ค.
4. ์กํฐ๊ฐ ์ธ์ํ ์ ์๋ ์์คํ ๋ด๋ถ์ ๊ธฐ๋ฅ์ ํ๋์ ์ ์ค์ผ์ด์ค๋ก ํ์ ํด์๋ ์๋๋ค.
์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๊ตฌ๋ถ
[11-3]
โถ ๊ฐ๋
# ์ฌ์ฉ์ ์ธํฐํ์ด์ค : ์ฌ์ฉ์์ ์์คํ ๊ฐ์ ์ํธ์์ฉ์ด ์ํํ๊ฒ ์ด๋ค์ง๋๋ก ๋์์ฃผ๋ ์ฅ์น๋ ์ํํธ์จ์ด๋ฅผ ์๋ฏธ
โถ ์ํธ์์ฉ์ ์๋จ ๋ฐ ๋ฐฉ์์ ๋ฐ๋ผ ๊ตฌ๋ถ๋๋ค.
1. CLI (Command Line Interface) : ๋ช ๋ น๊ณผ ์ถ๋ ฅ์ด ํ ์คํธ ํํ๋ก ์ด๋ค์ง๋ ์ธํฐํ์ด์ค
2. GUI (Graphical User Interface) : ์์ด์ฝ์ด๋ ๋ฉ๋ด๋ฅผ ๋ง์ฐ์ค๋ก ์ ํํ์ฌ ์์ ์ ์ํํ๋ ๊ทธ๋ํฝ ํ๊ฒฝ์ ์ธํฐํ์ด์ค
3. NUI (Natural User Interface) : ์ฌ์ฉ์์ ๋ง์ด๋ ํ๋์ผ๋ก ๊ธฐ๊ธฐ๋ฅผ ์กฐ์ํ๋ ์ธํฐํ์ด์ค
→ ๋ฉํฐ ํฐ์น, ๋์ ์ธ์ ๋ฑ ์ฌ์ฉ์์ ์์ฐ์ค๋ฌ์ด ์์ง์์ ์ธ์ํ์ฌ ์๋ก ์ฃผ๊ณ ๋ฐ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์๋ฏธ
4. VUI (Voice User Interface) : ์ฌ๋์ ์์ฑ์ผ๋ก ๊ธฐ๊ธฐ๋ฅผ ์กฐ์ํ๋ ์ธํฐํ์ด์ค
5. OUI (Organic User Interface) : ๋ชจ๋ ์ฌ๋ฌผ๊ณผ ์ฌ์ฉ์ ๊ฐ์ ์ํธ์์ฉ์ ์ํ ์ธํฐํ์ด์ค๋ก, ์ํํธ์จ์ด๊ฐ ์๋ ํ๋์จ์ด ๋ถ์ผ์์ ์ฌ๋ฌผ ์ธํฐ๋ท, ๊ฐ์ํ์ค, ์ฆ๊ฐํ์ค, ํผํฉํ์ค ๋ฑ๊ณผ ํจ๊ป ๋๋๋๊ณ ์๋ค.
๋ชจ๋ํ (Modularity)
[16-2]
โถ ๊ฐ๋
: ์ํํธ์จ์ด์ ์ฑ๋ฅ์ ํฅ์์ํค๊ฑฐ๋ ์์คํ ์ ์์ ๋ฐ ์ฌ์ฌ์ฉ, ์ ์ง ๊ด๋ฆฌ ๋ฑ์ด ์ฉ์ดํ๋๋ก ์์คํ ์ ๊ธฐ๋ฅ๋ค์ ๋ชจ๋ ๋จ์๋ก ๋๋๋ ๊ฒ์ ์๋ฏธ
# ๋ชจ๋ : ๋ชจ๋ํ๋ฅผ ํตํด ๋ถ๋ฆฌ๋ ์์คํ ์ ๊ฐ ๊ธฐ๋ฅ๋ค์ ์๋ฏธ. ์๋ธ๋ฃจํด, ์๋ธ ์์คํ , ์ํํธ์จ์ด ๋ด์ ํ๋ก๊ทธ๋จ, ์์ ๋จ์ ๋ฑ๊ณผ ๊ฐ์ ์๋ฏธ
1. ์์ฃผ ์ฌ์ฉ๋๋ ๊ณ์ฐ์์ด๋ ์ฌ์ฉ์ ์ธ์ฆ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ๋ค์ ๊ณตํต ๋ชจ๋๋ก ๊ตฌ์ฑํ์ฌ ํ๋ก์ ํธ์ ์ฌ์ฌ์ฉ์ฑ์ ํฅ์์ํฌ ์ ์๋ค.
2. ๋ชจ๋์ ํฌ๊ธฐ๋ฅผ ๋๋ฌด ์๊ฒ ๋๋๋ฉด ๊ฐ์๊ฐ ๋ง์์ ธ ๋ชจ๋ ๊ฐ์ ํตํฉ ๋น์ฉ์ด ๋ง์ด ๋ค๊ณ , ๋๋ฌด ํฌ๊ฒ ๋๋๋ฉด ๊ฐ์๊ฐ ์ ์ด ํตํฉ ๋น์ฉ์ ์ ๊ฒ ๋ค์ง๋ง ๋ชจ๋ ํ๋์ ๊ฐ๋ฐ ๋น์ฉ์ด ๋ง์ด ๋ ๋ค.
3. ๋ชจ๋ํ๋ฅผ ํตํด ๊ธฐ๋ฅ์ ๋ถ๋ฆฌ๊ฐ ๊ฐ๋ฅํ์ฌ ์ธํฐํ์ด์ค๊ฐ ๋จ์ํด์ง๋ค.
4. ๋ชจ๋ํ๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ํจ์จ์ ์ธ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ณ ์ค๋ฅ์ ํ๊ธ ํจ๊ณผ๋ฅผ ์ต์ํ ํ ์ ์๋ค.
โถ ํน์ง
1. ๋ชจ๋์ ์๊ฐ ์ฆ๊ฐํ๋ฉด ์๋์ ์ผ๋ก ๊ฐ ๋ชจ๋์ ํฌ๊ธฐ๊ฐ ์์์ง๋ค.
2. ๋ชจ๋์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ์์ผ๋ฉด ํตํฉ ๋น์ฉ์ด ๋์์ง๋ค.
3. ๋ชจ๋์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ํฌ๋ฉด ๋ชจ๋ ํ๋์ ๊ฐ๋ฐ ๋น์ฉ์ด ๋ง์ด ๋ ๋ค.
์ํํธ์จ์ด ์ํคํ ์ฒ - ํ์ดํ ํํฐ ํจํด (Pipe-Filter Pattern)
[17-4]
โถ ๊ฐ๋
: ๋ฐ์ดํฐ ์คํธ๋ฆผ ์ ์ฐจ์ ๊ฐ ๋จ๊ณ๋ฅผ ํํฐ (Filter) ์ปดํฌ๋ํธ๋ก ์บก์ํํ์ฌ ํ์ดํ (Pipe)๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ํจํด
# ๋ฐ์ดํฐ ์คํธ๋ฆผ(Data Stream) : ๋ฐ์ดํฐ๊ฐ ์ก.์์ ๋๊ฑฐ๋ ์ฒ๋ฆฌ๋๋ ์ผ๋ จ์ ์ฐ์์ ์ธ ํ๋ฆ
โถ ํน์ง
1. ์ฌ์ฌ์ฉ์ฑ์ด ์ข๊ณ , ์ถ๊ฐ๊ฐ ์ฌ์ ํ์ฅ์ด ์ฉ์ดํ๋ค.
2. ํํฐ ์ปดํฌ๋ํธ๋ค์ ์ฌ๋ฐฐ์นํ์ฌ ๋ค์ํ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
# ํ์ดํ๋ผ์ธ : ํํฐ์ ํ์ดํ๋ฅผ ํตํด ์ฒ๋ฆฌ๋๋ ์ผ๋ จ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ์๋ฏธ
3. ํ์ดํ - ํํฐ ํจํด์ ๋ฐ์ดํฐ ๋ณํ, ๋ฒํผ๋ง, ๋๊ธฐํ ๋ฑ์ ์ฃผ๋ก ์ฌ์ฉ
4. ํํฐ ๊ฐ ๋ฐ์ดํฐ ์ด๋ ์ ๋ฐ์ดํฐ ๋ณํ์ผ๋ก ์ธํ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค.
[๋ํ์ ์ผ๋ก UNIX์ ์(Shell)์ด ์๋ค.]
5. ์๋ธ์์คํ ์ด ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์๋ธ์์คํ ์ผ๋ก ๋๊ฒจ์ฃผ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
๊ฐ์ฒด์งํฅ์ ์ฃผ์ ๊ตฌ์ฑ ์์
[18-2]
โถ ๊ตฌ์ฑ์์ ์ข ๋ฅ
1. ๊ฐ์ฒด (Object) : ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ฅผ ๋ฌถ์ด๋์ (์บก์ํํ) ํ๋์ ์ํํธ์จ์ด ๋ชจ๋
2. ํด๋์ค (Class) : ๊ณตํต๋ ์์ฑ๊ณผ ์ฐ์ฐ(ํ์)๋ฅผ ๊ฐ๋ ๊ฐ์ฒด์ ์งํฉ, ๊ฐ์ฒด์ ์ผ๋ฐ์ ์ธ ํ์ (Type)์ ์๋ฏธ
3. ์บก์ํ (Encapsulation) : ๋ฐ์ดํฐ (์์ฑ) ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ฅผ ํ๋๋ก ๋ฌถ๋ ๊ฒ์ ์๋ฏธ
4. ์์ (Inheritance) : ์ด๋ฏธ ์ ์๋ ์์ ํด๋์ค (๋ถ๋ชจ ํด๋์ค)์ ๋ชจ๋ ์์ฑ๊ณผ ์ฐ์ฐ์ ํ์ ํด๋์ค(์์ ํด๋์ค)๊ฐ ๋ฌผ๋ ค๋ฐ๋ ๊ฒ
5. ๋คํ์ฑ (Polymorphism) : ๋ฉ์์ง์ ์ํด ๊ฐ์ฒด(ํด๋์ค)๊ฐ ์ฐ์ฐ์ ์ํํ๊ฒ ๋ ๋ ํ๋์ ๋ฉ์์ง์ ๋ํด ๊ฐ๊ฐ์ ๊ฐ์ฒด(ํด๋์ค)๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ณ ์ ํ ๋ฐฉ๋ฒ(ํน์ฑ)์ผ๋ก ์๋ตํ ์ ์๋ ๋ฅ๋ ฅ์ ์๋ฏธ
6. ์ฐ๊ด์ฑ (Relationship) : ๋ ๊ฐ ์ด์์ ๊ฐ์ฒด(ํด๋์ค)๋ค์ด ์ํธ ์ฐธ์กฐํ๋ ๊ด๊ณ๋ฅผ ๋งํ๋ค.