<p style="text-align:justify;"><span style="background-color:white;">UML은 개발자와 개발 프로젝트를 위한 시각적 도구입니다. 마치 우리가 조별과제를 하면서 서로 소통에 문제가 생기거나, 잘못된 결과를 만들기도 하듯이 개발자들이 함께 모여 작업을 할 때는 여러 가지 문제가 생깁니다. 내가 생각하는 것과 남이 생각하는 것, 그 두 가지가 일치하지 않기 때문이죠. 이런 문제를 해결하기 위해 나온 것이 바로 UML(Unified Modeling Language)입니다.</span></p><figure class="image image_resized" style="width:100%;"><img src="https://www.wishket.com/media/news/629/1.png"></figure><p style="text-align:justify;"><span style="background-color:white;">UML이란 개발 프로젝트를 위한 설계도라고 생각하면 됩니다. Unified Modeling Language(통합 모델링 언어)라는 거창한 이름을 갖고 있지만, 실제로 알고 보면 아주 단순합니다. UML은 서비스에 들어가는 정보와 복잡한 구조들을 단순하게 보여줄 때 주로 사용됩니다.</span></p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:100%;"><img src="https://www.wishket.com/media/news/629/2.png"></figure><p style="text-align:justify;"><span style="background-color:white;">실제로 UML은 크게 구조를 다루는 타입과 특성을 다루는 타입, 두 가지로 나뉩니다. 하지만 이 글에서는 가장 자주 사용되는 세 가지를 집중적으로 다루도록 하겠습니다. </span></p><p style="text-align:justify;"> </p><p style="text-align:justify;"><span style="background-color:white;">실무에서 자주 사용되는 UML은 크게 세 가지 타입이 있습니다.</span></p><p style="text-align:justify;"> </p><ol><li style="text-align:justify;"><span style="background-color:white;">유즈 케이스 UML (Use case UML)</span></li><li style="text-align:justify;"><span style="background-color:white;">클래스 UML (Class UML)</span></li><li style="text-align:justify;"><span style="background-color:white;">시퀀스 UML (Sequence UML)</span></li></ol><p style="text-align:justify;"> </p><p style="text-align:justify;"> </p><h3 style="text-align:justify;"><span style="background-color:white;"><strong>실제 시나리오를 보여주는 유즈 케이스 UML</strong></span></h3><figure class="image image_resized" style="width:100%;"><img src="https://www.wishket.com/media/news/629/3.png"></figure><p style="text-align:justify;"><span style="background-color:white;">유즈 케이스 UML은 우리가 가장 손쉽게 이해할 수 있는 케이스입니다. 현실의 사용자가 누구와 어떤 행동을 하는지, 그 과정에서 누가, 어떤 결과를 가져오는지, 사람, 역할을 중심으로 전체 서비스를 보여줍니다. 위의 UML은 레스토랑의 사례를 나타낸 것입니다.</span></p><p style="text-align:justify;"> </p><ul><li style="text-align:justify;"><span style="background-color:white;">고객: 음식을 주문하고, 음식을 먹은 후, 계산을 함</span></li><li style="text-align:justify;"><span style="background-color:white;">웨이터: 고객의 음식 주문을 돕고, 요리사에게서 요리를 전달함</span></li><li style="text-align:justify;"><span style="background-color:white;">요리사: 요리 주문이 들어오면 요리를 만듦</span></li><li style="text-align:justify;"><span style="background-color:white;">계산원: 고객이 식사를 마치면 계산을 도움</span></li></ul><p style="text-align:justify;"> </p><p style="text-align:justify;"><span style="background-color:white;">유즈 케이스 UML은 서비스의 큰 틀을 이해할 때 도움이 됩니다. 그러나 각각의 행동이나 과정에서 어떤 정보가 오고 가는지, 그 정보가 어떤 것인지는 자세히 알 수 없습니다.</span></p><p style="text-align:justify;"> </p><p style="text-align:justify;"> </p><h3 style="text-align:justify;"><span style="background-color:white;"><strong>정보들의 관계를 보여주는 클래스 UML</strong></span></h3><figure class="image image_resized" style="width:100%;"><img src="https://www.wishket.com/media/news/629/4.png"></figure><p style="text-align:justify;"><span style="background-color:white;">클래스 UML은 서비스의 중요 정보들을 박스로 연결해 보여줍니다. 그리고 이 박스들이 무엇을 중심으로 묶여 있는지, 각각의 박스 안에 중요한 정보는 무엇을 담고 있는지를 보여주죠. 위의 UML은 온라인 쇼핑몰의 클래스 UML입니다. </span></p><p style="text-align:justify;"> </p><ul><li style="text-align:justify;"><span style="background-color:white;">웹을 통해 접속한 사람 (Web user: ID / 암호 / 상태)</span></li><li style="text-align:justify;"><span style="background-color:white;">고객정보 (Customer: ID / 주소/ 전화번호)</span></li><li style="text-align:justify;"><span style="background-color:white;">계정 정보 (Account: ID / 결제 관련 정보 / 가입일 / 탈퇴일)</span></li><li style="text-align:justify;"><span style="background-color:white;">쇼핑카트 (Shopping Cart: 쇼핑카트 생성 날짜)</span></li><li style="text-align:justify;"><span style="background-color:white;">주문 (Order: 상품 숫자 / 주문 날짜 / 배송 날짜 / 배송 주소 등)</span></li><li style="text-align:justify;"><span style="background-color:white;">선택한 상품 (Line Item: 상품 개수 / 가격)</span></li><li style="text-align:justify;"><span style="background-color:white;">상품정보 (Product: 상품 ID / 이름 / 판매자)</span></li></ul><p style="text-align:justify;"> </p><p style="text-align:justify;"><span style="background-color:white;">클래스 UML은 서비스에 들어가는 핵심 정보를 한눈에 보여줍니다. 하지만 클래스 UML은 어디까지나 중요한 정보만을 압축해 보여준 것입니다. 그래서 모든 정보를 담고 있는 게 아니고, 실제 개발을 위해서는 더 많은 정보가 필요합니다.</span></p><p style="text-align:justify;"> </p><p style="text-align:justify;"> </p><h3 style="text-align:justify;"><span style="background-color:white;"><strong>데이터의 순서를 보여주는 시퀀스 UML</strong></span></h3><figure class="image image_resized" style="width:100%;"><img src="https://www.wishket.com/media/news/629/5.png"></figure><p style="text-align:justify;"><span style="background-color:white;">시퀀스 UML은 사다리 게임을 하듯, 왼쪽부터 오른쪽 아래로 내려가는 그림입니다. 데이터가 어떻게 흘러가고, 최종적으로 어디에서 어떤 결과가 나오는지를 알려주게 되죠. 위의 UML을 순서대로 정리해보자면 다음과 같습니다.</span></p><p style="text-align:justify;"> </p><ul><li style="text-align:justify;"><span style="background-color:white;">서비스 화면에서 서버로 요청을 하고</span></li><li style="text-align:justify;"><span style="background-color:white;">서버가 데이터베이스에 값을 가져와 달라고 말하면</span></li><li style="text-align:justify;"><span style="background-color:white;">데이터베이스가 결괏값을 서버에 던져주고</span></li><li style="text-align:justify;"><span style="background-color:white;">서버는 다시 서비스 화면에 내용을 그려준다</span></li></ul><p style="text-align:justify;"> </p><p style="text-align:justify;"><span style="background-color:white;">시퀀스 UML은 말 그대로 순서대로 흘러가는 그림이기 때문에, 개발에 대해 높은 이해도가 있지 않아도 데이터의 흐름을 읽어낼 수 있습니다. 하지만 제한된 부분만 보여주기 때문에, 서비스 전체를 그려낼 수는 없습니다.</span></p><p style="text-align:justify;"> </p><p style="text-align:justify;"><span style="background-color:white;">UML에는 이외에도 여러 가지 규격이 있습니다. 하지만 실무에서 자주 사용되지 않아 이 글에서는 소개하지 않은 규격들도 많습니다.</span></p><p style="text-align:justify;"> </p><p style="text-align:justify;"> </p><h3 style="text-align:justify;"><span style="background-color:white;"><strong>UML에는 고유한 문법이 있다?</strong></span></h3><p style="text-align:justify;"><span style="background-color:white;">UML은 여러 사람이 똑같이 이해하기 위해 만들어진 도구입니다. 그래서 꼭 지켜야 하는 여러 가지 규칙들이 있습니다. 그중 하나가 바로 화살표의 의미입니다. A와 B라는 데이터가 서로 단순한 연결 관계인지, 영향을 받는다면 누가 더 중요한지 화살표만 보고도 그 의미를 알 수 있어야 하죠. </span></p><p style="text-align:justify;"> </p><p style="text-align:justify;"><span style="background-color:white;">다만 UML의 가짓수가 워낙 많고, 실무자들도 이런 문법을 엄격하게 지키며 작업하는 경우는 많지 않습니다. 물론 규모가 크고, 복잡한 서비스를 만들어야 하는 경우라면 상황이 달라질 겁니다. </span></p><figure class="image image_resized" style="width:61.35%;"><img src="https://www.wishket.com/media/news/629/6.png"></figure><p style="text-align:justify;"> </p><p style="text-align:justify;"> </p><h3 style="text-align:justify;"><span style="background-color:white;"><strong>UML을 손쉽게 그리는 도구</strong></span></h3><p style="text-align:justify;"><span style="background-color:white;">UML은 정해진 툴이 따로 없습니다. 그림판이나, PPT 등으로 그려서 만들더라도 크게 문제가 없죠. 하지만 좀 더 손쉬운 방법을 찾아야 한다면, 다음 도구들을 사용해보는 것도 좋은 방법이 될 겁니다.</span></p><p style="text-align:justify;"> </p><ul><li style="text-align:justify;"><span style="background-color:white;">마이크로소프트 Visio (</span><a href="https://www.microsoft.com/en-us/microsoft-365/visio/flowchart-software"><span style="background-color:white;">https://www.microsoft.com/en-us/microsoft-365/visio/flowchart-software</span></a></li><li style="text-align:justify;"><span style="background-color:white;">루시드 차트 (</span><a href="https://www.lucidchart.com/"><span style="background-color:white;">https://www.lucidchart.com/</span></a><span style="background-color:white;">)</span></li><li style="text-align:justify;"><span style="background-color:white;">Draw.io (</span><a href="https://app.diagrams.net/"><span style="background-color:white;">https://app.diagrams.net/</span></a><span style="background-color:white;">)</span></li></ul><p style="text-align:justify;"> </p><p style="text-align:justify;"><span style="background-color:white;">지금까지 알아본 UML에 대해서 간단히 정리해보면 다음과 같습니다.</span></p><p style="text-align:justify;"> </p><p style="text-align:justify;"><span style="background-color:white;">1. UML은 개발자들이 서로 헷갈리지 않게 개발 설계도를 그리기 위한 방법이다.</span></p><p style="text-align:justify;"><span style="background-color:white;">2. UML에는 여러 규격들이 있지만, 가장 자주 사용되는 건 유즈 케이스, 클래스, 시퀀스 UML이다.</span></p><p style="text-align:justify;"><span style="background-color:white;">3. 유즈 케이스 UML은 실제 세상에서 벌어지는 일을 사람과 역할을 위주로 그려낸 UML이며,</span></p><p style="text-align:justify;"><span style="background-color:white;">4. 클래스 UML은 서비스에 들어가는 중요한 정보를 박스로 만들어 연결시킨 UML이다.</span></p><p style="text-align:justify;"><span style="background-color:white;">5. 시퀀스 UML은 데이터의 흐름을 순서대로 표현해, 어떤 결과가 나오는지 보여주는 UML이다.</span></p><p style="text-align:justify;"><span style="background-color:white;">6. UML에는 엄격한 문법이 있지만, 실무에서 이 부분을 철저하게 지키는 경우는 드물다.</span></p><p style="text-align:justify;"> </p><p style="text-align:justify;"><span style="background-color:white;">지금까지 UML이 무엇이고, 어떤 것들이 주로 사용되는지에 대해 알아보았습니다. 본인이 UML을 직접 그려보고 싶거나, 간단한 것부터 시작해보고 싶다면 다음 참고자료를 활용해보세요.</span></p><p style="text-align:justify;"> </p><p style="text-align:justify;"><span style="background-color:white;"><참고 자료></span></p><p style="text-align:justify;"><a href="https://www.youtube.com/watch?v=UI6lqHOVHic"><span style="background-color:white;">https://www.youtube.com/watch?v=UI6lqHOVHic</span></a></p><p style="text-align:justify;"><a href="https://gmlwjd9405.github.io/2018/07/04/class-diagram.html">https://gmlwjd9405.github.io/2018/07/04/class-diagram.html</a></p><p style="text-align:justify;"> </p><p style="margin-left:0px;text-align:center;"><span style="color:rgb(153,153,153);">©️요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.</span></p>