그림 하나가 천 마디 말만큼 효과적입니다. 통합 모델링 언어(UML) 다이어그래밍은 이러한 이유로 만들어졌습니다. 소프트웨어 개발 과정이 굉장히 복잡한 만큼, 이 과정을 비즈니스 사용자 및 시스템을 알고자 하는 모든 사용자가 이해할 수 있도록 공통된 시각 언어를 만들고자 했습니다. 역사, 사용, 개념, 유형과 함께 UML 다이어그램 도구를 사용하여 드로잉하는 지침까지 UML 다이어그램의 핵심 정보를 배워보세요.
7 분 읽기
직접 UML 다이어그램을 만들고 싶으신가요? Lucidchart를 사용해보세요. 빠르고 사용이 간편하며 무료로 제공됩니다.
UML이란 무엇인가요?
통합 모델링 언어(UML)는 구조적 및 행동적으로 복잡한 소프트웨어 시스템의 아키텍처, 디자인 및 구현을 위한 시각적 모델링 언어로, 의미적으로 그리고 구성적으로 풍부하며 보편적인 시각적 모델링 언어를 만들기 위해 생성되었습니다. UML은 소프트웨어 개발 외에도 제조 과정에서의 프로세스 흐름 등에 활용될 수 있습니다.
이는 다른 분야에서 사용되는 청사진과 유사하며 서로 다른 유형의 다이어그램으로 구성되어 있습니다. 집합된 상태에서 UML 다이어그램은 경계, 구조, 시스템의 작동과 그 안에 있는 객체들을 설명합니다.
UML은 프로그래밍 언어가 아니지만 UML 다이어그램을 사용하여 다양한 언어로 코드를 생성하는 데 사용할 수 있는 도구가 제공됩니다. UML은 객체 지향 분석 및 디자인과 직접적으로 연관되어 있습니다.
객체 지향 모델링 및 디자인에서 UML과 그 역할
알고리즘과 데이터를 연구하는 컴퓨터 공학 분야에는 다양한 문제 해결 패러다임이나 모델이 존재합니다. 문제 해결 모델에는 4가지 카테고리가 존재하는데, 명령형, 함수형, 선언형 및 객체 지향 언어(ODP)가 여기에 포함됩니다. 객체 지향 언어에서는 '객체' 정의 및 객체 간의 상호작용을 통해 알고리즘을 표현합니다. 이때 객체는 조작이 가능한 대상으로, 현실 세계에 존재합니다. 즉, 건물, 데스크톱의 위젯 또는 사용자 등이 객체가 될 수 있습니다.
객체 지향 언어는 실제 객체를 모델링하기 때문에 프로그래밍에서 가장 널리 사용됩니다. UML은 객체 지향 디자인, 객체 모델링 기술, 객체 지향 소프트웨어 엔지니어링 등 여러 객체 지향 표기법의 조합입니다.
UML은 이 세 가지 접근법의 장점을 기반으로 보다 일관되고 활용이 쉬운 방법론을 제시합니다. UML은 소프트웨어 및 비즈니스 시스템 모델링의 여러 측면을 구축하고 문서화하는 방법의 모범 사례를 나타냅니다.
UML의 역사와 기원
소프트웨어 엔지니어링의 'The Three Amigos'로 알려져 있던 세 사람은 다른 방법들을 발전시키기도 했습니다. 서로 힘을 합쳐 새로운 표준을 만들고, 프로그래머에게 명확성을 제공했죠. Booch, Rumbaugh, Jacobson 간의 협업은 세 가지 방법을 모두 더욱 강력하게 만들어 최종 제품을 개선했습니다.
이러한 세 사람의 노력은 결국 1996년 UML 0.9와 0.91 문서 발표로 이어졌습니다. 그리고 얼마 지나지 않아 Microsoft, Oracle, IBM을 포함한 여러 조직들이 UML을 사업 개발에 있어 매우 중요한 부분으로 고려하기 시작했죠. 이들은 여러 개인 및 회사와 함께 본격적인 모델링 언어를 개발하기 위해 리소스를 구축했습니다. The Three Amigos는 1999년에 통합 모델링 언어 사용자 가이드를 발표했고, 2005년에는 개정판을 통해 UML 2.0에 대한 정보를 포함하는 업데이트를 발표했습니다.
OMG: OMG의 진짜 의미
웹사이트에 따르면 오브젝트 관리 그룹(OMG ®)은 1989년에 설립된 국제 그룹으로, 개방형 회원제로 운영되는 비영리 기술 표준 컨소시엄입니다. OMG의 표준은 협력업체, 최종 사용자, 학술 기관 및 정부 기관에 의해 수립됩니다. OMG 태스크 포스는 광범위한 기술과 그보다 더 광범위한 산업 분야에 대해 기업 통합 표준을 개발하고 있습니다. UML 및 모델 중심 아키텍처®(MDA ®)를 포함한 OMG의 모델링 표준은 강력한 비주얼 디자인, 소프트웨어 및 기타 프로세스의 실행 및 유지를 가능하게 합니다.
OMG는 UML 사양의 정의와 유지 보수를 감독합니다. 이러한 감시를 통해 엔지니어와 프로그래머는 모든 시스템 규모, 소프트웨어의 모든 라이프사이클 단계에서 하나의 언어를 여러 용도로 사용할 수 있습니다.
OMG가 말하는 UML의 목적
OMG는 UML의 목적을 다음과 같이 정의합니다.
- 시스템 설계자, 소프트웨어 엔지니어 및 소프트웨어 개발자에게 소프트웨어 기반 시스템의 분석, 디자인 및 구현을 위한 도구와 비즈니스 모델링 및 유사 프로세스를 위한 도구를 제공합니다.
- 시각적인 오브젝트 모델링 도구의 상호 운용성을 활성화하여 업계의 환경을 개선합니다. 하지만 도구 간의 의미 있는 모델링 정보 교환을 활성화하려면, 의미론과 표 현법의 합의가 필요합니다.
UML은 다음의 사항을 충족합니다.
- UML의 추상 구문을 특정하는 일반적인 메타 오브젝트 기능(MOF) 기반 메타 모델의 공식적인 정의를 설정합니다. 추상 구문은 UML 모델링 개념 집합, 해당 개념의 속성 및 관계를 정의하며, 이러한 개념들을 결합하여 부분적이거나 완전한 UML 모델을 구성하기 위한 규칙들을 정의합니다.
- 각 UML 모델링 개념의 의미론에 대한 자세한 설명을 제공합니다. 의미론은 UML 개념이 컴퓨터에 의해 실현되는 방법을 기술 독립적인 방식으로 정의합니다.
- 개별 UML 모델링 개념을 표시하기 위해 사용자가 읽을 수 있는 표기법 요소를 규정하고, 이들을 모델링된 시스템의 다양한 측면에 부합하는 다양한 다이어그램 유형으로 결합하기 위한 규칙을 지정합니다.
- 이 사양을 준수하도록 UML 도구를 정의할 수 있는 방법을 정의합니다. 이는 해당하는 모델 교환 형식(XMI)의 XML 기반 사양에서 지원되며(별도 사양), 준수 도구에 의해 실현되어야 합니다.
UML 및 데이터 모델링
UML은 프로그래머들 사이에서 인기가 있지만 일반적으로 데이터베이스 개발자들은 사용하지 않습니다. UML 생성 당시 데이터베이스에 초점을 맞추지 않았기 때문이기도 합니다. 하지만 그럼에도 불구하고 UML은 높은 수준의 개념적 데이터 모델링에 효과적이며, 다양한 유형의 UML 다이어그램에서 사용될 수 있습니다. UML 데이터베이스 모델링에 관한 이 기사에서 객체 지향 클래스 모델을 관계적 데이터 베이스에 레이어하는 데 대한 정보를 알아볼 수 있습니다.
직접 UML 다이어그램을 만들고 싶으신가요? Lucidchart를 사용해보세요. 빠르고 사용이 간편하며 무료로 제공됩니다.
UML 다이어그램 만들기UML 2.0 업데이트
UML은 계속해서 세세한 부분이 정립되고 있습니다. UML 2.0은 애자일을 포함하여 개발의 더 많은 측면을 다루기 위해 UML 사양을 확장했습니다. 사용성, 구현 및 적용이 단순화되도록 UML의 구조를 변경하고 세부 사항을 정립하기 위해 업데이트가 이뤄졌습니다. 다음은 UML 다이어그램에 대한 업데이트 내용입니다.
- 구조 및 작동 모델 사이의 통합 기능 향상
- 계층 구조를 정의하고 소프트웨어 시스템을 구성 요소 및 하위 구성 요소로 분류하는 기능.
- UML 2.0을 통해 다이어그램의 수도 9개에서 13개로 늘어났습니다.
UML 용어집
UML 용어를 숙지하면 많은 도움이 됩니다. 이 목록은 OMG 비회원이 일반적으로 사용되는 용어를 쉽게 이해할 수 있도록 하기 위해 UML 2.4.1 문서에서 선택된 용어를 포함합니다.
추상 구문 준수
사용자는 다른 표기법을 사용하는 경우에도 다른 도구로 모델을 이동할 수 있습니다.CWM(일반적인 창고 메타모델)
다양한 품목이 뒤섞여 있는 환경에서 창고 도구, 창고 플랫폼, 창고 메타데이터 사이의 창고 및 비즈니스 인텔리전스 메타데이터 호환을 활성화하기 위해 사용되는 표준 인터페이스구체적 구문 준수
사용자는 다양한 도구에서 계속해서 익숙한 표기법을 사용할 수 있습니다.코어
UML 맥락에서 코어는 일반적으로 '코어 패키지'를 의미합니다. 코어 패키지는 재사용성을 높이기 위해 특별히 설계된 완전한 메타 모델을 가리킵니다.언어 단위
특정 패러다임 또는 형식주의에 따라 연구 중인 시스템의 측면을 나타낼 수 있는 능력을 사용자에게 제공하는 밀접하게 결합된 모델링 개념의 컬렉션으로 구성됩니다.레벨 0(L0)
UML 인프라의 하위 준수 레벨 - 가장 일반적인 오브젝트 지향 프로그래밍 언어에서 볼 수 있는 클래스 기반 구조의 종류를 모델링하기 위해 제공하는 단일 언어 단위메타 오브젝트 기능(MOF)
OMG의 MDA 언어군에서 메타 모델 정의에 대한 기초를 제공하는 OMG 모델링 스펙메타 모델
모델을 형성할 언어 및 프로세스를 정의합니다.메타 모델 구성(LM)
UML 인프라의 두 번째 준수 레벨 - UML과 같이 메타 모델을 빌드하는 데 사용되는(CMOF 활용) 고급 클래스 기반 구조의 추가 언어 단위입니다. UML의 준수 레벨은 2가지로 나뉩니다.모델 중심 아키텍처(MDA)
모델 중심 기술 사양의 결합 집합을 달성하기 위한 접근 방법 및 계획입니다.객체 제약 언어(OCL)
통합 모델링 언어에 적용되는 규칙을 설명하는 선언형 언어입니다. OCL은 자연어보다 더 정확하지만 수학적 접근보다는 숙지하기가 쉬운 용어 및 흐름도 기호를 제공하여 UML을 보완합니다.오브젝트 관리 그룹(OMG)
회원이 UML 사양을 정의하고 유지 보수하는 비영리 컴퓨터 업계 사양 컨소시엄입니다.UML 1
통합 모델링 언어의 첫 번째 버전입니다.통합 모델링 언어(UML)
시스템의 아티팩트를 지정, 구성 및 문서화하기 위한 시각적 언어입니다.XMI
해당 모델 교환 형식의 XML 기반 사양입니다.
MOF 문서 전체 보기
UML 2.4.1 인프라 문서 전체를 다운로드하세요.
UML에 의해 지정된 모델링 개념
시스템 개발은 세 가지의 전반적으로 다른 시스템 모델에 중점을 둡니다.
기능:
사용자의 관점에서 시스템 기능을 설명하는 사용 사례 다이어그램입니다.오브젝트:
오브젝트, 속성, 연계 및 운영의 관점에서 시스템의 구조를 설명하는 클래스 다이어그램입니다.다이내믹:
상호작용 다이어그램, 상태 머신 다이어그램 및 활동 다이어그램은 시스템의 내부 동작을 설명하는 데 사용됩니다.
이러한 시스템 모델은 구조적 그리고 행동적, 두 가지 유형의 다이어그램을 통해 시각화됩니다.
UML의 객체 지향 개념
UML의 객체들은 우리 주변에 존재하는 실제 세계의 객체입니다. 소프트웨어 개발에서 객체는 도메인과 관련된 용어로 생성 중인 시스템을 설명하거나 모델링하는 데 사용될 수 있습니다. 또한 오브젝트는 한 번에 하나의 부분을 구축할 수 있도록 복잡한 시스템을 이해하기 쉬운 구성 요소로 분해할 수 있도록 합니다.
다음은 객체 지향 세계의 몇 가지 기본 개념입니다.
객체
개체 및 기본 빌딩 블록을 의미합니다.클래스
오브젝트의 청사진을 의미합니다.추상
현실 세계 개체의 행동을 의미합니다.캡슐화
데이터를 결합하여 외부로부터 함께 숨기는 메커니즘입니다.상속
기존 클래스에서 새 클래스를 만드는 메커니즘입니다.다형성
서로 다른 양식으로 존재하는 메커니즘을 정의합니다.
UML 다이어그램의 유형
UML은 요소를 사용하고 서로 다른 방식으로 연계해 시스템의 정적 또는 구조적 측면을 나타내는 다이어그램을 형성하고 시스템의 동적 측면을 파악하는 행동 다이어그램을 만듭니다.
구조적 UML 다이어그램
클래스 다이어그램
가장 일반적으로 사용되는 UML 다이어그램이자 모든 객체 지향 솔루션의 기본 토대입니다. 시스템 내의 클래스, 속성 및 오퍼레이션 및 각 클래스 간의 관계. 대형 시스템을 다이어그래밍할 때 클래스 다이어그램을 생성하기 위해 클래스가 함께 그룹화됩니다.구성 요소 다이어그램
소프트웨어 시스템 요소의 구조적 관계를 표시하며, 여러 구성 요소가 있는 복합 시스템 작업을 진행할 때 가장 많이 사용됩니다. 구성 요소는 인터페이스를 통해 통신합니다.합성 구조 다이어그램
합성 구조 다이어그램은 클래스의 내부 구조를 표시하는 데 사용됩니다.배치 다이어그램
시스템 하드웨어 및 소프트웨어를 설명합니다. 소프트웨어 솔루션이 고유 구성을 사용하여 여러 머신에 배치될 때 유용합니다.객체 다이어그램
실제 세계 속 객체의 예시를 사용하여 오브젝트 간의 관계를 표시하고, 시간에 따라 시스템이 어떻게 표시되는지를 설명합니다. 데이터는 오브젝트 내에서 사용 가능하므로 오브젝트 간의 관계를 명확하게 하는 데 사용할 수 있습니다.- 패키지 다이어그램 패키지 간에 정의되는 두 가지 특수한 종속성 유형이 있습니다. 바로 패키지 가져오기 및 패키지 병합입니다. 패키지는 아키텍처를 표시하기 위해 다른 레벨의 시스템을 나타낼 수 있습니다. 패키지 종속성은 레벨 간의 통신 메커니즘을 나타내도록 표시될 수 있습니다.
동작 UML 다이어그램
활동 다이어그램
그래픽을 사용해 시스템에 있는 모든 파트 또는 구성 요소의 활동을 나타내는 비즈니스 또는 운영 워크플로입니다. 활동 다이어그램은 상태 머신 다이어그램의 대안으로 사용됩니다.통신 다이어그램
시퀀스 다이어그램과 유사하지만 객체 간에 전달되는 메시지에 초점을 둡니다. 시퀀스 다이어그램 및 다른 오브젝트를 사용하여 동일한 정보를 표시할 수 있습니다.- 상호작용 개요 다이어그램 일곱 가지 유형의 상호작용 다이어그램이 있으며, 상호작용 다이어그램은 작업이 수행되는 순서를 표시합니다.
시퀀스 다이어그램
객체가 상호작용하는 방식 및 수행 순서를 표시합니다. 해당 다이어그램은 특정 시나리오에 대한 상호작용을 나타냅니다.상태 다이어그램
활동 다이어그램과 유사하게 현재 상태에서 다양한 방식으로 행동하는 객체의 동작을 설명합니다.타이밍 다이어그램
시퀀스 다이어그램과 같이, 지정된 시간 동안 객체의 동작이 표시됩니다. 단일 객체가 있는 경우, 다이어그램이 단순해집니다. 둘 이상의 객체가 있는 경우, 특정 시간 동안 객체의 상호작용이 표시됩니다.사용 사례 다이어그램
기능의 연계 관계와 내부/외부 제어자(행위자)를 설명하기 위해 작성된 시스템의 특정 기능을 나타냅니다.
UML 다이어그램 생성 방법: 튜토리얼 및 예제
서로 다른 유형의 UML 다이어그램 생성 방법을 알아보기 위해, 구조적 및 행동적 다이어그램의 드로잉 과정에 대한 튜토리얼을 확인하세요. 하나를 볼 수도 있고, 전체를 볼 수도 있습니다.
구조적 다이어그램 튜토리얼 예시
클래스 다이어그램
클래스 다이어그램은 클래스, 속성, 운영 및 객체를 포함하여 시스템의 정적 구조를 나타냅니다. 클래스 다이어그램은 각각 구현 클래스 및 논리 클래스의 형태로 연산 데이터 또는 조직 데이터를 표시할 수 있습니다. 이 두 그룹 사이에는 겹치는 부분이 있을 수 있습니다.
- 클래스는 3개로 분할되는 직사각형 모양으로 표시됩니다. 맨 위 섹션에는 클래스 이름이 표시되고, 중간 섹션에는 클래스 속성이 포함되어 있습니다. 맨 아래 섹션에는 클래스 운영(메소드라고도 함)이 포함됩니다.
- 클래스 다이어그램에 클래스 도형을 추가하여 해당 객체 간의 관계를 모델링하세요. 하위 클래스를 추가해야 할 수도 있습니다.
- 선을 사용하여 클래스와 하위 클래스 간의 연계, 상속, 다중성 및 기타 관계를 표시하세요. 선호하는 표기법 스타일에 기반해 이러한 선의 표기법을 확인할 수 있습니다.
구성 요소 다이어그램
구성 요소 다이어그램은 구성 요소가 결합되어 더 큰 구성 요소 또는 소프트웨어 시스템을 형성하는 방법을 보여줍니다. 이 다이어그램은 시스템에 있는 각 구성 요소의 종속성을 모델링하기 위한 것입니다. 구성 요소는 스테레오타입 기능을 실행하는 데 필요한 요소입니다. 구성 요소 스테레오타입은 실행 파일, 문서, 데이터베이스 표, 파일 또는 라이브러리 파일로 구성될 수 있습니다.
- 직사각형 도형으로 구성 요소를 표시합니다. 옆에 두 개의 작은 직사각형이 있거나 해당 도형 아이콘이 있어야 합니다.
- 구성 요소 도형 사이에 선을 추가하여 연관 관계를 표시합니다.