코드는 선적으로 기술되지만 프로그램 내 객체와 모듈 간의 관계는 그물망과 같습니다. 선형적인 코딩 작업과 동시에 프로그래밍의 전체 구조를 파악하기란 어렵습니다. 이를 구체적으로 명시해 팀원과 공유하는 일은 더욱 어렵죠. 통합 모델링 언어, 즉 UML은 이를 위해 소프트웨어 공학에서 사용되는 범용 모델링 언어입니다. 소프트웨어 개발에 적용할 수 있는 표준화된 양식을 제안합니다. 이를 배우고, UML 표준을 준수해 양식을 작성한다면, 프로그램 개발 과정에서 코드뿐만 아니라 소프트웨어 모듈과 구조 전체를 조망하고 이를 바탕으로 팀원과 효율적으로 소통하는 경험을 얻을 수 있습니다.
Part1: 클래스 다이어그램 이해하기
1. 클래스 다이어그램이란?
클래스 다이어그램이란 클래스의 내부 구성요소 및 클래스간의 관계를 도식화하여 시스템의 특정 모듈이나 전체를 구조화하는 통합 모델링 언어(UML)입니다. 클래스의 속성, 동작 방식, 객체 간 관계를 표시함으로써 시스템의 구조를 기술할 수 있습니다. 클래스 다이어그램은 프로그램 구조의 개념적 모델링, 또는 모델을 프로그래밍 코드로 변환하기 위한 작업에서 주로 사용되며, 데이터 모델링에도 클래스다이어그램을 활용할 수 있습니다.
2. 클래스 다이어그램 요소
클래스 다이어그램은 클래스명, 속성, 메소드로 이루어져있습니다.
- 클래스: 공통의 속성, 메소드(오퍼레이션), 관계, 의미를 공유하는 객체의 집합
- 속성: 클래스의 구조적 특성에 이름을 붙인 것. 인스턴스가 보유할 수 있는 값의 범위를 기술. 표기시 첫 글자는 영소문자로 시작
- 메소드(오퍼레이션): 이름, 타입, 매개변수들과 연관된 행위를 호출하는데 요구되는 제약사항을 명시하는 클래스의 행위적 특징
클래스 다이어그램에서 위 세가지는 선으로 구분된 사각형 안에 클래스, 속성, 메소드 순으로 표기됩니다.
3. 클래스 관계
클래스 다이어그램에서 관계를 표시하기 위해서는 화살표를 사용합니다. 위 여섯 가지에 대해 차례로 알아보겠습니다.
- 연관 관계(Association)
클래스들이 개념적으로 서로 연관되었음을 나타냅니다. 보통은 한 클래스의 인스턴스가 다른 클래스의 인스턴스에서 제공하는 기능을 지속적으로 사용하는 경우에 나타납니다.
- 일반화 관계(Generalization)
여러 비슷한 구체적 개념을 묶어 일반화하는 모델링 방법입니다. 예컨대, ‘토끼, 사자, 돼지’는 ‘동물’으로 일반화 할 수 있습니다.
- 의존 관계(Dependency)
한 클래스가 다른 클래스를 사용할 때 나타나는 관계입니다.
- 집합 관계-집약 관계, 합성 관계(Composition, Aggregation)
클래스 간의 전체-부분 관계를 나타냅니다. 집약 관계는 독립적 라이프 타임을 가지고, 합성 관계는 종속적 라이프 타임을 가진다는 차이가 있습니다.
- 실체화 관계(Realization)
책임들의 집합인 인터페이스와 이를 실제로 실현한 클래스 간 관계를 표시합니다.
4. 활용 예시
클래스 다이어그램의 목적에 따라 개념, 명세, 구현 단계로 나눌 수 있습니다.
개념 단계의 클래스 다이어그램은 클래스만 도출하고 관계를 단순화해 소프트웨어의 전체 구조를 파악합니다. 꼭 소프트웨어가 아니라, 사물이나 개념의 종속구조로 다이어그램을 작성할 수도 있습니다.
명세와 구현 단계의 클래스 다이어그램은 개발 직전 설계나 구현 이후 소프트웨어 설명을 목적으로 작성됩니다. 이 경우, 클래스 다이어그램을 기반으로 코드를 작성하거나, 프로그램의 코드를 기반으로 클래스 다이어그램을 그리기 때문에 이 두가지 클래스 다이어그램은 코딩과 깊은 연관관계를 가지고 있습니다.
5.클래스 다이어그램의 이점
개발 전 클래스 다이어그램을 작성하면 시스템 내 클래스 간의 의존성 파악이 용이하고, 표준화된 표기 방법을 따르므로 팀원간 소통이 용이합니다. 특히, 시스템 내 의존 관계를 명확하게 하는 작업은 순환 의존이 발생하는 지점을 탐색하는데 매우 편리합니다. 따라서, 클래스 다이어그램을 토대로 순환 고리를 깰 수 있는 방법을 고민할 수 있습니다.
Part2: 클래스 다이어그램 툴 - Boardmix
일반적인 문서 작성 도구를 사용하여 클래스 다이어그램을 그리는 것은 매우 번거로운 일입니다. 단순히 표나 도형으로 상자를 그리는 것은 비교적 간단할 수 있지만, 다양한 형태로 관계를 표현해야 하는 경우, 이러한 도구의 한계가 뚜렷하게 드러납니다. 그렇기 때문에 많은 사람들이 자연스럽게 전문적인 클래스 다이어그램 도구나 웹사이트를 찾게 됩니다.
그런 당신에게 완벽한 해결책을 제시합니다, 바로 'Boardmix'입니다. Boardmix는 클래스 다이어그램을 간편하게, 또한 아름답게 그릴 수 있는 클라우드 기반의 화이트보드 도구입니다. 이 툴은 특히 협업과 UML을 위해 최적화되어 있습니다. Boardmix의 파워풀한 기능을 활용하여 프로젝트를 한 단계 업그레이드 해보세요.
Boardmix 새 화이트보드 만들기
Boardmix에 접속해 이메일로 로그인합니다. 새 협업 화이트보드를 만드세요. 위 사진이 첫 인터페이스입니다.
도형 툴 이용해 클래스 개체 그리기
Boardmix가 클래스 다이어그램 그리기에 더욱 편리한 이유는, UML에서 자주 쓰이는 도형을 템플릿으로 제공하기 때문입니다. 왼쪽 툴바에서 [모양 아이콘]을 눌러, [UML]탭을 클릭하세요.
드래그 하면 클래스 개체를 그릴 수 있습니다. 클래스명, 속성, 메소드에 자동으로 로렘 입숨이 채워집니다. 더블 클릭하면 텍스트를 편집할 수 있습니다.
클래스 다이어그램 템플릿 이용하기
Boardmix에는 UML 클래스 다이어그램 템플릿이 내장되어 있어 템플릿 센터 내에서 검색 기능을 통해 이 템플릿을 찾아 무료로 사용할 수 있습니다.
화살표로 관계성 표시하기
왼쪽 툴바에서 화살표를 선택합니다. 개체의 위치, 디자인 스타일에 따라 꺾인선 화살표 또는 곡선 화살표도 선택할 수 있습니다. [드래그] 또는 [클릭]으로 화살표를 그릴 수 있으며, 드래그 하는 경우 상자의 변에 스냅으로 화살표가 붙게 됩니다. 화살표를 [클릭]하면 편집 메뉴가 활성화되는데, 여기에서 화살표 형태, 선 형태, 색상, 방향 등을 수정할 수 있습니다.
추가 기능
Boardmix는 UML 작성 기능 외에도 다양한 기능을 가지고 있습니다. 앞서 소개한대로, Boardmix는 클라우드 기반이므로 URL을 이용해 누구에게나 공유할 수 있습니다. 만약 메일으로 팀원을 추가한다면, 동시에 클래스 다이어그램을 편집하는 것도 가능합니다. 만약 프로젝트를 진행중이라면, 댓글과 포스트잇 기능을 이용해 팀원과 소통해보세요.
마무리
클래스 다이어그램을 문서 툴로 작성하는 일이나 UML 기호를 암기하는 게 다소 번거롭게 느껴질 수도 있겠습니다. 그러나, 직관적인 기호로 이루어진 UML 기호는 한 번 외워두면, 다른 팀원과 소통하는데 매우 용이합니다. 혼자 생각을 정리하는데도 편리하죠. 게다가 위에, 아주 간단하게 클래스 다이어그램을 작성하고 공유할 수 있는 툴인 Boardmix도 소개해드렸습니다. 이번 기회에 클래스 다이어그램 사이트 Boardmix를 이용해 팀원들과 소통해보세요.