본문 바로가기

독일에서 코딩 독학(IT Lernen)/Weiterbildung in IT

UML (Unified Modeling Language) 예습

 

UML (Unified Modeling Language)

UML은 객체지향 소프트웨어의 구조와 동작을 시각적으로 표현하는 표준화된 모델링 언어예요. 복잡한 시스템을 쉽게 이해하고 개발, 유지보수를 돕는 데 사용됩니다.

 


📊 UML의 주요 특징

  • 시각화(Visualization): 복잡한 시스템을 그림으로 표현해 이해를 돕습니다.
  • 명세화(Specification): 시스템의 구조와 동작을 명확하게 정의합니다.
  • 문서화(Documentation): 개발 과정에서 필요한 문서를 체계적으로 관리합니다.
  • 표준화(Standardization): 국제 표준(ISO/IEC 19505)으로 채택되어, 다양한 도구에서 호환됩니다.

ISO/IEC 19505의 주요 내용

  1. UML의 공식 명세(Standardization of UML)
    • UML의 구조와 의미를 명확하게 정의하고 일관성을 보장합니다.
    • UML의 사용 방법과 다이어그램 표현 규칙을 국제적으로 통일합니다.
  2. UML의 다양한 버전 포함
    • UML 2.x 버전을 기반으로 하며, 최신 UML 표준을 반영합니다.
    • 모델링에서의 정확성과 상호운용성을 보장합니다.

📑 ISO/IEC 19505의 구성

이 표준은 두 가지 주요 부분으로 나뉩니다.

1. ISO/IEC 19505-1: UML 인프라(Infrastructure)

  • UML의 핵심 메타모델(Kernel)을 정의합니다.
  • 모든 UML 다이어그램의 기본 구조와 의미를 설명합니다.
  • UML을 확장하거나 사용자 정의(Profiles)할 수 있는 메커니즘 제공.

2. ISO/IEC 19505-2: UML 슈퍼스트럭처(Superstructure)

  • UML에서 사용되는 각종 다이어그램(클래스, 유스케이스 등)의 정의와 규칙을 포함합니다.
  • UML 모델링 요소와 다이어그램의 구체적인 문법과 의미를 명세화합니다.

📌 UML 표준화의 목적

  • 시스템 개발 표준화: 복잡한 시스템을 모델링하고 표현하는 공통 언어 제공
  • 호환성 유지: 다양한 UML 도구와 플랫폼 간의 상호운용성 확보
  • 품질 향상: 소프트웨어 설계 품질과 유지보수성 개선

📘 ISO/IEC 19505의 활용 분야

  • 소프트웨어 엔지니어링: 대규모 시스템 분석, 설계, 구현
  • 비즈니스 프로세스 모델링: 비즈니스 흐름과 요구사항 정의
  • 시스템 통합: 복잡한 시스템의 구조와 상호작용 시각화

📐 UML 다이어그램 종류

UML은 **구조적 다이어그램(Static)**과 **행위 다이어그램(Behavioral)**으로 나뉩니다.


📚 1. 구조적 다이어그램 (Static Diagrams)

시스템의 정적인 부분(클래스, 객체 관계, 구성 요소 등)을 표현합니다.

다이어그램설명
클래스 다이어그램 (Class Diagram) 시스템의 클래스와 속성, 메서드 및 관계(상속, 연관, 집합, 복합)를 나타냅니다.
객체 다이어그램 (Object Diagram) 특정 순간의 객체와 그 관계를 표현합니다.
컴포넌트 다이어그램 (Component Diagram) 시스템을 구성하는 모듈(컴포넌트)과 인터페이스를 표현합니다.
배치 다이어그램 (Deployment Diagram) 하드웨어와 소프트웨어의 물리적 배치를 표현합니다.
패키지 다이어그램 (Package Diagram) 클래스나 컴포넌트를 논리적으로 그룹화한 패키지를 표현합니다.

클래스 다이어그램 예시

pgsql
KopierenBearbeiten
+-------------------+ | Student | +-------------------+ | -name: String | | -id: int | +-------------------+ | +enroll() | | +study() | +-------------------+

 


🎭 2. 행위 다이어그램 (Behavioral Diagrams)

시스템의 동적인 부분(프로세스 흐름, 객체 간 상호작용)을 표현합니다.

다이어그램설명
유스케이스 다이어그램 (Use Case Diagram) 사용자가 시스템을 어떻게 사용하는지 표현합니다.
시퀀스 다이어그램 (Sequence Diagram) 객체 간 메시지의 시간적 흐름을 표현합니다.
활동 다이어그램 (Activity Diagram) 작업 흐름(프로세스, 알고리즘, 비즈니스 로직)을 표현합니다.
상태 다이어그램 (State Diagram) 객체의 상태 변화와 전이를 표현합니다.
통신 다이어그램 (Communication Diagram) 객체 간 상호작용과 관계를 표현합니다.

유스케이스 다이어그램 예시

scss
KopierenBearbeiten
(사용자) → [로그인][상품 조회][상품 구매]

시퀀스 다이어그램 예시

sql
KopierenBearbeiten
User → 시스템 : 로그인 요청 시스템 → DB : 사용자 정보 조회 DB → 시스템 : 사용자 정보 반환 시스템 → User : 로그인 성공

🔍 UML의 활용

  • 소프트웨어 설계: 요구사항 분석부터 구현까지 모델링
  • 시스템 문서화: 유지보수 및 확장에 필요한 자료 제공
  • 의사소통: 개발자, 설계자, 이해관계자 간의 원활한 소통


📌 다음에 무엇을 더 알고 싶나요?

  • 각 UML 다이어그램의 심화 예제?
  • UML을 활용한 실제 프로젝트 설계 과정?

 

 

 

📊 1. 각 UML 다이어그램의 심화 예제

UML은 시스템의 구조와 동작을 시각화하는 강력한 도구로, **구조적 다이어그램(Static)**과 **행위 다이어그램(Behavioral)**으로 나뉩니다. 각 다이어그램의 심화 예제를 통해 실무에서 어떻게 활용되는지 살펴볼게요.


 

 

A. 구조적 다이어그램 (Static Diagrams)

(1) 클래스 다이어그램 (Class Diagram)

  • 목적: 시스템의 클래스, 속성, 메서드, 클래스 간의 관계를 정의
  • 사용 예: 객체지향 설계의 기초, 데이터 모델링

📌 예제: 온라인 쇼핑몰 시스템

pgsql
KopierenBearbeiten
+------------------+ +-------------------+ +--------------------+ | User | | Product | | Order | +------------------+ +-------------------+ +--------------------+ | -id: int | | -id: int | | -orderId: int | | -name: String | | -name: String | | -date: Date | | -email: String | | -price: float | | -total: float | +------------------+ +-------------------+ +--------------------+ | +register() | | +getDetails() | | +createOrder() | | +login() | +-------------------+ +--------------------+ +------------------+ | ▲ ▲ | | | | | | +------------------+ | | | OrderItem |------------------- | +------------------+ | | -quantity: int | | +------------------+
  • 관계(Relationship)
    • 일대다(1:N): 하나의 주문에 여러 제품이 포함됨(Composition)
    • 일대일(1:1): 사용자와 주문은 서로 연관됨(Association)

(2) 컴포넌트 다이어그램 (Component Diagram)

  • 목적: 시스템의 물리적 컴포넌트(모듈)와 그 상호작용을 표현
  • 사용 예: 마이크로서비스 아키텍처, 시스템의 모듈화 설계
  •  

📌 예제: 온라인 쇼핑몰의 주요 컴포넌트

pgsql
KopierenBearbeiten
+---------------+ +----------------+ +-----------------+ | User Service | --> | Order Service | --> | Payment Service | +---------------+ +----------------+ +-----------------+ | | | v v v +----------+ +------------+ +------------+ | Database | | Inventory | | Payment DB | +----------+ +------------+ +------------+
  • 설명:
    • User Service: 사용자 관리
    • Order Service: 주문 처리
    • Payment Service: 결제 처리

(3) 배치 다이어그램 (Deployment Diagram)

  • 목적: 소프트웨어가 물리적으로 배포되는 방식을 표현
  • 사용 예: 클라우드 인프라 구성, 서버 배포 설계

📌 예제: 쇼핑몰 서비스의 AWS 배포

lua
KopierenBearbeiten
+------------------+ | AWS Cloud | +------------------+ / \ +-------------+ +---------------+ | EC2 (Web) | | RDS (MySQL) | +-------------+ +---------------+

 

 


 

 

B. 행위 다이어그램 (Behavioral Diagrams)

(1) 유스케이스 다이어그램 (Use Case Diagram)

  • 목적: 사용자와 시스템 간의 상호작용을 정의
  • 사용 예: 요구사항 분석, 시스템 기능 정의

📌 예제: 쇼핑몰 유스케이스

lua
KopierenBearbeiten
(사용자) ---> [상품 검색] | | |---> [장바구니 추가] | | |---> [결제 진행]

(2) 시퀀스 다이어그램 (Sequence Diagram)

  • 목적: 객체 간의 메시지 흐름을 시간 순서대로 표현
  • 사용 예: API 호출 흐름, 서비스 간 통신

📌 예제: 사용자 로그인 흐름

yaml
KopierenBearbeiten
User Frontend: 로그인 정보 입력 Frontend Backend: 로그인 요청 Backend Database: 사용자 조회 Database Backend: 사용자 정보 반환 Backend Frontend: 로그인 성공 메시지

(3) 활동 다이어그램 (Activity Diagram)

  • 목적: 작업의 흐름(프로세스)을 시각화
  • 사용 예: 알고리즘, 업무 흐름 문서화

📌 예제: 주문 처리 흐름

css
KopierenBearbeiten
[시작][상품 선택][결제][배송 준비][완료]

🚀 2. UML을 활용한 실제 프로젝트 설계 과정

프로젝트 예제: 온라인 쇼핑몰

목표: 사용자 등록, 제품 구매, 결제 기능이 있는 쇼핑몰 시스템 설계


📌 1단계: 요구사항 분석

  • 사용자: 회원가입, 로그인, 상품 구매
  • 관리자: 상품 관리, 주문 확인
  • 시스템: 결제 처리, 주문 내역 저장

📌 2단계: 유스케이스 다이어그램

lua
KopierenBearbeiten
(사용자) --> [회원가입] | | |--> [로그인] | | |--> [상품 구매]

📌 3단계: 클래스 다이어그램

pgsql
KopierenBearbeiten
+------------------+ +-------------------+ | User | | Product | +------------------+ +-------------------+ | -id: int | | -id: int | | -name: String | | -name: String | | -email: String | | -price: float | +------------------+ +-------------------+ | +register() | | +getDetails() | | +login() | +-------------------+


📌 4단계: 시퀀스 다이어그램

사용자 로그인 흐름을 구체적으로 정의합니다.

yaml
KopierenBearbeiten
User Frontend: 로그인 정보 입력 Frontend Backend: 로그인 요청 Backend Database: 사용자 조회 Database Backend: 사용자 정보 반환 Backend Frontend: 로그인 성공

📌 5단계: 컴포넌트 다이어그램

시스템의 주요 모듈과 관계를 정의합니다.

sql
KopierenBearbeiten
+------------+ +------------+ | User API | ----> | Order API | +------------+ +------------+ | | +------+ +--------+ | DB | | Payment| +------+ +--------+

📌 6단계: 배치 다이어그램

AWS를 통한 서비스 배포 구조를 시각화합니다.

lua
KopierenBearbeiten
+------------------+ | AWS Cloud | +------------------+ / \ +--------+ +--------+ | EC2 | | RDS | +--------+ +--------+


📚 정리

UML을 활용하면 복잡한 시스템을 논리적으로 구조화하고 시각화할 수 있습니다.

 

 

UML(통합 모델링 언어)과 관련하여 온라인에서 무료로 수료증이나 자격증을 취득할 수 있는 몇 가지 옵션을 소개해 드리겠습니다.


1. Brainmeasures의 무료 UML 2 인증 시험

Brainmeasures에서는 UML 2에 대한 무료 인증 시험을 제공합니다. 시험에 합격하면 하드카피 인증서를 $69에 주문할 수 있습니다.brainmeasures.com+1brainmeasures.com+1


2. Alison의 무료 UML 과정

Alison은 UML에 대한 무료 온라인 과정을 제공하며, 과정 완료 시 수료증을 받을 수 있습니다. 이러한 과정은 UML의 기본 개념부터 심화 내용까지 다루고 있습니다.Alison


3. Coursera의 UML 다이어그램 과정

Coursera에서는 UML 다이어그램에 대한 다양한 온라인 과정을 제공합니다. 일부 과정은 무료로 청강할 수 있으며, 수료증 발급은 유료일 수 있습니다.


4. freeCodeCamp의 UML 다이어그램 전체 과정

freeCodeCamp에서는 UML 다이어그램에 대한 무료 전체 과정을 제공합니다. 이 과정은 클래스 다이어그램, 시퀀스 다이어그램, 유스케이스 다이어그램 등 주요 UML 다이어그램을 다루며, 실무 예제를 통해 학습할 수 있습니다.Class Central


5. Udemy의 Visual Paradigm Essential 과정

Udemy에서는 Visual Paradigm 도구를 활용한 UML, BPMN, SysML 등의 소프트웨어 설계 및 모델링 기술을 학습할 수 있는 무료 과정을 제공합니다. 이 과정을 통해 다양한 모델링 언어와 도구에 대한 기본적인 이해를 높일 수 있습니다.Udemy


추가 고려 사항

  • OMG의 UML 인증: Object Management Group(OMG)에서는 UML에 대한 공식 인증 프로그램을 운영하고 있습니다. 이 인증은 Foundation, Intermediate, Advanced의 세 단계로 구성되어 있으며, 시험 응시에는 비용이 발생합니다.omg.org