UML은 개발자와 개발 프로젝트를 위한 시각적 도구입니다. 마치 우리가 조별과제를 하면서 서로 소통에 문제가 생기거나, 잘못된 결과를 만들기도 하듯이 개발자들이 함께 모여 작업을 할 때는 여러 가지 문제가 생깁니다. 내가 생각하는 것과 남이 생각하는 것, 그 두 가지가 일치하지 않기 때문이죠. 이런 문제를 해결하기 위해 나온 것이 바로 UML(Unified Modeling Language)입니다.
UML은 개발자와 개발 프로젝트를 위한 시각적 도구입니다. 마치 우리가 조별과제를 하면서 서로 소통에 문제가 생기거나, 잘못된 결과를 만들기도 하듯이 개발자들이 함께 모여 작업을 할 때는 여러 가지 문제가 생깁니다. 내가 생각하는 것과 남이 생각하는 것, 그 두 가지가 일치하지 않기 때문이죠. 이런 문제를 해결하기 위해 나온 것이 바로 UML(Unified Modeling Language)입니다.
UML이란 개발 프로젝트를 위한 설계도라고 생각하면 됩니다. Unified Modeling Language(통합 모델링 언어)라는 거창한 이름을 갖고 있지만, 실제로 알고 보면 아주 단순합니다. UML은 서비스에 들어가는 정보와 복잡한 구조들을 단순하게 보여줄 때 주로 사용됩니다.
실제로 UML은 크게 구조를 다루는 타입과 특성을 다루는 타입, 두 가지로 나뉩니다. 하지만 이 글에서는 가장 자주 사용되는 세 가지를 집중적으로 다루도록 하겠습니다.
실무에서 자주 사용되는 UML은 크게 세 가지 타입이 있습니다.
유즈 케이스 UML (Use case UML)
클래스 UML (Class UML)
시퀀스 UML (Sequence UML)
실제 시나리오를 보여주는 유즈 케이스 UML
유즈 케이스 UML은 우리가 가장 손쉽게 이해할 수 있는 케이스입니다. 현실의 사용자가 누구와 어떤 행동을 하는지, 그 과정에서 누가, 어떤 결과를 가져오는지, 사람, 역할을 중심으로 전체 서비스를 보여줍니다. 위의 UML은 레스토랑의 사례를 나타낸 것입니다.
고객: 음식을 주문하고, 음식을 먹은 후, 계산을 함
웨이터: 고객의 음식 주문을 돕고, 요리사에게서 요리를 전달함
요리사: 요리 주문이 들어오면 요리를 만듦
계산원: 고객이 식사를 마치면 계산을 도움
유즈 케이스 UML은 서비스의 큰 틀을 이해할 때 도움이 됩니다. 그러나 각각의 행동이나 과정에서 어떤 정보가 오고 가는지, 그 정보가 어떤 것인지는 자세히 알 수 없습니다.
정보들의 관계를 보여주는 클래스 UML
클래스 UML은 서비스의 중요 정보들을 박스로 연결해 보여줍니다. 그리고 이 박스들이 무엇을 중심으로 묶여 있는지, 각각의 박스 안에 중요한 정보는 무엇을 담고 있는지를 보여주죠. 위의 UML은 온라인 쇼핑몰의 클래스 UML입니다.
웹을 통해 접속한 사람 (Web user: ID / 암호 / 상태)
고객정보 (Customer: ID / 주소/ 전화번호)
계정 정보 (Account: ID / 결제 관련 정보 / 가입일 / 탈퇴일)
쇼핑카트 (Shopping Cart: 쇼핑카트 생성 날짜)
주문 (Order: 상품 숫자 / 주문 날짜 / 배송 날짜 / 배송 주소 등)
선택한 상품 (Line Item: 상품 개수 / 가격)
상품정보 (Product: 상품 ID / 이름 / 판매자)
클래스 UML은 서비스에 들어가는 핵심 정보를 한눈에 보여줍니다. 하지만 클래스 UML은 어디까지나 중요한 정보만을 압축해 보여준 것입니다. 그래서 모든 정보를 담고 있는 게 아니고, 실제 개발을 위해서는 더 많은 정보가 필요합니다.
데이터의 순서를 보여주는 시퀀스 UML
시퀀스 UML은 사다리 게임을 하듯, 왼쪽부터 오른쪽 아래로 내려가는 그림입니다. 데이터가 어떻게 흘러가고, 최종적으로 어디에서 어떤 결과가 나오는지를 알려주게 되죠. 위의 UML을 순서대로 정리해보자면 다음과 같습니다.
서비스 화면에서 서버로 요청을 하고
서버가 데이터베이스에 값을 가져와 달라고 말하면
데이터베이스가 결괏값을 서버에 던져주고
서버는 다시 서비스 화면에 내용을 그려준다
시퀀스 UML은 말 그대로 순서대로 흘러가는 그림이기 때문에, 개발에 대해 높은 이해도가 있지 않아도 데이터의 흐름을 읽어낼 수 있습니다. 하지만 제한된 부분만 보여주기 때문에, 서비스 전체를 그려낼 수는 없습니다.
UML에는 이외에도 여러 가지 규격이 있습니다. 하지만 실무에서 자주 사용되지 않아 이 글에서는 소개하지 않은 규격들도 많습니다.
UML에는 고유한 문법이 있다?
UML은 여러 사람이 똑같이 이해하기 위해 만들어진 도구입니다. 그래서 꼭 지켜야 하는 여러 가지 규칙들이 있습니다. 그중 하나가 바로 화살표의 의미입니다. A와 B라는 데이터가 서로 단순한 연결 관계인지, 영향을 받는다면 누가 더 중요한지 화살표만 보고도 그 의미를 알 수 있어야 하죠.
다만 UML의 가짓수가 워낙 많고, 실무자들도 이런 문법을 엄격하게 지키며 작업하는 경우는 많지 않습니다. 물론 규모가 크고, 복잡한 서비스를 만들어야 하는 경우라면 상황이 달라질 겁니다.
UML을 손쉽게 그리는 도구
UML은 정해진 툴이 따로 없습니다. 그림판이나, PPT 등으로 그려서 만들더라도 크게 문제가 없죠. 하지만 좀 더 손쉬운 방법을 찾아야 한다면, 다음 도구들을 사용해보는 것도 좋은 방법이 될 겁니다.