ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OOP/UML] Statechart Diagram
    Learn/OOP&UML 2022. 8. 17. 22:32

    Statechart diagram과 activity diagram은 비슷한데 그리는 방식이 반대이다. 

    그릴 내용이

        - finite state machine인 경우는 statechart를

        - business process인 경우는 activity diagram을 쓴다. 

     

    # State

    operations

        - entry: 들어옴

        - exit: 나감

        - do: 계속 진행

     

    # Transition

    state가 다른 state로 변하는 것에 대한 표현

        - 이벤트, 조건, 동작 포함

    아래의 경우 event1이 발생하면 일단 state를 나가야되므로 Activity2가 실행되고

    그 후에 Activity3 그리고 다시 들어와서 Activity1이 실행된다. 

    (※순서주의 Activity2 > Activity3 > Activity1)

     

    예제

    x=4가 들어옴  >  guard 만족하니 state를 나갈 수 있음  >  나가려고 보니 exit/x++있으므로 x=5가 됨

    > Action으로 *2가 있으니 x=10이 됨  >  다음 entry따라서 ++ 적용 x=11이 됨

    ※ action의 타이밍 주의

     

     

    Statechart는 Finite State Machine (FSM)인데 이는 세 가지 큰 특징을 가진다. 

    1. Composite State

    2. Orthogonal State

    3. History State

     

    # Composite State

    - State안에 State를 만드는 것

    - S1안에 S1.1, S1.2가 있음

    - State는 한 번에 반드시 한 개만 active되어야 함 (그래서 OR state라고 부름)

    아래 예시에서

    - e2 이벤트가 발생하면 activity는 a0 > a2 > a3 > a4로 실행됨 (S1.2는 active되지 않음)

    - e1이벤트가 발생하면 activity는 a0 > a1 > a3 > a7로 실행됨

     

    아래 예시에서

    - 시작하면 a3-a4 순으로 실행

    - e3 이벤트가 발생하면 a6(S1.1나감)-a5(S1나감)-a2-a1 순으로 실행

    - e5 이벤트가 발생하면 a6(S1.1나감)-a5(S1나감)-a3-a1 순으로 실행

    - e4 이벤트가 발생하면 a6(S1.1나감)-a7(S1.2들어옴)-a8(S1.2나감)-a5(S1나감)-a1(S2들어옴) 순으로 실행

     

    # Orthogonal State

    - State에 점선을 그어서 region을 만듦. 

    - State가 active되면 region들이 동시에 다 active됨 (그래서 AND state라고 부름)

    - 어디로 들어오든 다 active됨

    - 다 끝나면 다른 region이 끝나길 기다렸다가 같이 나감 --> deadlock 발생할 수 있음

     

    # Submachine State (SMS)

    - 누르면 안에 state chart가 더 있다는 뜻 (복잡할까봐 따로 그림)

     

    # History State

    - * 표시가 있으면 Deep(Strong) History, 없으면 Shallow history

    - 이전에 튕겨져나온 곳으로 돌아가는데, deep이냐 shallow냐에 따라 돌아가는 hierarchy가 다르다. 

    [예시]

    - S1.2에서 e10에 의해 밖으로 튕겨져나왔다. 

    - Shallow (H)일 경우 본인의 레벨과 같은 S1으로 돌아가서 S1.1부터 시작한다. 

    - Deep (H*)일 경우 튕겨져나왔던 S1.2로 돌아간다. 

    - H* 에 빠져나가는 화살표가 있는데, 이는 히스토리가 저장되지 않았을 때 가는 곳이다. 

     

    # QUIZ

    1. 클래스 뿐만 아니라 operation 수준에서도 가능하다. 보통은 프로세스 레벨에서도 많이 사용한다. 

    2. 맞음. 

    3. Composite state 방식을 사용하면 Top-down으로 그릴 수 있다. submachine state를 통해서도 가능하다. 

    4. 정답. 시간의 순서를 어느정도 표현할 수 있지만 "정확히"라고 되어있어서 틀림. 

        상대적으로는 가능하지만 절대적인 시간을 표현할 수 없다. (문제가 좀...)

     

    Start 후 e1을 통해 S1으로 들어옴. 

    e2를 통해 S1.1에서 S1.2로 이동

    e10은 S4에서 밖으로 나가는 곳에 있으므로 S5로 탈출

    e9이므로 shallow history로 이동

    H가 정의된 것과 같은 레벨인 S1으로 들어가서 S1.1로 이동 (최종)

     

    'Learn > OOP&UML' 카테고리의 다른 글

    [OOP/UML] Component Diagram  (0) 2022.08.17
    [OOP/UML] Activity Diagram  (0) 2022.08.17
    [OOP/UML] Sequence Diagram  (0) 2022.08.14
    [OOP/UML] Class Diagram  (0) 2022.08.12
    [OOP/UML] Use Case Diagram  (0) 2022.08.10

    댓글

Designed by Tistory.