본문 바로가기
Concepts/UML

UML - 클래스 다이어그램과 제약 규칙

by ocwokocw 2021. 2. 10.

- 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다.

- 제약 규칙

클래스 다이어그램을 작성할 때 시간이 많이 소요되는 부분은 무엇일까? 사각형을 그리고 화살표 방향을 정하는데 오래걸린다고 생각하겠지만 제약(constraint)을 표시하는데 많은 시간이 걸린다.

위 다이어그램에서 Order와 Customer의 다중성은 Order:Customer = *:1 이다. 만약 다중성이 헷갈린다면 한 요소를 1로 고정해놓고 생각해보길 바란다. 예를 들면 Order가 1개 라고 가정한다면 Customer는 1 명이다. 이번엔 반대로 Customer 가 1명이라면 이에 해당하는 Order는 다수이다.

 

또한 Order와 OrderLine, Product 관계에서 Line Item을 생각해보자. TV 10개, 에어컨 20대 인것이지 30개 물건인것은 아니다.

 

기업 고객(Corporate Customer)과 개인 고객(Personal Customer)를 보자. 기업 고객은 신용 한도(creditLimit)이 있지만 개인 고객은 그렇지 않다.

 

연관(화살표), 속성(클래스의 Field), 일반화(기업 고객과 개인 고객이 고객으로 향하는 화살표)는 제약을 주요하게 나타내긴 하지만, 모든 제약을 표현할 수 없다. UML 에서는 제약을 설명할 때 어떤 형식이든 허용한다. 단 중괄호({}) 안에 넣기만 하면 된다.


- 클래스 다이어그램 사용시 유의점

클래스 다이어그램은 UML에서 핵심적인 다이어그램이다. 마음먹으면 간단하게 표기할 수 있지만, 기능이 너무 많아서 고급 기능을 사용하기 시작하면 아주 복잡해지기도 한다.

 

클래스 다이어그램을 작성할 떄에는 너무 세세한것까지 표현하려는 강박을 가지거나, 추후에 알아볼 고급 표기법은 정말 필요할 때에만 써야한다. 아무리 기호를 화려하게 써서 잘 작성한 클래스 다이어그램이라도 읽는 상대방이 너무 어려움을 느껴 포기하게 만들거나 의사소통에 실패하면 소용이 없다.

 

따라서 모든것을 그리려고 너무 애를 쓰는것보다는 문제가 있거나 중요한 포인트, 이슈가 있는 부분을 핵심적으로 표현하는것이 적합하다.

댓글