본문 바로가기
CS

UML의 개념과 UML 다이어그램의 분류

by Forsaken Developer 2023. 4. 3.
728x90
728x90

UML의 개념

객체 지향 소프트웨어 개발 과정에서 산출물의 명세화, 시각화, 문서화할 때 사용되는 모델링 기술과 방법론을 통합 하여 만든 표준화된 범용 모델링 언어

UML의 구성요소

사물(Things)

추상적인 개념으로 주제를 나타내는 요소이다.

단어 관점에서 명사 또는 동사를 의미한다.

관계(Relationships)

사물의 의미를 확장하고 명확히 하는 요소

사물과 사물을 연결하여 관계를 표현하는 요소

단어 관점에서 형용사 또는 부사를 의미한다.

다이어그램(Diagrams)

사물과 관계를 모아 그림으로 표현한 형태

형식과 목적에 따라 9가지로 정의한다.

UML 다이어그램

구조적/정적 다이어그램(Structural/Static Diagram)

  • 클래스(Class) : 객체 지향 모델링 시 클래스의 속성 및 연산과 클래스 간 정적인 관계를 표현
  • 객체(Object) : 클래스에 속한 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현
  • 컴포넌트(Component) : 시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존 관계를 표현
  • 배치(Deployment) : 컴포넌트 사이의 종속성과 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현
  • 복합체 구조(Composite Structure) : 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현
  • 패키지(Package) : 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현

행위적/동적 다이어그램(Behavioral/Dynamic Diagram)

  • 유스케이스(Usecase) : 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현
  • 시퀀스(Sequence) : 객체 간 동적 상호 작용을 시간적 개념을 중심으로 메시지 흐름으로 표현
  • 커뮤니케이션(Communication) : 동작에 참여하는 객체들이 주고 받는 메시지와 객체 간의 연관까지 표현
  • 상태(State) : 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 변하는 상태 변화를 표현
  • 활동(Activity) : 시스템이 어떤 기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서대로 표현
  • 타이밍(Timing) : 객체 상태 변화와 시간 제약을 명시적으로 표현

클래스 다이어그램

출처 - wikipedia

클래스 다이어그램의 구성요소

  • 클래스(Class) : 공통의 속성, 메소드, 의미를 공유하는 객체들의 집합
  • 속성(Attribute) : 클래스의 구조적 특성에 이름을 붙인 것
  • 연산(Operation) : 객체에 요청하여 행동에 영향을 줄 수 있는 서비스
  • 접근 제어자(Access Modifier) : 클래스에 접근할 수 있는 정도를 표현

클래스 간의 관계

출처 - 제타위키

연관(Association)관계

2개  이상의 사물이 서로 관련되어 있는 상태를 표현

의존(Dependency)관계

하나의 클래스가 또 다른 클래스를 사용하는 관계

일반화(Generalization)관계

하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현

실체화(Realization)관계

사물이 할 수 있거나 해야핳는 기능으로 서로를 그룹화할 수 있는 관계를 표현

집합(Aggregation)관계

하나의 객체에  여러 개의 독립적인 객체들이 구성되는 관계를 표현

포함(Composition)관계

집합 관계의 특수한 형태로 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계를 표현

유스케이스 다이어그램

출처 : 제타위키

유스케이스 다이어그램 구성요소

  • 유스케이스(Usecase) : 시스템이 제공해야하는 서비스
  • 액터(Actor) : 시스템과 상호 작용하는 사람 또는 사물
  • 시스템(System) : 전체 시스템의 영역을 표현
  • 시나리오 : 발생되는 이벤트의 흐름
  • 이벤트의 흐름 : 사람, 시스템, 하드웨어, 시간의 흐름에 의해 시작

유스케이스 다이어그램의 관계

포함(Include)관계

유스케이스를 수행할 때 다른 유스케이스가 반드시 수행되는 관계

확장(Extend)관계

특정 조건에서 한 유스케이스로만 확장되는 관계

일반화(Generalization)관계

추상적인 액터와 좀 더 구체적인 액터 사이에 맺어주는 관계

시퀀스 다이어그램

출처 - IT위키

시퀀스 다이어그램 구성요소

  • 객체(Object) : 객체는 사각형 안에 밑줄 친 이름으로 명시
  • 생명선(Lifeline) : 점선으로 표현하며 실제 시간의 흐름에 따라 객체의 생명주기 동안 발생하는 이벤트를 명시
  • 실행(Activation) : 오퍼레이션이 실행되는 시간을 직사각형으로 표현하며 직사각형이 길어질수록 수행시간이 긺
  • 메시지(Message) : 한 객체에서 다른 객체로의 메시지를 전달하여 전달받은 객체의 오퍼레이션을 수행 

패키지 다이어그램

출처 - wikipedia

패키지 다이어그램 구성요소

  • 패키지: 요소들을 그룹으로 조직하기 위한 요소
  • 의존관계 : 하나의 패키지가 다른 패키지를 사용하는 관계

활동 다이어그램

활동 다이어그램 구성요소

  • 시작점(Initial Node) : 검은색 동그라미로 표현하며 활동의 시작을 의미
  • 전이(Transition) : 화살표로 표현하며 실행의 흐름을 의미
  • 액션(Action) / 액티비티(Activity) : 모서리가 둥근 사각형으로 표현하며 어떻한 일들의 처리와 실행을 의미
  • 종료점(Final Node) : 검은색 동그라미를 포함한 원으로 표현하며 처리의 종료를 의미
  • 조건 노드(Decision Node) : 마름모로 표현하고 들어오는 제어 흐름은 한 개 이고 나가는 제어 흐름은 여러 개인 제어 흐름의 분리를 의미
  • 병합 노드(Merge Node) : 마름모로 표현하고 들어오는 제어 흐름은 여러 개 이고 나가는 제어 흐름은 한 개인 제어 흐름이 합쳐진 것을 의미
  • 포크 노드(Fork Node) : 굵은 가로선으로 표현하고 들어오는 액티비티 흐름은 한 개이고, 나가는 액티비티 흐름은 여러개인 평행적으로 수행되는 흐름을 의미
  • 조인 노드(Join Node) : 굵은 가로선으로 표현하고 들어오는 액티비티 흐름은 여러 개이고, 나가는 액티비티 흐름은 한 개인 나눠진 흐름을 하나로 합치는 것을 의미
  • 구획면(Swim Lane) : 가로 또는 세로 실선을 그어 표현하고 액티비티 수행을 담당하는 주체를 구분하는 면을 의미

상태 다이어그램

출처 - sparxsystems

활동 다이어그램 구성요소

  • 상태(State) : 둥근 사각형으로 표현하며 객체가 존재할 수 있는 조건 중의 하나를 의미
  • 시작 상태 : 속이 채워진 원으로 표현하며 객체의 시작 상태를 의미
  • 종료 상태 : 원 안에 속이 채워진 원으로 표현하며 객체의 종료 상태
  • 전이 : 화살표로 표현하며 객체의 상태가 다른 상태로 변경되는 것을 의미
  • 이벤트(Event) : 전이 위에 이벤트 이름을 표시하여 표현하며 상태의 변화를 주는 현상을 의미
  • 전이 조건 : 전이 위에 [전이 조건]을 표시하여 표현하며 특정 조건 만족 시 전이가 발생되는 것을 의미

커뮤니케이션 다이어그램

커뮤니케이션 다이어그램 구성요소

  • 액터(Actor) : 시스템으로부터 서비스를 요청하는 외부 요소
  • 객체(Object) : 메시지를 주고받은 주체
  • 링크(Link) : 객체들 간의 관계를 표현
  • 메시지(Message) : 객체가 상호 작용을 위해 주고 받는 메시지

컴포넌트 다이어그램

출처 - wikipedia

컴포넌트 다이어그램 구성요소

  • 컴포넌트 : 탭이 달린 직사각형으로 표현하며 반드시 이름을 가지고 있어야 한다.
  • 인터페이스 : 컴포넌트와 인터페이스는 화살표 모양의 점선(의존관계)로 연결한다.
  • 의존 관계 : 컴포넌트 사이의 의존하는 관계를 표현한다.
728x90
반응형

'CS' 카테고리의 다른 글

물리 데이터 모델 설계  (0) 2023.04.04
데이터 모델과 논리데이터 모델링  (0) 2023.04.04
스토리보드와 프로토타입  (0) 2023.04.02
UI 요구사항 확인  (0) 2023.04.02
디자인 패턴  (0) 2023.03.31

댓글