[Developer] 초보 개발자

UML 상태 다이어그램이란? State diagram이란?

OnceBH 2022. 6. 10. 21:18
반응형

UML 상태 다이어그램이란? State diagram이란?

 

안녕하세요!

오늘은 UML 중 하나인 상태 다이어그램 즉 State diagram 독일어로는  Zustanddiagramm을 배워보도록 하겠습니다.

상태 다이어그램은 활동 다이어그램 즉 Activity diagram과 굉장히 유사합니다.

그렇기 때문에 잘못 표기하시는 일이 일어나지 않도록 조심하셔야 합니다.

자 그럼 처음 구성요소부터 간단한 사용법과 예제를 보도록 하겠습니다.

 

  1. 구성요소.
  2. 사용법.
  3. 예제.
  4. 마치며.

 

 

1. 구성요소.

그래프를 그리는만큼 구성요소는 비교적 아주 간단합니다.

 

시작.

이 요소는 그래프의 시작을 나타내는 요소입니다. 빨간 테두리는 검은색으로 칠해져도 무관합니다.

이렇게 안이 꽉 차 있는 원이 상태 다이어그램의 시작을 나타냅니다.

상태 다이어그램은 시작 요소 없이 진행되거나 작성될 수 없습니다.

 

마침.

 

이 요소는 그래프를 끝낼 때 사용하는 요소입니다. 위와 마찬가지로 빨간 선들은 검은색으로 칠해져도 무관합니다.

여기서 시작과 마침 요소의 차이점은 꽉 찬 원 밖에 테두리가 존재하는가 하지 않는가입니다.

그래프를 작성하실 때 이 부분을 조금 더 신경 쓰시면 좋을듯합니다.

 

상태.

자 이 요소는 상태를 나 나태는 요소입니다. 여기서 주의하셔야 할 2가지 사항이 있습니다.

첫 번째는 항상 상태 요소는 네모 반듯한 직각이 아닌 모서리가 둥근 사각형이 여야 합니다.

두 번째는 상태 요소에는 상태가 묘사되어야 합니다. 행동이 묘사되어서는 안 됩니다.

예를 들어 "문 열기", "문 닫기"와 같은 행동이 묘사되어서는 안 됩니다.

"문 열림", "문 닫힘"과 같은 현재 대상의 상태가 표현되어야 합니다.

 

전이.

전이는 상태가 시작, 마침, 그리고 상태가 변화할 때 사용되게 됩니다.

화살표는 한쪽만 존재하며 양방향으로 존재할 수 없습니다. 이는 한 선에 화살표가 양쪽으로 존재할 수 없다는 뜻이지, 각각의 상태가 한 방향으로만 진행되거나 변화해야 한다는 것은 아닙니다.

 

전이는 2가지로 알려드리겠습니다. 사실 UML의 단점은 나라 혹은 사용자마다 조금씩 다르다는 점입니다.

처음의 <<문 열기>>의 경우 간단한 행동만 묘사되는 반면 가끔 조건이 따라붙는 경우도 있습니다.

예를 들면 문열기 [현재 평균온도가 35도 이상시] 와같이 말입니다.

또한 조건이 존재하지 않을 경우에도 따로 <<>>를 사용하지 않고 간단히 행동만 묘사하기도 합니다.

 

 

2. 사용법.

자 앞서 사용할 때 필요한 필요한 요소들을 배웠습니다. 사실 더 많은 요소들이 존재하지만 사실 상태 다이어그램을 그리기 위해서

이 정도의 요소들만 알아도 문제없이 멋진 상태 다이어그램을 만드실 수 있습니다.

자 이번에는 간단한 사용법을 배워보도록 하겠습니다.

자 어떤 사람이 건물에 들어가려고 하며 현재는 문이 열려있는 상태라고 가정합니다.

이때 들어간 사람은 문을 닫을 수 있습니다. 또한 다시 문을 열 수 있습니다. 그리고 문을 닫은 채 건물 내 2층으로 갈 수 있습니다.

이때 검은색 원은 시작 지점을 나타냅니다. 그리고 당연히 테두리가 있는 검은색 원은 마침을 뜻합니다. 

이때 문은 열고 닫힐 수 있으며, 이는 상태로 나타냅니다. 즉 문 열림, 문 닫힘과 같이 말입니다.

또한 이러한 문을 열고 닫으려면 건물에 진입한 사람은 문을 열고 닫아야 합니다. 즉 행동을 취해야 합니다.

이때 문을 열고 닫음으로 문의 상태를 변경할 수 있습니다. 마지막으로 2층으로 가기 위해서는 항상 문이 닫힌 상태여야 합니다.

위의 그래프를 보시더라도 문 딛힘에서 마침으로는 이어져있지만, 문 열림에서 2층으로는 연결되어있지 않습니다.

즉 사람이 2층으로 가기 위해서는 꼭 문을 닫아야 한다는 뜻입니다. 즉 문이 닫혀있는 상태여야 한다는 말입니다.

 

 

3. 예제.

자 이번에는 제가 예제를 드리겠습니다.

아래의 문장을 잘 읽어보기고 직접 그래프를 그려보시기 바랍니다.

당연히 정답은 아래에 작성해 놓겠습니다.

 

예제.

배터리 충전 상태를 나타내는 상태 그래프를 그리고 싶습니다.

배터리를 충전기에 꽂으면 항상 배터리 상태는 "비어있음"을 나타냅니다.

이때 배터리가 5퍼센트 이상 99퍼센트 미만으로 충전이 되어있다면 배터리의 상태는 "충전 중"으로 나타나야 합니다.

마지막으로 배터리가 99퍼센트 이상 충전되었다면 배터리는 "충전 완료" 상태로 나타나야 하며, 100퍼센트 모두 충전되었다면,

배터리는 자동으로 충전을 멈추게 됩니다.

정답은 아래에 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

자 처음 배터리는 충전할 때 항상 비어있음 상태로 시작됩니다.

그 뒤 배터리가 5퍼센트 이상 99퍼센트 미만 시 충전 중 상태로 들어갑니다.

이때 5퍼센트에서 98퍼센트 미만까지는 항상 충전 중 상태를 유지하게 되므로 재귀되어야 합니다.

그리고 99퍼센트 이상이 되면 항상 충전 완료 상태로 변하여야 하며 마지막 배터리가 100퍼센트라면 충전이 종료되어야 합니다.

 

자 어떤가요? 스스로 그려본 그래프와 닮아있나요?? 사실 그래프에는 정답이 없습니다.

혹시나 제가 그린 것과 다르다고 너무 상심하지 않으셔도 됩니다. 그래프는 알아볼 수 있고 이해가 되는 수준이라면 어떻게 그려지든 크게 상관없습니다.

 

 

4. 마치며.

그래프는 왜 그려야 할까요? 왜 필요한 것일까요??

이는 다름 아닌 쉽게 접근하고 볼 수 있으며 이해하기 간편하다는 장점이 큰 이유이지 않을까 싶습니다.

프로젝트를 구상하고 구현할 때 그래프는 정말 빠질 수 없는 요소입니다.

그래프를 통해서 팀원과 좀 더 쉽게 대화를 이룰 수 있고, 더욱 쉽게 접근하고 이해할 수 있습니다.

 

오늘은 가볍게 상태 다이어그램 State diagram에 관해 배워보았습니다.

요 근래 UML을 검색하시고 제 블로그를 방문해주시는 분들이 많아졌습니다.

예전에 올려놓은 UML은 정말 간단히 정리만 한 글이었기에, 가능하다면 각각 자주 사용되는 그래프들을 좀 더 자세하게 다루어 보는 것도 나쁘지 않을 것 같다는 생각이 들었습니다.

 

오늘도 즐거운 하루 보내시고 항상 파이팅 하시기 바랍니다!

무슨 일이든 처음이 가장 겁나고 어려운 법입니다.

하시는 일 꼭 모두 잘 이루시고 새로운 도전도 고민보다는 설렘을 가지고 시작하시기 바랍니다.

 

완벽한 준비란 없다, 완벽한 준비란 영원히 시작하지 않는 것과 같다.

Es gibt keine perfekte Vorbereitung.

Perfekte Vorbereitung ist das Gleiche, wie nie anzufangen.

반응형