공부해보잠
UML(Unified Modeling Language) 본문
UML(Unified Modeling Language)의 개요
시스템 분석, 설계, 구현 등 시스템 개발 과정에서 개발자와 고객 또는 개발자 상호 간의 의사소통을 원활하게 하기 위해 표준화된 객체지향 모델링 언어입니다.
특징 :
- UML은 RumBaugh(OMT), Booch, Jacobson 등의 객체지향 방법론의 장점을 통합하였으며, 객체 기술에 관한 국제 표준화 기구인 OMG(Object Management Group)에서 표준으로 지정되었습니다.
- UML을 통해 시스템의 구조를 표현하는 6개의 구조 다이어그램과 시스템 동작을 표현하는 7개의 행위 다이어그램을 작성할 수 있습니다.
- 각 다이어그램은 사물과 사물 간의 관계를 용도에 맞게 표현합니다.
UML 구성요소
사물(Things)
- UML에서 모델링의 기본 구성 요소로, 시스템을 구성하는 객체나 개념을 나타냅니다.
- 구분: 구조적 사물(클래스, 인터페이스 등), 행위적 사물(유스케이스, 활동 등), 그룹 사물(패키지), 주석 사물(설명 부가).
관계(Relationships)
- UML에서 사물 간의 연관성을 표현합니다.
- 종류: 연관(Association), 집합(Aggregation), 포함(Composition), 일반화(Generalization), 의존(Dependency), 실현(Realization).
다이어그램(Diagrams)
- UML 모델링에서 시스템의 구조와 동작을 시각적으로 표현한 것입니다.
- 구조 다이어그램(6개): 클래스, 객체, 컴포넌트, 배치, 복합 구조, 패키지.
- 행위 다이어그램(7개): 유스케이스, 시퀀스, 커뮤니케이션, 상태, 활동, 타이밍, 상호작용 개요.
부가설명 :
모델링언어
모델링 언어는 시스템을 추상적으로 표현하기 위해 사용하는 언어로, 복잡한 시스템을 시각적으로 이해하고 설계하며 개발 과정을 문서화할 수 있도록 돕습니다. UML은 객체지향 설계에 특화된 표준 모델링 언어로, 개발 과정에서 발생하는 오해를 줄이고 설계 품질을 향상시키는 데 유용합니다.
사물(Things)
- 모델을 구성하는 가장 중요한 기본 요소로, 다이어그램 안에서 관계가 형성될 수 있는 대상들을 말합니다.
- 사물에는 구조 사물, 행동 사물, 그룹 사물, 주해 사물이 포함됩니다.
사물 종류 | 설명 |
구조사물 (Structural Things) |
시스템의 정적인 부분을 나타내는 요소로, 클래스(Class),유스케이스(Use Case), 인터페이스(Interface), 컴포넌트(Component) 등이 포함됨. |
행동사물 (Behavioral Things) |
시스템의 동적인 행위를 나타내는 요소로, 유스케이스(Use Case), 상호작용(Interaction), 상태머신(State Machine) 등이 포함됨. |
그룹사물 (Grouping Things) |
사물을 그룹화하여 묶는 요소로, 패키지(Package) 등이 포함됨. |
주해사물 (Annotational Things) |
모델에 정보를 부가적으로 설명하는 요소로, 노트(Note) 등이 포함됨. |
관계(Relationships)
사물과 사물 사이의 연관성을 표현하는 것으로, 연관 관계, 집합 관계, 포함 관계, 일반화 관계, 의존 관계, 실체화 관계 등이 있습니다
연관(Association)관계
연관 관계는 두 개 이상의 사물(객체) 사이의 관련성을 나타냅니다. UML에서 사물 간의 상호작용이나 연결을 표현하는 기본적인 관계
특징:
- 객체 간의 관계를 실선으로 표현.
- 방향성이 필요할 경우, 화살표로 시작점과 끝점을 명시.
- 양방향 관계의 경우 화살표 없이 실선만 사용.
- 선 위에 **다중도(Multiplicity)**를 표기하여 연관된 객체의 개수를 명시.
다중도(Multiplicity):
다중도는 객체 간 관계에서 참여 객체의 개수를 나타내며, 아래와 같은 표기 방식이 있습니다:
- 최소 또는 최대 객체 수를 표현(예: 1, 0..1, n..m 등).

연관관계 예제
- 상황:
학생은 여러 수업에 등록할 수 있다. 예를 들어, 학생1은 수학, 영어, 과학 수업에 등록할 수 있다. 반대로 하나의 수업(예: 수학)에는 학생1, 학생2, 학생3 등 여러 학생이 등록할 수도 있다. - 설명:
학생과 수업은 다대다 관계이다.- 학생 → 수업: 한 명의 학생이 여러 수업을 들을 수 있다.
- 수업 → 학생: 한 수업에 여러 명의 학생이 있을 수 있다.
- 예를 들어:
- 학생1(학생) ↔ 수학, 영어, 과학(수업)
- 수학(수업) ↔ 학생1, 학생2, 학생3(학생)
- 다중도:
UML에서 다중도로 표현:
Student 1..* ↔ 1..* Class
이건 "학생과 수업은 다대다 관계"라는 뜻.

- 상황:
한 명의 직원은 하나의 부서에만 속한다. 예를 들어, 신입은 인사부에 소속될 수 있다. 반대로 하나의 부서(예: 인사부)에는 여러 명의 직원이 소속될 수 있다 - 설명:
직원과 부서는 1대다 관계이다.- 직원 → 부서: 한 직원은 한 부서에만 속할 수 있다.
- 부서 → 직원: 한 부서는 여러 명의 직원을 가질 수 있다.
- 예를 들어:
- 신입1(직원) → 인사부(부서)
- 인사부(부서) ↔ 신입1, 신입2, 신입3(직원)
- 다중도:
UML 다중도로 표현하면 이렇게 표현:
Employee 1 ↔ 1..* Department
이건 "한 명의 직원은 한 부서에만 속하지만, 한 부서는 여러 직원과 연관될 수 있다"는 뜻.

예제요약:
- 학생과 수업: 한 학생이 여러 수업에 등록할 수 있고, 한 수업에 여러 학생이 등록할 수 있다→ 다대다 관계.
- 직원과 부서: 한 직원은 하나의 부서에만 속하고, 하나의 부서는 여러 명의 직원을 가질 수 있다 → 1대다 관계.
집합(Aggregation)관계
집합 관계는 "하나의 사물이 다른 사물에 포함되어 있는 관계"를 나타냅니다.
특징
- 독립성 유지: 포함하는 쪽(전체, Whole)과 포함되는 쪽(부분, Part)은 서로 독립적입니다.
예를 들어, 전체가 없어도 부분은 독립적으로 존재할 수 있습니다. - 표현 방식: 포함되는 쪽(부분, Part)에서 포함하는 쪽(전체, Whole)으로 속이 빈 마름모를 연결하여 표현합니다.
집합관계 예제:
자동차(Whole)와 바퀴(Part)는 집합 관계에 있습니다.
설명:
- 자동차는 바퀴를 포함합니다.
- 하지만 자동차가 없어져도, 바퀴는 다른 용도로 독립적으로 존재할 수 있습니다(예: 다른 자동차에 사용).
- UML 표현: 바퀴에서 자동차로 속이 빈 마름모를 연결합니다.

팀(Whole)과 선수(Part)는 집합 관계에 있습니다.
설명:
- 팀은 여러 명의 선수를 포함합니다.
- 팀이 해체되어도, 선수는 다른 팀에 속하거나 독립적으로 존재할 수 있습니다.
- UML 표현: 선수에서 팀으로 속이 빈 마름모를 연결합니다.

비유
집합 관계를 "내부에서 독립적으로 존재할 수 있는 것들"로 생각하면 쉽다
예를 들어, 자동차와 바퀴는 자동차가 없어도 바퀴가 독립적으로 남아있을 수 있다.
포함(Composition)관계
집합 관계의 특수한 형태로, 포함하는 사물(Whole)과 포함되는 사물(Part)이 서로 의존적이며 생명주기를 함께하는 관계입니다.
특징 :
- 전체(Whole)가 없어지면 부분(Part)도 존재할 수 없습니다.
- 포함 관계는 독립성을 가지지 못하는 강한 결합 관계입니다.
- UML표현 방식: 포함되는 쪽(Part)에서 포함하는 쪽(Whole)으로 속이 채워진 마름모(◆)를 연결합니다.
포함관계 예제 :
- 책(Whole)과 페이지(Part)
- 책이 없어지면 페이지도 더 이상 존재할 수 없습니다.
- 따라서 책에서 페이지로 속이 채워진 마름모로 표현합니다.

- 사람(Whole)과 심장(Part)
- 사람이 없으면 심장도 존재할 수 없습니다.
- 따라서 사람에서 심장으로 속이 채워진 마름모로 표현합니다.

집합관계와의 차이점 :
- 집합 관계와 차이점은 부분(Part)의 독립성입니다.
- 집합 관계(속이 빈 마름모): 부분은 독립적으로 존재 가능.
- 포함 관계(속이 채워진 마름모): 부분은 독립적으로 존재 불가.
일반화(Generalization) 관계
개념적으로 더 일반적인 사물과 더 구체적인 사물 간의 관계를 나타냅니다.
- 일반적인 개념: 상위(부모, General) 개념.
- 구체적인 개념: 하위(자식, Specific) 개념.
- 표현 방법:
- 구체적인(하위) 사물에서 일반적인(상위) 사물로 속이 빈 화살표(△)를 연결합니다.
일반화 관계 예제
사람 → 여자/남자
- 사람(상위 개념): 일반적 개념.
- 여자, 남자(하위 개념): 구체적 개념.
- 표현: 여자와 남자에서 사람으로 속이 빈 화살표를 연결.

동물 → 포유류/조류
- 동물(상위 개념): 일반적 개념.
- 포유류, 조류(하위 개념): 구체적 개념.
- 표현: 포유류와 조류에서 동물로 속이 빈 화살표를 연결.

핵심 :
- 상위(부모)는 포괄적이고, 하위(자식)는 구체적입니다.
- 상위 개념은 하위 개념이 가진 공통적인 특성을 정의합니다.
- 하위 개념은 상위 개념의 특성을 상속받아 추가적인 특성을 정의할 수 있습니다.
의존(Dependency) 관계
연관 관계와 같이 사물 사이에 서로 연관은 있으나 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계를 표현
특징:
단기적 연관성:
- 사물 사이에 짧은 시간 동안만 연관을 유지하며, 영구적이지 않음.
- 필요에 의해 일시적으로 관계를 맺음.
영향력:
- 하나의 사물(이용자)의 변화가 다른 사물(제공자)에도 영향을 미침.
- 단, 소유 관계는 아님.
주로 매개 변수로 나타남:
- 한 클래스가 다른 클래스를 오퍼레이션의 매개 변수로 사용하는 경우.
표현 방법:
- 영향을 주는 사물(이용자)에서 영향을 받는 사물(제공자)으로 점선 화살표(→)를 연결하여 표현.
의존 관계 예제
학생 → 시험지
- 학생(이용자)은 시험지(제공자)를 필요에 따라 작성하지만, 시험지는 학생과 영구적으로 연관되지는 않음.
- 표현: 학생에서 시험지로 점선 화살표를 연결.

프린터 → 문서
- 프린터(이용자)는 문서(제공자)를 출력하기 위해 일시적으로 필요로 하지만, 출력 후에는 더 이상 연관이 없음.
- 표현: 프린터에서 문서로 점선 화살표를 연결.

이해 :
- Dependency 관계는 일시적 의존성을 나타내며, 사물 간 소유 관계가 아닌 상호 작용에 집중합니다.
- 일반적으로 클래스 간의 메서드 호출이나 파라미터 전달 과정에서 흔히 나타나는 관계입니다.
실체화(Realization) 관계
- 한 사물이 다른 사물에게 할 수 있거나 해야 하는 기능(오퍼레이션, 인터페이스)을 수행하도록 지정하는 관계를 표현합니다.
- 예를 들어, 특정 클래스가 인터페이스에서 정의된 메서드나 동작을 구현할 때 사용됩니다.
특징:
- 속이 빈 점선 화살표(⇢)로 표현하며, 구현 클래스(실체)에서 인터페이스(기능)로 화살표를 연결합니다.
- 인터페이스(기능)는 특정 동작이나 메서드를 정의하지만, 구현 클래스는 이를 실제로 수행합니다.
예시:
인터페이스와 구현 클래스
- 상황: 동물(Animal)이라는 인터페이스가 걷다(Walk)라는 동작을 정의.
- 구현 클래스: 개(Dog)와 고양이(Cat)는 Animal 인터페이스를 실체화(구현).
- 표현: 개(Dog)와 고양이(Cat)에서 Animal로 속이 빈 점선 화살표를 연결.

기능과 수행 객체
- 상황: 전송 가능(Transferable) 인터페이스는 전송하다(transfer) 기능을 정의.
- 구현 클래스: 문서(Document)와 이미지(Image)는 해당 기능을 구현.
- 표현: 문서(Document)와 이미지(Image)에서 Transferable로 속이 빈 점선 화살표를 연결.

요약:
- 실체화 관계는 "기능 정의"와 "기능 구현" 사이를 연결하는 관계.
- 인터페이스는 동작을 정의하고, 구현 클래스는 이를 실현(구현)합니다.
다이어그램(Diagram)
사물과 관계를 도형으로 표현한 것입니다.
개요
- 여러 관점에서 시스템을 가시화한 **뷰(View)**를 제공하여 의사소통을 돕습니다.
- 정적 모델링에서는 주로 구조적 다이어그램을 사용하며, 동적 모델링에서는 주로 행위 다이어그램을 사용합니다.
특성
- 시스템의 구조적 또는 행위적 관점을 시각적으로 표현합니다.
- 개발자와 이해관계자 간의 원활한 협력을 지원합니다.
- 시스템을 다양한 관점에서 분석, 설계, 구현하도록 도와줍니다.
다이어그램 종류
구분다이어그램 종류설명활용 단계
구분 | 다이어 그램 종류 | 설명 | 활용단계 |
구조적 다이어그램 |
클래스 다이어그램 (Class Diagram) |
클래스와 속성, 클래스 간의 관계를 표현. 시스템 구조를 파악하고 구조상의 문제점을 도출 | 설계, 분석 |
객체 다이어그램 (Object Diagram) |
특정 시점의 객체(인스턴스)와 객체 간의 관계를 표현. 럼바우 객체지향 분석 기법에서 객체 모델링에 활용 | 분석 | |
컴포넌트 다이어그램 (Component Diagram) |
실제 구현 모듈(컴포넌트) 간의 관계와 인터페이스를 표현 | 구현 | |
배치 다이어그램 (Deployment Diagram) |
결과물, 프로세스, 컴포넌트 등의 물리적 위치를 표현. 노드와 통신 경로로 나타냄 | 구현 | |
복합체 구조 다이어그램 (Composite Structure Diagram) |
클래스나 컴포넌트가 복합 구조를 갖는 경우 내부 구조를 표현 | 설계 | |
패키지 다이어그램 (Package Diagram) |
유스케이스, 클래스 등의 모델 요소를 그룹화한 패키지들의 관계를 표현 | 설계, 분석 | |
행위 다이어그램 |
유스케이스 다이어그램 (Use Case Diagram) |
사용자 요구를 분석하고 기능 모델링 작업에 활용. 사용자(Actor)와 사용 사례(Use Case) 간의 관계를 표현 | 분석, 설계 |
순차 다이어그램 (Sequence Diagram) |
상호작용하는 객체들이 주고받는 메시지를 시간 흐름에 따라 표현 | 설계 | |
커뮤니케이션 다이어그램 (Communication Diagram) |
순차 다이어그램과 유사하나 객체들 간의 메시지와 연관 관계까지 함께 표현 | 설계 | |
상태 다이어그램 (State Diagram) |
객체가 상태 변화나 상호작용에 따라 상태가 어떻게 변화하는지를 표현. 럼바우 분석 기법에서 동적 모델링에 활용 | 분석, 설계 | |
활동 다이어그램 (Activity Diagram) |
시스템이 수행하는 기능의 처리 로직과 흐름을 순서대로 표현 | 설계 | |
상호작용 개요 다이어그램 (Interaction Overview Diagram) |
여러 상호작용 다이어그램 간의 제어 흐름을 표현 | 설계 | |
타이밍 다이어그램 (Timing Diagram) |
객체 상태 변화와 시간 제약을 명시적으로 표현 | 설계 |
구조적 다이어그램
클래스 다이어그램
- 클래스와 클래스 간의 관계를 나타냄.
- 시스템 구조와 문제점을 분석.
객체 다이어그램
- 특정 시점의 객체와 객체 간 관계를 표현.
- 객체의 인스턴스를 다룸.
컴포넌트 다이어그램
- 구현 모듈 간의 관계와 인터페이스를 나타냄.
- 개발 단계의 의존성을 분석.
배치 다이어그램
- 물리적 배치를 노드와 통신 경로로 표현.
- 구현 결과물과 관련.
복합체 구조 다이어그램
- 클래스나 컴포넌트 내부의 복합 구조를 설명.
패키지 다이어그램
- 모델 요소를 패키지화하고 그 관계를 나타냄.
행위 다이어그램
유스케이스 다이어그램
- 기능적 요구 분석에 사용.
- 사용자와 시스템의 상호작용을 설명.
순차 다이어그램
- 객체 간 메시지의 시간적 흐름 표현.
커뮤니케이션 다이어그램
- 메시지 전달과 객체 간 연관 관계 표현.
상태 다이어그램
- 객체 상태와 상태 변화 과정 표현.
활동 다이어그램
- 시스템의 처리 로직 및 흐름을 시각화.
상호작용 개요 다이어그램
- 상호작용 다이어그램 간 제어 흐름 표현.
타이밍 다이어그램
- 시간에 따른 상태 변화와 시간 제약 표현.
스테레오 타입(Stereotype)
UML에서 표현하는 기본 기능 외에 추가적인 기능을 표현하기 위해 사용합니다.
스테레오 타입은 길러멧(Guilemet)이라 불리는 겹화살 괄호 <<>> 안에 표현 형태를 기술합니다.
주요 표현 형태 및 의미:
<<Include>>
- 연결된 다른 UML 요소와 포함 관계가 있을 때 사용.
<<Extend>>
- 연결된 다른 UML 요소와 확장 관계가 있을 때 사용.
<<Interface>>
- 특정 인터페이스를 정의할 때 사용.
<<Exception>>
- 예외(Exception)를 정의할 때 사용.
<<Constructor>>
- 특정 클래스의 생성자 역할을 수행할 때 사용.
특징:
- 스테레오 타입은 UML 다이어그램의 가독성을 높이고, 추가적인 정보를 명시하기 위해 사용됩니다.
- 다양한 다이어그램에서 활용 가능하며, 특정 요소의 역할과 의도를 명확히 전달하는 데 도움을 줍니다.
출저 및 참고
정보처리 산업기사 기본서(시나공)
'자격증 > 정보처리' 카테고리의 다른 글
소프트웨어 아키텍처 (0) | 2025.01.28 |
---|---|
주요 UML 다이어그램 (0) | 2025.01.28 |
요구사항 분석 CASE와 HIPO (0) | 2025.01.27 |
요구사항 분석 (0) | 2025.01.27 |
요구사항 정의 (0) | 2025.01.26 |