UML ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ์๋ฒฝํ ์ดํดํด๋ณด์
์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ ํธ์์ ๋ณต์กํ ์์คํ ์ ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํ ๋, ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ ๋ง์น ์ฒญ์ฌ์ง๊ณผ ๊ฐ์ต๋๋ค. ํ์ง๋ง ์ด ์ฒญ์ฌ์ง๋ง์ผ๋ก๋ ํน์ ์๊ฐ์ ์์คํ ์ด ์ค์ ๋ก ์ด๋ป๊ฒ ๋์ํ๋์ง ํ์ ํ๊ธฐ ์ด๋ ค์ธ ๋๊ฐ ์์ต๋๋ค. ๋ฐ๋ก ์ด๋ด ๋, ์์คํ ์ ์ค๋ ์ท์ ๋ณด์ฌ์ฃผ๋ UML ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ(Object Diagram)์ด ํฐ ๋์์ด ๋ฉ๋๋ค.
์ด ๊ธ์์๋ UML ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ด ๋ฌด์์ธ์ง, ์ฃผ์ ๊ตฌ์ฑ ์์๋ ์ด๋ป๊ฒ ๋๋์ง ์์๋ณด๊ณ , ํด๋์ค ๋ค์ด์ด๊ทธ๋จ๊ณผ์ ์ฐจ์ด์ ์ ํตํด ์ธ์ ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ์ฌ์ฉํด์ผ ํ๋์ง ๋ช ํํ ์ดํดํด ๋ณด๊ฒ ์ต๋๋ค. ๋ํ, ์ค์ ๊ฐ๋ฐ ์๋๋ฆฌ์ค์ ์ ์ฉ๋ ์์ ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ํตํด ์ฌ๋ฌ๋ถ์ ์ํํธ์จ์ด ์ค๊ณ ๋ฅ๋ ฅ์ ํ ๋จ๊ณ ๋์ด์ฌ๋ฆฌ๋ ๋ฐ ๋์์ ๋๋ฆฌ๊ณ ์ ํฉ๋๋ค.
UML ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ด๋?
UML ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ํน์ ์์ ์ ์์คํ ์ํ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ตฌ์กฐ์ ๋ค์ด์ด๊ทธ๋จ์ ๋๋ค. ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ด ์์คํ ์ ์ผ๋ฐ์ ์ธ ๊ตฌ์กฐ์ ๊ด๊ณ๋ฅผ ์ถ์์ ์ผ๋ก ํํํ๋ค๋ฉด, ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ๊ทธ ํด๋์ค๋ค์ ์ค์ ์ธ์คํด์ค(๊ฐ์ฒด)๋ค์ด ํน์ ์๊ฐ์ ์ด๋ค ๊ฐ(์ํ)์ ๊ฐ์ง๋ฉฐ ์ด๋ป๊ฒ ์ฐ๊ฒฐ๋์ด ์๋์ง๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ๋ณด์ฌ์ค๋๋ค.
์ด๋ฌํ ํน์ง ๋๋ฌธ์ ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ '์ธ์คํด์ค ๋ค์ด์ด๊ทธ๋จโ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฝ๋๋ค. ๋ณต์กํ ํด๋์ค ๋ค์ด์ด๊ทธ๋จ๋ง์ผ๋ก๋ ์ดํดํ๊ธฐ ์ด๋ ค์ด ์์คํ ์ ๋์ ๋ฐฉ์์ ๊ตฌ์ฒด์ ์ธ ์์๋ฅผ ํตํด ๋ช ํํ๊ฒ ํ์ ํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ์ฃผ์ ๊ตฌ์ฑ ์์
๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ๋น๊ต์ ๋จ์ํ ์์๋ค๋ก ๊ตฌ์ฑ๋์ด ์์ด ์ดํดํ๊ธฐ ์ฝ์ต๋๋ค. ์ฃผ์ ๊ตฌ์ฑ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- ๊ฐ์ฒด(Object): ๊ฐ์ฒด๋ ํด๋์ค์ ์ธ์คํด์ค์
๋๋ค. ์ฌ๊ฐํ ์์
๊ฐ์ฒด์ด๋ฆ: ํด๋์ค์ด๋ฆํ์์ผ๋ก ํ๊ธฐํ๊ณ ๋ฐ์ค์ ๊ธ๋ ๊ฒ์ด ํ์ค์ ๋๋ค. ์๋ฅผ ๋ค์ด,user1: User๋Userํด๋์ค์ ์ธ์คํด์ค์ธuser1๊ฐ์ฒด๋ฅผ ์๋ฏธํฉ๋๋ค. - ๋งํฌ(Link): ๋งํฌ๋ ๊ฐ์ฒด๋ค ์ฌ์ด์ ๊ด๊ณ๋ฅผ ๋ํ๋ ๋๋ค. ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ '์ฐ๊ด ๊ด๊ณ(Association)'๊ฐ ์ค์ ๋ก ๊ตฌํ๋ ์ธ์คํด์ค๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. ๋งํฌ๋ ๊ฐ์ฒด๋ค์ ์ค์ ์ผ๋ก ์ฐ๊ฒฐํ์ฌ ํํํ๋ฉฐ, ์ด๋ฅผ ํตํด ๊ฐ์ฒด๋ค์ด ์๋ก ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์์ ์๋ฏธํฉ๋๋ค.
- ์ํ(State)์ ์์ฑ๊ฐ: ๊ฐ์ฒด๊ฐ ํน์ ์์ ์ ๊ฐ์ง๊ณ ์๋ ์์ฑ(attribute)๋ค์ ๊ฐ์
๋๋ค. ์ด ๊ฐ๋ค์ด ๋ชจ์ฌ ํด๋น ๊ฐ์ฒด์ ์ํ๋ฅผ ์ ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด,
user1๊ฐ์ฒด๊ฐname = "๊น์ฒ ์"๋ผ๋ ์์ฑ๊ฐ์ ๊ฐ์ง๋ค๋ฉด, ์ด๊ฒ์ด ๊ทธ ์๊ฐ์ ์ํ๋ฅผ ๋ํ๋ ๋๋ค.
ํด๋์ค ๋ค์ด์ด๊ทธ๋จ๊ณผ ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ์ฐจ์ด์
๋ ๋ค์ด์ด๊ทธ๋จ์ ๋น์ทํด ๋ณด์ด์ง๋ง, ํํํ๋ ๋์๊ณผ ๋ชฉ์ ์์ ๋ช ํํ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
| ๊ตฌ๋ถ | ํด๋์ค ๋ค์ด์ด๊ทธ๋จ | ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ |
|---|---|---|
| ์ถ์ํ ์์ค | ๋์ (์ถ์์ ๋ชจ๋ธ) | ๋ฎ์ (๊ตฌ์ฒด์ ์ธ์คํด์ค) |
| ํํ ๋์ | ํด๋์ค, ์์ฑ, ๋ฉ์๋, ๊ด๊ณ | ๊ฐ์ฒด(์ธ์คํด์ค), ์์ฑ๊ฐ, ๋งํฌ |
| ๋ชฉ์ | ์์คํ ์ ์ ์ฒด์ ์ธ ์ ์ ๊ตฌ์กฐ ์ค๊ณ | ํน์ ์์ ์ ์์คํ ์ํ ์ค๋ ์ท, ๋ณต์กํ ๊ตฌ์กฐ ์์ |
| ์๊ฐ | ์๊ฐ์ ๊ตฌ์ ๋ฐ์ง ์์ | ํน์ ์์ ์ ์ข ์์ |
๊ฐ๋จํ ๋งํด, ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ด '์ค๊ณ๋โ๋ผ๋ฉด ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ '์ค๊ณ๋์ ๋ฐ๋ผ ๋ง๋ค์ด์ง ๋ชจ๋ธํ์ฐ์ค์ ํน์ ๋ฐฉ์ ์ฐ์ ์ฌ์งโ์ด๋ผ๊ณ ๋น์ ํ ์ ์์ต๋๋ค.
๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ์ค๋ฌด ํ์ฉ ์์
๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํ๊ฑฐ๋, ํน์ ์๋๋ฆฌ์ค๋ฅผ ์๊ฐํํ์ฌ ํ์๋ค์ ์ดํด๋ฅผ ๋์ธ ๋ ๋งค์ฐ ํจ๊ณผ์ ์ ๋๋ค.
1. ์ฌ์ฉ์ ๋ก๊ทธ์ธ ์๋๋ฆฌ์ค
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ์๋ํ๋ ํน์ ์๊ฐ์ ๊ฐ์ฒด ์ํ๋ฅผ ํํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ค์ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ช ํํ ์ดํดํ๊ณ ๋๋ฒ๊น ์ ํ์ฉํ ์ ์์ต๋๋ค.
classDiagram
class user1 {
userId = 101
name = "๊น์ฒ ์"
email = "kim@example.com"
}
class auth1 {
sessionId = "xyz-123-abc"
isValid = true
}
user1 --> auth1 : authenticates
์ ๋ค์ด์ด๊ทธ๋จ์ "๊น์ฒ ์"๋ผ๋ ์ฌ์ฉ์๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๋ก๊ทธ์ธํ์ฌ ์ ํจํ ์ธ์ ID๋ฅผ ๋ฐ๊ธ๋ฐ์ ํ์๊ฐ์ ๋ช ํํ๊ฒ ๋ณด์ฌ์ค๋๋ค.
2. ์ผํ๋ชฐ ์ฃผ๋ฌธ ์์คํ
ํ ๊ณ ๊ฐ์ด ์ฌ๋ฌ ์ํ์ ์ฃผ๋ฌธํ๋ ๋ณต์กํ ์ํฉ์ ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ํํํ๋ฉด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค.
classDiagram
class c1 {
name = "์ด์ํฌ"
}
class o1 {
orderId = "ORD-001"
date = "2024-05-21"
}
class li1 {
product = "๋
ธํธ๋ถ"
quantity = 1
}
class li2 {
product = "๋ง์ฐ์ค"
quantity = 1
}
class li3 {
product = "ํค๋ณด๋"
quantity = 2
}
c1 --> o1 : places
o1 --> li1 : contains
o1 --> li2 : contains
o1 --> li3 : contains
์ด ๋ค์ด์ด๊ทธ๋จ์ c1 ๊ณ ๊ฐ์ o1 ์ฃผ๋ฌธ์ โ๋
ธํธ๋ถโ 1๊ฐ, โ๋ง์ฐ์คโ 1๊ฐ, โํค๋ณด๋โ 2๊ฐ๊ฐ ํฌํจ๋ ๊ตฌ์ฒด์ ์ธ ์ํฉ์ ํ๋์ ๋ณด์ฌ์ค๋๋ค. ํด๋์ค ๋ค์ด์ด๊ทธ๋จ๋ง์ผ๋ก๋ ํ์
ํ๊ธฐ ์ด๋ ค์ด ๋ฐ์ดํฐ ๊ด๊ณ๋ฅผ ๋ช
ํํ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
ํจ๊ณผ์ ์ธ ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ ์์ฑ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
- ๋ชฉ์ ์ ๋ช ํํ ํ์ธ์: ๋ค์ด์ด๊ทธ๋จ์ ํตํด ๋ฌด์์ ์ค๋ช ํ๊ณ ์ถ์์ง ๋ช ํํ ํด์ผ ํฉ๋๋ค. ํน์ ์๋๋ฆฌ์ค๋ฅผ ์ค๋ช ํ ๊ฒ์ธ์ง, ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์์๋ก ๋ค ๊ฒ์ธ์ง ๋ชฉ์ ์ ๋ฐ๋ผ ๋ค์ด์ด๊ทธ๋จ์ ์ด์ ์ด ๋ฌ๋ผ์ง๋๋ค.
- ๋จ์ํ๊ฒ ์ ์งํ์ธ์: ์์คํ ์ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ํํํ๋ ค ํ์ง ๋ง์ธ์. ์ค๋ช ํ๊ณ ์ ํ๋ ํต์ฌ ์๋๋ฆฌ์ค์ ๊ด๋ จ๋ ๊ฐ์ฒด๋ค๋ง ํฌํจํ์ฌ ๋ค์ด์ด๊ทธ๋จ์ ๊ฐ๊ฒฐํ๊ฒ ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ํด๋์ค ๋ค์ด์ด๊ทธ๋จ๊ณผ ํจ๊ป ์ฌ์ฉํ์ธ์: ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ ๋ณด์กฐ ์๋ฃ๋ก ์ฌ์ฉ๋ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค. ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ค ๋ค, ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๊ตฌ์ฒด์ ์ธ ์๋ฅผ ๋ค๋ฉด ์ดํด๋๋ฅผ ํฌ๊ฒ ๋์ผ ์ ์์ต๋๋ค.
- ์ผ๊ด์ฑ ์๋ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ธ์: UML ํ์ค ํ๊ธฐ๋ฒ์ ์ค์ํ์ฌ ๋ค๋ฅธ ํ์๋ค์ด ํผ๋ ์์ด ๋ค์ด์ด๊ทธ๋จ์ ์ดํดํ ์ ์๋๋ก ํ์ธ์.
๋ ๋์ ์ค๊ณ๋ฅผ ์ํ ์ค๋ ์ท
UML ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ๋ณต์กํ ์ํํธ์จ์ด ์์คํ ์ ํน์ ์๊ฐ์ ํฌ์ฐฉํ์ฌ ๋ณด์ฌ์ฃผ๋ ๊ฐ๋ ฅํ ์๊ฐ์ ๋๊ตฌ์ ๋๋ค. ์ถ์์ ์ธ ํด๋์ค ๋ค์ด์ด๊ทธ๋จ๋ง์ผ๋ก๋ ์ ๋ฌํ๊ธฐ ์ด๋ ค์ด ์์คํ ์ ์ค์ ๋์ ๋ฐฉ์์ ๊ตฌ์ฒด์ ์ธ ์์๋ฅผ ํตํด ๋ช ํํ๊ฒ ์ ๋ฌํ ์ ์์ฃ .
๋ค์ ํ๋ก์ ํธ์์ ํ์๋ค๊ณผ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ํน์ ์๋๋ฆฌ์ค์ ๋ํด ๋ ผ์ํ ๋, ํ์ดํธ๋ณด๋์ ๊ฐ๋จํ๊ฒ๋ผ๋ ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ๊ทธ๋ ค๋ณด์ธ์. ๋ถ๋ช ๋ ์ํํ๊ณ ๋ช ํํ ์ํต์ด ๊ฐ๋ฅํด์ง ๊ฒ์ ๋๋ค. ์ด์ฒ๋ผ ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ์ ์ฌ์ ์์ ํ์ฉํ๋ค๋ฉด, ์ฌ๋ฌ๋ถ์ ์์คํ ์ค๊ณ๋ ๋์ฑ ๊ฒฌ๊ณ ํด์ง๊ณ ํ์ ํ์ ๋ฅ๋ ฅ์ ํ์ธต ๋ ์ฑ์ฅํ ๊ฒ์ ๋๋ค.