클래스 다이어그램에 대해 알아보기
Edraw Content Team
안녕하세요~! 오늘의 포스팅은 바로 “클래스 다이어그램”에 관한 것입니다. 클래스 다이어그램에서 이 생소한 “클래스”라는 게 무엇을 가리키는지, 클래스 다이어그램을 구성하는 요소들은 무엇이 있는지, 그리고 클래스 다이어그램을 생성하는 데 유용한 툴 5가지를 소개해보려고 합니다.
그럼 같이 알아보러 가볼까요?
이드로우 맥스
올인원 다이어그램 소프트웨어
- 강력한 호환성: Visio,MS office 등 파일 호환 가능
- 다양한 운영체제: (윈도우,맥,리눅스,ios,android)
Part 1: 클래스 다이어그램이란?
“UML (Unified Modeling Language, 통합 모델링 언어)의 클래스 다이어그램은 다른 엔터티들(사람, 제품, 데이터)이 서로 어떻게 관계를 맺고 있는지를 표현한다. 즉, 시스템의 정적 구조라고 할 수 있다. 클래스 다이어그램은 주로 프로그래머들이 다루는 구현 클래스들을 보여주는데 쓰이는데, 구현 클래스 다이어그램은 논리적 클래스 다이어그램과 같은 클래스를 보여준다. “라고 네이버 지식백과에서는 이렇게 설명을 하고 있습니다.
“소프트웨어 공학에서 클래스 다이어그램(class diagram)은 통합 모델링 언어(UML)에서 시스템의 클래스, 클래스의 속성, 동작 방식, 객체 간 관계를 표시함으로써 시스템의 구조를 기술하는 정적 구조 다이어그램의 일종이다.” 또 다른 위키백과에서는 이렇게 명시되어 있네요.
업계에 종사하시는 분들은 아마 쉽게 이해하실 수 있을 거라 생각이 됩니다. 쉽게 클래스간 관계를 나타내기 위한 다이어그램이라고 이해하시면 될 것 같습니다.
그럼 예시 자료를 한 번 보도록 하겠습니다.
그러면 계속 줄곧 등장하는 “클래스”, 대체 무슨 개념일가요? 클래스는 동일한 속성과 행위를 수행하는 객체들의 집합이자 객체를 생성하는 설계도라고 보시면 됩니다.
Part 2: 클래스 다이어그램을 구성하는 요소
1. Class(클래스)
첫번째는 다이어그램의 이름에서도 나타났듯이 클래스입니다.
클래스는 보통 3개의 구획으로 나누어 클래스의 이름, 속성, 기능을 표기합니다. 이때 속성과 기능은 생략할 수도 있지만 이름은 필수로 명시해야 합니다.
2. Stereo Type (스테레오 타입)
두번째는 스테레오 타입입니다.
스테레오 타입이란 기본 요소 외에 추가적인 확장 요소를 나타내는 것입니다. 보통은 길러 멧 사이에 적는 게 일반적이지만 기본 요소 외에 interface, utility 등을 표시하는 데에도 쓰입니다.
3. Abstract Class/Method (추상 클래스/메서드)
세번째는 추상 클래스입니다.
추상 클래스란 1개 이상의 메서드가 구현체가 없고 명세만 존재하는 클래스를 일컫는 말입니다. 추상 클래스의 이름과 메서드는 italic 체나, {abstract} 프로퍼티를 사용하여 표기합니다.
4. 클래스 사이의 의존성 표기
또한 클래스 사이의 의존성을 표기해야 하는데요. 의존성에서도 몇 가지 종류가 있습니다.
1. 연관관계
A에서 B로 영구적으로 갈 수 있는 경로를 뜻합니다.
2. 의존관계
파라미터나 리턴 타입에 의존하는 타입이 나오는 경로입니다. 연관관계와 달리 일시적으로 관계를 맺고 헤어질 수 있습니다.
3. 상속
B 클래스의 구현을 A클래스가 상속받는 경로입니다. B가 변경되면 A도 같이 변경됩니다.
4. 실체화 단계
인터페이스를 구현하는 관계입니다.
의존성 표기할 때 주의점:
양방향 의존성 피하기
• 서로 의존성을 가지고 있는 클래스는 사실상 하나의 클래스나 다름없는데 찢어놓은 느낌입니다.
• 성능 이슈나 싱크를 맞추는 데 많은 버그가 발생하기에 더 많은 주의가 필요합니다.
다중성이 적은 방향을 선택하기
클래스가 다른 클래스를 여러 개 가지고 있는 것은 코드 관리를 힘들게 할 수 있습니다.
클래스 간 관계를 표시할 때 사용하는 표기 방법도 화살표마다 다르기 때문에 숙지하는 게 좋을 것 같습니다.
Part 3: 클래스 다이어그램 작성 툴 TOP5
추천 1. Lucidchart
Lucidchart는 사용자가 UML 다이어그램, 클래스 다이어그램 등을 포함한 광범위한 다이어그램을 생성하고 편집할 수 있는 웹 기반 다이어그램 작성 및 시각적 협업 소프트웨어입니다. 특히 앱의 별도의 다운이 필요없이 웹으로 작용할 수 있는데 최적화된 프로그램이라는 겁니다.
가격
- 무료 플랜
- 개인-$7.95부터 시작
- 팀-사용자당 $9.00부터 시작
장점
- 팀 협업을 위한 실시간 편집 기능, 채팅 기능 제공
- Google 및 Microsoft Office와 호환
단점
- 다른 프로그램에 비해 인터페이스가 오래된 느낌입니다. 디자인을 특히 신경 쓰시는 분이라면 사용을 한 번 고민해보는 게 좋겠습니다.
추천 2. 이드로우 맥스(EdrawMax)
두번째는 바로 원더쉐어사의 이드로우 맥스입니다.
EdrawMax는 사람들이 다양한 다이어그램과 그래픽을 만들 수 있도록 설계된 전문 다이어그램 작성 소프트웨어입니다. 사용할 수 있는 다양한 템플릿, 기호 및 모양을 제공하고 있는 올인원 편집 프로그램입니다. 갤러리에 접속하시면 다른 사람들의 아이디어를 참고할 수 있어 특히 초보자한테는 추천합니다.
가격
- 무료 플랜
- 연간 라이센스 비용-103,200원
- 팀-사용자당 129,000원부터 시작
장점
- 온라인으로 실시간 다양한 협업작업 가능
- 구체적인 클래스 다이어그램 디자인을 제공하는 280가지 유형의 템플릿
- Windows, MacOS, Linux과 호환 및 웹으로 작업도 가능해서 접근성이 우수함
단점
- 많은 다이어그램과 템플릿을 한 번에 제공하는 프로그램이다 보니 보다 더 전문적이고 구체적인 작업을 수행하는 데는 적합하지 않을 수도 있습니다.
추천 3. Canva
Canva는 웹 기반 툴이며 모든 브라우저나 모바일 앱을 통해 액세스할 수 있습니다. 드래그 앤 드롭 인터페이스와 소셜 미디어 게시물, 포스터, 초대장 등과 같은 다양한 콘텐츠에 대한 그래픽을 만드는 데 사용할 수 있는 250,000개 이상의 무료 템플릿을 제공합니다. 디자인적인 만족감을 더하는 덴 좋은 프로그램이라고 할 수 있겠습니다.
가격
- 무료 플랜
- Canva Pro-1인당 연간 $119.99
- 팀용 Canva-최대 5명 연간 $149.90
장점
- 전문적인 디자인 작업이 가능
단점
- 좀 더 정확하고 세밀한 작업을 하는 데는 한계가 많다는 걸 느끼실 수 있습니다. 시각적인 디자인에 최적화된 프로그램입니다.
추천 4. Draw.io
장점
- 웹사이트 버전과 애플리케이션을 따로 다운 받기가 가능
- 무료 및 오픈 소스 사이트라서 접근성이 좋음
- 마이크로소프트 visio로 만든 파일을 바로 읽어올 수도 있고 호환성이 뛰어남
단점
- 무료 오픈 소스 사이트인 만큼 여러가지 기능이 제한 적입니다. 특징적으로 레이어 기능이 없고 도형 라이브러리 종류 등의 테마 사용이 제한적이며 파일로 변환시 한글이 깨져 보이는 현상이 발현됩니다.
추천 5. Miro
가격
- 무료버전
- 스타터: $8/월
- 비즈니스: $16/월
장점
- 2,000 개 이상의 도형 텍스트 다양한 템플릿 제공
- 모바일 버전 제공
단점
- 다양한 기능을 제공하지만 처음에는 적응하는 데 어려울 수 있다는 의견이 지배적입니다.
이렇게 오늘은 클래스 다이어그램에 대해 다양하게 알아보는 시간을 보냈습니다. 이 포스팅으로 인해 많은 것들을 알아갔으면 좋겠는 바람이 있습니다. 그럼 저는 다음에 더 유용한 포스팅으로 찾아 뵙도록 하겠습니다.
질문1. 클래스 다이어그램을 사용하는 목적은 무엇이 있을까요?
주된 목적이라 함은 시스템의 다양한 객체 관계와 클래스, 속성 및 기능을 시각적으로 매핑하기 위함으로 다른 UML 다이어그램과 함께 활용하여 보다 효과적으로 시스템을 모델링 할 수 있다는 특징이 있습니다. 개발 프로세스 단계에서 시스템 솔루션의 구현, 설계 및 아키텍처 작성을 위한 설계도로 이용되는 것이 일반적입니다.
질문2. 클래스 다이어그램의 단점은 있을까요?
클래스 다이어그램은 완벽한 시스템을 구축하기 위해 가장 먼저 고려해야 할 사항이지만 확실히 단점도 상당하다고 생각합니다. 우선 클래스 다이어그램은 관리하고 유지하는 데 오랜 시간이 걸리는 경우가 많으며 개발자나 소규모 회사에서는 추가 작업이 필요하기 때문에 코드를 동기화하는 데 어려움을 겪는 경우가 많습니다. 심지어 지나치게 복잡하거나 압도적인 다이어그램은 소프트웨어 개발자의 작업에 도움이 되지 않습니다. 모든 단일 시나리오를 매핑하면 다이어그램이 지저분해지고 작업하기 어려워질 수 있습니다. 보다 높은 수준의 정보를 해석하는 데에 다이어그램을 작성한다면 이러한 문제를 해결하는 데 도움이 될 수 있습니다. 또한 디자인을 지나치게 신경을 쓰기보다도 내가 정확히 전달하려는 정보만을 기입해주는 게 좋은 방법입니다.