소프트웨어 공학 lecture # 6 - 1: uml

76
소소소소소 소소 Lecture #6 - 1: UML 소 소 소 [email protected] 소소 소소소 Mobilecom.tistory.com

Upload: duscha

Post on 14-Jan-2016

126 views

Category:

Documents


2 download

DESCRIPTION

소프트웨어 공학 Lecture # 6 - 1: UML. 안 병 익 [email protected] 강의 블로그 Mobilecom.tistory.com. 강의 개요. 소 개 UML 기초 모형화 개념 UML 응용. 소 개. 객체지향 분석 및 설계 방법 표현 방법에 중점 : 예 ) UML 개발 프로세스 : 예 )Unified Process 개발자 Grady Booch, James Rumbaugh, and Ivar Jacobson - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 소프트웨어 공학 Lecture # 6 - 1: UML

소프트웨어 공학

Lecture #6 - 1: UML

안 병 익[email protected]

강의 블로그 Mobilecom.tistory.com

Page 2: 소프트웨어 공학 Lecture # 6 - 1: UML

2

소 개

UML 기초

모형화 개념

UML 응용

강의 개요

Page 3: 소프트웨어 공학 Lecture # 6 - 1: UML

객체지향 분석 및 설계 방법표현 방법에 중점 : 예 ) UML개발 프로세스 : 예 )Unified Process

개발자Grady Booch, James Rumbaugh, and Ivar Jacobson

OMG(Object Management Group) 에 의하여 표준 채택 보급

Rational Software, Microsoft, Hewlett-Packard, Oracle, Texas Instruments, MCI Systemhouse 등

소 개

Page 4: 소프트웨어 공학 Lecture # 6 - 1: UML

4

표준 문서The Unified Modeling Language for Ob-ject-Oriented Development• Available from http://www.rational.-com

UML 의 발전Unified Method 0.8 at OOPSLA ‘95UML 0.9(June ‘96), UML 0.91(Oct ‘96)UML 1.0(Dec. ‘96)UML 1.1(July ‘97)UML 1.3(Expected to be completed mid-1999)

UML

Page 5: 소프트웨어 공학 Lecture # 6 - 1: UML

기능적 모형

사용자 측면에서 본 시스템 기능UML: 사용 사례 다이어그램

객체 모형

객체 , 속성 , 연관관계 , 오퍼레이션으로 시스템의 정적 구조를 나타냄

UML: 클래스 다이어그램 동적 모형

시스템의 내부 동작UML: 순서 다이어그램 , 상태 다이어그램 , 액티비티

다이어그램

시스템 모형

Page 6: 소프트웨어 공학 Lecture # 6 - 1: UML

6

많이 쓰이던 세 가지 방법Booch, Rumbaugh’s OMT, Jacobson’s OOSE

기타 방법들Meyer 의 Assertion MechanismShlaer-Meller 의 Object LifecyclesOdell 의 ClassificationWirf-Brock 의 ResponsibilityFusion 의 Operation descriptions, Mes-sage numbering

Embley 의 Singleton classes, High-level view

Harel 의 State ChartsGamma 등의 Frameworks, Patterns

UML 이전의 방법들

Page 7: 소프트웨어 공학 Lecture # 6 - 1: UML

업계에서 많이 채택하여 사용 중OOA/D 방법 중 많이 사용하던 Booch, Rum-baugh, Jacobson 의 방법을 기초로 작성

OMG 에 의하여 표준화다양하고 일관성 있는 표현 방법

분석 및 설계 , 구현에 이르기까지 매끄럽게 연결됨의사교환이 용이해짐

소규모나 대규모 모두 잘 적용할 수 있음CASE 도구 및 개발 프로세스의 지원

ROSEUnified Process

UML 의 장점

Page 8: 소프트웨어 공학 Lecture # 6 - 1: UML

소 개

UML 기초

모형화 개념

UML 응용

강의 개요

Page 9: 소프트웨어 공학 Lecture # 6 - 1: UML

사용사례 다이어그램 외부 사용자에 의하여 보여지는 시스템의 큰 기능을 나타냄 시스템의 기능 모형

클래스 다이어그램 시스템을 구성하는 클래스가 어떤 것들이며 그들 사이의 관계를 나타냄 시스템의 객체 모형 ( 정적 모형 )

순서 다이어그램 시스템의 객체들 사이의 메시지 교환을 시각화 시스템의 동적 모형

상태 다이어그램 객체에 대한 상태 변환을 나타냄

액티비티 다이어그램 병렬 수행 가능 작업을 나타냄

UML 기초

Page 10: 소프트웨어 공학 Lecture # 6 - 1: UML

10

정의 “ 순서 있는 액션의 집합을 기술한 것으로 액터에게 해택이 있는 결과를 제공하여야 함” (UML

User guide, pp.220) 목적

시스템의 외부 기능을 나타냄 사용자의 요구를 추출하고 분석

구성 요소 사용사례 (use case) – 액터에게 보이는 시스템의 기능 액터 (actor) – 시스템과 상호작용하는 사람이나 다른 시스템 , 하드웨어

의미 시스템의 범위를 정함

Use-Case 다이어그램

Page 11: 소프트웨어 공학 Lecture # 6 - 1: UML

11

시스템이 어떤 기능을 수행하고 (Use Cases), 주위에 어떤 것이 관련되는지(Actors) 를 나타낸 모형 .

Library

Reserve book

Borrow copyof book

Return copyof book

Extend loan

Browse

Updatecatalog

Book borrowerBrowser

Librarian

Use-Case 다이어그램

Page 12: 소프트웨어 공학 Lecture # 6 - 1: UML

12

Watch

ReadTime

WatchUser

WatchRepairPerson

ChangeBattery

SetTime

교과서의 예

Page 13: 소프트웨어 공학 Lecture # 6 - 1: UML

13

정의 시스템을 구성하는 클래스의 구조를 나타냄 객체들의 공통 구조와 동작들을 추상화 한 것

목적 시스템을 구현할 때 어떤 클래스가 필요한지 클래스 사이의 관계를 나타냄

구성요소 객체 , 클래스 , 속성 , 오퍼레이션 , 연관관계

의미 클래스 다이어그램은 객체지향 프로그램의 골격 ( 즉 클래스의 정의 ) 을 나타냄

클래스 다이어그램

Page 14: 소프트웨어 공학 Lecture # 6 - 1: UML

14

Simple Watch

PushButton Display Battery Time

1

2

1 1 1

1 2 1

UML 클래스 다이어그램 예 : 시계

Page 15: 소프트웨어 공학 Lecture # 6 - 1: UML

15

정의시스템의 동작을 정형화하고 객체들의 메시지 교환을

시각화목적

사용 사례 다이어그램에 관련된 객체 ( 참여 객체 ) 를 추가로 찾아 내기 위하여

객체 사이에 일어나는 상호 작용을 파악하여 나타냄의미

클래스가 가져야 할 오퍼레이션을 파악하는 데 사용됨각 사용 사례에 대하여 하나의 순서 다이어그램을 그림

순서 다이어그램

Page 16: 소프트웨어 공학 Lecture # 6 - 1: UML

16

:SimpleWatch :Display :Time

PressButton1()

:WatchUser

blinkHours()

PressButton1()

PressButton2()

PressButton1And2()

blinkMinutes()

blinkMinutes()

StopBlinking()

incrementMiutes()

Refresh()

CimmitNewTimes()

순서 다이어그램 : Simple Watch

Page 17: 소프트웨어 공학 Lecture # 6 - 1: UML

17

정의객체가 갖는 여러 상태와 상태 사이의 전환을 표현

목적단일 객체의 동작을 나타냄객체의 상태 변화를 점검하여 빠진 오퍼레이션이

없는지 점검요소

원 – 객체의 상태화살표 - 전이 (transition)

상태 다이어그램

Page 18: 소프트웨어 공학 Lecture # 6 - 1: UML

18

BlinkHours IncrementHours

button2Pressed

BlinkMinutes IncrementMinutes

button2Pressed

BlinkSeconds IncrementSeconds

button2Pressed

StopBlinking

button1&2Pressed

button1&2Pressed

button1&2Pressed

SimpleWatch 의 상태 다이어그램

Page 19: 소프트웨어 공학 Lecture # 6 - 1: UML

19

액티비티 : 시스템에서 수행되는 작업 ( 오퍼레이션의 집합 ) 클래스의 매소드

출처 이벤트 다이어그램 (Jim Odell) SDL State Modeling technique Petri-nets

구성요소 원 : 액티비티 화살표 : 트랜지션 ( 다른 액티비티로의 전환 ) 동기 막대 : 제어흐름의 동기화 다이어몬드 : 선택 분기 시작 , 종료

액티비티 다이어그램

Page 20: 소프트웨어 공학 Lecture # 6 - 1: UML

20

OpenIncident

AllocateResources

CoordinateResources

DocumentIncident

ArchiveIncident

액티비티 다이어그램 예

Page 21: 소프트웨어 공학 Lecture # 6 - 1: UML

소 개

UML 기초

모형화 개념

UML 응용

강의 개요

Page 22: 소프트웨어 공학 Lecture # 6 - 1: UML

22

모형화 개념이 중요한 이유 아직 개발되지 않은 소프트웨어 시스템에 대하여 vision 을 갖는 과정

복잡한 시스템에 대하여 컨셉을 잡고

이를 구체화 시키는데 필요

무에서 유를 창조하는 방법 모형 : 상상 속의 시스템 , 즉 설계

소프트웨어 : 모형을 프로그래밍으로 구현

모형을 잘 개발하려면 연습이 필요

모형화 개념

Page 23: 소프트웨어 공학 Lecture # 6 - 1: UML

23

시스템 특정한 목적을 위하여 설계된 상호작용하는 부품의 집합 예 : 자동차

• 목적 : 사람이나 짐을 운반• 부품 : 바퀴 , 엔진 , 차체 , 변속기어

서브시스템 시스템의 컴포넌트는 다시 작은 시스템이 될 수 있음 예 : 자동차의 엔진

• 실린더 , 피스톤 , 연료공급 모듈

서브 시스템으로의 분할 추상 -> 구체적

시스템 , 모형 , 뷰

Page 24: 소프트웨어 공학 Lecture # 6 - 1: UML

24

모형 복잡한 것을 다루기 위한 수단 서로 다른 관점과 정확성의 수준을 가짐

예 : 지도 (map) 지형을 2 차원으로 모형화 한 것 Scale

모형과 추상화 불필요한 자세한 부분을 생략하고 주요 관심사만 표현 예 : 비행기 제작

• 스케일 모형 ( 외관만 표현 )

• 모의 비행 시스템 ( 비행기의 조작 계기판만 표현 )

모 형

Page 25: 소프트웨어 공학 Lecture # 6 - 1: UML

25

비행기

스케일 모형

기타 설계도

전기

연료

비행 시뮬레이터

비행기 제작 모형

Page 26: 소프트웨어 공학 Lecture # 6 - 1: UML

26

뷰 이해할 수 있도록 만든 모형의 부분집합 예 : 비행기 설계도 , 연료시스템 구성도 중첩될 수도 있음

표현 방법 뷰를 표현하는 방법 그래픽 또는 문자의 규칙 예 : UML 다이어그램 같은 의미도 다른 표현 방법을 사용할 수 있음

뷰와 표현 방법

Page 27: 소프트웨어 공학 Lecture # 6 - 1: UML

27

Book Chapter

UML

Booch

Book Chapter

1 *

N

Composed-of

Composed-of

여러 가지 다른 표현 방법

Page 28: 소프트웨어 공학 Lecture # 6 - 1: UML

28

현상 존재하며 인식될 수 있는 객체 예 :

• 이 책• 현재의 이자율 3%• 내 검정 시계• 금요 낚시클럽

개념 현상을 나타내는 추상 예 :

• 객체지향 소프트웨어공학 교과서• 정기 예금의 이자율• 검정 시계• 낚시 클럽

개념과 현상

Page 29: 소프트웨어 공학 Lecture # 6 - 1: UML

29

현상들이 가지고 있는 공통된 특성

검정 시계 -> 개념

이름 목적멤버

Clock시간을 재기위한 장치

개 념

Page 30: 소프트웨어 공학 Lecture # 6 - 1: UML

30

추상화 현상을 개념으로 구별하여 정의하는 것

모형화 여러 현상들에 대한 물음에 대답이 될 수 있는 추상들을 개발하는 작업 예 ) 원소 주기율표

• 원자의 무게와 전자의 수를 기초로 정리한 것

• 어떤 분자를 구성하는지 , 어떻게 구할 수 있는지는 나타내지 않음

시스템 엔지니어 시스템 디자인 작업 – 모형화 작업 응용 도메인과 솔루션 도메인에서 개념을 추상화

모형화

Page 31: 소프트웨어 공학 Lecture # 6 - 1: UML

31

응용 도메인 사용자 환경의 모든 문제를 포함

사용자 , 작업 과정 등

객체지향 분석

솔루션 도메인 구현 가능한 시스템의 모든 영역

시스템의 구조 및 객체 설계

객체지향 설계

객체지향 모형화

Page 32: 소프트웨어 공학 Lecture # 6 - 1: UML

32

응용 도메인

Traffic Control

Airport

Traffic Controller

AirCraft

FlightPlan

SummaryDisplay MapDisplay

HightPlanDatabase

Traffic Controll

응용 도메인 모형

솔루션 도메인

솔루션 도메인 모형

응용 도메인과 솔루션 도메인

Page 33: 소프트웨어 공학 Lecture # 6 - 1: UML

소 개

UML 기초

모형화 개념

UML 응용

강의 개요

Page 34: 소프트웨어 공학 Lecture # 6 - 1: UML

34

사용사례는 시스템의 외부 동작을 파악한 것 시스템이 외부 자극에 어떻게 반응하는가

외부에서 보이며 테스트 가능한 시스템의 액티비티

사용자와 컴퓨터 사이의 상호작용 Ex) 워드프로세서

• “굵은체로 만들기”

• “인덱스 생성”

사용사례는 시스템과 외부 환경 , 그들 사이의 관계를 나타냄

사용사례 다이어그램

Page 35: 소프트웨어 공학 Lecture # 6 - 1: UML

35

액 터시스템과 상호 작용하는 외부 엔티티사용자가 맡은 일 또는 다른 시스템

사용사례특정 액터에게 원하는 결과를 제공하는 시스템에 의하여 수행된 액션이나 트랜젝션

구성 요소

Page 36: 소프트웨어 공학 Lecture # 6 - 1: UML

36

사건관리시스템

Report Emergency

Open Incident

Allocate Resources

Dispatcher

FieldOfficer

사건 관리 시스템

Page 37: 소프트웨어 공학 Lecture # 6 - 1: UML

37

액터는 시스템의 일부가 아님 시스템을 이용하거나 같이 동작하는 시스템 외부 요소

액터는 시스템에 자료를 입력만 할 수도 있음

시스템에서 정보를 받기만 할 수도 있음

자료를 주고 정보를 받을 수도 있음

액터는 사용자의 역할을 표현한 것임

액턴는 사람일 수도 있고 기계 , 다른 시스템일 수도 있음

액 터 (Actor)

Page 38: 소프트웨어 공학 Lecture # 6 - 1: UML

38

시스템의 특정 기능을 요구하는 사람 ( 기계 ) 은 누구인가 ?

기관의 어느 부서가 시스템을 사용하는가 ?

시스템의 사용으로 누가 혜택을 보는가 ?

시스템에 누가 자료를 제공하고 , 정보를 이용하고 , 정보를 삭제하는가 ?

누가 시스템을 제공하고 유지보수 하는가 ?

시스템이 외부 자원을 사용하는가 ?

한 사람이 여러 가지 역할을 담당하는가 ?

여러 사람이 같은 역할을 담당하는가 ?

시스템이 노후 시스템과 연결되어 상호작용하는가 ?

액터를 찾기 위한 질문

Page 39: 소프트웨어 공학 Lecture # 6 - 1: UML

39

사용 사례 (use case) 액터와 시스템 사이의 전형적인 인터액션을 표현한 것 시스템이 제공할 기능을 표현한 것 완전하고 의미 있는 이벤트의 흐름

사용 사례의 집합은 시스템을 사용하는 모든 방법을 이룬다 .

사용사례 이름 붙이기 액터의 관점에서 이름 붙임 시스템에 치우친 이름은 피한다 .

수동적 이름을 사용

사용사례 (Use-Case)

Page 40: 소프트웨어 공학 Lecture # 6 - 1: UML

40

이름 사용사례에 고유한 이름을 붙여 개발자가 구별할 수 있도록

참여 액터 사용 사례와 관련된 액터

시작 조건 사용 사례가 활성되기 전에 만족되어야 하는 조건

사건 흐름 사용 사례를 구성하는 액션을 순서대로 나타낸 것

종료 조건 사용 사례가 종료 후 만족하여야 하는 조건

특수 요구 비기능적 요구 : 성능 , 구현 , 하드웨어 플랫폼에 대한 조건

사용사례 Template

Page 41: 소프트웨어 공학 Lecture # 6 - 1: UML

41

사용사례 이름 ReportEmergency참여 액터 FieldOfficer 에 의하여 구동됨

Dispatcher 와 통신시 작 조건 1. FieldOfficer 가 자신의 터 미널에 서 “ Report Emergency?

기능을 활성시킨다 . 시스템이 입력양식을 화면에 제시 하여 경찰관에게 반응한다 .

사건의 흐름 2. FieldOfficer 가 응급 정도 , 종류 , 위치 , 상황의 간단한 설 명을 양식에 입력한다 . 또한 FieldOfficer 는

응급사태의 상황에 적절히 대응한 것을 기술할 수 있다 . 양식이 일 단 완성되면 FieldOfficer 는 양식을 제출하고 Dispatcher 에게 알린다 .

3. Dispatcher 가 보고된 정보를 살펴보고 OpenInci-dent 사용사례를 구동시켜 데이터베이스에 Incicent 를 생성한다 .

종료 조건 4. FieldOfficer 가 회신과 선택된 응답을 받는다 .특 수 요 구 FieldOfficer 의 보 고 는 30 초 안 에 응답되 어 야 한 다 .

Dispatcher 에 의하여 응답이 보내진 후 30 초 이내로 선택된 응답을 받는다 .

사용사례의 예 (ReportEmergency)

Page 42: 소프트웨어 공학 Lecture # 6 - 1: UML

42

액터는 어떤 작업을 하나 ?

어떤 액터가 시스템에 정보를 제공 , 저장 , 사용 , 변경하는가 ?

어떤 사용사례가 이러한 정보들을 제공 , 저장 , 사용 , 변경하는가 ?

외부 환경의 변화에 대하여 시스템에 알려주어야 하는 액터는 ?

시스템의 유지보수를 담당하는 사용사례는 ?

사용사례 파악을 위한 질의

Page 43: 소프트웨어 공학 Lecture # 6 - 1: UML

43

사용사례와의 관계 시나리오 : 사용사례의 인스턴스 사용사례 : 시스템의 기능을 나타내는 모든 가능한 시나리오를 추상화 한 것

시나리오 사용 사례의 예

시나리오 기술 이름 : 시나리오의 이름 참여 액터의 인스턴스 : 시나리오에 참여한 액터 이벤트의 흐름 : 단계적으로 일어나는 이벤트의 순서

시나리오

Page 44: 소프트웨어 공학 Lecture # 6 - 1: UML

44

시나리오 이름 warehouseOnFire참여 객 인스턴스 kim, lee: FieldOfficer

park: Dispatcher사건의 흐름 1. 경관 Kim 이 순찰차를 타고 순회하는 중 창고 건물에서

연기가 나오는 것을 보았다 . 동료 Lee 경관이 순찰차 안에 있는 컴퓨터를 이용 Report Emergency? 기능을 구 동시킨다 .

2. Lee 경관이 빌딩의 주소 및 위치를 간단히 기술한 후 응급 수준을 입력한다 . 소방장비뿐만 아니라 응급처리를 위한 장비도 요청한다 . 입력된 것을 재확인시키고 응답을 기다린다 .

3. Dispatcher인 Park 은 워크스테이션의 알람 기능에 의하여 응급 상황을 알게 된다 . Lee 경관이 입력한 정보를 살펴본 후 보고로 회신한다 . 소방장비와 응급장비를 Incident 사이트에 배정하고 예정된 도착시각을 Lee 에게 알린다 .

4. Lee 경관이 응답과 예정 도착시각을 받는다 .

시나리오의 예

Page 45: 소프트웨어 공학 Lecture # 6 - 1: UML

45

통신 관계 액터와 사용사례 사이의 관계 선으로 표시 시스템의 기능을 접근하여 사용할 수 있음을 의미

포함 관계 복잡한 시스템에서 중복된 것을 줄이기 위한 방법 함수의 호출처럼 포함된 사용사례를 호출하는 의미

OpenIncident

AllocateResources

HelpDispatcher

<<include>>

<<include>>

사용사례 관계

Page 46: 소프트웨어 공학 Lecture # 6 - 1: UML

46

확장관계 예외 사항을 나타내는 관계 이벤트를 추가하여 다른 사례로 확장

포함관계와의 차이 화살표의 방향 공통적으로 가지는 기능을 나타낼 때는 포함관계

OpenIncident

AllocateResources

ConnectionDown

<<extend>>

<<extend>>

사용사례 관계

Page 47: 소프트웨어 공학 Lecture # 6 - 1: UML

47

사용사례의 inheritance 일반화 / 특수화 관계의 적용 유사한 사용사례를 모아 일반적인 사용사례 정의

Authenticate withPassword

Authenticate withCard

Authenticate

일반화 관계

Page 48: 소프트웨어 공학 Lecture # 6 - 1: UML

48

UML 의 중요한 요소 시스템의 골격을 나타냄

클래스 다이어그램을 구성하는 요소들 클래스와 객체 연관 관계와 링크 역할 다중도 연관 클래스 전체부분관계 일반화

클래스 다이어그램

Page 49: 소프트웨어 공학 Lecture # 6 - 1: UML

49

OrderdateReceivedisPrepaidnumber: Stringprice: Money

dispatch()close()

Customernameaddress

creditRating(): String

Orderline

quantity: Integerprice: MoneyisSatisfied: Boolean

Corporate CustomerContactNameCreditRatingCreditLimit

remind()billForMonth(integer)

Personal Customer

CreditCard#

Em-ployee

Product

* 1

*

* 1

*

0..1

1

lineitems

Sales rep

{if Order.customer.creditRating is‘poor”, then Order is prepaid must be true}

AssociationClass

Generalization

AttributeRolename

Multiplicity:Many-valued Operation

Multiplicity:Optional

Multiplicity:Mandatory

클래스 다이어그램

Page 50: 소프트웨어 공학 Lecture # 6 - 1: UML

50

객체란 물체로 존재하거나 개념상 존재하는 엔티티들의 표현 구체적인 물체 ( 예 , 영철이의 차 , 내 컴퓨터 )

개념 ( 예 , 구매 주문 , 은행에서의 거래 )

범위가 잘 정의될 수 있고 의미가 뚜렷한 개념 , 추상적인 것 , 사물

Purchase Order, 001

UML notation for an Object

객 체

Page 51: 소프트웨어 공학 Lecture # 6 - 1: UML

51

다음 객체 그룹에 대한 기술 공통 속성 (attributes)

공통 행위 (operations)

다른 객체와의 공통 관계 공통 의미

객체를 생성하는 템플릿 클래스 : CourseOffering

Attribute: location, time offered

Operations: retrieve location, retrieve time of day, add a student

클래스

Page 52: 소프트웨어 공학 Lecture # 6 - 1: UML

52

오직 한가지 추상 개념 클래스는 한가지 테마가 있음 예 ,. StudentInformation, StudentHistory

클래스의 이름은 도메인의 용어를 사용 추상적 개념을 잘 표현하는 단수형 명사 약자를 사용 액터와는 다른 이름을 사용한다 ( 예 , StudentInformation)

CourseOfferinglocation

addStudent()

UML Notation for a Class

클래스

Page 53: 소프트웨어 공학 Lecture # 6 - 1: UML

53

FieldOfficer Dispatcher

name:StringbadgeNumber:Integer

name:StringbadgeNumber:Integer

EmergencyReport

reportGenerated *

1

author

Incident

*

1

initiator

incidentGenerated

11..*

reports

클래스 다이어그램

Page 54: 소프트웨어 공학 Lecture # 6 - 1: UML

54

개념 수준 (Conceptual Level) 도메인의 개념만 나타냄 언어 / 구현에 독립적

명세 수준 (Specification Level) 소프트웨어 인터페이스에 주목 구현에 관련된 자세한 것은 생략

구현 수준 (Implementation Level) 자세한 설계를 포함 구현에 관련된 세부사항 포함

상세 수준

Page 55: 소프트웨어 공학 Lecture # 6 - 1: UML

55

연관 관계 두개 이상의 클래스 사이의 의존관계를 나타냄 한 클래스에서 다른 클래스를 사용함 (reference)

클래스 Person 와 Employer

연관관계는 관계를 서술하는 동사로 표현 문제 정의에서 직접 목적어를 가진 동사 문제 정의에서 생략된 관계도 찾아냄 도메인에 관한 지식에서 찾아냄

Employee Employerrole A role B

work for

연관관계와 링크

Page 56: 소프트웨어 공학 Lecture # 6 - 1: UML

56

관계에서의 역할 방향성이 있음

Order lineOrder

Customer

Customer

line item

Source

Target

Class Order { private Customer _customer; private Vector _orderlines; ...};

역할 (Role)

Page 57: 소프트웨어 공학 Lecture # 6 - 1: UML

57

클래스 인스턴스에서 연관된 링크의 개수 몇 개의 객체가 연관관계를 구성하는지 나타냄

Class

Class

Class

Class

1

*

0..1

1..*

Zero or more

Zero, one, or more

Exactly one

One or more

다중도

Page 58: 소프트웨어 공학 Lecture # 6 - 1: UML

58

속성과 오퍼레이션이 없이 클래스 사이의 관계만을 나타내는 클래스

FieldOfficer

name:StringbadgeNumber:Integer

1..*

Allocates

Role:StringnotificationTime:Time

Incident

author

initiator

1

연관 클래스

Page 59: 소프트웨어 공학 Lecture # 6 - 1: UML

59

Aggregation 전체 개념의 클래스 : 도 (state) 부분 개념의 클래스 : 시 (city)

TownshipCountyState

PoliceOfficerPolicestation

FileDirectory

1 *

1 *

1 *

전체부분관계 (Aggregation)

Page 60: 소프트웨어 공학 Lecture # 6 - 1: UML

60

공통 속성과 오퍼레이션을 사용하기 위하여 상속 개념으로 클래스를 구성하는 것 현재 존재하는 유사한 클래스의 공통적인 면을 추출하여 슈퍼클래스로 일반화

상향식 접근 방법 객체의 대치가능

Corporate CustomerContactNameCreditRatingCreditLimit

remind()billForMonth(integer)

Personal Customer

CreditCard#

Generalization

Customernameaddress

일반화

Page 61: 소프트웨어 공학 Lecture # 6 - 1: UML

61

속성이란 ? 이름 , 무게 , 속도 , 색상 등과 같이 객체의 성질을 나타내는 것 속성은 객체가 아님

속성을 찾으려면 소유격 구문에 따라 나오는 명사구 .

• 차의 색상 (color of the car)

• 커서의 위치 (the position of a cursor)

속성은 문제 정의에 자세히 나오는 경우가 매우 드뭄• 속성을 찾아내기 위하여 도메인 지식과 경험이 필요함 .

속 성 (Attributes)

Page 62: 소프트웨어 공학 Lecture # 6 - 1: UML

62

속성을 나타내는 방법 Visibility Name: Type=DefaultValue

Visibility• + for public

• - for private

• # for protected

예 ) - xPosition : int = 0;

속 성 (Attributes)

Page 63: 소프트웨어 공학 Lecture # 6 - 1: UML

63

클래스가 수행하여야 할 작업 멤버 함수 메소드

문법 Visibility Name(ParameterList): ReturnType { Property }

리턴 타입은 optional.

The property indicates property value that apply to the given operation.

ex) + changeColor(ColorType c) : Boolean

오퍼레이션

Page 64: 소프트웨어 공학 Lecture # 6 - 1: UML

64

어떤 일을 이루기 위하여 객체가 다른 객체와 협동 상호작용하는 것을 나타냄 사용 사례 : ‘Order Stock’

1) Order Entry Window sends ‘prepare” message to an Order.

2) Order sends “prepare” message to each Order line.

3) Order line checks the given Stock line

If “true”, remove the quantity of Stock Item.

Otherwise, request a new delivery.

순서 다이어그램의 구성 요소 객체 링크 ( 메시지 교환 ) 액터

순서 다이어그램

Page 65: 소프트웨어 공학 Lecture # 6 - 1: UML

65

anOrderEntryWindow

anOrder anOrderLine aStockItem

aReorderItem

aDeliveryItem

prepare()*prepare()

check()

[Check=“true”]remove

needsToReorder()

[needToReorder()=“true”]new

[Check=“true”]new

message iteration

condition

self-delegation

return

lifeline

creation

순서 다이어그램

Page 66: 소프트웨어 공학 Lecture # 6 - 1: UML

66

Lifeline 상호 작용하는 동안 객체의 유효 기간을 나타냄

메시지 흐름 두 객체 사이에 메시지의 전달을 화살표로 표시 메시지 이름과 매개변수 , 제어정보를 화살표에 표시

Self-Delegation 객체가 자기 자신에게 보내는 메시지

구성 요소

Page 67: 소프트웨어 공학 Lecture # 6 - 1: UML

67

조건 (Guard) 메시지의 조건이 만족할 때만 보내짐 [needToOrder() == true]

반복 표시 메시지가 반복하여 다른 객체로 보내지는 경우를 표시 객체의 반복 호출을 하는 interator 에 필요

리턴 메시지 호출 후 리턴을 표시 모든 메시지 호출은 리턴이 포함됨 따라서 리턴의 표시는 사실상 불필요하나 명확히 하기 위하여 표시

표현 방법

Page 68: 소프트웨어 공학 Lecture # 6 - 1: UML

68

theLibraryMember:LibraryMember

theCopy: Copy theBook: Book

aMember: BookBorrowborrow(theCopy)

1:okToBowwor

2:borrow2.1: borrowed

조건과 반복의 표시

Page 69: 소프트웨어 공학 Lecture # 6 - 1: UML

69

개념 객체가 가지는 모든 상태와 상태 사이의 전환을 나타내는 다이어그램 객체 상태는 이벤트의 결과에 의하여 변화

표현 방법과 Transition Event [Guard] / Action

이벤트가 일어난 후 트랜지션이 시작됨 [Guard] 부분에 나타난 조건이 참이 될 때만 상태의 변화가 이루어짐 .

다음에 ‘ Action’ 이 수행된 후 객체가 새로운 상태에 들어 감 .

상태 다이어그램

Page 70: 소프트웨어 공학 Lecture # 6 - 1: UML

70

Checking

do/checkitem

Dispatching

do/initiatedelivery

Waiting Delivered

/get first item[All items checked &&all items available

Delivered

get next item[Not all itemschecked]

[All items checked &&some items not in stock]

Item Received[Some items not in stock]

Item R

eceived

[All i

tems a

vailable]

Self-transitiontransition

state

Activity

UngardedTransition

상태 다이어그램

Page 71: 소프트웨어 공학 Lecture # 6 - 1: UML

71

Waiting

Checking Dispaching

Authorizing Autorized

Waiting

Delivered

Rejected

병렬 , 세부 다이어그램

Page 72: 소프트웨어 공학 Lecture # 6 - 1: UML

72

근원 Jim Odell 의 이벤트 다이어그램 , SDL 상태 모델링 기법 , Petri-nets.

액티비티 개념적으로는 수행되어야 할 어떤 작업 실제적으로는 클래스에 있는 메소드

액티비티 흐름 액티비티의 흐름의 순서

Guard 액티비티가 수행되기 앞서 만족하여야 하는 조건

액티비티 다이어그램

Page 73: 소프트웨어 공학 Lecture # 6 - 1: UML

73

액티비티 다이어그램을 사용하여 나타내는 것 메소드 복잡한 메소드 사용 사례 하나 여러 개의 사용 사례

액티비티 다이어그램

Page 74: 소프트웨어 공학 Lecture # 6 - 1: UML

74

FindBeverage

Put Coffeein filter

Add Waterto Reservior

GetCups

Get Canof Cola

Put Filterin Mchine

Turn OnMachine

BrewCoffee

PourCoffee

DrinkBeverage

[found coffee] [found cola]

light goes out

Synchronization BarGuard

Decision Activity

Activity

^coffeePot.TurnOnEnd

액티비티 다이어그램의 예

Page 75: 소프트웨어 공학 Lecture # 6 - 1: UML

UML 실습

EA Tool 9.3 평가판 버전다운로드 주소 http://www.sparxsystems.com/products/ea/trial.html

Eclipse: http://www.eclipse.org/ Omonde: http://www.uml2.org/Eclipse: Open Java 개발 도구 이클립스 (Eclipse), 필요한

모듈을 플러그인 (Plug-in) 방식으로 추가 설치 가능 Omondo: 이클립스의 플러그인 모듈 , UML Drawing 을 지원

75

Page 76: 소프트웨어 공학 Lecture # 6 - 1: UML

Questions?