UML ๋ค์ด์ด๊ทธ๋จ ์ข ๋ฅ ์๋ฒฝํ ์ดํดํด๋ณด์
ํด๋์ค, ์ํ์ค, ์ ์ค์ผ์ด์ค ๋ฑ ์ฃผ์ UML ๋ค์ด์ด๊ทธ๋จ ์ข ๋ฅ๋ฅผ ์ค๋ฌด ์์ ์ ํจ๊ป ์์๋ณด์ธ์. ์ํํธ์จ์ด ์ค๊ณ ๋ฅ๋ ฅ์ ํ ๋จ๊ณ ์ ๊ทธ๋ ์ด๋ํ์ธ์.
์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๋ณต์กํ ์์คํ ์ ์ค๊ณํ ๋, ํ์๋ค๊ณผ ๋ช ํํ๊ฒ ์ํตํ๋ ๊ฒ์ ํ์์ ๋๋ค. ์ฝ๋๋ก ๋ฐ๋ก ๊ตฌํํ๊ธฐ ์ ์ ์์คํ ์ ๊ตฌ์กฐ์ ๋์ ๋ฐฉ์์ ์๊ฐํํ ์ ์๋ค๋ฉด ์ด๋จ๊น์? ๋ฐ๋ก ์ด ์ง์ ์์ UML(Unified Modeling Language)์ด ๊ทธ ์ญํ ์ ์ํํฉ๋๋ค.
UML์ ๊ฐ์ฒด ์งํฅ ์ํํธ์จ์ด ์์คํ ์ ์๊ฐํ, ๋ช ์ธํ, ๊ตฌ์ถ, ๋ฌธ์ํํ๊ธฐ ์ํ ํ์ค ๋ชจ๋ธ๋ง ์ธ์ด์ ๋๋ค. 1990๋ ๋ ์ค๋ฐ์ ๋ฑ์ฅํ ์ดํ, UML์ ์ํํธ์จ์ด ์์ง๋์ด๋ง์ ํต์ฌ ๋๊ตฌ๋ก ์๋ฆฌ ์ก์์ต๋๋ค. ํนํ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ๋ ๋๊ท๋ชจ ์์คํ ์ค๊ณ๊ฐ ์ผ์ํ๋ ์ง๊ธ, UML์ ์ค์์ฑ์ ๋์ฑ ์ปค์ง๊ณ ์์ด์.
UML์ ํฌ๊ฒ ๊ตฌ์กฐ์ ๋ค์ด์ด๊ทธ๋จ(Structural Diagrams)๊ณผ ํ์์ ๋ค์ด์ด๊ทธ๋จ(Behavioral Diagrams)์ผ๋ก ๋๋ฉ๋๋ค. ๊ฐ ๋ค์ด์ด๊ทธ๋จ์ ์์คํ ์ ํน์ ์ธก๋ฉด์ ํํํ๋ ๋ฐ ์ต์ ํ๋์ด ์์ฃ . ์ด ๊ธ์์๋ ์ค๋ฌด์์ ์์ฃผ ์ฌ์ฉ๋๋ UML ๋ค์ด์ด๊ทธ๋จ ์ข ๋ฅ๋ฅผ ์์ธํ ์ดํด๋ณด๊ณ , ๊ฐ ๋ค์ด์ด๊ทธ๋จ์ด ์ด๋ค ์ํฉ์์ ์ ์ฉํ์ง ์ค์ ์์์ ํจ๊ป ์์๋ณด๊ฒ ์ต๋๋ค.
๊ด๊ณ (Relationships)
ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ ์ง์ ํ ํ์ ํด๋์ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ช ํํ ๋ณด์ฌ์ฃผ๋ ๋ฐ ์์ต๋๋ค. ๊ด๊ณ๋ ์ฃผ๋ก ํ์ดํ๋ก ํํ๋๋ฉฐ, ๊ฐ๊ธฐ ๋ค๋ฅธ ๋ชจ์์ ํ์ดํ๋ ์๋ก ๋ค๋ฅธ ์๋ฏธ๋ฅผ ๊ฐ์ง๋๋ค. ํ์ดํ ๋ฐฉํฅ์ ํ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง๋ฅผ ๋ํ๋ ๋๋ค.
| ๊ด๊ณ ์ ํ | ์๋ฏธ | ํ์ดํ/๊ธฐํธ ํํ | ์ค๋ช |
|---|---|---|---|
| ์ผ๋ฐํ (Generalization) | ์์ ๊ด๊ณ | ๋ถ๋ชจ ํด๋์ค(Superclass)์ ์์ ํด๋์ค(Subclass) ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ ๋๋ค. | |
| ์ค์ฒดํ (Realization) | ์ธํฐํ์ด์ค ๊ตฌํ ๊ด๊ณ | ํด๋์ค๊ฐ ์ธํฐํ์ด์ค๋ฅผ implementsํ ๋ ์ฌ์ฉํฉ๋๋ค. ์ ์ ํ์ดํ๋ก ํํํฉ๋๋ค. | |
| ์ฐ๊ด (Association) | ์ฐธ์กฐ ๊ด๊ณ | ํ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑ์ผ๋ก ์ฐธ์กฐํฉ๋๋ค. ๋ฐฉํฅ์ฑ์ ์ฐธ์กฐ ํ๋ฆ์ ๋ํ๋ ๋๋ค. | |
| ์์กด (Dependency) | ์ผ์์ ์ฌ์ฉ ๊ด๊ณ | ํ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค๋ฅผ ๋ฉ์๋ ๋งค๊ฐ๋ณ์๋ ๋ฐํ ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ ๊ด๊ณ์ ๋๋ค. | |
| ์งํฉ (Aggregation) | ์ฝํ ์ ์ฒด-๋ถ๋ถ ๊ด๊ณ | โ์ ์ฒดโ๊ฐ โ๋ถ๋ถโ์ ํฌํจํ์ง๋ง, ๋ถ๋ถ์ ์๋ช ์ฃผ๊ธฐ๊ฐ ์ ์ฒด์ ์์กดํ์ง ์์ต๋๋ค. | |
| ํฉ์ฑ (Composition) | ๊ฐํ ์ ์ฒด-๋ถ๋ถ ๊ด๊ณ | ๋ถ๋ถ์ ์๋ช ์ฃผ๊ธฐ๊ฐ ์ ์ฒด์ ์์ ํ ์ข ์๋ ๋ ์ฌ์ฉํฉ๋๋ค. |
๊ตฌ์กฐ์ ๋ค์ด์ด๊ทธ๋จ (Structural Diagrams)
๊ตฌ์กฐ์ ๋ค์ด์ด๊ทธ๋จ์ ์์คํ ์ ์ ์ ๊ตฌ์กฐ๋ฅผ ํํํฉ๋๋ค. ์ฆ, ์์คํ ์ ๊ตฌ์ฑํ๋ ์์๋ค๊ณผ ๊ทธ๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด์ฃ .
ํด๋์ค ๋ค์ด์ด๊ทธ๋จ (Class Diagram)
ํด๋์ค ๋ค์ด์ด๊ทธ๋จ(Class Diagram)์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ(OOD, Object-Oriented Design)์์ ๊ฐ์ฅ ํต์ฌ์ด ๋๋ UML ๋ค์ด์ด๊ทธ๋จ์ ๋๋ค.
์์คํ ์ ๊ตฌ์ฑํ๋ ํด๋์ค, ๊ทธ๋ค์ ์์ฑ(Attributes)๊ณผ ๋ฉ์๋(Methods), ๊ทธ๋ฆฌ๊ณ ํด๋์ค ๊ฐ์ ๊ด๊ณ(Relationships)๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํ์ฃ .
์ฆ, ์์คํ ์ ์ ์ ๊ตฌ์กฐ(static structure)๋ฅผ ํ๋์ ๋ณด์ฌ์ฃผ๋ ์ค๊ณ์ ์ฒญ์ฌ์ง(blueprint) ์ญํ ์ ํฉ๋๋ค.
ํนํ ๋ณต์กํ ๋๋ฉ์ธ ๋ชจ๋ธ์ ์ค๊ณํ ๋, ๋น์ฆ๋์ค ๋ก์ง์ ํต์ฌ ๊ฐ๋ ์ ํ ์ ์ฒด๊ฐ ๊ณต์ ํ ์ ์๋๋ก ๋์์ค๋๋ค.
์ฃผ์ ๊ตฌ์ฑ ์์:
- ํด๋์ค(Class): ์์ฑ(attributes)๊ณผ ๋ฉ์๋(methods)๋ฅผ ํฌํจ
- ์์ฑ(Attributes): ํด๋์ค๊ฐ ๊ฐ์ง๋ ๋ฐ์ดํฐ
- ๋ฉ์๋(Methods): ํด๋์ค๊ฐ ์ํํ๋ ๊ธฐ๋ฅ
- ๊ด๊ณ(Relationships): ์์, ์ฐ๊ด, ์งํฉ, ์์กด ๋ฑ
์ค๋ฌด ํ์ฉ ์์:
์ผํ๋ชฐ ์์คํ ์ ๊ฐ๋ฐํ๋ค๊ณ ๊ฐ์ ํด๋ณผ๊ฒ์. โ์ฌ์ฉ์(User)โ, โ์ํ(Product)โ, โ์ฃผ๋ฌธ(Order)โ ํด๋์ค์ ์ด๋ค์ ์ํธ์์ฉ์ ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ํํํ ์ ์์ต๋๋ค.
classDiagram
class User {
- userId: int
- name: string
- email: string
+ login(): void
+ logout(): void
}
class Product {
- productId: int
- name: string
- price: float
+ getInfo(): string
}
class Order {
- orderId: int
- date: Date
- total: float
+ calculateTotal(): float
}
User "1" --> "1..*" Order : places >
Order "1..*" --> "1..*" Product : contains >
ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ ์์คํ ์ ์ฒญ์ฌ์ง ์ญํ ์ ํ๋ฉฐ, ๊ฐ๋ฐ ์ด๊ธฐ ๋จ๊ณ์์ ํ์๋ค๊ณผ ๊ตฌ์กฐ๋ฅผ ๊ณต์ ํ๋ ๋ฐ ๋งค์ฐ ํจ๊ณผ์ ์ ๋๋ค.
๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ (Object Diagram)
๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ(Object Diagram)์ ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ ์ธ์คํด์ค ๋ฒ์ (instance-level diagram)์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. ์ฆ, ํน์ ์์ ์์ ์์คํ ์ ์กด์ฌํ๋ ๊ฐ์ฒด(instance)์ ๊ทธ ๊ฐ์ฒด๋ค ๊ฐ์ ๊ด๊ณ, ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ฐ์ดํฐ ๊ฐ์ ๊ตฌ์ฒด์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ ๋ค์ด์ด๊ทธ๋จ์ด์์.
์์คํ ์ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋ ๊ฒ์ด ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ด๋ผ๋ฉด, ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ์์คํ ์ ํ์ฌ ์ํ(snapshot)๋ฅผ ์๊ฐํํ๋ ๋๊ตฌ์ ๋๋ค.
ํด๋์ค ๋ค์ด์ด๊ทธ๋จ๊ณผ์ ์ฐจ์ด์ :
- ํด๋์ค ๋ค์ด์ด๊ทธ๋จ: ์ถ์์ ์ธ ํด๋์ค์ ๊ด๊ณ ๋ชจ๋ธ
- ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ: ํน์ ์์ ์ ๊ตฌ์ฒด์ ์ธ ์ธ์คํด์ค
์ค๋ฌด ํ์ฉ ์์:
๋ก๊ทธ์ธ ํ๋ก์ธ์ค์์ '์ฌ์ฉ์ ๊ฐ์ฒด(user object)'๊ฐ '์ธ์ฆ ๊ฐ์ฒด(authentication object)'์ ์ด๋ป๊ฒ ์ํธ์์ฉํ๋์ง ์๊ฐํํ ๋ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์ "๊น์ฒ ์"๊ฐ ๋ก๊ทธ์ธ์ ์๋ํ๋ ์๊ฐ์ ๊ฐ์ฒด ์ํ๋ฅผ ํํํ ์ ์์ฃ .
classDiagram
class User {
userId = 101
name = "๊น์ฒ ์"
email = "kim@example.com"
}
class Authentication {
sessionId = "abc123"
isValid = true
}
User "1" --> "1" Authentication : authenticates >
๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ์์คํ ์ ๋ฐํ์ ์ํฉ์ ์ดํดํ๋ ๋ฐ ํนํ ๋์์ด ๋ฉ๋๋ค.
์ปดํฌ๋ํธ ๋ค์ด์ด๊ทธ๋จ (Component Diagram)
์ปดํฌ๋ํธ ๋ค์ด์ด๊ทธ๋จ(Component Diagram)์
์์คํ ์ ๊ตฌ์ฑํ๋ ๋ฌผ๋ฆฌ์ /๋ ผ๋ฆฌ์ ์ปดํฌ๋ํธ ๊ฐ์ ๊ด๊ณ์ ์์กด์ฑ์ ์๊ฐํํ๋ UML ๊ตฌ์กฐ ๋ค์ด์ด๊ทธ๋จ์ ๋๋ค.
์ฆ, โ์ด ์์คํ ์ด ์ด๋ค ๋ชจ๋๋ค๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๊ฐ ๋ชจ๋์ด ์ด๋ป๊ฒ ์ฐ๊ฒฐ๋์ด ํ๋ ฅํ๋๊ฐโ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ํํธ์จ์ด ๊ตฌ์กฐ์ ์ง๋(Map) ์ญํ ์ ํฉ๋๋ค. ํนํ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ(MSA) ํ๊ฒฝ์์ ์์คํ ์ ๋ชจ๋ํ(Modularity), ์์กด์ฑ ๊ด๋ฆฌ(Dependency Management), ์ฌ์ฌ์ฉ์ฑ(Reusability)์ ์ค๊ณํ ๋ ํต์ฌ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์ฃผ์ ๊ตฌ์ฑ ์์:
- ์ปดํฌ๋ํธ(Components): ๋ ผ๋ฆฌ์ ๋๋ ๋ฌผ๋ฆฌ์ ์ปดํฌ๋ํธ (์: ๋น์ฆ๋์ค ์ปดํฌ๋ํธ, EJB ์ปดํฌ๋ํธ)
- ์ธํฐํ์ด์ค(Interfaces): ์ ๊ณต(provided)๋๊ฑฐ๋ ์๊ตฌ(required)๋๋ ์ธํฐํ์ด์ค
- ์์กด์ฑ(Dependencies): ์ปดํฌ๋ํธ ๊ฐ์ ๊ด๊ณ
์ค๋ฌด ํ์ฉ ์์:
๋ง์ดํฌ๋ก์๋น์ค ๊ธฐ๋ฐ ์ ์์๊ฑฐ๋ ์์คํ ์์:
- ์ฌ์ฉ์ ์๋น์ค ์ปดํฌ๋ํธ
- ์ฃผ๋ฌธ ์๋น์ค ์ปดํฌ๋ํธ
- ๊ฒฐ์ ์๋น์ค ์ปดํฌ๋ํธ
- ์ฌ๊ณ ๊ด๋ฆฌ ์ปดํฌ๋ํธ
์ด๋ค์ด ์ด๋ป๊ฒ ์ฐ๊ฒฐ๋๊ณ ํต์ ํ๋์ง๋ฅผ ์ปดํฌ๋ํธ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๋ช ํํ ํํํ ์ ์์ต๋๋ค.
graph TD
subgraph Frontend Layer
A[๐งโ๐ป Web Client]
end
subgraph Backend Services
B[User Service]
C[Order Service]
D[Payment Service]
E[Inventory Service]
end
A -->|REST API| B
A -->|REST API| C
C -->|calls| D
C -->|fetches| E
D -->|notifies| C
์ด ๋ค์ด์ด๊ทธ๋จ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ๋ฌ ๋ฐฑ์๋ ์๋น์ค๋ฅผ ํธ์ถํ๊ณ , ์๋น์ค ๊ฐ ์์กด ๊ด๊ณ๊ฐ Order โ Payment โ Inventory ๋ฐฉํฅ์ผ๋ก ์ด์ด์ง๋ ๊ตฌ์กฐ๋ฅผ ํํํฉ๋๋ค.
classDiagram
class UserService {
+registerUser()
+login()
+getProfile()
}
class OrderService {
+createOrder()
+getOrderHistory()
-verifyPayment()
}
class PaymentService {
+processPayment()
+refund()
}
class InventoryService {
+checkStock()
+updateStock()
}
UserService --> OrderService : uses >
OrderService --> PaymentService : depends on >
OrderService --> InventoryService : requests >
์ ์์์์๋ OrderService๊ฐ PaymentService์ InventoryService์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉฐ, UserService๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฉ์ ๊ด๋ จ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์ปดํฌ๋ํธ ๋ค์ด์ด๊ทธ๋จ์ ํตํด ์์คํ ์ ๋ชจ๋ํ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ์ฑ์ ๋์ผ ์ ์์ด์.
๋ฐฐํฌ ๋ค์ด์ด๊ทธ๋จ (Deployment Diagram)
๋ฐฐํฌ ๋ค์ด์ด๊ทธ๋จ(Deployment Diagram)์ ์ํํธ์จ์ด ์์คํ ์ ๋ฌผ๋ฆฌ์ ๋ฐฐํฌ ๊ตฌ์กฐ(Physical Deployment Structure)๋ฅผ ์๊ฐํํ๋ ๋ค์ด์ด๊ทธ๋จ์ด์์.
์ฆ, ์ด๋ค ํ๋์จ์ด ๋ ธ๋(Node) ์์ ์ด๋ค ์ํํธ์จ์ด ์ปดํฌ๋ํธ(Artifact)๊ฐ ๋ฐฐํฌ๋๋์ง๋ฅผ ํํํฉ๋๋ค. ์ด ๋ค์ด์ด๊ทธ๋จ์ ๊ฐ๋ฐ ๋จ๊ณ์์ ์์คํ ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ค๊ณํ ํ, ์ด์ ํ๊ฒฝ(Production Environment)์ ์ค์ ๋ก ์ด๋ป๊ฒ ๋ฐฐํฌ๋ ์ง๋ฅผ ์ ์ํ ๋ ํ์์ ์ด์์.
ํนํ ํด๋ผ์ฐ๋, ์จํ๋ ๋ฏธ์ค, ํ์ด๋ธ๋ฆฌ๋ ์ธํ๋ผ ๋ฑ ๋ค์ํ ํ๊ฒฝ์์ ์ธํ๋ผ ๊ตฌ์กฐ๋ฅผ ๋ฌธ์ํํ๊ณ ํ ๊ฐ ๊ณต์ ํ๋ ํต์ฌ ์๋ฃ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์ฃผ์ ๊ตฌ์ฑ ์์:
- ๋ ธ๋(Nodes): ํ๋์จ์ด ์ฅ์น (์: ์๋ฒ, ๋ฐ์ดํฐ๋ฒ ์ด์ค)
- ์ํฐํฉํธ(Artifacts): ์ํํธ์จ์ด ์ปดํฌ๋ํธ (์: ์คํ ํ์ผ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
- ํต์ ๊ฒฝ๋ก(Communication Paths): ๋ ธ๋ ๊ฐ์ ์ฐ๊ฒฐ
์ค๋ฌด ํ์ฉ ์์:
ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์๋น์ค์ ์ธํ๋ผ๋ฅผ ์ค๊ณํ ๋ ๋ฐฐํฌ ๋ค์ด์ด๊ทธ๋จ์ด ๋งค์ฐ ์ ์ฉํฉ๋๋ค. AWS ํ๊ฒฝ์์์ ๋ฐฐํฌ ๊ตฌ์กฐ๋ฅผ ์๋ก ๋ค๋ฉด:
graph TD
subgraph AWS Cloud
LB[Load Balancer ๐]
subgraph EC2 Cluster
WS1[Web Server 1 ๐ฅ๏ธ]
WS2[Web Server 2 ๐ฅ๏ธ]
end
DB[(RDS Database ๐๏ธ)]
end
LB --> WS1
LB --> WS2
WS1 --> DB
WS2 --> DB
์ด๋ฅผ ํตํด ์์คํ ๋ฐฐํฌ ์ ํ์ํ ๋ฆฌ์์ค์ ๊ตฌ์ฑ์ ํ๋์ ํ์ ํ ์ ์์ต๋๋ค.
ํจํค์ง ๋ค์ด์ด๊ทธ๋จ (Package Diagram)
ํจํค์ง ๋ค์ด์ด๊ทธ๋จ(Package Diagram)์ ๋๊ท๋ชจ ์ํํธ์จ์ด ์์คํ ์ ๊ตฌ์กฐ๋ฅผ ๊ณ์ธต์ (Hierarchical)์ผ๋ก ํํํ๋ UML ๊ตฌ์กฐ ๋ค์ด์ด๊ทธ๋จ์ ๋๋ค.
์ฆ, ๋ณต์กํ ์์คํ ์ ์๋ฏธ ์๋ ๊ทธ๋ฃน(ํจํค์ง) ์ผ๋ก ๋ฌถ์ด ๊ด๋ฆฌํจ์ผ๋ก์จ ๋ชจ๋ ๊ฐ ์์กด์ฑ(Dependency) ๊ณผ ๊ณ์ธต ๊ตฌ์กฐ(Layered Architecture) ๋ฅผ ๋ช ํํ๊ฒ ๋ณด์ฌ์ค๋๋ค.
๊ฐ๋ฐํ์์๋ ์ด ๋ค์ด์ด๊ทธ๋จ์ ํตํด ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๋ฌธ์ํํ๊ณ , ์ฝ๋ ์์กด ๊ด๊ณ๋ฅผ ๋ถ์ํ๋ฉฐ, ๊ณ์ธต ๊ฐ์ ์ญํ ์ ๋ช ํํ ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
์ฃผ์ ๊ตฌ์ฑ ์์:
- ํจํค์ง(Packages): ๊ด๋ จ ์์๋ค์ ๊ทธ๋ฃน
- ์์กด์ฑ(Dependencies): ํจํค์ง ๊ฐ์ ๊ด๊ณ
์ค๋ฌด ํ์ฉ ์์:
๋ํ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ ์ด์ด๋ณ๋ก ํจํค์ง๋ฅผ ๊ตฌ์ฑํ ๋:
graph TD
A[Presentation Layer] --> B[Business Layer]
B --> C[Data Access Layer]
C --> D[Database Package]
ํจํค์ง ๋ค์ด์ด๊ทธ๋จ์ ์ฌ์ฉํ๋ฉด ํฐ ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌ ๊ฐ๋ฅํ ๋จ์๋ก ๋๋๊ณ , ๊ฐ ๋ชจ๋ ๊ฐ์ ์์กด์ฑ์ ๋ช ํํ ํ ์ ์์ต๋๋ค.
๋ณตํฉ ๊ตฌ์กฐ ๋ค์ด์ด๊ทธ๋จ (Composite Structure Diagram)
๋ณตํฉ ๊ตฌ์กฐ ๋ค์ด์ด๊ทธ๋จ(Composite Structure Diagram)์ ํด๋์ค(Class)๋ ์ปดํฌ๋ํธ(Component)์ ๋ด๋ถ ๊ตฌ์กฐ์ ๋ฐํ์ ํ๋ ฅ ๊ด๊ณ๋ฅผ ์ธ๋ฐํ๊ฒ ์๊ฐํํ๋ UML ๊ตฌ์กฐ ๋ค์ด์ด๊ทธ๋จ์ ๋๋ค.
์ฆ, โํ ํด๋์ค์ ๋ด๋ถ๊ฐ ์ค์ ๋ก ์ด๋ค ๊ฐ์ฒด๋ค๋ก ๊ตฌ์ฑ๋์ด ์๊ณ , ์ด๋ค์ด ์ด๋ค ๋ฐฉ์์ผ๋ก ํ๋ ฅํ๋ฉฐ ๋์ํ๋๊ฐโ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ค์ด์ด๊ทธ๋จ์ด์์. ์์คํ ์ ์ ์ฒด ๊ตฌ์กฐ๊ฐ ์๋๋ผ, ๋ถ๋ถ(Part) ๋จ์์ ๋ด๋ถ ๊ตฌ์ฑ์ ์ดํดํ ๋ ์ ์ฉํฉ๋๋ค.
์ฃผ์ ์ฉ๋:
- ๋ถ๋ฅ์์ ๋ด๋ถ ๊ตฌ์กฐ ํํ
- ํฌํธ๋ฅผ ํตํ ๋ถ๋ฅ์์ ํ๊ฒฝ ๊ฐ์ ์ํธ์์ฉ
- ํ๋ ฅ ๋์ ํํ
์ค๋ฌด ํ์ฉ ์์:
๋ณต์กํ ๊ฒ์ ์์ง์ ๊ฐ ์ปดํฌ๋ํธ๊ฐ ์ด๋ป๊ฒ ์ํธ์์ฉํ๋์ง ์ดํดํ ๋ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ ๋๋ง ์์ง, ๋ฌผ๋ฆฌ ์์ง, ์ค๋์ค ์์คํ ์ด ๊ฒ์ ๋ฃจํ ๋ด์์ ์ด๋ป๊ฒ ํ๋ ฅํ๋์ง๋ฅผ ํํํ ์ ์์ฃ .
flowchart TD
subgraph GameEngine[๐ฎ Game Engine]
R[Render Engine]
P[Physics Engine]
A[Audio System]
L[Game Loop]
R --> L
P --> L
A --> L
end
๋ณตํฉ ๊ตฌ์กฐ ๋ค์ด์ด๊ทธ๋จ์ ํด๋์ค์ ์ ์ฒด๊ฐ ์๋ ๊ฐ๋ณ ํด๋์ค๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ํํํ์ฌ, ์์คํ ์ ์ธ๋ถ ๋์์ ์ดํดํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
ํ์์ ๋ค์ด์ด๊ทธ๋จ (Behavioral Diagrams)
ํ์์ ๋ค์ด์ด๊ทธ๋จ์ ์์คํ ์ ๋์ ๋์์ ํํํฉ๋๋ค. ์์คํ ์ด ์ด๋ป๊ฒ ์๋ํ๊ณ , ๊ฐ์ฒด๋ค์ด ์ด๋ป๊ฒ ์ํธ์์ฉํ๋์ง๋ฅผ ๋ณด์ฌ์ฃผ์ฃ .
์ ์ค์ผ์ด์ค ๋ค์ด์ด๊ทธ๋จ (Use Case Diagram)
์ ์ค์ผ์ด์ค ๋ค์ด์ด๊ทธ๋จ(Use Case Diagram)์ ์ฌ์ฉ์(Actor)์ ๊ด์ ์์ ์์คํ ์ด ์ ๊ณตํด์ผ ํ ๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ(Functional Requirements)์ ์๊ฐํํ๋ UML ๋ค์ด์ด๊ทธ๋จ์ด์์.
์ฆ, โ๋๊ฐ ์์คํ ์ ์ฌ์ฉํ๋ฉฐ, ์ด๋ค ๊ธฐ๋ฅ์ ํตํด ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋๊ฐโ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์๊ตฌ์ฌํญ ๋ถ์์ ์ถ๋ฐ์ ์ด์ ๋น์ฆ๋์ค ํ๋ฆ ์ค๊ณ์ ๊ธฐ์ด์ ๋๋ค.
์ฃผ์ ๊ตฌ์ฑ ์์:
- ์กํฐ(Actors): ์์คํ ๊ณผ ์ํธ์์ฉํ๋ ์ฌ์ฉ์๋ ์ธ๋ถ ์์คํ
- ์ ์ค์ผ์ด์ค(Use Cases): ์ธก์ ๊ฐ๋ฅํ ๋น์ฆ๋์ค ๊ฐ์น๋ฅผ ์ ๊ณตํ๋ ๊ณ ์์ค ๋น์ฆ๋์ค ๋ชฉํ
์ค๋ฌด ํ์ฉ ์์:
์จ๋ผ์ธ ์ผํ๋ชฐ ์์คํ ์ ์ ์ค์ผ์ด์ค:
graph TD
A[Customer] --> B((Browse Products))
A --> C((Add to Cart))
A --> D((Checkout))
D --> E((Login))
D --> F((Payment))
F --> G((Send Confirmation Email))
๊ฐ ์ ์ค์ผ์ด์ค๋ ์์คํ ์ด ์ ๊ณตํด์ผ ํ๋ ๊ธฐ๋ฅ์ ๋ํ๋ด๋ฉฐ, ์๊ตฌ์ฌํญ ์์ง ๋จ๊ณ์์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
ํ๋ ๋ค์ด์ด๊ทธ๋จ (Activity Diagram)
ํ๋ ๋ค์ด์ด๊ทธ๋จ(Activity Diagram)์ ์์คํ ๋ด์ ๋น์ฆ๋์ค ํ๋ก์ธ์ค๋ ์๊ณ ๋ฆฌ์ฆ์ ํ๋ฆ(Flow of Control)์ ๋จ๊ณ๋ณ๋ก ์๊ฐํํ๋ UML ํ์(Behavioral) ๋ค์ด์ด๊ทธ๋จ์ ๋๋ค.
์ฆ, ์์คํ ์ด โ๋ฌด์์ ์ด๋ค ์์๋ก ์ํํ๋๊ฐโ๋ฅผ ํํํ๋ ๋ค์ด์ด๊ทธ๋จ์ด์์.
์ ํ(Decision), ๋ณ๋ ฌ(Parallel), ๋ฐ๋ณต(Loop) ๋ฑ์ ์ ์ด ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ ํํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ณต์กํ ์ ๋ฌด ํ๋ฆ์ด๋ ์ฌ์ฉ์ ์๋๋ฆฌ์ค๋ฅผ ๋ช ํํ๊ฒ ์๊ฐํํ ์ ์์ต๋๋ค.
์ฃผ์ ๊ตฌ์ฑ ์์:
- ํ๋(Activities): ์ํ๋๋ ์์
- ๊ฒฐ์ (Decisions): ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ
- ํ๋ฆ(Flows): ํ๋ ๊ฐ์ ์ ํ
์ค๋ฌด ํ์ฉ ์์:
ํ์๊ฐ์ ๋ถํฐ ์ด๋ฉ์ผ ์ธ์ฆ๊น์ง์ ํ๋ก์ธ์ค๋ฅผ ํํํ ๋:
flowchart TD
A([์์]) --> B[ํ์ ์ ๋ณด ์
๋ ฅ]
B --> C{์ด๋ฉ์ผ ํ์ ์ ํจํ๊ฐ?}
C -->|์ ํจ| D[DB ์ ์ฅ]
C -->|๋ฌดํจ| E[์ค๋ฅ ๋ฉ์์ง ํ์]
D --> F[์ธ์ฆ ๋ฉ์ผ ๋ฐ์ก]
F --> G[์ฌ์ฉ์ ์ด๋ฉ์ผ ํ์ธ ๋๊ธฐ]
G --> H{์ธ์ฆ ์ฑ๊ณต?}
H -->|์ฑ๊ณต| I[๊ณ์ ํ์ฑํ]
H -->|์คํจ| J[์ฌ์๋ ์์ฒญ]
I --> K([์ข
๋ฃ])
J --> G
ํ๋ ๋ค์ด์ด๊ทธ๋จ์ ๋น์ฆ๋์ค ํ๋ก์ธ์ค๋ฅผ ๋ฌธ์ํํ๊ณ , ๊ฐ๋ฐํ๊ณผ ๋น์ฆ๋์ค ํ ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ์ ์ํํ๊ฒ ํฉ๋๋ค.
์ํ ๋จธ์ ๋ค์ด์ด๊ทธ๋จ (State Machine Diagram)
์ํ ๋จธ์ ๋ค์ด์ด๊ทธ๋จ(State Machine Diagram)์ ๊ฐ์ฒด(Object)๋ ์์คํ (System)์ ์ํ ๋ณํ(State Changes)๋ฅผ ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ ์๊ฐํํ ๋ค์ด์ด๊ทธ๋จ์ด์์.
ํน์ ๊ฐ์ฒด๊ฐ โ์ด๋ค ์ฌ๊ฑด(Event)โ์ ์ํด ์ด๋ค ์ํ(State)๋ก ์ ์ด(Transition)๋๋์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์, ์์คํ ์ ๋ผ์ดํ์ฌ์ดํด(Lifecycle)์ ๋ถ์ํ๊ณ ์์ธกํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
์ฃผ์ ๊ตฌ์ฑ ์์:
- ์ํ(States): ๊ฐ์ฒด๊ฐ ๊ฐ์ง ์ ์๋ ์กฐ๊ฑด
- ์ ์ด(Transitions): ํ ์ํ์์ ๋ค๋ฅธ ์ํ๋ก์ ๋ณํ
- ์ด๋ฒคํธ(Events): ์ ์ด๋ฅผ ์ ๋ฐํ๋ ํธ๋ฆฌ๊ฑฐ
์ค๋ฌด ํ์ฉ ์์:
์จ๋ผ์ธ ์ฃผ๋ฌธ ์์คํ ์์ ์ฃผ๋ฌธ ์ํ์ ๋ณํ๋ฅผ ํํํ ๋:
stateDiagram-v2
[*] --> ๋๊ธฐ
๋๊ธฐ --> ์ฒ๋ฆฌ์ค : ์ฃผ๋ฌธ ์ ์
์ฒ๋ฆฌ์ค --> ๋ฐฐ์ก์ค : ์ถ๊ณ
๋ฐฐ์ก์ค --> ์๋ฃ : ๋ฐฐ์ก ์๋ฃ
๋๊ธฐ --> ์ทจ์๋จ : ์ทจ์
์ฒ๋ฆฌ์ค --> ์ทจ์๋จ : ์ทจ์
์๋ฃ --> [*]
์ทจ์๋จ --> [*]
์ํ ๋จธ์ ๋ค์ด์ด๊ทธ๋จ์ ํตํด ๊ฐ์ฒด์ ๊ฐ๋ฅํ ์ํ์ ์ ์ด๋ฅผ ๋ช ํํ ์ ์ํ์ฌ, ์์คํ ์ ๋์์ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
์ํ์ค ๋ค์ด์ด๊ทธ๋จ (Sequence Diagram)
์ํ์ค ๋ค์ด์ด๊ทธ๋จ(Sequence Diagram)์ ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ ๊ฐ์ฒด ๊ฐ์ ๋ฉ์์ง ๊ตํ ๊ณผ์ ์ ํํํ๋ UML ์ํธ์์ฉ(Interaction) ๋ค์ด์ด๊ทธ๋จ์ ๋๋ค.
์ฆ, ํน์ ์๋๋ฆฌ์ค(์: ๋ก๊ทธ์ธ, ์ฃผ๋ฌธ ์ฒ๋ฆฌ, ๊ฒฐ์ ๋ฑ)์์ โ๋๊ฐ ์ธ์ ๋๊ตฌ์๊ฒ ์ด๋ค ๋ฉ์์ง๋ฅผ ๋ณด๋๋๊ฐโ๋ฅผ ์๊ฐ ์์๋๋ก ์๊ฐํํ๋ ๋ค์ด์ด๊ทธ๋จ์ด์์.
์ํํธ์จ์ด์ ๋์ ํ์(Behavioral Aspect)๋ฅผ ๋ช ํํ๊ฒ ๋ณด์ฌ์ฃผ๋ฉฐ, API ํธ์ถ ๊ตฌ์กฐ๋ ์๋น์ค ๊ฐ ํต์ ํ๋ฆ์ ์ค๊ณํ ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
์ฃผ์ ๊ตฌ์ฑ ์์:
- ๊ฐ์ฒด(Objects): ์ํธ์์ฉ์ ์ฐธ์ฌํ๋ ์ธ์คํด์ค
- ๋ฉ์์ง ์ํ์ค(Message Sequences): ์๊ฐ ์์์ ๋ฐ๋ฅธ ๋ฉ์์ง ์ ๋ฌ
์ค๋ฌด ํ์ฉ ์์:
์ฌ์ฉ์ ๋ก๊ทธ์ธ ํ๋ก์ธ์ค๋ฅผ ์ํ์ค ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ํํํ๋ฉด:
sequenceDiagram
participant User as ๐ง User
participant UI as ๐ป Web UI
participant Auth as ๐ AuthService
participant DB as ๐๏ธ Database
User->>UI: ๋ก๊ทธ์ธ ํด๋ฆญ
UI->>Auth: ์๊ฒฉ ์ฆ๋ช
(์ด๋ฉ์ผ, ๋น๋ฐ๋ฒํธ) ์ ์ก
Auth->>DB: ์ฌ์ฉ์ ์กฐํ ์ฟผ๋ฆฌ ์คํ
DB-->>Auth: ์ฌ์ฉ์ ์ ๋ณด ๋ฐํ
Auth-->>UI: ์ธ์ฆ ๊ฒฐ๊ณผ (์ฑ๊ณต/์คํจ)
UI-->>User: ๋ก๊ทธ์ธ ๊ฒฐ๊ณผ ํ์
์ํ์ค ๋ค์ด์ด๊ทธ๋จ์ API ์ค๊ณ, ๋๋ฒ๊น , ์์คํ ํตํฉ ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ํนํ ๋ถ์ฐ ์์คํ ์์ ์ฌ๋ฌ ์๋น์ค ๊ฐ์ ํต์ ํ๋ฆ์ ์ดํดํ๋ ๋ฐ ํจ๊ณผ์ ์ด์์.
์ํธ์์ฉ ๋ค์ด์ด๊ทธ๋จ (Interaction Diagram)
์ํธ์์ฉ ๋ค์ด์ด๊ทธ๋จ(Interaction Diagram)์ ๊ฐ์ฒด ๊ฐ์ ๋ฉ์์ง ๊ตํ๊ณผ ์ด๋ฒคํธ ํ๋ฆ์ ์๊ฐ ์์๋๋ก ํํํ๋ UML ๋ค์ด์ด๊ทธ๋จ์ ๋๋ค.
์ฆ, โ์ด๋ค ๊ฐ์ฒด๊ฐ ์ธ์ , ๋๊ตฌ์๊ฒ ๋ฌด์์ ์์ฒญํ๊ณ , ์ด๋ค ์๋ต์ ๋ฐ๋๊ฐโ๋ฅผ ๋ช ํํ ๋ณด์ฌ์ค๋๋ค. ์ด๋ฅผ ํตํด ์์คํ ์ ๋์ ํ์(Behavior)๋ฅผ ์ดํดํ๊ณ , ์ค์ ์คํ ํ๋ฆ์ ์๊ฐ์ ์ผ๋ก ๋ถ์ํ ์ ์์ต๋๋ค.
์ฃผ์ ๊ตฌ์ฑ ์์:
- ๊ฐ์ฒด(Objects): ์๋ก ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ฃผ์ฒด
- ๋ฉ์์ง(Messages): ๊ฐ์ฒด ๊ฐ ํธ์ถ์ด๋ ๋ฐ์ดํฐ ์ ๋ฌ
- ์๋ช ์ (Lifeline): ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋ ์๊ฐ์ ํ๋ฆ
- ํ์ฑ ๊ตฌ๊ฐ(Activation Bar): ๊ฐ์ฒด๊ฐ ์ค์ ๋ก ๋์ ์ค์ธ ๊ธฐ๊ฐ
์ค๋ฌด ํ์ฉ ์์:
๋ก๊ทธ์ธ ํ๋ก์ธ์ค์ ์ํธ์์ฉ ๋ค์ด์ด๊ทธ๋จ:
sequenceDiagram
participant User as ๐ง ์ฌ์ฉ์
participant Browser as ๐ ๋ธ๋ผ์ฐ์
participant Server as ๐ฅ๏ธ ์๋ฒ
participant DB as ๐๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค
User->>Browser: ๋ก๊ทธ์ธ ์ ๋ณด ์
๋ ฅ (email, password)
Browser->>Server: POST /api/login ์์ฒญ
Server->>DB: ์ฌ์ฉ์ ์ธ์ฆ ์ฟผ๋ฆฌ ์คํ (SELECT * FROM users)
DB-->>Server: ์ฌ์ฉ์ ์ ๋ณด ๋ฐํ
Server-->>Browser: ๋ก๊ทธ์ธ ์ฑ๊ณต ์๋ต (JWT ํ ํฐ)
Browser-->>User: ๋ก๊ทธ์ธ ์๋ฃ ๋ฐ ๋์๋ณด๋ ์ด๋
์ด ๋ค์ด์ด๊ทธ๋จ์ ํตํด โ์์ฒญ์ด ์ด๋ป๊ฒ ์ ๋ฌ๋๊ณ , ์ด๋์ ๊ฒ์ฆ๋๋ฉฐ, ์ด๋ค ์์๋ก ์๋ต์ด ์ค๋์งโ๋ฅผ ํ๋์ ํ์ ํ ์ ์์ต๋๋ค.
์ค์ ์์คํ ํต์ ํ๋ฆ, API ์ค๊ณ, ๋น๋๊ธฐ ํธ์ถ ๊ตฌ์กฐ ๋ฑ์ ๋ฌธ์ํํ ๋ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
์ปค๋ฎค๋์ผ์ด์ ๋ค์ด์ด๊ทธ๋จ (Communication Diagram)
์ปค๋ฎค๋์ผ์ด์ ๋ค์ด์ด๊ทธ๋จ(Communication Diagram)์ ๊ฐ์ฒด ๊ฐ ์ํธ์์ฉ(interaction)์ ํํํ๋ค๋ ์ ์์ ์ํ์ค ๋ค์ด์ด๊ทธ๋จ(Sequence Diagram)๊ณผ ๋งค์ฐ ์ ์ฌํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ํ์ค ๋ค์ด์ด๊ทธ๋จ์ด ์๊ฐ์ ํ๋ฆ(time ordering)์ ์ด์ ์ ๋ง์ถ๋ค๋ฉด, ์ปค๋ฎค๋์ผ์ด์ ๋ค์ด์ด๊ทธ๋จ์ ๊ฐ์ฒด ๊ฐ ๊ตฌ์กฐ์ ๊ด๊ณ(structural relationship)์ ๋ ์ค์ ์ ๋ก๋๋ค.
์ฆ, โ๋๊ฐ ๋๊ตฌ์ ์ฐ๊ฒฐ๋์ด ์๊ณ , ์ด๋ค ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋๊ฐโ๋ฅผ ๋คํธ์ํฌ ํํ๋ก ์๊ฐํํ๋ ๋ค์ด์ด๊ทธ๋จ์ด์์.
์ฃผ์ ๊ตฌ์ฑ ์์:
- ๊ฐ์ฒด(Objects): ํต์ ์ ์ฃผ์ฒด
- ๋งํฌ(Links): ๊ฐ์ฒด ๊ฐ ์ฐ๊ฒฐ ๊ด๊ณ
- ๋ฉ์์ง(Messages): ์ํธ์์ฉ์ ๋ํ๋ด๋ ํธ์ถ (๋ฒํธ๋ก ์์ ํ์)
์ค๋ฌด ํ์ฉ ์์:
์ฃผ๋ฌธ ์ฒ๋ฆฌ ๊ณผ์ ์ ์ปค๋ฎค๋์ผ์ด์ ๋ค์ด์ด๊ทธ๋จ:
graph LR
A[๊ณ ๊ฐ Client]
B[์ฃผ๋ฌธ ์๋น์ค OrderService]
C[์ฌ๊ณ ์๋น์ค InventoryService]
D[๊ฒฐ์ ์๋น์ค PaymentService]
A -- 1. ์ฃผ๋ฌธ ์์ฒญ --> B
B -- 2. ์ฌ๊ณ ํ์ธ ์์ฒญ --> C
C -- 3. ์ฌ๊ณ ์ํ ๋ฐํ --> B
B -- 4. ๊ฒฐ์ ์ฒ๋ฆฌ ์์ฒญ --> D
D -- 5. ๊ฒฐ์ ์น์ธ ๊ฒฐ๊ณผ --> B
B -- 6. ์ฃผ๋ฌธ ์๋ฃ ์๋ต --> A
๊ฐ ํ์ดํ์๋ ํธ์ถ ์์๊ฐ ์ซ์๋ก ํ์๋๋ฉฐ,
์ด ๋ฒํธ๋ฅผ ํตํด ์คํ ์์๋ฅผ ์ดํดํ ์ ์์ต๋๋ค.
์ปค๋ฎค๋์ผ์ด์ ๋ค์ด์ด๊ทธ๋จ์ โ๊ฐ์ฒด ๊ฐ ๊ด๊ณ ๊ตฌ์กฐ๋ฅผ ๋์์ ๋ณด๊ณ ์ถ์ ๋โ ํนํ ์ ์ฉํฉ๋๋ค.
์ค๋ฌด์์ UML ๋ค์ด์ด๊ทธ๋จ ํ์ฉํ๊ธฐ
์ด๋ค ๋ค์ด์ด๊ทธ๋จ์ ์ธ์ ์ฌ์ฉํ ๊น์?
๊ฐ UML ๋ค์ด์ด๊ทธ๋จ์ ํน์ ๋ชฉ์ ์ ์ต์ ํ๋์ด ์์ต๋๋ค. ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ๋ค์ด์ด๊ทธ๋จ์ ์ ํํ๋ ๊ฒ์ด ์ค์ํด์.
ํ๋ก์ ํธ ์ด๊ธฐ ๋จ๊ณ:
- ์ ์ค์ผ์ด์ค ๋ค์ด์ด๊ทธ๋จ: ์๊ตฌ์ฌํญ ์์ง
- ํด๋์ค ๋ค์ด์ด๊ทธ๋จ: ์์คํ ๊ตฌ์กฐ ์ค๊ณ
์์ธ ์ค๊ณ ๋จ๊ณ:
- ์ํ์ค ๋ค์ด์ด๊ทธ๋จ: ์ํธ์์ฉ ํ๋ฆ ์ ์
- ํ๋ ๋ค์ด์ด๊ทธ๋จ: ๋น์ฆ๋์ค ํ๋ก์ธ์ค ๋ชจ๋ธ๋ง
- ์ํ ๋จธ์ ๋ค์ด์ด๊ทธ๋จ: ๊ฐ์ฒด ์ํ ์ ์
๊ตฌํ ๋ฐ ๋ฐฐํฌ ๋จ๊ณ:
- ์ปดํฌ๋ํธ ๋ค์ด์ด๊ทธ๋จ: ๋ชจ๋ ๊ตฌ์กฐ ์ ์
- ๋ฐฐํฌ ๋ค์ด์ด๊ทธ๋จ: ์ธํ๋ผ ๊ตฌ์ฑ
UML ๋๊ตฌ ์ถ์ฒ
์ค๋ฌด์์ UML ๋ค์ด์ด๊ทธ๋จ์ ๊ทธ๋ฆด ๋ ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๋ค์ ํ์ฉํ ์ ์์ต๋๋ค:
- draw.io: ๋ฌด๋ฃ์ด๋ฉฐ ์ฌ์ฉ์ด ๊ฐํธํจ
- Lucidchart: ํ์ ๊ธฐ๋ฅ์ด ์ฐ์ํจ
- PlantUML: ์ฝ๋ ๊ธฐ๋ฐ ๋ค์ด์ด๊ทธ๋จ ์์ฑ
- StarUML: ์ ๋ฌธ์ ์ธ UML ๋ชจ๋ธ๋ง ๋๊ตฌ
ํนํ PlantUML์ ํ ์คํธ๋ก ๋ค์ด์ด๊ทธ๋จ์ ์์ฑํ ์ ์์ด, ๋ฒ์ ๊ด๋ฆฌ๊ฐ ์ฝ๊ณ ๊ฐ๋ฐ์๋ค์๊ฒ ์น์ํฉ๋๋ค.
UML๋ก ๋ ๋์ ์ํํธ์จ์ด ์ค๊ณํ๊ธฐ
UML ๋ค์ด์ด๊ทธ๋จ์ ๋จ์ํ ๊ทธ๋ฆผ์ด ์๋๋๋ค. ๋ณต์กํ ์์คํ ์ ๋ช ํํ ํํํ๊ณ , ํ์๋ค๊ณผ ํจ๊ณผ์ ์ผ๋ก ์ํตํ๋ฉฐ, ์ ์ง๋ณด์ ๊ฐ๋ฅํ ์ํํธ์จ์ด๋ฅผ ๋ง๋๋ ๊ฐ๋ ฅํ ๋๊ตฌ์์.
์ด ๊ธ์์ ์๊ฐํ ๋ค์ํ UML ๋ค์ด์ด๊ทธ๋จ ์ข ๋ฅ๋ฅผ ์ดํดํ๋ค๋ฉด, ์ด์ ์ค์ ํ๋ก์ ํธ์ ์ ์ฉํด๋ณผ ์ฐจ๋ก์ ๋๋ค. ์ฒ์๋ถํฐ ์๋ฒฝํ ๋ค์ด์ด๊ทธ๋จ์ ๊ทธ๋ฆฌ๋ ค๊ณ ํ์ง ๋ง์ธ์. ์์ ๋ถ๋ถ๋ถํฐ ์์ํ์ฌ ์ ์ฐจ ํ์ฅํด๋๊ฐ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๋ค์ ํ๋ก์ ํธ๋ฅผ ์์ํ ๋, ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์ ๋จผ์ ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ด๋ ์ํ์ค ๋ค์ด์ด๊ทธ๋จ์ ๊ทธ๋ ค๋ณด์ธ์. ์์คํ ์ค๊ณ์ ๋ํ ์๋ก์ด ํต์ฐฐ์ ์ป์ ์ ์์ ๊ฑฐ์์. UML์ ๋ง์คํฐํ๋ฉด ๋ ๊ฒฌ๊ณ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ํํธ์จ์ด๋ฅผ ์ค๊ณํ ์ ์์ต๋๋ค.
๊ถ๊ธํ ์ ์ด ์๊ฑฐ๋ ์ค๋ฌด์์ UML์ ์ด๋ป๊ฒ ํ์ฉํ๊ณ ์๋์ง ๊ณต์ ํ๊ณ ์ถ๋ค๋ฉด, ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์. ํจ๊ป ๋ฐฐ์ฐ๊ณ ์ฑ์ฅํ๋ ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ๋ฅผ ๋ง๋ค์ด๊ฐ์๋ค!