객체지향설계와패턴 lecture #5: 동적모델링 - dongguk...실습#4:...

37
객체지향 설계와 패턴 객체지향 설계와 패턴 Lecture #5: 동적 모델링 Eun Man Choi [email protected]

Upload: others

Post on 15-Jul-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

객체지향 설계와 패턴객체지향 설계와 패턴

Lecture #5: 동적 모델링

Eun Man [email protected]

Page 2: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

학습 목표

l 동적 모델

l 순서 다이어그램

l 커뮤니케이션 다이어그램

l 상태 다이어그램

2

l 상태 다이어그램

l 모델 체킹

Page 3: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

동적 모델링 과정

l 내부 구성 요속들의 시간의 흐름에 따라 어떻게 상태가 바뀌며 상호작용하는지 동적 관점에서 표현

l 순서 다이어그램/커뮤니케이션 다이어그램l 상태 다이어그램

l 다이나믹한 구조에 초점

3

Page 4: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

5.2 동적 모델이란?

l 시간의 흐름에 따른 시스템의 여러 요소의 변화를 나타냄

l 동적 모델의 목적l 시스템에 존재하는 객체들 사이의 인터랙션을 모델링l 서브시스템 사이의 인터랙션을 모델링l 사용 사례를 구현하는 객체 인스턴스 사이의 인터랙션을 모델링l 오퍼레이션 안에 존재하는 객체 사이의 인터랙션을 모델링

다른 순서 다이어그램과 결합하여 사용될 수 있는 인터랙션 조각을 모델

4

l 다른 순서 다이어그램과 결합하여 사용될 수 있는 인터랙션 조각을 모델링

l 시스템 실행의 스냅샷

Page 5: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

동적 모델의 내용

l 사용 사례에 참여하는 객체가 무엇이며 어떻게 서로 협력하고 있는지

l 커뮤니케이션 다이어그램l 객체들의 커뮤니케이션l 객체 사이의 구조적 관계

l 순서 다이어그램객체들의 커뮤니케이션l 객체들의 커뮤니케이션

l 객체의 구동 기간l 메시지의 호출 순서

l 상태 다이어그램l 객체나 서브시스템의 상태 변화

5

Page 6: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

순서 다이어그램의 요소

l 프레임l 복잡한 것을 계층화

l 라이프 라인l 객체가 인터랙션에 참여함을 나타냄

6

Page 7: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

메시지

l 보내는 객체에서 받는 객체로 화살표 표시

7

l 동기식(synchronous)l 비동기식(asynchronous)l 생성(creation) l 응답(reply)

Page 8: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

조건과 반복

l 조건l 선택 구조 – alt로 프레임 표시

l 반복l 메시지의 호출이 반복적으로 일어나는 경우 – loop로 표시

8

Page 9: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

병렬 프레임

l 병렬 수향을 처리하는 동작l Par로 표시

9

Page 10: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

순서 다이어그램 그리기

1. 다이어그램의 범위를 정한다. 2. 사용 사례 또는 오퍼레이션의 기능을 수행하기 위하여 필요한 객체

요소를 파악한다. 3. 여러 가지 시나리오에 대하여 생각해 본다.4. 순서 다이어그램을 다음과 같은 순서로 그린다.

1. 프레임을 생성2. 라이프라인을 왼쪽부터 배치3. 인터랙션을 시작하는 메시지를 위에 배치하고 이어지는 메시지들을 위

10

3. 인터랙션을 시작하는 메시지를 위에 배치하고 이어지는 메시지들을 위에서부터 아래로 배치한다.

4. 필요하다면 복합 프레임을 사용한다.

5. 다른 시나리오가 있다면 이에 대하여 순서 다이어그램을 그린다. 6. 여러 대안(alternatives)들을 종합하여 하나의 순서 다이어그램으

로 그린다.

Page 11: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

순서 다이어그램의 검증

l 표현하려는 내용이 다 표현되었는지 확인

l 다른 다이어그램에도 동일하게 표현되었는지 확인

11

Page 12: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

사례사례 연구연구 -- 자판기자판기

customer machineinsertMoney(x)

insertMoney(y)

m:=checkAmount(x+y)

push(z)

a:=checkAvailability(z)

[!a] return()

5 seclightUp()

lightDown()

moveCoins()

dispenseDrink()[m&a]

12

Page 13: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

사례사례 연구연구 -- 자판기자판기

customer coinSlot button1 controller shelfRel1 shelfSens1insertMoney(x)

insertMoney(y)

push() request(1)

m:=checkAmount()

close()

getTotal()a:=checkAvailability()

isEmpty()

[!a] return()

release()lightUp()

lightDown()open()

5 secmoveCoins()

[m&a]

13

Page 14: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

확장 흐름

customer coinSlotinsertMoney(x)

insertMoney(y)

button1 controller timer

timeOut()

set(60)

set(60)

checkTime()

checkTime()60 sec

request(1)push()

return()

insertMoney(x)

insertMoney(y)

close() reset()

set(60)

set(60)

< 60 sec

14

Page 15: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

실습 #4: 마이크로웨이브 오븐

l 마이크로웨이브 오븐에 다음과 같은 객체가 있다고 가정하자.l Ovenl Lightl Emission tubel Timer

l 마이크로웨이브 오븐과 관련된 액션은 다음과 같다.l Opening the doorl Closing the doorl Closing the doorl Using the control buttonl Completion of the prescribed cooking interval

l 다음 시나리에 대한 순서 다이어그램을 작성하시오.l Open the door, insert the food, close the door set the 1-minute

timer, wait for cooking to complete, open the door and retrieve the food.

15

Page 16: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

5.4 커뮤니케이션 다이어그램

l 인터랙션에 참여하는 객체들의 연관을 나타내고 있음

16

Page 17: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

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

l 링크

l 메시지

17

l 메시지l 순서 표시

Page 18: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

커뮤니케이션 다이어그램 그리기1. 인터랙션의 범위를 결정한다. 사용 사례, 시스템, 서브시스템, 오퍼

레이션 중에 하나.

2. 인터랙션의 기능을 수행하기 위하여 필요한 구조적인 요소(객체, 서브시스템, 시스템)와 관계들을 찾아낸다.

3. 커뮤니케이션 다이어그램을 레이아웃 한다.

18

4. 메시지를 추가한다.

5. 제대로 그렸는지 검증한다.

Page 19: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

UML 2.0 커뮤니케이션 다이어그램

l 협동(collaboration) 하는 객체 사이의 인터랙션을 나타냄

l 클래스 다이어그램과 순서 다이어그램의 가교 역할

l 시간 순서 대로 그리지 않음

l 순서 다이어그램과 같이 메시지 교환을 나타냄l 순서 다이어그램과 같이 메시지 교환을 나타냄

19

Page 20: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

커뮤니케이션 다이어그램의 기본 요소

Service : 순서 번호:[조건]: 리턴값 := 메시지(파라미터)

Object1:ClassAservice

리턴 값은 := 왼쪽에 안 나올 수도 있음

순서 번호는 책의 장, 절 번호(예: 1, 1.3, 2.3.1 등)

20

Page 21: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

커뮤니케이션 다이어그램의 메시지 예

1:display()[mode=display]1.2.1:redraw()[balance > 0]5:debit(amount)2*[n:=1..m]curr:=nextSeq(n)2.3[x<0]:doodle()3.1[y=>1]:write()3.1[y=>1]:write()1.1a,1.1b:doMore()2.2a,2.2b/3:playback()

21

Page 22: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

커뮤니케이션 다이어그램 예

:ComputerPrint(ps_file)

1:Print(ps_file)

:printServer :Printer[printerFree]1.1:Print(ps_file)

22

Page 23: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

사례연구 - 자판기

button1

timer1

2: push()

2.1: request(1)

2.1.2.1: getTotal()

2.1.5 [m&a]: lightUp()2.1.1: close()

3.2.2: lightDown()1.1: set(60)2a: timeOut()

coinSlot controller

shelfRel

shelfSens

timer2

1: insertMoney(x)

2.1.2: m:=checkAmount()

2.1.2.1: getTotal()

2.1.3: a:=checkAvailability()

2.1.3.1: isEmpty()

2.1.4a [!a]: return()2.1.7 [m&a]: moveCoins() 2.1.4 [m&a]: release()

3.2.2: lightDown()

3.1.1: open()

1.1: set(60)2.1.1.1: reset()

3: timeOut()

2.1.6: set(5)

«self»

23

Page 24: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

5.5 상태 다이어그램

l 시스템에서 중요한 역할을 담당하는 클래스의 상태 변화

l 예: ATM – account 클래스

24

Page 25: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

상태 다이어그램의 요소l 상태

l 대상이 갖는 생명주기의 한 시점l 액션이 수행되거나 이벤트를 기다림

l 상태 변환l 상태 사이의 이동l 이벤트에 대한 반응

aState

l 액션l On Entry - 상태에 진입할 때 액션이 구동됨l Do - 상태 안에서 액션이 수행됨l On Event - 이벤트에 대한 반응으로 액션이 실행됨l On Exit - 상태에서 빠져나가기 바로 전에 액션이 실행됨

l 형태: action-label / action

25

Page 26: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

복합 상태

l 서브 상태로 분할 할 수 있음

l Order의 상태 변환

26

Page 27: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

병렬 상태

l 복합 상태 안에서 동시에 여러 개의 병렬 서브상태로 구성

l 병행 흐름은 독립적

27

Page 28: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

상태 다이어그램 그리기

1. 범위를 정한다.

2. 시작, 종료 상태를 파악한다.

3. 객체나 서브시스템이 어떤 상태들을 갖는지 찾아낸다.

4. 상태를 전환시키는 이벤트, 액션, 조건들을 파악한다.4. 상태를 전환시키는 이벤트, 액션, 조건들을 파악한다.

5. 필요하면 서브상태를 이용하여 확장한다.

28

Page 29: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

기타 동적 다이어그램

l 타이밍 다이어그램l 어느 시간 간격에 어떤 상태에서 어떤 상태로 변하는지 나타냄

인터랙션 뷰 다이어그램l 인터랙션 뷰 다이어그램l 액티비티 + 인터랙션

29

Page 30: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

상태 다이어그램의 예

On first floor

Moving up

do/moving to floor

Moving down

Go_up (floor)

ArrivedGo_up (floor)

Arrived

Activate

Moving tofirst floor

Idle

timer = 0

do/increase timer

Moving down

do/moving to floor

Go_up (floor)

Go_down (floor)

[timer = time-out]

Arrived

30

Page 31: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

상태 다이어그램의 예

Off On

Broken

Powersupplied

Externalimpact

Bulbdiscarded

New bulbfitted

Life timeexceeded

Details

Waiting

Registering

Casting

Writing

Deciding

Polling stationopen On the

move

Call

Boothfree

Detailscorrect

Ballot papercomplete

Arriveat booth

Decision taken

Arrive at ballot box

Ballot cast

Vote cast

Ballot paperissued

31

Page 32: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

상태 다이어그램의 예

IdleCollect Money

coins_in(amount) / add to balance

coins_in(amount) / set balance

cancel / refund coins

do: test item and compute change

do: make changedo: dispense item

[item empty] [select(item)]

[change=0] [change>0]

[change<0]

32

Page 33: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

5.6 모델 검증

l 일관성 분석을 통하여 설계의 결함을 찾나내고 품질을 높이려는 작업

l 완전성, 모순이 없는지 체크

33

Page 34: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

모델 검증 방법l 다이어그램 사이의 크로스체크

34

Page 35: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

모델 검증 규칙

l 설계 도구 기능l 일관성 분석l 자동 코드 생성 기능

l 상태 다이어그램의 내용 분석l 트랜지션의 충돌, 발생하지 않는 이벤트

순서 다이어그램과 상태 다이어그램을 비교 검토l 순서 다이어그램과 상태 다이어그램을 비교 검토l 시스템의 특정 동작을 체크l 순서 다이어그램을 따라가면서 상태 다이어그램의 변화가 맞는지 체크

35

Page 36: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

Exercise #5: 마이크로웨이브 오븐

l 마이크로웨이브 오븐 소프트웨어의 상태 다이어그램을 그리시오.

36

Page 37: 객체지향설계와패턴 Lecture #5: 동적모델링 - Dongguk...실습#4: 마이크로웨이브오븐 l마이크로웨이브오븐에다음과같은객체가있다고가정하자

Questions?Questions?