PMDEXIT 프로젝트 용어사전

클래스 다이어그램

Class Diagram

클래스의 속성·행위·관계를 표현하는 정적 구조 다이어그램.

클래스 다이어그램이란

클래스 다이어그램(Class Diagram)은 시스템을 구성하는 클래스의 속성과 행위, 그리고 클래스 사이의 관계를 표현하는 정적 구조 다이어그램이다. UML 다이어그램 가운데 가장 널리 쓰이며, 객체지향 설계의 골격을 시각적으로 드러내는 핵심 산출물이다.

여기서 정적이라는 말은 시간의 흐름이나 실행 순서가 아니라, 어느 시점에 보더라도 변하지 않는 구조적 관계를 그린다는 의미다. 즉 시스템이 무엇으로 이루어져 있고 그 요소들이 서로 어떻게 연결되는가를 한 장에 담아낸다.

데이터접근범위연산접근범위다중도클래스도이름속성행위관계
클래스 표기 구성 요소

속성·행위·관계의 표현

각 클래스는 일반적으로 이름, 속성, 행위의 세 칸으로 나누어 표기한다. 속성은 그 클래스가 보유하는 데이터를, 행위는 그 데이터를 다루는 연산을 나타낸다.

속성과 행위 앞에는 공개·비공개 여부를 표시해 외부에서 접근 가능한 범위를 명시함으로써 캡슐화 의도를 드러낸다. 이렇게 책임을 클래스 단위로 명확히 나누어야 한 클래스가 지나치게 많은 일을 떠안는 설계 결함을 사전에 발견할 수 있다.

속성만 있고 행위가 비어 있는 클래스가 반복된다면 데이터와 로직이 분리된 절차적 설계의 징후로 의심해 볼 수 있다.

연관·일반화·집합 관계

클래스 다이어그램의 진짜 가치는 관계의 표현에 있다. 두 클래스가 서로를 알고 협력하는 연관 관계, 상위 개념이 하위 개념으로 분화되는 일반화 관계, 전체와 부분으로 묶이는 집합·합성 관계가 서로 다른 선과 기호로 구분된다.

특히 관계의 양 끝에 표기하는 다중도는 한 객체가 상대 객체와 몇 대 몇으로 연결되는지를 규정해, 데이터 구조와 제약 조건을 설계 단계에서 못 박는다. 이 다중도를 느슨하게 두면 구현 단계에서 불필요한 중복이나 무결성 오류가 뒤늦게 드러난다.

관계의미
연관서로 알고 협력
일반화상위와 하위 분화
집합·합성전체와 부분
클래스 사이 관계 유형

개체관계도와의 차이

클래스 다이어그램은 데이터베이스 설계의 개체관계도와 자주 비교된다. 둘 다 항목 사이의 관계와 다중도를 표현하지만, 개체관계도가 데이터의 저장 구조에 초점을 둔다면 클래스 다이어그램은 데이터에 더해 그 데이터를 처리하는 행위까지 포함한다.

따라서 클래스 다이어그램에서 행위를 걷어내고 영속성이 필요한 클래스만 추려내면 자연스럽게 데이터 모델의 윤곽이 잡힌다. 분석 단계의 개념 모델과 설계 단계의 상세 모델, 구현 단계의 물리 모델이 같은 다이어그램의 정밀도를 높여 가는 방식으로 이어진다는 점도 실무에서 기억할 부분이다.

ooCBD 설계의 중심 산출물

객체지향 컴포넌트 기반 개발인 ooCBD 방법론에서 클래스 다이어그램은 설계 단계의 중심 산출물로 자리한다. 분석 단계에서 잡은 유스케이스와 시퀀스의 메시지 흐름이 결국 어떤 클래스의 어떤 행위로 실현되는지를 이 다이어그램이 종합한다.

시퀀스 다이어그램에서 객체가 주고받는 메시지는 곧 클래스가 제공해야 할 행위 목록이 되므로, 두 다이어그램은 서로를 검증하는 짝으로 작동한다. 시퀀스에는 등장하지만 클래스에 정의되지 않은 행위가 있다면 설계의 빈틈이 드러난 것이다.

설계 품질을 읽는 창

클래스 다이어그램은 단순한 산출물을 넘어 설계 품질을 진단하는 창으로 활용된다. 한 클래스에 관계선이 과도하게 몰려 있다면 결합도가 높아 변경에 취약한 구조일 가능성이 크고, 책임이 불분명한 클래스는 응집도가 낮다는 신호다.

이런 구조적 결함은 코드가 쌓인 뒤에는 고치는 비용이 급격히 커지므로, 다이어그램 검토 단계에서 미리 걸러 내는 편이 경제적이다. 따라서 클래스 다이어그램 리뷰는 그림의 완성도가 아니라 결합도와 응집도라는 관점으로 읽을 때 가장 효과적이다.

관련 용어