활동 다이어그램

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

활동 다이어그램은 UML(Unified Modeling Language)에서 정의된 것으로, 시스템의 동적 측면을 시각적으로 표현하는 데 사용된다. UML 1.0에서 처음 정의되었고, UML 2.0에서 페트리넷과 유사한 의미론을 기반으로 확장되어 다양한 도메인에서 활용된다. 활동 다이어그램은 시작 노드, 액션, 디시전, 포크, 조인 등 제한된 수의 도형과 화살표로 구성되며, 흐름의 제어 및 데이터의 이동을 나타낸다. 소프트웨어 개발, 비즈니스 프로세스 모델링 등 다양한 분야에서 활용될 수 있다.

활동 다이어그램
📚 더 읽어볼만한 페이지
  • 통합 모델링 언어 - 유스 케이스
    유스 케이스는 시스템과 액터 간 상호작용을 통해 시스템 목표 달성에 기여하는 동작들을 나타내는 요구 사항 캡처, 모델링, 명세 기법으로, 객체 지향 소프트웨어 공학에서 기능 요구 사항을 캡처하는 데 중요한 역할을 하며 다양한 분야에서 활용된다.
  • 통합 모델링 언어 - 모델 기반 개발
    모델 기반 개발은 모델을 활용하여 소프트웨어 및 시스템을 개발하는 접근 방식이며, 컴퓨터 지원 소프트웨어 공학 도구에서 시작하여 통합 모델링 언어와 모델 중심 아키텍처 표준을 거쳐 발전했다.
  • 모델링 언어 - 차트
    차트는 통계 데이터를 점, 선, 도형 등으로 묘사하여 데이터의 규칙성, 경향 등을 시각적으로 제시하고 분석 방향을 제시하는 도표이며, 히스토그램, 막대그래프, 원그래프, 선 그래프 등이 흔히 사용된다.
  • 모델링 언어 - 순서도
    순서도는 컴퓨터 알고리즘이나 프로세스를 시각적으로 표현하는 도구로, 흐름 공정 차트에서 기원하여 컴퓨터 프로그래밍 분야에서 알고리즘을 설명하는 데 사용되며, 다양한 종류와 소프트웨어 도구가 존재한다.

2. 역사

UML 1.0에서 제정되었고 UML 2.0에서 크게 확장되었다. UML 1.x에서 활동 다이어그램은 상태 다이어그램의 특수한 형태였지만, UML 2.x에서는 페트리넷과 유사한 의미론을 기반으로 재정의되어 활용 범위가 넓어졌다. 이러한 변경으로 인해 UML 1.x 활동 다이어그램은 UML 2.x에서 다르게 해석된다.

--
--

3. 작성 방법

활동 다이어그램은 제한된 수의 도형과 화살표를 연결하여 구성된다. 가장 중요한 도형 유형은 다음과 같다.

* 타원액션을 나타낸다.
* 다이아몬드결정을 나타낸다.
* 막대는 동시 활동의 시작(분할) 또는 종료(결합)를 나타낸다.
* 검은 원은 워크플로우의 시작(초기 노드)을 나타낸다.
* 검은 원 안에 원이 있는 도형은 종료(최종 노드)를 나타낸다.

화살표는 시작에서 종료 방향으로 흐르며 활동이 일어나는 순서를 나타낸다.

활동 다이어그램은 구조화된 순서도와 전통적인 데이터 흐름 다이어그램을 결합한 형태로 간주될 수 있다. 일반적인 순서도 기법은 동시성을 표현하는 구성을 갖추고 있지 않다. 활동 다이어그램은 소프트웨어 처리뿐만 아니라 업무의 흐름을 나타내는 데에도 사용된다. 시작 노드 "●"와 종료 노드 "◉"를 기재하고, 그 사이에 처리를 화살표로 연결하여 기재하며, 필요에 따라 분기 등을 기재한다. 상태 머신 다이어그램과 달리, 둥근 모서리 직사각형으로 그리는 것은 (상태가 아니라) 처리나 동작임에 주의한다.

4. 주요 요소 (UML 2.0 기준)

활동 다이어그램은 제한된 수의 도형과 화살표로 연결하여 구성된다. 가장 중요한 도형 유형은 다음과 같다.

* 타원액션을 나타낸다.
* 다이아몬드결정을 나타낸다.
* 막대는 동시 활동의 시작(분할) 또는 종료(결합)를 나타낸다.
* 검은 원은 워크플로우의 시작(초기 노드)을 나타낸다.
* 검은 원 안에 원이 있는 도형은 종료(최종 노드)를 나타낸다.

화살표는 시작에서 종료 방향으로 흐르며 활동이 일어나는 순서를 나타낸다.

UML 2.x에서 활동 다이어그램은 페트리넷과 유사한 의미론을 기반으로 재형식화되어, 활동 다이어그램을 사용하여 모델링할 수 있는 상황의 범위를 넓혔다.

👆
좌우로 밀어서 보기
👆
좌우로 밀어서 보기
그림명칭설명
--시작 노드검은 원으로 흐름의 시작점을 나타낸다.
--활동 종료 노드눈알 기호(◉일본어)로 액티비티 전체의 종료를 나타낸다.
--흐름 종료 노드 안에 ×(⊗일본어)로 흐름의 종료점을 나타낸다. 병렬 동작이 있는 경우, 액티비티 전체의 종료가 아닐 수도 있다.
액티비티 엣지 (흐름)화살표로 제어 또는 데이터의 흐름 경로를 나타낸다. 제어 흐름과 객체 흐름이 있다.
50px
50px
액션모서리가 둥근 사각형으로 둘러싸인 문장으로 액션(처리)을 나타낸다. 액션 노드라고도 한다.
객체
객체 노드사각형으로 객체 또는 데이터를 나타낸다. 액션에서 객체로 화살표가 그려지고, 객체에서 액션으로 화살표가 그려진 그림에서, 액션에서 (하나의) 액션으로 객체가 전달(이동)되는 것을 나타낼 수 있다.╭━━━━╮
┃처리  ┃
┃ ○→○┃
╰━━━━╯서브 액티비티모서리가 둥근 사각형 안에 「○→○」를 표시하여, 다른 액티비티 다이어그램에서 상세 내용이 작성된 동작을 나타낸다.↓ [조건 A]
◇───→

│[조건 B]
↓디시전 (Decision)흐름의 분기점을 마름모로 나타낸다. 분기 조건은 각 화살표 옆에 괄호로 기재한다 (순서도와 달리 마름모 안에 문자는 쓰지 않는다).↓
◇←──

↓머지 (Merge)분기된 흐름이 합류하는 점도 마름모로 나타낸다. 조인과는 달리 제어 (토큰)가 어느 유입 엣지에 도달하면 제어가 유출 엣지로 흘러간다 (토큰의 증감은 없다). 순서도와 달리 분기에 대한 합류에서는 액션에 여러 엣지가 가도록 작성해서는 안 된다.↓
━━━━━
↓ ↓포크 (Fork)굵은 선으로 여러 처리가 병렬로 수행되는 부분의 시작을 나타낸다.↓ ↓
━━━━━
↓조인 (Join)굵은 선으로 여러 처리가 병렬로 수행되는 부분의 종료를 나타낸다. 이 위의 처리가 모두 종료된 후에 다음 처리로 전환이 가능하다.□핀 (Pin)액션 노드에 부착된 작은 정사각형으로, 액션에 입력되는 객체 또는 출력되는 객체를 나타낸다.╭┅┅┅┅╮
┇    ┇
┇    ┇
╰┅┅┅┅╯확장 영역모서리가 둥근 파선으로 반복하는 처리 등을 둘러싼다. 왼쪽 상단에 처리 종류를 이중 산형 괄호로 기재하며 《iterative》가 순차 처리, 《parallel》이 병렬 처리, 《stream》이 일괄 처리를 나타낸다.
👆
좌우로 밀어서 보기
     
확장 노드확장 영역의 사이드 점선 위에 겹쳐 기재하고 화살표로 흐름의 출입을 표현한다.타이머 이벤트「▽」와 「△」를 상하로 연결한 그림으로 타이머에 의한 처리로 인한 이벤트를 나타낸다.──
 /
 ──→예외 처리Z자형 화살표로 예외가 발생했을 때 화살표의 처리를 수행한다.

4.1. 시작 노드

검은 원으로 표시하며, 활동의 시작점을 나타낸다.

4.2. 활동 종료 노드

눈알(◉일본어) 모양으로 표시하며, 활동 다이어그램 전체의 종료를 나타낸다.

4.3. 흐름 종료 노드

흐름 종료 노드는 원 안에 ×(⊗일본어)로 표시되며, 흐름의 종료 지점을 나타낸다. 병렬 동작이 있는 경우, 활동 전체가 종료되지 않을 수도 있다.

4.4. 액티비티 엣지 (흐름)

화살표로 표시하며, 제어 또는 데이터의 흐름 경로를 나타낸다. 제어 흐름과 객체 흐름이 있다.

4.5. 액션

액션
액션

모서리가 둥근 사각형으로 표시하며, 액션(처리)을 나타낸다. 액션 노드라고도 한다.

4.6. 객체 노드

객체 노드는 사각형으로 표시하며, 객체 또는 데이터를 나타낸다. 액션과 액션 사이에서 객체가 전달(이동)되는 것을 나타낼 수 있다.

4.7. 서브 액티비티

둥근 모서리의 사각형 안에 '○→○'를 표시하여, 다른 활동 다이어그램에서 상세 내용이 작성된 동작을 나타낸다.

4.8. 디시전 (Decision)

마름모(◇)로 표시하며, 흐름의 분기점을 나타낸다. 분기 조건은 각 화살표 옆에 괄호 안에 기재한다. (순서도와 달리 마름모 안에 문자는 쓰지 않는다).

👆
좌우로 밀어서 보기
그림설명
↓ [조건 A]
◇───→

│[조건 B]
흐름의 분기점을 나타낸다.
분기 조건은 각 화살표 옆에 괄호로 기재한다.

4.9. 머지 (Merge)

분기된 흐름이 합류하는 지점을 마름모(◇)로 나타낸다. 조인과는 달리, 제어(토큰)가 어느 한 유입 엣지에 도달하면 제어가 유출 엣지로 흘러가며, 토큰의 증감은 없다. 순서도와는 다르게, 분기에 대한 합류에서는 액션에 여러 엣지가 연결되도록 작성해서는 안 된다.

👆
좌우로 밀어서 보기
그림설명

◇←──

분기된 흐름이 합류하는 지점을 나타낸다. 제어(토큰)가 어느 유입 엣지에 도달하면 제어가 유출 엣지로 흘러간다(토큰의 증감은 없다).
참고: 순서도와 달리 분기에 대한 합류에서는 액션에 여러 엣지가 가도록 작성해서는 안 된다.

4.10. 포크 (Fork)

굵은 선으로 표시하며, 여러 처리가 병렬로 수행되는 부분의 시작을 나타낸다.

👆
좌우로 밀어서 보기
그림설명

━━━━━
↓ ↓
굵은 선으로 여러 처리가 병렬로 수행되는 부분의 시작을 나타낸다.

4.11. 조인 (Join)

굵은 선으로 표시하며, 여러 처리가 병렬로 수행되는 부분의 종료를 나타낸다. 이 위에 있는 모든 처리가 종료된 후에 다음 처리로 전환이 가능하다.

4.12. 핀 (Pin)

액션 노드에 부착된 작은 정사각형으로, 액션에 입력되는 객체 또는 출력되는 객체를 나타낸다.

4.13. 확장 영역

모서리가 둥근 파선으로 반복하는 처리 등을 둘러싼다. 왼쪽 상단에 처리 종류를 이중 산형 괄호로 기재하며, 《iterative》는 순차 처리, 《parallel》은 병렬 처리, 《stream》은 일괄 처리를 나타낸다.

4.14. 확장 노드

👆
좌우로 밀어서 보기
👆
좌우로 밀어서 보기
그림명칭설명
확장 노드확장 영역의 사이드 점선 위에 겹쳐 기재하고 화살표로 흐름의 출입을 표현한다.

4.15. 타이머 이벤트

기호로 표현되며, '▽'와 '△'를 상하로 연결한 그림으로 타이머에 의한 처리로 인한 이벤트를 나타낸다.

4.16. 예외 처리

Z자형 화살표로 예외가 발생했을 때 화살표의 처리를 나타낸다.