슬라이드 1

Download Report

Transcript 슬라이드 1

State Chart Diagram
nified Modeling language
1
2
3
4
nified Modeling language
State Chart Diagram이란?
- 상태(State)를 나타내기 위한 다이어그램
-> 대상물을 이해하기 위한 중요한 ‘어떤 상황’ 말한다.
예) 휴대 전화 - 손에 들고 있다, 들고 있지 않고 있다.
- 이벤트-간단히 말하면 ‘사건’이다
예) 휴대 전화 – 착신한다,버튼을 누른다,메시지를 수신한다.
-> State Chart Diagram이란
‘대상 안에 어떠한 상태가 있는지 찾아내어
각각의 상태에 대해 할 수 있는 것과 할 수 없는 것을 명확히 하고,
상태가 어떠한 이벤트에 의해 변화해 가는지’를 나타내는 것이다.
nified Modeling language
평행상태
이력상태
작업개시
상태
상태이동
가입 완료
가입[조건OK]
미가입
탈회[not대출중]/ 회원증반환
보류기한 끝
대출의지 없음
가입[학생증 없음]
일반 회원
H
교직원
Entry/ 회원증발행
Entry/ 신회원증발행
보류기한 끝
종료상태
대출
회원 보류
Entry/ 신청서보관
미대출
대출중
신분증확인
Entry/ 대출회수기록
반환
회원 State Chart Diagram
액션
개시 상태
상태 이동의 시작 지점. 시작 시의 상태 이동은 시스템 부팅이나 오브젝트 생성을 나타냅니다.
개시 상태는 스테이트 차트 다이어 그램 안에서 반드시 1개는 있어야 합니다.
nified Modeling language
평행상태
이력상태
작업개시
상태
상태이동
가입 완료
가입[조건OK]
미가입
탈회[not대출중]/ 회원증반환
보류기한 끝
대출의지 없음
가입[학생증 없음]
일반 회원
H
교직원
Entry/ 회원증발행
Entry/ 신회원증발행
보류기한 끝
종료상태
대출
회원 보류
Entry/ 신청서보관
미대출
대출중
신분증확인
Entry/ 대출회수기록
반환
회원 State Chart Diagram
액션
종료 상태
상태 이동의 종료 지점. 종료로의 상태 이동은 시스템 정지나 오브젝트 소멸을 나타냅니다.
종료 상태에서는 상태 이동은 없습니다. 종료상태는 생략 가능합니다.
nified Modeling language
평행상태
이력상태
작업개시
상태
상태이동
가입 완료
가입[조건OK]
미가입
탈회[not대출중]/ 회원증반환
보류기한 끝
대출의지 없음
가입[학생증 없음]
일반 회원
H
교직원
Entry/ 회원증발행
Entry/ 신회원증발행
보류기한 끝
종료상태
대출
회원 보류
Entry/ 신청서보관
미대출
대출중
신분증확인
Entry/ 대출회수기록
반환
회원 State Chart Diagram
액션
상태
대상의 라이프 사이클(발생부터 소명까지)안의 어떤 상황을 나타낸다.
상태 안에는 액션이나 내부 이동을 정의 할 수 있다.
nified Modeling language
평행상태
이력상태
작업개시
상태
미가입
대출의지 없음
가입[학생증 없음]
상태이동
가입 완료
가입[조건OK]
이벤트 (파라미터 리스트) [가드조건] / 액션
탈회[not대출중]/ 회원증반환
보류기한 끝
일반 회원
H
• 이벤트 : 상태 이동을 발생시키는 이벤트
종료상태
교직원
Entry/ 회원증발행
Entry/ 신회원증발행
보류기한 끝
• 파라미터 리스트 : 이벤트 발생에 의해 전달된 파라미터. 복수로 정의 가능
회원 보류
대출
미대출
대출중
• 가드
조건 : 조건이
성립하고 있을 때에만 상태가 이동한다
신분증확인
Entry/ 신청서보관
• 액션: 상태 이동에 따라 실행되는 액션
Entry/ 대출회수기록
반환
회원 State Chart Diagram
액션
상태 이동
상태에서 상태로의 이동을 나타낸다.
지정된 이벤트가 발생 했을 때 상태가 이동합니다.
정의가 생략된 경우 이동 전 상태의 ENTRY 액션의 실행이 끝나면 자동으로 상태를 이동합니다.
(‘무조건 이동’ 혹은 ‘Lambda 이동’이라 한다.)
nified Modeling language
평행상태
이력상태
작업개시
상태
상태이동
가입 완료
가입[조건OK]
미가입
탈회[not대출중]/ 회원증반환
보류기한 끝
대출의지 없음
가입[학생증 없음]
일반 회원
H
교직원
Entry/ 회원증발행
Entry/ 신회원증발행
보류기한 끝
종료상태
대출
회원 보류
Entry/ 신청서보관
미대출
대출중
신분증확인
Entry/ 대출회수기록
반환
회원 State Chart Diagram
액션
평행상태
상태 안에는 여러 개의 상태 이동을 정의할 수 있다.
상태 안에 상태 이동을 포함한 상태 를 혼합(composite) 상태 , 포한되어 있는 상태를 ‘서브 상태’ 라 한다
혼합상태에서 여러 개가 동시에 동작하는 상태 이동을 ‘평행 상태’라고 한다.
평행상태에 있는 서브 상태들의 상태 이동은 독립적으로 발생한다.
nified Modeling language
평행상태
이력상태
작업개시
상태
상태이동
가입 완료
가입[조건OK]
미가입
탈회[not대출중]/ 회원증반환
보류기한 끝
대출의지 없음
가입[학생증 없음]
일반 회원
H
교직원
Entry/ 회원증발행
Entry/ 신회원증발행
보류기한 끝
종료상태
대출
회원 보류
Entry/ 신청서보관
미대출
대출중
신분증확인
Entry/ 대출회수기록
반환
회원 State Chart Diagram
액션
이력상태
혼합상태에서 다른 상태로 이동한 후, 다시 혼합 상태로 되돌아 왔을 때 어떤 서브 상태에 있었는지 마크를
해서 저장한다.
예)가입이 완료되고 나서 미가입으로 이동한 후, 한번 더 가입 완료로 되돌아 왔을 때
탈퇴시의 회원종류(일반 회원이나 교직원)로 복귀하고 있다.
nified Modeling language
포크
조인
미납품
납품완료
수취
요망
대출불가
발주
미지불
지불완료
작품 등록완료
지불
대출가능
작품이 프론트에 도착할 때 까지의
State Chart Diagram
포크 / 조인
동시에 움직이는 상태 이동이 있을 경우 포크와 조인을 사용한다.
포크 – 상태이동을 분리
조인 – 머지(merge) , 포크된 이동이 전부 종료할 때 까지 기다린다.
nified Modeling language
|시스템 전체의 움직임을 파악한다.
- 시스템 전체를 대상으로 스테이트 차트 다이어그램을 그렸을 경우 사용
- UseCase은 UseCase와 Actor의 관계나, 유즈케이스 모델화 대상나에 몇 개만 나타내고 있지만
어느 타이밍에 실행할 수 있는지 알 수가 없다.
-State Chart Diagram은 시스템에서 취할 수 있는 상태 정의,각각의 상태에 대해 어떤 UseCase가 실행되는지 그려봄으로써
시스템과 라이프 사이클과 UseCase의 관계를 명확히 알 수 있다.
UseCase 다이어그램을
State Chart Diagram에 매핑한다.
시스템을 기동한다
접수계
시스템을 정지한다
반환
Entry/ UC작품을 반환한다
시스템을 대출한다
반환요구
반환완료
시스템을 반환한다
/UC시스템을 부팅한다.
시스템을 등록한다
시스템을 표시한다
대기
Entry/ UC알림을 표시한다
정지요구/UC시스템을 정지한다.
대출요구
정산완료
대출
렌탈 비디오점의 접수시스템
Entry/ UC작품을 대출한다
가입희망
가입
Entry/ UC회원을 등록한다.
가입완료[가입만]
가입 희망
가입완료(대출과 함께 희망)
nified Modeling language
|오브젝트의 라이프 사이클 파악
-모델링 대상을 1개의 오브젝트로 했을 때 사용방법
- 시스템이 상태에 따라 움직이는 방법을 바꾸는 것처럼 오브젝트도 상태에 따라 움직인 방법이 바뀐다.
- 오브젝트의 스테이트 차트 다이어그램 사용법중 에서 중요한 것 중 하나 – 오브젝트의 생성/소멸 명확히 해야함
->불필요한 오브젝트가 차례차례 쌓여 메모리 부족의 주 원인이 된다.
- 생성된 오브젝트의 소명 여부와 소멸 시점이 명시된다(종료 상태인가, 어떤 이벤트에서 종료 상태로 이동하는가)
참고) C++ - 오브젝트를 삭제하는 타이밍을 알 수 있다.
Java – 오브젝트 참조를 멈추는 타이밍을 알 수 있다.
-> Java에서는 오브젝트가 아무 곳에서도 참조되지 않으면 Garbage Collection이 대상이 됨
nified Modeling language
가입 완료
가입[조건OK]
미가입
탈회[not대출중]/ 회원증반환
보류기한 끝
대출의지 없음
가입[학생증 없음]
일반 회원
H
교직원
Entry/ 회원증발행
Entry/ 신회원증발행
보류기한 끝
대출
회원 보류
미대출
Entry/ 신청서보관
대출중
신분증확인
Entry/ 대출회수기록
반환
회원 State Chart Diagram
미납품
납품완료
수취
요망
대출불가
발주
미지불
지불완료
작품 등록완료
지불
대출가능
작품이 프론트에 도착할 때 까지의
State Chart Diagram
nified Modeling language
|이벤트의 취사 선택을 검토
-이벤트 구동형 시스템(시스템 밖에서 발생한 사건에 대해 시스템이 반응 하는 시스템)에서 다양한 이벤트가 발생할때
이벤트의 취사 선택을 검토하는 것은 시스템 동작을 안정적으로 구현하기 위한,필수불가결한 요소이다.  효과적이다
- 상태별로 어떤 이벤트에 반응하고, 어떤 이벤트를 무시하는지 결정할 수 있다.
e3
S1
S3
- S1 에서는 e1,e3의 이벤트에 반응하지만 e2는 무시한다
e3
e1
e2
- S2 에서는 e2에만
- S3 에서는 e3에만 반응한다.
S2
nified Modeling language
|의미가 있는 상태를 만든다.
- ‘상태’ 의 버람을 막기 위해 시스템에 특별한 의미가 있는지 반드시 검토.
- 판단기준
1. 상태로 밖에 할 수 없는 것이 있다.
2. 상태일 때 시키고 싶지 않은 것이 있다
|액션 상태와 다름이 없다.
- 스테이트 차트 다이어그램의 상태를 어떤 처리를 실행하고 있는 상태(=액션 상태)로 모두 자동으로 상태 이동을 한것이
액티비티 다이어그램이다.
-> 플로우 차트와 같은 다이어그램이 되었다면, 이미 스테이스 차트 다이어그램이 액티비티 다이어그램으로 바뀐것이니
주의하라.
nified Modeling language
가입 완료
가입[조건OK]
미가입
탈회[not대출중]/ 회원증반환
보류기한 끝
대출의지 없음
가입[학생증 없음]
일반 회원
H
교직원
Entry/ 회원증발행
Entry/ 신회원증발행
보류기한 끝
대출
회원 보류
미대출
Entry/ 신청서보관
대출중
신분증확인
Entry/ 대출회수기록
반환
회원 State Chart Diagram
미납품
납품완료
수취
요망
대출불가
발주
미지불
지불완료
작품 등록완료
지불
대출가능
작품이 프론트에 도착할 때 까지의
State Chart Diagram
시
작
(합류지점)
진행 또는 취소?
[취소]
[진행]
운송자 고유 번호 입력
[운송자 정보 없
음]
재입력 또는 취소
프롬프트 표시
[취소
됨]
운송자 검색
[운송자 정보 있
음]
운송자 상세 정보 표시
접수할 물품이 더 있는가?
[아니
오]
[예]
[매입 주문 내용 없음]
‘일치하는 매입 주문
일치하는 매입 주문
내용 없음’메시지 표시
내용을 검색
[매입 주문 내용 있음] 수정된 매입 주문 내용을
[일치안
지불회계 부서에 통보
매입 주문 내용에서
‘일치하는 품목 없음’
함]
품목 검색
메시지 표시
[일치함]
지불 회계 부서에
‘통보 완료’메시지 표시
품목과 수량을 체크
(합류지
점)
처리에서 제외시킴
(합류지
점)
재고 목록에
접수 물품을 반영
‘재고 목록 수정 완료’
메시지 표시
접수 확인서 출력
[완
료]
nified Modeling language
|어디서 액션을 쓸까
- 액션을 나누어 쓸대 ‘상태를 추가하면 다른 상태로 이동한다’
‘다른 상태로 부터 이동해 왔다’의 관점에서 생각하면 이해가 쉽다.
A
A
A
exit/action1
e1
B
e1/action
B
e1
B
exit/action1
※모두 상태 A 에서 B로 이동 할 때 action1을 실행한다.
nified Modeling language
|어디서 액션을 쓸까
- 액션을 나누어 쓸대 ‘상태를 추가하면 다른 상태로 이동한다’
‘다른 상태로 부터 이동해 왔다’의 관점에서 생각하면 이해가 쉽다.
[1].
[2].
A
exit/action1
C
A
[3].
A
C
C
e1/action
e1
e1
D
D
D
B
B
B
entry/action1
[1] . A에서 B로 이동 할 때도 action1은 실행된다.
[2] . A에서 B로 이동 할 때만 action1은 실행된다.
[3] . A이외로부터 이동해 와도 action1은 실행된다.
nified Modeling language
|상태 이동표와 병행
- 스테이트 차트 다이어그램에서는 각각의 상태에 반응하는 이벤트에 기술이 없기 때문에 그려져 있지 않은 이벤트가 무시할것
인지, 검토 전 이벤트인지 애매한 경우가 있다. -> 상태 이동표를 같이 사용
- 상태이동표는 다양한 포멧이 있다
- 각각의 상태에 대해 이벤트가 발생 했을때 어떻게 처리할지 표에 기재
※ EI(Event Ignore)- 이벤트무시
e3
S1
S3
e3
e1
e2
e1
e2
e3
S1
S2
EI
S3
-
-
-
EI
S3
EI
-
-
-
EI
EI
S1
-
-
-
S2
S2
S3
※ CH(Can’t Happen)- 이벤트와 상태의 구성은 있을 수 없다는 의미.
- 외형상 움직임에는 큰차이없지만 프로그램 작성에 영향을 줌  검토후 기입 (처음에는 EI로 하는게 안전)
•
참고 문헌
1. 다이어그램으로 쉽게 배우는 UML
-이노우에 타케시 저 | 이영희
2. UML 3일 완성
-Thomas A. Pender 저 | 유영철 박순정
3. JAVA 프로그래머를 위한 UML 실전에선 이것만 쓴다
- 로버트 C. 마틴 저 | 이용원