[ 세미나 ] UML 다이어그램

_dodo_hee·2021년 8월 18일
0

UML

UML다이어그램은 통합 모델링 언어를 사용하여,
시스템 상호작용, 업무흐름, 시스템 구조, 컴포넌스 관계 등을 그린 도면이다.

UML 다이어그램을 사용하는 이유?

프로그래밍을 단순화 시켜 표현하여, 의사소통하기 좋고 또 대규모 프로젝트 구조의 로드맵을 만들거나 개발을 위한 시스템 구축에 기본을 마련한다.

이번 세미나에는 대표적인 다이어그램 6가지를 기준으로 알아보도록 하겠다.

유스케이스 다이어그램 (Usecase Diagram)

요구 분석 과정에서 시스템과 외부와의 상호 작용을 묘사한다.

  • 시스템에서 제공해야 하는 기능이나 서비스를 명세한 다이어그램이다.
  • 사용자와 시스템 사이의 상호작용에 집중하는 것이 특징이다.
  • 외부에서 본 시스템의 기능을 표현하기 때문에, 실제 내부의 비즈니스 로직이 아닌, 사용자가 수행하는 기능을 파악하고 싶을 때 작성한다.

유스케이스 구성요소

유스케이스 다이어그램의 구성요소는 시스템, 액터, 유스케이스, 관계로 구성되어있다.

Scope

현재 개발할 푸로그램을 나타낸다.
프라이머리 액터와 세컨더리 액터 사이의 사각형으로 표기한다.

useCase

사용자의 입장에서 바라본 시스템의 추상적인 기능으로 시스템의 요구사항을
나타내며 타원형으로 표기한다.

actor

시스템 외부에 존재하며 시스템과 상호작용을 하는 모든 것을 말한다,
대게 시스템을 사용하는 사용자와, 시스템을 사용함으로써 상호작용 되는
다른 시스템이 액터가 될 수 있다.

1) 프라이머리 액터

  • 시스템을 사용하는 주체가 되는 액터이며, 사람 형태의 모형으로 표기한다.
  • 시스템의 왼쪽에 그리며 액터의 역할을 작성해준다.

2) 세컨더리 액터

  • 프라이머리 액터로부터 시작되어 시스템과 상호작용하는 다른 시스템(외부 시스템)을 말하며 박스에 actor를 포함하여 표기한다.
  • 시스템의 오른쪽에 그려준다.

Relation

액터와 유스케이스, 유스케이스 사이의 유스케이스의 관계를 나타낸다.
관계는 연관, 의존, 일반화가 있으며, 의존관계는 포함과 확장으로 나눠진다.

1) 연관관계

  • 실선이나 화살표로 표시
    액터와 유스케이스 간의 상호작용이 있음을 나타낸다.
    클래스들이 개념상 서로 연결됐음을 나타낸다.

연관관계 사진

  • 단방향 화살표일 경우 : 한쪽은 알지만 다른 쪽은 상대방의 존재를 모른다.
    ex) 사람과 핸드폰의 관계

  • 양방향 실선일 경우 : 두 클래스의 객체들이 서로를 인지합니다.
    ex) 의사와 환자의 관계

2) 일반화 관계

  • 속이 빈 화살표로 표시
    한 클래스가 다른 클래스를 포함하는 상위 개념일 때 두 클래스 사이에는 일반화 관계가 존재한다.
    이를 객체지향 개념에선 상속관계라고 한다.

일반화 관계 사진

부모클래스는 추상적인 개념이고, 삼각형 표시가 있는 쪽을 의미한다.
자식클래스는 추상적인 개념을 물려받은 구체적인 개념이다. 삼각형이 없는 쪽이다.
ex) 가전제품(부모) <- 세탁기,티비,식기세척기

3) 의존 관계

  • 점선 화살표
    연관 관계와 같이 한 클래스가 다른 클래스에서 제공하는 기능을 사용할 때 나타냅니다.
    연관 관계와 차이점은 두 클래스의 관계가 한 메서드를 실행하는 동안과 같은, 매우 짧은 시간만 유지 된다는 점이다.

의존관계

💡연관 관계와 의존 관계가 헷갈릴 수도 있다. 둘 모두 한 클래스에서 다른 클래스를 사용하기 때문이다.
결정적인 차이는 연관 관계는 클래스 A가 클래스 B를 멤버 변수로 가지고 있고,
의존 관계는 클래스 A가 클래스 B의 메서드를 가지고 있다. 혹은 클래스 B를 메서드의 인자로 받는다.

4) 집합 관계 - 집약 관계

4) 집합 관계 - 합성 관계

5) 실체화 관계

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

시퀸스 다이어그램 (Sequence Diagram)

객체 간의 메세지 전달을 시간적 흐름에서 분석한다.

어떠한 순서어떤 객체들어떻게 상호작용했는지를 표현하는 다이어그램이다.

시퀀스 다이어그램을 사용하면 API 등의 유즈 케이스를 디테일하게 알 수 있고 타 시스템의 API 호출 동의 로직을 모델링할 수 있어 시나리오를 파악하기 좋다.

Lifeline

모델링 되는 인스턴스를 나타낸다.
Lifeline은 네모와 점선으로 이루어져 있으며 네모가 객체의 관점으로 표현했다면 클래스이고, 서비스 관점으로 표현했으면 컴포넌트가 된다. 점선은 시간의 경과를 나타낸다.

Activation

Activation은 Lifeline의 인스턴스가 다른 인스턴스와 상호 작용을 하며 활성화 되어 있는 것을 나타낸다
Activation은 직사각형의 막대로 Lifeline의 점선 가운데에 표시합니다.

Message

메세지는 인스턴스 간 주고 받은 데이터를 나타낸다.
일반적으로 요청과 응답(HTTP 통신 기준)으로 나타낸다.

메세제의 유형

메세지 유형 사진

동기 메세지

동기메세지는 실선과 꽉 찬 화살표로 표현을 한다.
동기메세지 이므로 요청을 보낸 후 결과가 올 때까지 기다린다.

동기메세지

비동기 메세지

비동기 메세지는 실선과 선으로 이뤄진 화살표를 표현한다
비동기 메세지이므로 요청을 보낸 후 결과를 기다리지 않는다.

상태 다이어그램 (Statechart Diagram)

상태들이 이벤트에 의하여 어떻게 작동하는지 그리는 것이 상태 다이어그램이다.

상태 다이어그램은 실시간 임베디드 어플리케이션설계에 많이 사용된다.

상태 다이어그램

상태 다이어그램의 목적

이벤트기반으로 상태의 기반으로 동적인 행위를 보여주기 때문에 실시간 또는
이벤트 주도적 시스템을 모델링 하는데 좋다.

여기서 이벤트 주도적 시스템이란?
관계 시스템과 같이 어떤 이벤트가 발생할때 어떤 일을 수행하는지
정의하는 시스템을 말한다.

  • 객체 상태변화를 상세히 분석 할 수 있다.
  • Event에 의한 객체의 반응을 분석 할 수 있다.
  • 객체의 속성이나 Operation을 검증할 수 있다.

상태(state)

  • 시간 간격 동안 걸쳐 존재하는 인식 할 수 있는 상황이다.
  • 라운드 사각형의 위 쪽에는 상태의 이름, 아래쪽에는 그 상태에 들어가거나
    나갈 때 특별히 무엇을 해야할지를 기술한다.

ex) 주차 중립 후진 전진

전이(transition)

  • 한 상태에서 다른 상태로 변경 될 수 있는 가능한 경로이다.
  • 상태들 사이에 연결된 화살표 전이(transition)이라고 부른다.

ex) 주차상태에서는 중립상태를 변경되거나 아니면 상태 다이어그램을 종료시킨다.
하지만 중립상태에서는 주차상태로 될 수도 있고 후진,전진 상태로 될 수 있다.

트리거 이벤트 (triggering event)

  • 상태 전이를 발생시키는 즉시적인 이벤트를 트리거라고 한다.
  • 화살표 전이에 이벤트가 붙여진 것을 트리거 이벤트라고 부른다.

ex) 중립상태에서 주차상태로 변경 되려면 주차하다라는 이벤트가 발생한다.

상태의 동작(action)

  • 이벤트가 발생하고 상태가 전이되면 그에 맞는 작업이 수행되어야한다.

ex) 전진했을때 클러치를 밟으면서 앞으로 차가 전진하게 될때

상태 다이어그램의 기본

상태와 전이

상태 (state)

상태에 있는 동안 수행되는 시작,종료,수행 활동을 가진다.

  • entry : 특정 상태로 진입할 때 최초 한번 실행하는 동작 (진입동작)
  • do : 현재 상태에서 실행하는 동작 (활동)
  • exit : 상태를 나갈 때 마지막으로 실행하는 동작 (탈출동작)

전이 (transition)

트리거 이벤트에 반응해서 현재 상태에서 다음 상태로 상태가
변경되는 동안에 취해지는 경로를 말한다.

전이 되기 전에 평가되는 보호조건을 선택 할 수 있다.
평가결과가 참이면 트리거 이벤트가 발생하게 된다.

트리거 이벤트 종류

  • 호출이벤트 : 클래스 오퍼레이션이 호출될 때
  • 변경 이벤트 : 어떤 조건이 참이 될 때
  • 신호 이벤트 : 비동기 신호를 받을 때
  • 시간 이벤트 : 절대 시간에 도달하거나 상대 시간이 경과할 때

클래스 오퍼레이션이란?
클래스 동적인 특징을 개념적으로 정의해 놓은 것이다.

전이사진

영역 (region)

  • 동시적인 직교 상태를 보여주는 기능을 제공한다.

여기서 직교상태란?
병렬로 실행되는 개별 상태 다이어그램으로 생각하면 된다.

  • 병행 기능을 표현한다.

    영역 사진

컴포지트 상태 (composite state)

  • 다른 상태와 영역을 포함하는 상태를 말한다.

상태 전이 유형

  • 내부 전이 : 상태에서 빠져나가지 못함 (시작과 종료 활동이 수행되지 않음)
  • 로컬 전이 : 컴포지트 상태에서 빠져나가지 못함
  • 외부 전이 : 컴포지트 상태를 빠져나감

컴포지트 상태

서브머신 상태 (submachine state)

  • 공통 행위를 분해하여 재사용할 수 있게 하는 분할 메커니즘이다.
  • 구문적으로는 컴포지트 상태와 동일하다.

서브머신 상태

서브머신 상태에서 연결 위치 참조를 표현할 수 있다.

연결 위치 참조란?
서브머신의 내부에서 들어오고 나가는 위치를 시작점과 종료점 위치로 표현한다.

표기법

의사 상태

의사상태

선택 위치 (junction point)

  • 동적 조건 분기를 실현한다.
  • 전이가 발생하기 전에 초기 보호 조건만 평가된다.
  • 상태 다이어그램 모델링을 명확하게 한다.

동적 조건 분기란?
활동이 다음 보호 조건 평가를 변경시킬 수 있다.

의사상태 사진

접합점 (choice point)

  • 정적 조건 분기를 실현한다.
  • 모든 보호 조건이 평가된 후에 전이가 발생함
  • 상태 다이어그램 모델링을 단순하게 함.

정적 조건 분기란?

활동이 다음 보호 조건 평가를 변경시키지 않는다.

접합점


표기법

  • 전이는 상태와 상태 사이에 화살표가 달린 실선으로 표기합니다.
  • 선 위에는 촉발사건, 조건, 동작이 차례로 표기됩니다.
  • 위 세가지 표기내용은 각각 생략될 수 있습니다.

전이사진

  • 원래 상태 : 전이가 실행되기 전의 객체 상태
  • 촉발 사건 : 전이를 촉발시키는 사건
  • 전이 조건 : 전이 촉발 시에 검토되는 Boolean 식 (참일 경우에만 전이가 수행됨)
  • 동작 : 전이 도중 실행되는 행위 또는 오퍼레이션
  • 목표 상태 : 전이가 완료된 후의 객체 상태

상태변화

profile
무럭무럭 자라나는 도도 개발성장일기

0개의 댓글