[UML] ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

[UML] ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

D
dongAuthor
6 min read

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์€ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ˜‘์—…ํ•˜๊ณ , ์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ๋ฅผ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ๋งŽ์ฃ . ์ด๋•Œ, ํ†ต์ผ๋œ ์•ฝ์†์œผ๋กœ ์‹œ์Šคํ…œ์„ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”? ๋ฐ”๋กœ ์—ฌ๊ธฐ์„œ UML(Unified Modeling Language)์ด ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค.

UML์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์„ ์‹œ๊ฐํ™”(Visualize)ํ•˜๊ณ , ๋ช…์„ธํ™”(Specify)ํ•˜๋ฉฐ, ๋ฌธ์„œํ™”(Document)ํ•˜๋Š” ํ‘œ์ค€ ๋ชจ๋ธ๋ง ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋‚˜ ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„๊ฐ€ ๋ณดํŽธํ™”๋˜๋ฉด์„œ UML์˜ ์ค‘์š”์„ฑ์€ ๋”์šฑ ์ปค์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋งŽ์€ UML ๋‹ค์ด์–ด๊ทธ๋žจ ์ค‘์—์„œ๋„ ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ(Class Diagram)์€ ์‹œ์Šคํ…œ์˜ ์ •์  ๊ตฌ์กฐ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ํ•ต์‹ฌ์ ์ธ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ ๊ตฌ์„ฑ ์š”์†Œ, ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ ํ™œ์šฉ๋ฒ•๊นŒ์ง€ ์ฐจ๊ทผ์ฐจ๊ทผ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ ๊ตฌ์กฐ๋ฅผ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ , ํŒ€์›๋“ค๊ณผ ํšจ๊ณผ์ ์œผ๋กœ ์†Œํ†ตํ•˜๋Š” ์—ญ๋Ÿ‰์„ ๊ฐ–์ถ”๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.


ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์˜ ํ•ต์‹ฌ ์š”์†Œ

ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์€ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜๋Š” ํด๋ž˜์Šค์™€ ๊ทธ๋“ค ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์น˜ ๊ฑด๋ฌผ์˜ ์„ค๊ณ„๋„์ฒ˜๋Ÿผ ์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ๋ฅผ ํ•œ๋ˆˆ์— ๋ณด์—ฌ์ฃผ๋Š” ๋„๊ตฌ์ฃ . ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์ œ๋Œ€๋กœ ์ฝ๊ณ  ๊ทธ๋ฆฌ๋ ค๋ฉด ๋จผ์ € ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1. ํด๋ž˜์Šค (Class)

ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ

ํด๋ž˜์Šค๋Š” ๋™์ผํ•œ ํŠน์ง•๊ณผ ํ–‰์œ„๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฐ์ฒด๋“ค์˜ ์ง‘ํ•ฉ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ๋Š” ์†์„ฑ(attributes)๊ณผ ์˜คํผ๋ ˆ์ด์…˜(operations)์„ ํฌํ•จํ•˜๋Š” ์‚ฌ๊ฐํ˜•์œผ๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.

  • ํด๋ž˜์Šค ์ด๋ฆ„: ์‚ฌ๊ฐํ˜•์˜ ๊ฐ€์žฅ ์œ—๋ถ€๋ถ„์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ๊ตต์€ ๊ธ€์”จ์™€ ๊ฐ€์šด๋ฐ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•˜๊ณ , ์ฒซ ๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ ํ‘œ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ๊ด€๋ก€์ž…๋‹ˆ๋‹ค.
  • ์†์„ฑ (Attributes): ํด๋ž˜์Šค๊ฐ€ ๊ฐ€์ง€๋Š” ์ •์  ๋ฐ์ดํ„ฐ ๋˜๋Š” ํ•„๋“œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ค‘๊ฐ„ ๋ถ€๋ถ„์— ์œ„์น˜ํ•˜๋ฉฐ ์™ผ์ชฝ ์ •๋ ฌ๋กœ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ์ ‘๊ทผ ์ œ์–ด์ž, ์ด๋ฆ„, ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ํ•จ๊ป˜ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.
    • + : public
    • - : private
    • # : protected
    • ~ : default (package-private)

์˜ˆ: userId, email, totalPrice ๋“ฑ

  • ์˜คํผ๋ ˆ์ด์…˜ ํ˜น์€ ๋ฉ”์„œ๋“œ (Operations ํ˜น์€ method): ํด๋ž˜์Šค๊ฐ€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ž‘, ์ฆ‰ ๋ฉ”์„œ๋“œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์•„๋žซ๋ถ€๋ถ„์— ์œ„์น˜ํ•˜๋ฉฐ, ์†์„ฑ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์™ผ์ชฝ ์ •๋ ฌ๋กœ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ: login(), calculateTotal(), cancelOrder() ๋“ฑ

  • ์ •์ (Static) ๋ฉค๋ฒ„: ์ •์  ์†์„ฑ์ด๋‚˜ ์˜คํผ๋ ˆ์ด์…˜์€ ์ด๋ฆ„์— ๋ฐ‘์ค„์„ ๊ทธ์–ด ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ’ก

UML ํ‘œ์ค€์—์„œ๋Š” ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ์˜ ์ˆœ์„œ๋‚˜ ์ค„๋ฐ”๊ฟˆ๋„ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ๊ฐœ๋ฐœํŒ€ ๋‚ด ๋ฌธ์„œํ™”๋ฅผ ์œ„ํ•ด์„œ๋Š” โ€˜ํŒ€ ๋‚ด UML ๋„ค์ด๋ฐ ๋ฃฐโ€™์„ ๋ณ„๋„๋กœ ์ •์˜ํ•ด๋‘๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.


2. ๊ด€๊ณ„ (Relationships)

ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์˜ ์ง„์ •ํ•œ ํž˜์€ ํด๋ž˜์Šค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๊ณ„๋Š” ์ฃผ๋กœ ํ™”์‚ดํ‘œ๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ชจ์–‘์˜ ํ™”์‚ดํ‘œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ํ™”์‚ดํ‘œ ๋ฐฉํ–ฅ์€ ํ•œ ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๊ด€๊ณ„ ์œ ํ˜• ์˜๋ฏธ ํ™”์‚ดํ‘œ/๊ธฐํ˜ธ ํ˜•ํƒœ ์„ค๋ช…
์ผ๋ฐ˜ํ™” (Generalization) ์ƒ์† ๊ด€๊ณ„ ์‹ค์„ ์˜ ํฐ์ƒ‰ ํ™”์‚ดํ‘œ ๋ถ€๋ชจ ํด๋ž˜์Šค(Superclass)์™€ ์ž์‹ ํด๋ž˜์Šค(Subclass) ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
์‹ค์ฒดํ™” (Realization) ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ ๊ด€๊ณ„ ์ ์„ ์„ ๊ฐ€์ง„ ํฐ์ƒ‰ ํ™”์‚ดํ‘œ ํด๋ž˜์Šค๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ implementsํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ ์„  ํ™”์‚ดํ‘œ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
์—ฐ๊ด€ (Association) ์ฐธ์กฐ ๊ด€๊ณ„ ์‹ค์„ ์˜ ํ™”์‚ดํ‘œ ํ•œ ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์†์„ฑ์œผ๋กœ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉํ–ฅ์„ฑ์€ ์ฐธ์กฐ ํ๋ฆ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
์˜์กด (Dependency) ์ผ์‹œ์  ์‚ฌ์šฉ ๊ด€๊ณ„ ์ ์„ ์˜ ํ™”์‚ดํ‘œ ํ•œ ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ๋ฉ”์„œ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜๋‚˜ ๋ฐ˜ํ™˜ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ด€๊ณ„์ž…๋‹ˆ๋‹ค.
์ง‘ํ•ฉ (Aggregation) ์•ฝํ•œ ์ „์ฒด-๋ถ€๋ถ„ ๊ด€๊ณ„ ํฐ์ƒ‰ ๋งˆ๋ฆ„๋ชจ๋กœ ์‹œ์ž‘๋œ ์‹ค์„ ์˜ ํ™”์‚ดํ‘œ โ€˜์ „์ฒดโ€™๊ฐ€ โ€˜๋ถ€๋ถ„โ€™์„ ํฌํ•จํ•˜์ง€๋งŒ, ๋ถ€๋ถ„์˜ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ์ „์ฒด์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ํ•ฉ์„ฑ (Composition) ๊ฐ•ํ•œ ์ „์ฒด-๋ถ€๋ถ„ ๊ด€๊ณ„ ๊ฒ€์ •์ƒ‰์˜ ๋งˆ๋ฆ„๋ชจ๋กœ ์‹œ์ž‘๋œ ์‹ค์„ ์˜ ํ™”์‚ดํ‘œ ๋ถ€๋ถ„์˜ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ์ „์ฒด์— ์™„์ „ํžˆ ์ข…์†๋  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ

์‡ผํ•‘๋ชฐ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๋ฉด. โ€˜์‚ฌ์šฉ์ž(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 >

ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์€ ์‹œ์Šคํ…œ์˜ ์ฒญ์‚ฌ์ง„ ์—ญํ• ์„ ํ•˜๋ฉฐ, ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ํŒ€์›๋“ค๊ณผ ๊ตฌ์กฐ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฐ ๋งค์šฐ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.


๊ณ ๊ธ‰ ๊ฐœ๋…: ์ถ”์ƒ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค

๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์—์„œ ์ถ”์ƒํ™”(Abstraction)๋Š” ํ•ต์‹ฌ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ๋„ ์ด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ถ”์ƒ ํด๋ž˜์Šค (Abstract Class): ์ง์ ‘ ์ธ์Šคํ„ด์Šคํ™”ํ•  ์ˆ˜ ์—†๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค ์ด๋ฆ„์„ _์ดํƒค๋ฆญ์ฒด_๋กœ ํ‘œ๊ธฐํ•˜๊ฑฐ๋‚˜, ์ด๋ฆ„ ์•„๋ž˜ {abstract} ํ‚ค์›Œ๋“œ ๋˜๋Š” ยซabstractยป ๊ธธ๋Ÿฌ๋ฉง์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ์ธํ„ฐํŽ˜์ด์Šค (Interface): ํด๋ž˜์Šค๊ฐ€ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ์˜คํผ๋ ˆ์ด์…˜์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค ์ด๋ฆ„ ์œ„์— ยซinterfaceยป ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์—ฌ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
๐Ÿฉผ

โ€˜์‹ค์ฒดํ™”(Realization)โ€™์™€ โ€˜๊ตฌํ˜„(Implementation)โ€™์€ ๊ฐ™์€ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. UML ํ‘œ์ค€์—์„œ๋Š” Realization์ด๋ผ๋Š” ์šฉ์–ด๋ฅผ ๊ณต์‹์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์€ ์–ธ์ œ ์‚ฌ์šฉํ• ๊นŒ?

ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์€ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ๋ชฉ์ ์œผ๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ๊ฐœ๋… ๋‹จ๊ณ„ (Conceptual): ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ ํด๋ž˜์Šค์™€ ๊ด€๊ณ„๋งŒ ๋‹จ์ˆœํžˆ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ดํ•ด์— ์ดˆ์ ์„ ๋‘ก๋‹ˆ๋‹ค.
  • ๋ช…์„ธ ๋‹จ๊ณ„ (Specification): ์‹ค์ œ ๊ฐœ๋ฐœ ์ „, ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์†์„ฑยท๋ฉ”์„œ๋“œยท๊ด€๊ณ„๋ฅผ ์ƒ์„ธํžˆ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€์˜ ์ฒญ์‚ฌ์ง„์ž…๋‹ˆ๋‹ค.
  • ๊ตฌํ˜„ ๋‹จ๊ณ„ (Implementation): ์‹ค์ œ ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ˜์˜ํ•œ ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ, ์œ ์ง€๋ณด์ˆ˜๋‚˜ ํƒ€์ธ์—๊ฒŒ ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ์„ค๋ช…ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋” ๋‚˜์€ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์ฒซ๊ฑธ์Œ

์ง€๊ธˆ๊นŒ์ง€ UML ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ ๊ณ ๊ธ‰ ํ™œ์šฉ๋ฒ•๊นŒ์ง€ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์€ ๋‹จ์ˆœํ•œ ๊ทธ๋ฆผ ์ž‘์—…์ด ์•„๋‹ˆ๋ผ, ์‹œ์Šคํ…œ ๊ตฌ์กฐ๋ฅผ ๊นŠ์ด ๊ณ ๋ฏผํ•˜๊ณ  ๋ณต์žกํ•œ ๊ด€๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ์ •๋ฆฌํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ์—” ์–ด์ƒ‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊พธ์ค€ํžˆ ์—ฐ์Šตํ•˜๋‹ค ๋ณด๋ฉด ์ฝ”๋“œ๋ณด๋‹ค ๋จผ์ € ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ์Šต๊ด€์ด ์ƒ๊น๋‹ˆ๋‹ค. ์ง€๊ธˆ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ๋‚˜ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ์— ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์ ์šฉํ•ด๋ณด์„ธ์š”. ์ด ์ž‘์€ ์‹œ๋„๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ๊ณผ ์„ค๊ณ„ ๋Šฅ๋ ฅ์„ ํ•œ ๋‹จ๊ณ„ ๋Œ์–ด์˜ฌ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก

ใ€ŠUML Distilledใ€‹๋Š” UML์„ ์‹ค๋ฌด ๊ด€์ ์—์„œ ๊ฐ€์žฅ ํšจ์œจ์ ์œผ๋กœ ์ตํž ์ˆ˜ ์žˆ๋Š” ์ž…๋ฌธ์„œ๋กœ, Martin Fowler๊ฐ€ ์ง‘ํ•„ํ•œ ๊ณ ์ „์ž…๋‹ˆ๋‹ค.


References

[UML] ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ธฐ