UML이란?

UML은 Unified Modeling Language(통합 모델링 언어)의 약자로 1997년, OMG(Object Management Group) 표준화 기구에서 모델을 만드는 표준 언어로 채택되었습니다. UML은 객체 지향 소프트웨어를 개발할 때 시스템과 산출물을 명세화, 시각화, 문서화할 때 사용합니다.
UML을 사용하는 이유?
- 복잡한 아이디어와 시스템을 비개발자도 쉽게 이해
- 시스템의 전체 구조를 이미지로 한눈에 쉽게 파악
- 표준화된 기호를 이용하기 때문에 서로 다른 개발자와 소통 불일치 방지
소프트웨어를 개발 또는 분석 설계를 위해 개발자, 기획자, 아키텍처 등이 참여를 합니다. 클라이언트의 요구사항을 해결하기 위한 기능에 대해서 코드로 작성하면 너무 길어지고 한번에 이해하기는 더더욱 힘듭니다.
해당 기능에 대한 수많은 코드들을 UML을 이용해 시각화하면, 정보들이 단순화되어 이해하는데 쉽고 커뮤니케이션을 더 원할하게 해주는 장점이 있습니다.
대표적인 다이어그램들
다이어그램은 크게 구조도 다이어그램과 행동 다이어그램, 두가지로 나뉘는데요. 해당 포스팅에서는 가장 많이 사용되는 3가지에 대해서 알아보겠습니다.
- 클래스 다이어그램: 클래스의 속성, 메서드, 관계를 표현합니다.
- 유스케이스 다이어그램: 사용자(Actor)의 관점에서 시스템의 기능, 상호작용과 그들간의 관계를 표현합니다.
- 시퀀스 다이어그램: 객체간의 상호작용을 시간의 흐름에 따라 나타냅니다.
1. 클래스 다이어그램 (Class Diagram)
예를들어, 자동차에 대해서 클래스를 글로 정의한다면 다음과 같이 정의할 수 있습니다.
- Coffee 클래스를 정의합니다.
- 이름을 나타내는
name: String
변수, 단맛을 나타내는Sweetnees: int
변수, 산미를 나타내는acidity: int
변수가 있습니다. - 함수의 이름은 make이고 리턴타입은 void인 함수를 정의합니다.
- 이름을 나타내는
- Coffee 클래스를 상속받는
Americano
클래스를 정의합니다.addShot
이라는 함수의 리턴타입은 void인 함수를 정의합니다.
- Coffee 클래스를 상속받는
Vanila Latte
클래스를 정의합니다.addShot
이라는 함수의 리턴타입은 void인 함수를 정의합니다.addSyrup
이라는 함수의 리턴타입은 void인 함수를 정의합니다.
위 설명을 클래스 다이어그램으로 나타내보면 어떻게 될까요?

이렇게 그림 하나로 설명을 할 수 있습니다. 어떤가요? 그림으로 그려서 보니까 훨씬 더 이해가 빠르지 않나요? 이렇게 다이어그램으로 협업하면 오해와 불필요한 소통은 줄이고 명확하게 소통을 할 수 있습니다. 하지만 클래스다이어그램은 함수의 내부구현까지는 알지 못합니다.
2. 유스케이스 다이어그램 (Usecase Diagram)
유스 케이스 다이어그램은 사용자의 관점에서 어떤 행동을 하는지, 그리고 그 행동을 위해 어떤 과정이 있는지 그 과정 끝에 어떤 결과가 발생하는지에 대해서 그림으로 그려낸 것 입니다.
웹 사이트에 대한 유스케이스를 먼저 나열해보면 뭐가 있을까요?
- 사용자는 로그인을 할 수 있다.
- 문서를 검색할 수 있다.
- 검색한 문서를 미리보기할 수 있다.
- 문서는 다운로드할 수 있다.
- 진행중인 이벤트들을 볼 수 있다.
- 사용자는 문서를 업로드할 수 있다.
- 업로드한 문서들을 관리할 수 있다.
- 사용자를 추가할 수 있다.. 등등..
위에서 나열한 기능들을 유스케이스로 변환하면 다음과 같습니다.

유스케이스는 사용자 관점에서 어떤 행동들이 있고 그 행동들은 또 어떤 행동들과 연관이 있는지에 대해서 큰 틀을 이해하는데 최적화되어 있습니다. 하지만 그 행동에 어떤 정보가 오고가는지에 대해서는 자세하게 알 수 없습니다.
3. 시퀀스 다이어그램 (Sequence Diagram)
시퀀스 다이어그램은 왼쪽 위에서 부터 오른쪽 아래로 순차적으로 흘러가는 다이어그램입니다. 데이터가 어떻게 흘러가는지와 결론적으로 어느곳으로 도달하는지에 대해서 한눈에 알 수 있습니다.
사용자가 휴대폰으로 사진을 찍을 때 데이터의 흐름을 적어보겠습니다.
- 카메라 앱을 실행합니다.
- 카메라 앱을 디바이스의 카메라에 접근합니다.
- 사용자는 카메라로 보는 화면을 볼 수 있습니다.
- 사진을 찍습니다.
위 과정을 시퀀스 다이어그램으로 옮겨보면 다음과 같습니다.

시퀀스 다이어그램은 말 그대로 순서대로 흘러가는 그림이기 때문에 비개발자도 쉽게 보고 이해할 수 있습니다. 하나의 기능에 대해서 표현하기 때문에 전체 기능을 표현할 수 없다는 단점이 있습니다.
Outro
위에서 소개해드린 것 말고 더 많은 다이어그램들이 존재합니다. 처음엔 UML로 그리기 매우 귀찮습니다.. UML을 그리다보면 차라리 이 시간에 개발을 하는게 더 빠르지 않을까?
라는 생각이 들기도 하구요..
하지만 해보시면 다를 겁니다. 이런 문서들을 작성하지 않고 개발하다보면 어느 순간 길을 잃을 때가 많습니다. 글로 작성된 문서를 보면 전에는 명확하게 정의내릴 수 있었는데 시간이 지나다보면 인간은 망각의 동물이라고 잊어버리고 다시 그 가닥을 잡기위해 더 많은 시간을 투자해야하구요.
그럴 땐 UML을 그려놓으면 한눈에 이해할 수 있어서 나중에 개발할 때 막히더라도 금방 이해하고 다시 개발에 전념할 수 있습니다! 개발자 기획자 간 원할한 협업을 위해서도 UML은 필수라고 생각합니다!
긴 글 읽어주셔서 감사합니다. 다음 시간에는 더 많은 UML에 대해서 더 자세하게 다뤄보도록 하겠습니다.
REFERENCES
개발자들의 의사소통을 위한 언어, UML 알아보기 | 요즘IT
UML은 개발자와 개발 프로젝트를 위한 시각적 도구입니다. 마치 우리가 조별과제를 하면서 서로 소통에 문제가 생기거나, 잘못된 결과를 만들기도 하듯이 개발자들이 함께 모여 작업을 할 때는
yozm.wishket.com
Sequence Diagrams | Unified Modeling Language (UML) - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
www.geeksforgeeks.org
UML diagrams: What are they and how to use them | MiroBlog
Find out everything you need to know about UML diagrams, including the different formats available and how to use them.
miro.com
UML 배워보기 시리즈 #1 UML과 다이어그램의 종류
컴퓨터 공학을 배웠다면 아마 대부분은 한 번쯤 UML 다이어그램을 듣거나 보셨을 겁니다.UML 다이어그램은 개발 과정에서 프로그램을 문서화 하는데 중요한 역할을 하지만, 자세히 배운 분들이
velog.io
UML이란?

UML은 Unified Modeling Language(통합 모델링 언어)의 약자로 1997년, OMG(Object Management Group) 표준화 기구에서 모델을 만드는 표준 언어로 채택되었습니다. UML은 객체 지향 소프트웨어를 개발할 때 시스템과 산출물을 명세화, 시각화, 문서화할 때 사용합니다.
UML을 사용하는 이유?
- 복잡한 아이디어와 시스템을 비개발자도 쉽게 이해
- 시스템의 전체 구조를 이미지로 한눈에 쉽게 파악
- 표준화된 기호를 이용하기 때문에 서로 다른 개발자와 소통 불일치 방지
소프트웨어를 개발 또는 분석 설계를 위해 개발자, 기획자, 아키텍처 등이 참여를 합니다. 클라이언트의 요구사항을 해결하기 위한 기능에 대해서 코드로 작성하면 너무 길어지고 한번에 이해하기는 더더욱 힘듭니다.
해당 기능에 대한 수많은 코드들을 UML을 이용해 시각화하면, 정보들이 단순화되어 이해하는데 쉽고 커뮤니케이션을 더 원할하게 해주는 장점이 있습니다.
대표적인 다이어그램들
다이어그램은 크게 구조도 다이어그램과 행동 다이어그램, 두가지로 나뉘는데요. 해당 포스팅에서는 가장 많이 사용되는 3가지에 대해서 알아보겠습니다.
- 클래스 다이어그램: 클래스의 속성, 메서드, 관계를 표현합니다.
- 유스케이스 다이어그램: 사용자(Actor)의 관점에서 시스템의 기능, 상호작용과 그들간의 관계를 표현합니다.
- 시퀀스 다이어그램: 객체간의 상호작용을 시간의 흐름에 따라 나타냅니다.
1. 클래스 다이어그램 (Class Diagram)
예를들어, 자동차에 대해서 클래스를 글로 정의한다면 다음과 같이 정의할 수 있습니다.
- Coffee 클래스를 정의합니다.
- 이름을 나타내는
name: String
변수, 단맛을 나타내는Sweetnees: int
변수, 산미를 나타내는acidity: int
변수가 있습니다. - 함수의 이름은 make이고 리턴타입은 void인 함수를 정의합니다.
- 이름을 나타내는
- Coffee 클래스를 상속받는
Americano
클래스를 정의합니다.addShot
이라는 함수의 리턴타입은 void인 함수를 정의합니다.
- Coffee 클래스를 상속받는
Vanila Latte
클래스를 정의합니다.addShot
이라는 함수의 리턴타입은 void인 함수를 정의합니다.addSyrup
이라는 함수의 리턴타입은 void인 함수를 정의합니다.
위 설명을 클래스 다이어그램으로 나타내보면 어떻게 될까요?

이렇게 그림 하나로 설명을 할 수 있습니다. 어떤가요? 그림으로 그려서 보니까 훨씬 더 이해가 빠르지 않나요? 이렇게 다이어그램으로 협업하면 오해와 불필요한 소통은 줄이고 명확하게 소통을 할 수 있습니다. 하지만 클래스다이어그램은 함수의 내부구현까지는 알지 못합니다.
2. 유스케이스 다이어그램 (Usecase Diagram)
유스 케이스 다이어그램은 사용자의 관점에서 어떤 행동을 하는지, 그리고 그 행동을 위해 어떤 과정이 있는지 그 과정 끝에 어떤 결과가 발생하는지에 대해서 그림으로 그려낸 것 입니다.
웹 사이트에 대한 유스케이스를 먼저 나열해보면 뭐가 있을까요?
- 사용자는 로그인을 할 수 있다.
- 문서를 검색할 수 있다.
- 검색한 문서를 미리보기할 수 있다.
- 문서는 다운로드할 수 있다.
- 진행중인 이벤트들을 볼 수 있다.
- 사용자는 문서를 업로드할 수 있다.
- 업로드한 문서들을 관리할 수 있다.
- 사용자를 추가할 수 있다.. 등등..
위에서 나열한 기능들을 유스케이스로 변환하면 다음과 같습니다.

유스케이스는 사용자 관점에서 어떤 행동들이 있고 그 행동들은 또 어떤 행동들과 연관이 있는지에 대해서 큰 틀을 이해하는데 최적화되어 있습니다. 하지만 그 행동에 어떤 정보가 오고가는지에 대해서는 자세하게 알 수 없습니다.
3. 시퀀스 다이어그램 (Sequence Diagram)
시퀀스 다이어그램은 왼쪽 위에서 부터 오른쪽 아래로 순차적으로 흘러가는 다이어그램입니다. 데이터가 어떻게 흘러가는지와 결론적으로 어느곳으로 도달하는지에 대해서 한눈에 알 수 있습니다.
사용자가 휴대폰으로 사진을 찍을 때 데이터의 흐름을 적어보겠습니다.
- 카메라 앱을 실행합니다.
- 카메라 앱을 디바이스의 카메라에 접근합니다.
- 사용자는 카메라로 보는 화면을 볼 수 있습니다.
- 사진을 찍습니다.
위 과정을 시퀀스 다이어그램으로 옮겨보면 다음과 같습니다.

시퀀스 다이어그램은 말 그대로 순서대로 흘러가는 그림이기 때문에 비개발자도 쉽게 보고 이해할 수 있습니다. 하나의 기능에 대해서 표현하기 때문에 전체 기능을 표현할 수 없다는 단점이 있습니다.
Outro
위에서 소개해드린 것 말고 더 많은 다이어그램들이 존재합니다. 처음엔 UML로 그리기 매우 귀찮습니다.. UML을 그리다보면 차라리 이 시간에 개발을 하는게 더 빠르지 않을까?
라는 생각이 들기도 하구요..
하지만 해보시면 다를 겁니다. 이런 문서들을 작성하지 않고 개발하다보면 어느 순간 길을 잃을 때가 많습니다. 글로 작성된 문서를 보면 전에는 명확하게 정의내릴 수 있었는데 시간이 지나다보면 인간은 망각의 동물이라고 잊어버리고 다시 그 가닥을 잡기위해 더 많은 시간을 투자해야하구요.
그럴 땐 UML을 그려놓으면 한눈에 이해할 수 있어서 나중에 개발할 때 막히더라도 금방 이해하고 다시 개발에 전념할 수 있습니다! 개발자 기획자 간 원할한 협업을 위해서도 UML은 필수라고 생각합니다!
긴 글 읽어주셔서 감사합니다. 다음 시간에는 더 많은 UML에 대해서 더 자세하게 다뤄보도록 하겠습니다.
REFERENCES
개발자들의 의사소통을 위한 언어, UML 알아보기 | 요즘IT
UML은 개발자와 개발 프로젝트를 위한 시각적 도구입니다. 마치 우리가 조별과제를 하면서 서로 소통에 문제가 생기거나, 잘못된 결과를 만들기도 하듯이 개발자들이 함께 모여 작업을 할 때는
yozm.wishket.com
Sequence Diagrams | Unified Modeling Language (UML) - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
www.geeksforgeeks.org
UML diagrams: What are they and how to use them | MiroBlog
Find out everything you need to know about UML diagrams, including the different formats available and how to use them.
miro.com
UML 배워보기 시리즈 #1 UML과 다이어그램의 종류
컴퓨터 공학을 배웠다면 아마 대부분은 한 번쯤 UML 다이어그램을 듣거나 보셨을 겁니다.UML 다이어그램은 개발 과정에서 프로그램을 문서화 하는데 중요한 역할을 하지만, 자세히 배운 분들이
velog.io