Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

공부해보잠

UML(Unified Modeling Language) 본문

자격증/정보처리

UML(Unified Modeling Language)

heejk 2025. 1. 28. 01:36
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대 다관계

예제요약:

  • 학생과 수업: 한 학생이 여러 수업에 등록할 수 있고, 한 수업에 여러 학생이 등록할 수 있다→ 다대다 관계.
  • 직원과 부서: 한 직원은 하나의 부서에만 속하고, 하나의 부서는 여러 명의 직원을 가질 수 있다 → 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 다이어그램의 가독성을 높이고, 추가적인 정보를 명시하기 위해 사용됩니다.
  • 다양한 다이어그램에서 활용 가능하며, 특정 요소의 역할과 의도를 명확히 전달하는 데 도움을 줍니다.

 

출저 및 참고

정보처리 산업기사 기본서(시나공)

 

728x90

'자격증 > 정보처리' 카테고리의 다른 글

소프트웨어 아키텍처  (0) 2025.01.28
주요 UML 다이어그램  (0) 2025.01.28
요구사항 분석 CASE와 HIPO  (0) 2025.01.27
요구사항 분석  (0) 2025.01.27
요구사항 정의  (0) 2025.01.26