본문 바로가기
컴퓨터 지식

소프트웨어 설계에 대해 ⭐ / 2️⃣ - 시각화와 모델링 (Feat.UML, PUML, draw.io)

by 서상혁 2022. 1. 1.

(* 앞 편을 보고오시면 좋습니다.)

소프트웨어 설계에 대해 ⭐ / 1️⃣ - 설계의 중요성과 디자인 패턴 (feat. patterns)

https://programming119.tistory.com/256
 

소프트웨어 설계에 대해 ⭐ / 1️⃣ - 설계의 중요성과 디자인 패턴 (feat. patterns)

소프트웨어에 개발 설계도가 필요한가요? 정말정말 개발자 생활을 하면 할수록 느끼고 또 느끼는 것 중 하나가 개발하는 데에 보다 설계하는 데에 시간을 더 많이 들어야된다는 점입니다. DDD 관

programming119.tistory.com

 

들어가며

 설계의 결과물을 시각화하는 것은 소프트웨어를 설계를 함에 있어서 핵심중에 핵심입니다. 글로 표현된 설계도를 읽고 싶어하는 사람이 얼마나 될까요? 더군다나 줄글이 줄어들고 '3줄 요약' 이 필수가 되어버린 요즘 시대에는 더더욱 그렇죠! 

 

뿐만 아니라, 설계도가 없다면 개발을 진행할 때 매번 설계 결과를 다시 읽는 데에 또 리소스가 소요될 것이고, 각각의 구성원이 동일한 설계의 방향대로 가는게 쉽지만은 않을 것입니다. 시스템의 규모가 크면 클수록 더욱 헷갈리겠죠. 물론 설계의 과정을 모두가 참여했다면 필요가 없을 수도 있지만, 시간이 지남에 따라 잊혀지거나 왜곡되기 마련이고, 새로운 팀원이 합류하게 되면 시각화된 설계도가 매우 큰 역할을 할 테죠.  대외적으로 프로젝트를 표현할 때 또한 시각화된 설계도 만큼 쉽고 빠르게 표현할 수 있는 방법은 없을 것입니다.

 

 

UML

UML은 가장 보편화된 모델링 언어중 하나입니다. 굉장히 오래전 부터 데이터 모델링을 함에 있어서 보편적으로 사용된 언어입니다. '모델링 언어' 라는 것도 흔히 사용하는 단어가 아니기 때문에 처음 들어보신 분은 감이 잡히지 않을 것 같아요. 모델링 언어란 모델링을 할 때 사용하는 언어로, 여기서 모델링이란 구조를 설계하고 시각적으로 표현하는 것을 의미합니다.  즉 쉽게 표현하자면, 시각화를 할 때 보편화된 규칙을 정해놓는 것입니다. 화살표는 무슨 관계, 실선은 어떤 관계, 점선으로 이어지면 어떤 관계 이런식으로요. 

100번 설명하는 것 보다 한번 예시를 보는게 훨씬 이해가 빠를 것 같습니다 ㅎㅎ

 

uml 예시들 (출처 : https://www.epiusers.help/t/documentation-via-plantuml/71612)

 

 위 사진들 처럼 복잡한 관계들을 객체지향 개념을 바탕으로 모델링할 수 있습니다.

또한 UML을 지키는 방식으로 설계된 모델은, JAVA나 C++ 등 다양한 소스코드 언어로 변환해서 구축이 가능하기 때문에, 인간과 컴퓨터 모두에게 좋은 언어 입니다. 

 

자세한 규칙이나 표현 방법에 대한 설명은 기재하지 않겠습니다.  개인적으로 지금 당장 UML을 활용해서 설계해야 할 상황에 처해 있는 것이 아니라면, 굳이 세부 항목까지 자세하게 알 필요는 없을 것 같아요.

자세한 내용이 궁금하면 아래 링크를 참고해주세요!

 

UML 공식 사이트

 

https://www.uml.org/

 

Welcome To UML Web Site!

CURRENT SPECIFICATION View the current UML® specification. Read more

www.uml.org

 

 

UML에 대해 설명해주는 블로그 

 

https://onecellboy.tistory.com/334

 

0장. UML이란?

UML이란? Unified Modeling Language의 약자이다. 하나의 시스템을 표현하기 위한 표준적인 방법을 제공하기 위해서 만들어 졌다. UML 개요 OMG 표준기구로부터 인정받은 표준화된 그래픽언어이다. 개발자

onecellboy.tistory.com

 

 

PlantUML

 

PlantUML, 줄여서 PUML은 UML을 코드(텍스트)를 이용해서 쉽게 작성할 수 있게끔 도와줍니다.

저는 PUML만을 직접적으로 사용해보았는데요, PUML을 이용하면 텍스트로 쉽게 UML을 구축할 수 있습니다. 소포트웨어의 구조와 각 엔티들의 관계들을 텍스트 언어로 표현할 수 있기 떄문에, 관리할 때나 유지보수 관점에서 GUI 로 된 형태보다 편합니다. 

 

또한, PNG, SVG, LaTeX 등의 포맷으로 변환을 지원하기 때문에 PUML을 모르는 사람들이나 외부 발표를 해야할 때도 편합니다.

 

https://plantuml.com/ko/

 

간단한 텍스트를 이용하여 멋진 UML 다이어그램을 만들 수 있는 오픈소스 도구입니다.

간단한 텍스트를 이용하여 쉽게 멋진 UML 다이어그램을 만들 수 있으며, 다양한 종류의 다이어그램을 제공하고 있습니다. 또한, 생성된 다이어그램을 PNG, LaTeX, EPS, SVG 와 같은 이미지로 변환할 수

plantuml.com

 

한국어로 된 공식문서도 존재하기 때문에, 더 쉽게 접할 수 있습니다 😄

UML과 마찬가지로 세부 문법들은 공식 문서를 참고해주세요 ^_^

 

 

 이런식으로 온라인 상으로 실시간 시각화를 시켜볼 수도 있습니다. 

아래는 plantuml 체험용 데모 서버입니다.

 

http://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000

 

 

위 예시들은 아주 간단한 관계들만을 표현해봤지만, 문서를 참고하면 정말 다양한 다이어그램을 그릴 수 있어요.

 

예시들을 살펴보시면, 정말 텍스트로 이런 것도 표현할 수 있구나.. 싶으실 겁니다. 😇

 

https://www.google.com/search?q=plantuml+example&rlz=1C5CHFA_enKR973KR974&sxsrf=AOaemvLt17oM0ZKyiDoAa8lj8pedIYF73Q:1641037638312&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjh9fnLvZD1AhV3sFYBHUDMAN0Q_AUoAXoECAIQAw&biw=1792&bih=798&dpr=2 

 

plantuml example - Google 검색

Source for: UML Sequence... plantuml-documentation.read...

www.google.com

 

PlantUML VSCode Plugin 

 

각 에디터에 PlantUML 플러그인을 이용하시면, 작성한 코드가 시각화된 결과를 실시간으로 확인이 가능합니다.

 

https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml 

 

PlantUML - Visual Studio Marketplace

Extension for Visual Studio Code - Rich PlantUML support for Visual Studio Code.

marketplace.visualstudio.com

 

intellij 나 webstorm에는 아쉽게도 관련 플러그인이 없더군요..?

 

 

Draw.io

 

보통 가벼운 일반적으로 가벼운 프로젝트에서는 사실 UML을 철저하게 따르면서 구획할 일이 많지는 않습니다. 번거롭기도 하고, UML만이 꼭 정답이 아니기 때문이죠. UML이 아니어도 모두가 이해할 수 있고, 합의할수 있는 시각화나 설계도 정도여도 충분합니다.

 

가벼운 다이어그램을 그릴 때 제가 사용하는 툴이 있는데요, 바로 Draw.io 입니다.

 

 

UI 자체는 뭔가 옛날 툴 같아보이지만, 실제로 이용해보면 굉장히 편합니다.

 

다양한 템플릿이나 개체를 지원하구요, 구글 드라이브, 깃랩, 깃허브, 원드라이브 등이랑 연동이 돼서 다양한 기기에서 옮겨가며 사용하기 쉽습니다.

 

이거는 제가 여가 시간에 개인 프로젝트하면서 한번 그려본 diagram인데요, 이런식으로 생각보다 깔끔하게 그릴 수 있씁니다. 우선 개체랑 관계가 연결이 되면 개체를 이동시켜도 관계(화살표)들이 따라와서 편하더라구요.

 

오늘은 설계에 대한 큰 내용은 없지만, 알아두면 유용할 수 있는 UML, 그리고 툴 들에 대해 알아봤습니다.

설계에 있어서 다이어그램은 반 필수입니다. 또 유용한 팁 있으면 공유 부탁드립니다!

 

참고 및 출처

- https://velog.io/@hanblueblue/UML-UML-%EA%B8%B0%EC%B4%88 

 

728x90

댓글