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

Post on 15-Jul-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Lecture #5: 동적 모델링

Eun Man Choiemchoi@dgu.ac.kr

학습 목표

l 동적 모델

l 순서 다이어그램

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

l 상태 다이어그램

2

l 상태 다이어그램

l 모델 체킹

동적 모델링 과정

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

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

l 다이나믹한 구조에 초점

3

5.2 동적 모델이란?

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

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

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

4

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

l 시스템 실행의 스냅샷

동적 모델의 내용

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

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

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

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

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

5

순서 다이어그램의 요소

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

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

6

메시지

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

7

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

조건과 반복

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

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

8

병렬 프레임

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

9

순서 다이어그램 그리기

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

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

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

10

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

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

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

로 그린다.

순서 다이어그램의 검증

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

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

11

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

customer machineinsertMoney(x)

insertMoney(y)

m:=checkAmount(x+y)

push(z)

a:=checkAvailability(z)

[!a] return()

5 seclightUp()

lightDown()

moveCoins()

dispenseDrink()[m&a]

12

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

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

확장 흐름

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

실습 #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

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

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

16

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

l 링크

l 메시지

17

l 메시지l 순서 표시

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

레이션 중에 하나.

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

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

18

4. 메시지를 추가한다.

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

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

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

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

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

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

19

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

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

Object1:ClassAservice

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

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

20

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

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

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

:ComputerPrint(ps_file)

1:Print(ps_file)

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

22

사례연구 - 자판기

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

5.5 상태 다이어그램

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

l 예: ATM – account 클래스

24

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

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

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

aState

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

l 형태: action-label / action

25

복합 상태

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

l Order의 상태 변환

26

병렬 상태

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

l 병행 흐름은 독립적

27

상태 다이어그램 그리기

1. 범위를 정한다.

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

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

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

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

28

기타 동적 다이어그램

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

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

29

상태 다이어그램의 예

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

상태 다이어그램의 예

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

상태 다이어그램의 예

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

5.6 모델 검증

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

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

33

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

34

모델 검증 규칙

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

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

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

35

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

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

36

Questions?Questions?

top related