[UML] μνμ€ λ€μ΄μ΄κ·Έλ¨(Sequence Diagram)
UMLμ μ’ λ₯ μ€ μνμ€ λ€μ΄μ΄κ·Έλ¨(Sequence Diagram)μ λν΄ μμΈν μμ보μ.
κ·Έμ μ, UML(Unified Modeling Language) μ΄λ?
π₯ μνμ€ λ€μ΄μ΄κ·Έλ¨(Sequence Diagram)λ ?
βοΈ κ°μ²΄λ€ μ¬μ΄μμ μκ°μ λ°λΌ λ°μνλ μνΈμμ©μ 보μ¬μ£Όλ λ€μ΄μ΄κ·Έλ¨
βοΈ λ¬Έμ ν΄κ²°μ νμν κ°μ²΄λ₯Ό μ μ, κ°μ²΄κ°μ μ‘/μμ λ©μμ§μ μμλ₯Ό μκ°μ νλ¦μ λ°λΌ νμνλ λ€μ΄μ΄κ·Έλ¨
βοΈ μΌλ°μ μΌλ‘ νλ©΄ μꡬμ¬νκ³Ό ν΄λμ€ λ€μ΄μ΄κ·Έλ¨ κΈ°λ°μΌλ‘ μμ± >> μνμ€ λ€μ΄μ΄κ·Έλ¨κ³Ό ν΄λμ€ λ€μ΄μ΄κ·Έλ¨ ν¬λ‘μ€ μ²΄ν¬
π₯ μνμ€ λ€μ΄μ΄κ·Έλ¨(Sequence Diagram) ꡬμ±μμ
1. μ‘ν°(Actor) : μμ€ν μΌλ‘λΆν° μλΉμ€λ₯Ό μμ²νλ μΈλΆ μμλ‘ μ¬λμ΄λ μΈλΆμμ€ν μ μλ―Έ
2. κ°μ²΄(Object) : ν΄λμ€μ κ°μ²΄
3. μλͺ μ (Lifeline) : κ°μ²΄μ μμ±, μλ©Έ, νμ±νλ λλ₯Ό λνλ΄λ μ (μ -> μλ, μ μ )
4. νμ± λ°μ€(Activation Box) : κ°μ²΄κ° λ€λ₯Έ κ°μ²΄μ μνΈμμ©νλ©° νμ±ν λκ³ μμμ νν (μ§μ¬κ°ν)
5. λ©μΈμ§(Message) : κ°μ²΄κ° μ£Όκ³ λ°μ λ°μ΄ν°, μΌλ°μ μΌλ‘ μμ²(request)κ³Ό μλ΅(response)λ‘ κ΅¬μ±
π₯ λ©μμ§ νκΈ°λ² π₯
μ ν | μλ―Έ |
λκΈ° λ©μμ§(Synchronous message) | λ©μμ§ μ μ‘ κ°μ²΄κ° κ³μνκΈ° μ κΉμ§ λκΈ° λ©μμ§μ λν μλ΅μ κΈ°λ€λ¦Ό. νλ‘κ·Έλ¨ λ΄ μΌλ°μ μΈ ν¨μ νΈμΆκ³Ό λμΌν λμ λ°©μμ λ©μμ§λ₯Ό νν |
λΉλκΈ° λ©μμ§(Async message) | λ©μμ§ μ μ‘ κ°μ²΄κ° κ³μνκΈ° μ κΉμ§ μλ΅μ μꡬνκΈ° μλ λ©μμ§. μ μ‘ κ°μ²΄μ νΈμΆλ§μ νμ.λ³΄ν΅ κ°λ³ μ°λ λ κ°μ ν΅μ λ° μ μ°λ λμ μμ±μ μ¬μ© |
μ체 λ©μμ§(Self message) | μΈμ€ν΄μ€κ°μ μνΈμμ© λΏλ§ μλλΌ νλμ μΈμ€ν΄μ€μμ μ²λ¦¬λ₯Ό νλ λ°©λ²λ μ’
μ’
μμ΅λλ€. μ΄λ΄λλ self λ©μμ§λ₯Ό μ¬μ©ν μ μμ΅λλ€. self messageλ λ³ΈμΈμ lifelineμΌλ‘ μ¬κ· νλ νμ΄νλ₯Ό κ°μ§κ³ μμ΅λλ€. μμ μκ² λ³΄λΈ λ©μμ§μ λλ€. κ²°κ³Όλ‘ μμ±λ μ€ν λ°μμ΄ μ μ‘ μ€ν μμ λνλ¨. |
λ°ν λ©μμ§(Reply/Return message) | μ΄μ νΈμΆμ λ°νμ κΈ°λ€λ¦¬λ κ°μ²΄μκ² λ€μ λ°νλλ λ©μμ§. |
βοΈ λκΈ° λ©μμ§ (Synchronous message)
μ€μ + λ΄λΆκ° μ±μμ§ νμ΄νλ‘ νκΈ°
λ¦¬ν΄ λ°μ λκΉμ§ λ€λ₯Έ λμμμ΄ λκΈ°
βοΈ λΉλκΈ° λ©μμ§ (Asynchronous message)
μ€μ + λ΄λΆκ° μ±μμ§μ§ μμ νμ΄νλ‘ νκΈ°
리ν΄μ κΈ°λ€λ¦¬μ§ μκ³ λ€λ₯Έ μμ μ μν
βοΈ μ체 λ©μμ§ (Self message)
λ³ΈμΈμ LifelineμΌλ‘ νκ·νλ νμ΄νλ₯Ό κ·Έλ¦Ό
βοΈ λ°ν λ©μμ§ (Reply/Return message)
μ μ κ³Ό μ μΌλ‘ μ΄λ€μ§ νμ΄νλ‘ νν
π₯ κ°λ(Guard) & νλκ·Έλ¨ΌνΈ(Combine Fragment) π₯
βοΈ κ°λ(Guard)
: guardλ λ¨μΌ λ©μμ§μ λν΄μ 쑰건μ λͺ μν μ μλ λ°©λ²
쑰건μ λͺ μ -> [쑰건] μ²λ¦¬λ©μμ§
βοΈ νλκ·Έλ¨ΌνΈ(Fragment)
guardκ° ν λ©μμ§μ λν΄μ 쑰건μ λͺ μνλ€λ©΄, sequnce fragmentsλ λ²μλ‘ μ‘°κ±΄μ λͺ μν μ μλ€.
μ¦, νΉμ λΆλΆμ λν΄μ μΌμ λΆλΆμ λ©μμ§λ₯Ό λ°λ³΅νλμ§ μ‘°κ±΄μ λͺ μνλμ§ ν λλ sequence fragmentsκ° λͺ νν μ μλ€.
νλκ·Έλ¨ΌνΈμλ λμ(alt), μ΅μ (opt), λ°λ³΅(loop),λ³λ ¬(Par), μ°Έμ‘°(Ref)κ° μλ€.
βοΈ (1) λμ(alt)
λ€μ€ 쑰건문, else if κ°μ λμμ΄ μλ 쑰건문
βοΈ (2) μ΅μ (opt)
λ¨μΌ 쑰건문, if, switch
βοΈ (3) λ°λ³΅(loop)
λ°λ³΅λ¬Έ, for, while
βοΈ(4) λ³λ ¬(Par)
λ³λ ¬μ²λ¦¬, λΆλ¦¬λ λͺ κ°μ μνΈμμ©μ΄ λμμ
βοΈ (5) μ°Έμ‘°(Ref)
μΈλΆμμ μ μλ μνμ€ λ€μ΄μ΄κ·Έλ¨μ ν¬ν¨
βοΈ μνμ€ λ€μ΄μ΄κ·Έλ¨κ³Ό ν΄λμ€ λ€μ΄μ΄κ·Έλ¨ ν¬λ‘μ€ μ²΄ν¬ νμ!
μΌλ°μ μΌλ‘ μνμ€ λ€μ΄μ΄κ·Έλ¨μ ν΄λμ€ λ€μ΄μ΄κ·Έλ¨ κΈ°λ°μΌλ‘ μμ±λκΈ° λλ¬Έμ μμ± ν ν΄λμ€ λ€μ΄μ΄ κ·Έλ¨κ³Ό ν¬λ‘μ€ μ²΄ν¬κ° νμν©λλ€.
ν΄λμ€ λ€μ΄μ΄κ·Έλ¨μ΄λ?