본문 바로가기
컴퓨터과학[4-1]/소프트공학

소프트웨어 공학 - [제11강] 액티비티 다이어그램

by boolean 2017. 1. 4.
728x90

소프트웨어 공학 - [제11강] 액티비티 다이어그램

주요용어

액티비티: 작업의 실행을 의미하는 것으로 일련의 액션들로 구성된 작업 프로세스이다.

액션: 액티비티의 구성 단위로 분해될 수 없는 단일 작업을 말한다. 오퍼레이션의 호출, 시그날의 전송, 객체의 생성이나 소멸 및 단순 계산 등을 수행한다. 액티비티의 특별한 형태로 볼 수도 있다.

시그널: 외부와의 상호 작용을 의미한다. 외부의 사람, 시스템, 또는 프로세스로 보내는 메시지나 그 것들로부터 받는 메시지를 표현한다.

객체: 액션들 사이에서 전달되는 데이터이다.

액티비티 다이어그램: 액션(또는 액티비티), 제어 흐름, 데이터 객체 등으로 구성된 UML 다이어그램으로 동적 행위 또는 작업 흐름을 표현한다. 비즈니스 프로세스나 오퍼레이션을 모델링하기 위해 사용된다.


개요

액티비티 다이어그램

  • 업무 흐름이나 계산 과정을 액션들의 흐름을 통해 단계적으로 표현
  • 흐름도(또는 순서도)와 유사하며 비즈니스 프로세스의 표현, 오퍼레이션의 제어 흐름을 표현
  • 조건에 따른 흐름과 병행 처리의 표현이 가능함
  • 4+1 뷰에서 프로세스 뷰를 표현하는 유일한 UML 다이어그램


액티비티, 액션 및 제어 흐름

액티비티와 액션

액티비티는 작업의 실행을 의미하는 것으로 일련의 액션들과 이들의 제어 흐름을 표현

액티비티는 액션보다 상위 개념의 프로세스

액션은 액티비티를 수행하기 위해 필요한 단일 작업으로 액티비티에 포함되는 하나의 단계이며 더 이상 분해되지 않는 단일 작업

예) ‘라면 끓이기’는 액티비티, ‘ 물 붓기’, ‘물 끓이기’, ‘라면 넣기’ 는 액션

표기법

액티비티와 액션의 표기법은 동일하며 모서리가 둥근 사각형임

액티비티 내부에 액션들이 포함되며 액티비티의 이름은 상단에 위치함

액션들의 제어 흐름은 화살표(입력 흐름과 출력 흐름)로 나타냄


시작과 종료

액티비티의 시작과 종료

시작 노드는 액티비티의 출발을 의미

입력 데이터나 시그널을 받는 경우 시작 노드가 없기도 함

하나의 액티비티에서 시작 노드는 하나가 존재할 수 있으며 검은 색 원으로 표시

종료 노드는 액티비티의 종료를 의미하고 정확히는(activity final node)라고 함

액티비티종료노드(activityfinal node)

하나의 액티비티에서 일반적으로 하나(여럿 존재하기도 함)의 종료 노드가 존재하며 검은원을 포함한 원으로 표시

흐름 종료 노드(flow final node)

해당 흐름만을 종료하는 노드

전체 액티비티의 종료가 아님

액티비티 내부에서 병렬적 흐름이 발생할 때 특정 흐름을 종료하기 위한 것

X 표시를 포함한 원으로 표시


객체 및 객체 흐름

객체와 객체 흐름

객체는 액션의 입력이나 출력으로 사용되는 데이터로 물리적인 객체를 의미할 때도 있음

객체를 사각형으로 표시하며 이름에 밑줄을 그어 인스탄스임을 강조할 수 있음

객체가 액션으로 넘겨지는 경우 객체 흐름이라 하며 액티비티에서 데이터의 흐름을 강조하는 표현임

액티비티 다이어그램에서 객체를 사용하는 이유

액티비티 다이어그램은 객체 노드를 사용하여 데이터의 흐름을 표현

객체의 생성, 사용, 변경을 명세할 수 있음

액션을 통해 객체의 상태 변화를 명세함

입력 핀과 출력 핀

입출력 핀(pin)을 사용하여 객체 흐름을 표현하기도 함

핀은 액션의 입력이나 출력 파라미터로, 액션에 입출력이 필요함을 강조하는 표현

출력핀은 액션의 결과로 객체가 출력됨을 의미

입력핀은 객체가 액션의 입력으로 사용됨을 의미

객체 흐름에 스테레오 타입 사용하기

객체 전체가 아닌 일부만 전달되는 상황을 표현할 때

복수 개의 정보를 가진 객체에서 필요한 부분만을 사용하는 것을 표현할 때 사용

예) 학생 객체에서 나이만을 사용하는 경우

특정 조건을 만족하는 객체들만 전달되는 상황을 표현할 때도 사용함

예) 학점이 3.0이 넘는 학생 객체들을 사용하는 경우

객체의 상태 표현하기

액션들의 흐름을 따라가다 객체의 상태가 바뀌는 것을 표현하는 것으로 [ ]를 사용하여 상태를 표시

액티비티의 입/출력

액티비티도 입/출력으로 객체를 사용할 수 있음

전체 액티비티에서 사용되는 입력과 출력을 표현하며 액티비티의 좌우 경계 부분에 객체 노드를 위치시켜 표시함

시작 노드와 종료 노드가 생략됨


조건 및 병합 노드

조건 노드와 병합 노드

조건 노드는 조건에 따른 선택적 실행을 표현

조건 노드를 마름모로 표시하며 1개의 입력과 2개 이상의 분기를 가짐

조건 노드에서 나오는 흐름에 조건(guard condition)을 [ ] 안에 표시함

조건을 표시할 때 주의할 점

모든 조건들은 서로 배타적이어야 함

모든 경우를 조건들로 표시해야 함

[else]와 같은 조건을 사용할 수 있음

조건에 따른 액션 흐름들은 병합 노드로 합쳐짐


병렬 처리하기

병렬 처리

병렬 처리를 표현하기 위해 포크(fork)와 조인(join)을 사용하며 수직(또는 수평)의 굵은 막대로 표시

포크 뒤의 흐름은 2개 이상으로 나뉘어 동시에 진행됨

동시 진행되었던 흐름들은 조인을 통해 동기화됨

동시 수행되었던 흐름들이 모두 종료되어야 조인을 통해 다음 흐름으로 이어짐


확장 영역(expansion region)

확장 영역

입력 객체가 컬렉션(collection)일 때, 이것의 모든 요소들에 대해 작업을 수행하는 액션들을 표현

액션들을 포함하는 모서리가 둥근 사각형을 점선으로 표시

양쪽에 연결된 4개의 사각형을 각각 위치시켜 입력과 출력을 표현함

확장 영역의 종류

《parallel》: 요소들을 병행 처리함

《iterative》:요소들을 하나씩 순차적으로 처리함. 하나의 요소가 모든 액션들에서 처리된 후, 다음 요소의 처리를 시작함

《transformation》: 스트림으로 처리함. 첫 번째 액션이 하나의 요소를 처리한 후, 바로 다음 요소를 처리하는 것


시그널 주고 받기

시그널

외부의 사람, 시스템 또는 프로세스와의 상호 작용을 의미

보내거나 받을 수 있는 메시지를 의미

예) 신용 카드 지불 처리에서 카드의 검증을 위해 카드 회사와 상호 작용하는 경우

소프트웨어가 카드 회사에 요청을 보내고 응답을 받는 것

시그널의 수신은 액션을 실행시키는 효과가 있음

시그널을 받으면 어떻게 반응해야 하는지 알고 있으나 언제 올지는 모름

외부의 참여자에게 시그널을 송신하면, 외부 참여자가 적절히 반응할 것이나 이 반응을 모델링하지는 않음

시그널의 송수신은 비동기적

시그널을 보내고 응답이 오기를 기다리지 않고 다음 액션을 바로 수행하는 것

시그널을 동기화하려면 시그널 송신과 수신을 나란히 위치시킴

인터럽트

시그널을 이용하여 인터럽트 상황을 표현할 수 있음

특정 사건이 발생하면 모든 프로세스가 종료되는 상황을 표현할 때 사용함

인터럽트 영역은 인터럽트가 발생할 수 있는 영역으로 취소가 가능한 액션들을 포함하며 모서리가 둥근 사각형을 점선으로 표시

인터럽트를 발생시키는 이벤트에서 인터럽트 발생 시 실행할 액션으로 지그재그 모양의 화살표가 나감

예) 모든 주문이 처리되고 배송된 후에 종료됨. 주문 처리 중에 취소가 발생하면 전체 프로세스가 종료됨. 배송이 시작되면 주문 취소를 할 수 없음


파티션

파티션

액션에 책임을 지는 참여자를 표현하기 위한 것

스윔레인(swimlane)이라고도 함

액티비티에 포함된 액션들을 수행하는 주체는 하나 이상이 될 수 있으며 가로 또는 세로로구역을 구분하여 담당 주체를 표시함


액티비티의 재사용성 높이기

다른 액티비티를 호출하기

액티비티 다이어그램이 너무 커질 때 또는 자주 사용되는 일련의 액션들이 중복되어 표현될때 별도의 다이어그램을 그림

가독성과 재사용성을 높이기 위함

분리된 다이어그램은 다른 액티비티 다이어그램 내에서 호출될 수 있으며 액션 노드 내에 포크 모양의 아이콘은 다른 액티비티의 호출을 표현함


타임 이벤트(교재에 없음)

액티비티의 실행 흐름에서 시간적 요인을 표현해야 하는 경우 모래시계로 표시함

정해진 시간을 기다려야 하는 상황

입력 흐름이 있는 타임 이벤트는 한 번만 일어남

입력 흐름이 없는 타임 이벤트는 규칙적 시간 간격을 두고 반복되는 상황을 표현하며 시작노드를 대신할 수 있음

01
UML 스테레오 타입에 관한 설명이 아닌 것은?
1 UML 요소의 의미를 바꾸거나 명확하게 하기 위한 방법이다.
2 《parallel》와 같이 키워드를 《
》로 감싸 표현한다.
3 스테레오 타입 대신에 특별한 아이콘을 사용하여 표현할 때도 있다.
4 몇 개의 특별한 UML 요소들에만 적용할 수 있다.
정답 | 4해설 | 스테레오 타입은 거의 모든 UML 요소에 적용될 수 있다. 제약 조건(constraints),
태그 값(tagged value)와 함께 UML 확장법의 하나이다.
02
UML 액티비티 다이어그램에 관한 설명으로 잘못된 것은 무엇인가?
1 시스템의 정적인 구조를 표현하는 다이어그램이다.
2 오퍼레이션의 알고리즘을 표현하기 위해 사용할 수 있다.
3 업무 흐름을 표현하기 위해 사용된다.
4 4+1 뷰에서 프로세스 뷰에 속한다.
정답 | 1
해설 | 액티비티 다이어그램은 시스템의 동적인 행위를 표현하는 다이어그램으로 분류되며
4+1 뷰에서는 유일하게 프로세스 뷰에 속하는 다이어그램이다.
03
액티비티 다이어그램의 용도는 무엇인가?
1 메시지들의 흐름과 순서를 표현
2 객체들 간에 주고받는 메시지를 통해 상호 관계를 명세
3 시스템의 단일 객체에 대한 행위를 모델링
4 업무 흐름이나 계산 과정을 액션들의 흐름을 통해 단계적으로 표현
정답 | 4
해설 | 보기 3은 상태 머신 다이어그램에 관한 설명이다.
04
다음 액티비티 다이어그램에서 사용된 요소가 아닌 것은?
1 액션
2 객체
3 조건과 병합 노드
4 시작 노드와 종료 노드
정답 | 3
해설 | 조건과 병합노드는 항상 쌍으로 표현되며 조건에 따른 제어 흐름을 표현하는 것으
로 마름모 모양으로 표시한다. 그림의 맨 아래 위치한 기호는 주석을 나타내는 노드이며 포
크 모양의 아이콘을 포함한 노드를 호출 액티비티 노드라 한다.
05
위의 그림에서 ApprovePayment 옆에 있는 포크 모양 기호의 의미는 무엇인가?
1 다른 액티비티 다이어그램을 호출하는 것이다.
2 시그널을 전송하는 것을 표현한다.
3 인터럽트의 발생을 표현한다.
4 액션의 입력을 표현한다.
정답 | 1
해설 | 액티비티 다이어그램 그램의 복잡성을 줄이고 가독성을 높이고자 자주 사용되는 일
련의 액션들을 별도의 다이어그램으로 분리하고 이것을 호출하여 사용할 수 있다.
06
다음 액티비티 다이어그램에 관한 설명으로 잘못된 것은?
1 주문을 받아야 액티비티가 시작된다.
2 주문 처리 중에 인터럽트가 발생할 수 있다.
3 인터럽트가 발생되면 주문 취소가 실행된다.4 배송 중에도 인터럽트가 발생될 수 있다.
정답 | 4
해설 | 주문의 배송(ShipOrder)은 인터럽트 영역 밖에 있으므로 인터럽트가 발생되지 않는
다. 따라서 배송 중에는 주문을 취소할 수 없다.
정리하기
01
액티비티 다이어그램은 무엇인가?
시스템이 동작하면서 발생되는 일련의 액션들과 그들의 흐름을 표현하는 UML 다이어그램
이다. 흐름도와 유사하나 액션들의 병렬 수행이나 시간과 관련된 이벤트를 표현할 수 있다.
오퍼레이션의 제어 흐름을 표현할 수 있으며 개발 중인 시스템이 적용되는 비즈니스 프로세
스의 작업 흐름을 표현할 때 자주 사용된다.
02
액티비티와 액션의 차이를 구분하라.
액티비티는 일련의 액션들과 제어 흐름 및 여러 요소들을 포함하는 것으로 액션의 상위 개
념이다. 액션은 액티비티를 수행하기 위한 단일 작업을 의미하여 더 이상 분해할 수 없는
액티비티를 의미한다.
03
액티비티 종료 노드와 흐름 종료 노드의 차이는 무엇인가?
단순히 종료 노드라 하면 액티비티 종료 노드를 의미하며 이것은 전체 액티비티의 종료를
의미하며 검은 원을 포함한 원으로 표시한다. 흐름 종료 노드는 해당 경로만을 종료하는 것
으로 X표시가 있는 원으로 표시한다.
04
포크와 조인은 무엇인가?
둘 모두 수평 또는 수직의 굵은 막대로 표현한다. 포크로부터 둘 이상의 작업 흐름이 진행
될 수 있으며 이것들은 동시에 수행된다. 병렬적으로 수행되었던 둘 이상의 작업들은 조인
으로 합쳐진다. 조인은 작업들을 동기화하기 위한 것으로 모든 작업들이 종료되어야 조인
이후의 작업으로 진행될 수 있다.
05
확장 영역이란 무엇인가?
배열과 같은 것이 입력되었을 때 배열의 모든 요소들 각각을 처리하는 액션들을 하나의 영
역으로 묶은 것이다. 모서리가 둥근 점선의 사각형으로 이러한 액션들을 둘러싸서 표시하고
좌우측의 경계에 연결된 4개의 사각형을 위치시킨다. 확장 영역 내에 《parallel》,
《iterative》,《stream》을 표현하여 요소들을 동시에 처리, 순차 처리, 스트림 처리할지를
표시할 수 있다.

Q1 UML 스테레오 타입에 관한 설명이 아닌 것은?
  • 1 UML 요소의 의미를 바꾸거나 명확하게 하기 위한 방법이다.
  • 2 《parallel》와 같이 키워드를 《 》로 감싸 표현한다.
  • 3 스테레오 타입 대신에 특별한 아이콘을 사용하여 표현할 때도 있다.
  • 4 몇 개의 특별한 UML 요소들에만 적용할 수 있다.
확인
정답 및 해설
정답입니다.
정답 : 4번
스테레오 타입은 거의 모든 UML 요소에 적용될 수 있다.
제약 조건(constraints), 태그 값(tagged value)와 함께 UML 확장법의 하나이다. 
Q2 UML 액티비티 다이어그램에 관한 설명으로 잘못된 것은 무엇인가?

  • 1 시스템의 정적인 구조를 표현하는 다이어그램이다.
  • 2 오퍼레이션의 알고리즘을 표현하기 위해 사용할 수 있다.
  • 3 업무 흐름을 표현하기 위해 사용된다.
  • 4 4+1 뷰에서 프로세스 뷰에 속한다.
확인
정답 및 해설
정답입니다.
정답 : 1번
액티비티 다이어그램은 시스템의 동적인 행위를 표현하는 다이어그램이다. 
Q3 다음 액티비티 다이어그램에서 사용된 요소가 아닌 것은?



  • 1 액션
  • 2 객체
  • 3 조건과 병합 노드
  • 4 시작 노드와 종료 노드
확인
정답 및 해설
정답입니다.
정답 : 3번
조건과 병합노드는 항상 쌍으로 표현되며 조건에 따른 제어 흐름을 표현하는 것으로 마름모 모양으로 표시한다. 
Q4 다음 그림에서 ApprovePayment 옆에 있는 포크모양 기호의 의미는 무엇인가?



  • 1 다른 액티비티 다이어그램을 호출하는 것이다.
  • 2 시그널을 전송하는 것을 표현한다.
  • 3 인터럽트의 발생을 표현한다.
  • 4 액션의 입력을 표현한다.
확인
정답 및 해설
정답입니다.
정답 : 1번
액티비티 다이어그램의 복잡성을 줄이고 가독성을 높이고자 자주 사용되는 일련의 액션들을 별도의 다이어그램으로 분리하고 이것을 호출하여 사용할 수 있다.
Q5 다음 액티비티 다이어그램에 관한 설명으로 잘못된 것은?



  • 1 주문을 받아야 액티비티가 시작된다.
  • 2 주문 처리 중에 인터럽트가 발생할 수 있다.
  • 3 인터럽트가 발생되면 주문 취소가 실행된다.
  • 4 배송 중에도 인터럽트가 발생될 수 있다.
확인
정답 및 해설
정답입니다.
정답 : 4번
주문의 배송(ShipOrder)은 인터럽트 영역 밖에 있으므로 인터럽트가 발생되지 않는다.
따라서 이미 배송 중이라면 주문을 취소할 수 없다. 


댓글