UML이란 무엇입니까?

hi·2023년 1월 22일
0

UML이란 무엇입니까?

UML (통합 모델링 언어)은 소프트웨어 개념을 다이어그램으로 그리기 위해 사용하는 시각적인 표기법입니다. UML은 문제 도메인, 소프트웨어 설계 제안, 이미 완성된 소프트웨어 구현에 대한 다이어그램 (리버싱)을 그릴 때 사용됩니다. 그리고 '리팩터링'이라는 책에서 '마틴 파울러'는 문제 도메인을 '개념', 소프트웨어 설계 제안을 '명세', 이미 완성된 소프트웨어 구현에 대한 다이어그램을 '구현'이라는 말을 붙여 구분할 것을 제안하였습니다.


명세, 구현 차원에서의 다이어그램 특징

명세 차원과 구현 차원에서의 다이어그램은 소스코드와 관련이 있습니다. 명세 차원의 다이어그램은 소스코드로 구현하기 위해 그려지며, 구현 차원의 다이어그램은 이미 있는 소스코드를 설명을 위해 그려집니다. 따라서 이 두 차원의 다이어그램은 많은 제약을 가지며 반드시 일정한 규칙과 의미론이 지켜져야 합니다. 또한 모호성이 거의 없으며 일정한 형식이 잘 맞춰져야 합니다.

  • 명세/구현 차원에서의 다이어그램 예시


개념 차원에서의 다이어그램 특징

개념 차원에 속한 다이어그램은 사람의 언어와 관련이 있습니다. 개념 차원의 다이어그램은 사람이 풀고자 하는 문제 도메인 안에 있는 개념과 추상적 개념을 기술하기 위한 속기용 기호에 가깝습니다. 개념 차원의 다이어그램은 의미론적 규칙에 크게 얽매이지 않으며 의미하는 바도 모호하거나 해석에 따라 뜻이 달라질 수 있습니다.

  • 개념 차원에서의 다이어그램 예시

위 다이어그램을 보면 Animal은 Cat이라는 두 실체가 일반화 (Generalization) 관계로 연결된 것을 확인할 수 있습니다. Animal은 Cat을 일반화한 것이고, Cat는 Animal을 특정한 (Specialization) 경우입니다. 그러나 이 다이어그램에 들어 있는 의미는 이게 전부이며 Cat의 종류는 무엇인지 등은 명확히 알 수 없습니다. 즉, 개념 차원에서의 다이어그램은 어떻게 해석하느냐에 따라 의미가 달라집니다.

하지만 똑같은 다이어그램이라도 '명세 차원'이나 '구현 차원'에 있을 때 의미는 명확해집니다.

public class Animal {}
public class Cat extends Animal {}

위의 소스 코드는 상속 관계로 연결된 Animal과 Cat 클래스를 정의합니다. 개념 모델은 컴퓨터나 데이터 처리, 프로그램에 대해선 아무것도 알려주지 않지만 명세 모델은 프로그램의 일부를 실제로 기술합니다. 따라서 다어그램만 가지고 이것이 어떤 차원에 속하는지 명확히 알 수 없기에 개념 차원에서의 다이어그램은 소스코드를 정의하지 않습니다.

다음 글에선 실전에서 많이 사용하는 다이어그램의 유형에 대해 다루어보도록 하겠습니다.




로버트 마틴의 'UML for Java Programmers'를 공부한 내용입니다.

0개의 댓글