UML [Download]

Download Report

Transcript UML [Download]

UML
(Unified Modeling Language)
UML 다이어그램
다이어그램 이름
2
개략적인 모양
설명
액터와 사용 사례를 이용하
여 시스템의 기능을 모델링
Use Case Diagram
Class Diagram
Package Diagram
객체지향 시스템의 가장 근
간이 되는 다이어그램으로
시스템의 정적인 구조를 나
타냄
관련된 클래스를 패키지로
그루핑 하여 의존도를 낮추
기 위하여 사용
UML 다이어그램
다이어그램 이름
Sequence Diagram
Collaboration
Diagram
State (Chart)
Diagram
3
개략적인 모양
설명
클래스 사이의 메시지 교환
을 시간이 흐름에 따라 나타
냄
순차 다이어그램과 같은 내
용을 나타내지만 모양이 네
트워크 형태임
외부 자극에 대한 시스템의
동적 상태 변화를 나타냄.
외부 이벤트에 대하여 민감
하게 상태를 변화시키는 객
체를 모델링
UML 다이어그램
다이어그램 이름
Activity Diagram
Component Diagram
Deployment
Diagram
4
개략적인 모양
설명
액티비티 단계별로 제어라
는 흐름을 모델링 하여 시스
템의 동적 특징을 나타냄
소프트웨어 부품, 예를 들면
원시코드, 헌 타임 라이브러
리, 실행 파일 등의 구성을
나타냄
노드, 컴포넌트, 커넥터 등
시스템의 물리적 자원 배치
를 나타냄
UseCase
5
 일반적으로 사용사례는 작업의 시작부터 끝까지 전 단
계를 커버하여야 함
 사용자가 시스템과의 상호작용을 나타냄

시스템이 실행하는 계산이 아님
 사용사례는 특정 사용자 인터페이스 설계와 독립적으
로 작성되어야 함
 액터가 컴퓨터와 상호작용 하는 액션만을 포함하여야
함
시나리오
6
 시나리오는 사용사례의 인스턴스
 사용사례가 다음의 구체적인 조건에 일어난 것
특정 액터
 특정 시간
 특정 테이터

사용사례를 표시하는 방법
 이름

7
사용사례에 대한 간단한 이름
 액터

사용사례를 이용하는 사용자나 외부 시스템
 목적

액터가 무엇을 성취하려는가를 설명
 시작조건

사용사례를 구동시키기 위하여 만족되어야 할 조건
 설명

간단한 비정형적 설명
 관련 사용사례
 단계적 사건의 흐름

액터의 액션과 시스템의 반응은 2 컬럼으로 표현
 종료 조건

종료된 후 시스템의 상태
사용사례 다이어그램
8
확장(extension)
9
 선택적인 인터랙션을 명시적으로 나타낼 때 또는 예외적인
사례를 다룰 때 사용
 사용사례 확장을 분리함으로써 기본적인 사용사례의 표현이
간단해 진다.
 사용사례 확장도 사용사례의 처음부터 끝까지 모든 단계를
나열하여야 함

특수한 경우의 처리도 포함
일반화(generalization)
10
 클래스 다이어그램에서 슈퍼 클래스와 유사
 일반화된 사용사례는 여러 유사 사용사례를 표현
 상세화 된 여러 사용사례가 유사 사용사례의 상세한
내용을 제공
포함(inclusion)
11
 여러 사용사례들 사이에 공통적인 부분을 표현
 다른 사용사례들 안에
 일련의 액션을 공유
 다수의 사용사례 사이에 중복을 피함
 하위 수준의 작업의 수행을 하위 수준의 목표로 표
현
사용사례 다이어그램 예
12
사용사례 작성 예…
13
사용사례: 파일 불러오기
관련 사용사례: 다음 두 사용사례를 일반화 한 것임


파일 이름을 주고 불러오기
브라우징으로 불러오기
사건의 흐름:
액터측 액션
시스템측 반응
1. ‘불러오기....’ 명령을 선택 2. ‘파일 불러오기’ 다이얼
로그를 창을 디스플레이
3. 파일 이름을 명시
4. 선택을 확인
5. 디스플레이에서 다이얼로그
창을 삭제
사용사례 작성 예…
14
사용사례 : 파일 이름을 주고 불러오기
관련 사용사례: 파일 불러오기의 상세화
사건의 흐름:
액터측 액션
시스템측 반응
1. ‘불러오기....’ 명령을 선택 2. ‘파일 불러오기’ 다이얼로그 창을
3a. 텍스트 필드를 선택
디스플레이
3b. 파일 이름을 입력
4. ‘불러오기’를 클릭
5. 디스플레이에서 다이얼로그를 삭제
사용사례 작성 예
15
사용사례 : 브라우징으로 파일 불러오기(include)
관련 사용사례:


파일 불러오기 사용사례의 상세화
파일 브라우징 사용사례를 포함
사건의 흐름:
액터측 액션
시스템측 반응
1. ‘불러오기....’ 명령을 선택 2. ‘파일 불러오기’ 다이얼
로그를 창을 디스플레이
3. 파일을 브라우징
4. 선택을 확인
5. 디스플레이에서 다이얼로그 창을 삭제
클래스 다이어그램의 기초
16
 클래스 다이어그램에 사용하는 기본 심볼
 클래스


연관관계


클래스와 그 인스턴스 안에서 발견될 단순 자료
오퍼레이션


클래스 인스턴스 사이의 관계를 나타냄
속성


자료 타입 그 자체를 나타냄
클래스와 그 인스턴스에 의하여 수행될 함수를 나타냄
일반화

클래스를 상속 구조로 그루핑
클래스
17
 클래스는 박스로 표현하며 그 안에 이름을 적는다
 다이어그램은 속성과 오퍼레이션을 나타낼 수 있다.
 오퍼레이션의 원형은 다음과 같이 표시한다.
operationName(parameterName parameterType, …): returnType
속성
18
 객체의 상태 또는 성질을 나타냄
 객체에 대한 정보를 나타냄
 속성은 변수와 동의어는 아님. 추상적으로 정의한 성질
 객체 외부에서 값을 가져갈 수도 있고 변경할 수도 있음
 읽기 전용도 있음
오퍼레이션
19
 박스 맨 아래 오퍼레이션의 원형으로 표현
 대부분 속성에 대한 get,() set()
 읽기 전용은 get() 오퍼레이션만
 일부 오퍼레이션은 매개변수 필요
 일부 오퍼레이션은 다른 객체에 메시지 호출할 필요가 있음
가시성
20
 속성과 오퍼레이션 앞에 visibility 표시
 Public : ‘+’
 Protected : ‘#’
 Private : ‘-’
추상 클래스
21
 추상 오퍼레이션
 구현이 없는 오퍼레이션
 추상 클래스
 인스턴스가 없는 클래스
연관관계
22
 두 클래스가 서로 어떻게 관련이 있는지를 나타냄


연관관계의 양 끝에는 다중도를 표시
연관관계 특성을 드러내기 위해 이름을 붙임
연관관계 검토
23
 One-to-one
 한 회사에 오직 한 개의 책임자 위원회가 있음
 책임자 위원회는 한 회사를 위한 위원회임
 회사는 항상 위원회를 가지고 있어야 함
 위원회는 어떤 회사의 소속임
Company
BoardOfDirectors
연관관계 검토
24
 Many-to-many
 비서 일인이 여러 명의 관리자를 위하여 일함
 관리자 한 사람이 여러 명의 비사를 둘 수 있음
 비서는 풀에서 일함
 관리자들은 비서의 그룹을 가질 수 있음
 어떤 관리자는 비서가 없을 수도 있음
 관리자가 없는 비서는 일시적으로 가능한가?
Secretary
*
1..**
supervisor
Manager
연관관계 검토
25
 불필요한 1대1 관계는 피함
 하나의 클래스로 표현해야
복잡한 예
26
 예약은 항상 단 하나의 탑승객에 대한 것
 탑승객이 없는 예약은 없음
 예약에 탑승객이 여러 명인 경우는 없음
 탑승객이 다수의 예약을 할 수 있음
 탑승객이 예약이 하나도 없을 수 있음
 탑승객에 다수의 예약이 있을 수도 있음
 만약, ‘1..*’로 표시한 경우는?
연관 클래스
27
 두 개의 연관 클래스에 관한 속성을 어느 한쪽에 위치시킬 수 없을 때
 다음과 같은 경우
재귀 연관관계
28
 클래스 자신과 연관관례를 맺음
successor
* Course
*
prerequisite
클래스 다이어그램
29
 일반화 관계
 두 가지 이상의 서브클래스로 구체화 시키는 것
 Discriminator: 상세화 할 때 기준을 나타내는 레이블
Animal
Animal
habitat
AquaticAnimal
LandAnimal
typeOfFood
Carnivore
Herbivore
불필요한 상속 피하기
30
 인스턴스가 되어야 할 것을 무리하게 클래스 구조로 상속한 경우
 개선 후 클래스 다이어그램
구별자
31
 그루핑하는 기준


동력의 위치에 따른 구별 – 내연, 외연
운송 매체 – 육상, 해상
전체부분 관계 - Aggregation
32
 Aggregation : 전체부분 관계를 나타내는 특수한 형
태


전체에 해당되는 클래스는 aggregate 또는 assembly라 부름
다이어몬드 심볼은 isPartOf 라는 관계로 생각할 수 있음
Aggregate를 사용하는 경우
33
 일반적인 경우 다음의 관계가 성립하면 aggregate를
사용


‘is a part of’ 관계가 성립할 때
‘is composed of’ 관계가 성립할 때
 집합 개념을 관리하거나 소유하고 있으면 부분 개념도
소유
합성관계(Composition)
34
 합성은 aggregation이 강한 관계
 집합이 소멸되면 부분도 따라서 소멸
Building

*
Room
주소를 표현하는 두 가지 방법 (1:1합성관계)
Employee
address: Address
Employee
Address
street
municipality
region
country
postalCode
Aggregation 구조
35
인터페이스
36
 인터페이스는 객체집합이 가지는 행위의 일부
를 가시화 한 것

인터페이스는 클래스와 유사, 인스턴스 변수와 구현된
메소드만 없다.
Person
«interface»
Cashier
Machine
withdraw
deposit
Employee
Person
Cashier
ATM
Employee
Machine
Cashier
ATM
클래스 다이어그램 개발 과정
37
 반복, 점증적 방법
 초벌로 작성 후 계속 추가, 삭제
클래스 파악
38
 도메인 모델을 개발할 때 클래스를 찾아내려고 노력
 사용자 인터페이스나 시스템 구조에 대한 작업할 때
필요한 클래스를 고안


특정 설계 문제를 해결할 때 필요
도메인 모델을 생성할 때 고안할 수도 있음
 재사용에 관심을 두어야
 프레임워크
 시스템 확장
 유사 시스템
연관관계 파악
39
 가장 중요한 중심 되는 클래스부터 시작
 분명하고 확실한 데이터를 포함할 수 있는 것이어야
 덜 중요한 클래스로 작업을 이동
 클래스에 많은 속성과 연관관계를 추가하는 것은 피해
야
연관관계 파악 비결
40
 다음과 같은 관계가 클래스에 성립되는지 판단해 본다.
possesses
 controls
 is connected to
 is related to
 is a part of
 has as parts
 is a member of, or
 has as members



양 끝에 다중도를 표시하고
레이블을 정확히 붙임
속성 파악
41
 각 클래스에서 보관하여야 할 데이터를 찾음
 클래스 후보에서 탈락한 명사는 대부분 속성임
 속성은 단순한 원자적 값을 가져야 함
 스트링, 문자, 정수 등의 타입
항공권 예약 시스템의 예
42
일반화 관계와 인터페이스의 파악
43
 일반화를 파악하는 두 가지 방법
 상향식


유사 클래스를 그루핑 하여 슈퍼클래스를 생성
하향식

먼저 일반적인 클래스를 찾고 필요하면 상세화
 슈퍼 클래스 대신에 인터페이스를 정의하는 경우
 몇 개의 오퍼레이션만 같고 그 외의 부분은 다른 클래스들
 하나 이상의 클래스들이 이미 슈퍼클래스가 존재 (다중상속이
되는 경우)
 같은 클래스의 구현이 다르게 존재할 때
일반화 사례
44
클래스에 임무부여
45
 임무(responsibility)란 시스템이 수행하도록 요구된
사항




주어진 클래스의 모든 요구는 명확히 서로 연관됨
한 클래스에 너무 많은 임무가 주어지면 다른 클래스로 분산
임무가 부여되지 않은 클래스는 필요 없는 것임
어떤 임무가 현재 존재하는 클래스에 할당되지 않았다면 새 클
래스를 생성
 임무를 결정하기 위하여
 사용사례 분석
 시스템 명세에 액션을 기술하고 있는 동사와 명사를 찾음
임무 파악 사례
46
오퍼레이션 파악
47
 각 클래스에 부여된 임무를 실현시키기 위하여 필요
 임무 하나에 여러 개의 오퍼레이션이 필요할 수도 있음
 임무를 구현한 메인 오퍼레이션은 public으로 선언되어야
 임무를 실행하기 위하여 협동하는 다른 메소드는 가능하면
private으로 선언
협동 클래스와 오퍼레이션
48
UML을 이용한 설계 과정
49
인터랙션 다이어그램
50
 인터랙션 다이어그램을 그리기 전에 사용 사례 다이어
그램과 초벌 클래스 다이어그램을 그려야 한다.

이유는
사용사례 단위로 인터랙션 다이어그램을 그리기 때문
 사용사례에 관련된 클래스를 쉽게 찾을 수 있게 하기 위하여


두 가지 타입의 인터랙션 다이어그램
순차 다이어그램(sequence diagram)
 협동 다이어그램(collaboration diagram)

예: 순차 다이어그램
51
순차 다이어그램
52
 사용사례의 각 task를 수행하기 위하여 객체들이 메시
지를 교환하는 순서를 나타냄






객체가 다이어그램에 수평으로 정렬 됨
인터랙션을 구동하는 액터를 왼쪽에 표시
수직축은 시간의 흐름을 나타냄
객체마다 라이프 라인이라 불리는 수직 점선을 붙임
객체가 구동 중임을 표시하려면 라이프 라인에 수직 막대를 그
림(이를 액티베이션 박스라 함)
메시지는 송신자와 수신자의 액티베이션 박스 사이에 화살표로
표시

메시지 이름과 매개변수를 나타내는 레이블을 붙임
예: 순차 다이어그램
53
회귀 메시지가 포함된 순차 다이어그램
54
 객체에 대한 반복 수행은 메시지 이름 앞에 ‘*’
를 붙여 표시
객체삭제 순차 다이어그램
55
 객체가 소멸된 후에는 라이프 라인이 중지되며
‘x’로 표시한다.
협동 다이어그램
56
 협동 다이어그램은 인터랙션을 실현하기 위하여 객체
들이 어떻게 협동하는지를 나타낸 것



협동 다이어그램은 객체가 노드인 네트워크임
객체들 사이에 커뮤니케이션 링크가 추가 됨
메시지가 링크에 추가


화살표에 메시지 이름을 붙임
메시지가 호출되는 순서는 메시지 앞에 숫자를 적어 표시
협동 다이어그램 - 사례
57
커뮤니케이션 링크
58


객체에서 다른 객체로 메시지를 보내는 것은 항상 커
뮤니케이션 링크로 표시
메시지 교환이 일어나는 경우
1.
두 객체의 클래스가 연관관계에 의하여 결합된 경우


2.
대부분은 여기에 해당
모든 메시지가 같은 방향이라면 연관관계는 단방향
메시지를 받는 객체가 보내는 객체의 로컬 변수로 저장된 경
우

보내는 메소드에 의하여 객체가 생성되거나 계산 결과 객체가
리턴되는 경우
순차, 협동 다이어그램 선택방법
59
 순차 다이어그램
 메시지의 순서를 드러내 보여주고 싶을 때
사용사례의 시간 순서를 드러내 보이고 싶을 때
 사용사례로부터 인터랙션 모델을 구축할 때는 가장 자연스러운 선
택


메시지에 자세한 사항, 즉 파라미터, 리턴 값 등을 나타내고 싶을
때

협동 다이어그램에서는 자세한 것을 나타낼 공간이 없음
 협동 다이어그램
 클래스 다이어그램을 검증할 때 이용
협동 다이어그램과 패턴
60
 디자인 패턴을 표현할 때 협동 다이어그램을 사용
상태 다이어그램
61
 시스템 전체, 시스템의 일부, 개별 객체에 대한 동작을
나타냄

주어진 시점에 시스템이 어떤 상태에 있다고 하는 것은


어떤 이벤트는 시스템의 상태를 변화시킴


발생 이벤트에 대응하여 특정한 방법으로 동작한다는 것을 의미
새로운 상태에서 이벤트에 대하여 시스템은 여러 방법으로 작동
노드는 상태를 나타내며 아크는 트랜지션을 나타내는 방향성 있
는 그래프
상태
62
 주어진 시점에 시스템은 어떤 상태에 있음
 이벤트가 발생하여 상태를 변화시키기 전까지는 그 상
태에 머물러 있음
 상태는 둥근 사각형 안에 상태 이름을 표시하여 나타
냄
 특수 상태
 시작 상태는 검은 원으로 나타냄
 종료 상태는 원이 둘려진 검은 점으로 나타냄
트랜지션
63
 트랜지션
 이벤트에 대한 상태 변화를 나타냄


즉시 일어남이 원칙
트랜지션 위에는 상태변화를 일으키는 이벤트를 표시
시간이 표시된 상태 다이어그램
64
조건이 표시된 상태 다이어그램
65
상태 다이어그램의 액티비티
66
 액티비티란 시스템이 어떤 상태에 있을 때 발생하는
것

일정 시간이 걸림

액티비티가 완료된 응답으로 어떤 상태에서 빠져 나오는 트랜지
션이 이루어짐

그 외의 트랜지션
액티비티의 인터럽트
 상태에서 조기에 빠져 나옴

사례: 액티비티
67
상태다이어그램의 액션
68
 액션은 시간의 경과 없이 바로 일어날 수 있는 것
 특정 트랜지션이 이루어질 때
 특정 상태로 진입할 때
 특정 상태에서 빠져나올 때
 액션은 감지할 수 없는 적은 시간을 소비하여야 함
상태 다이어그램 – 액션 사례
69
상태 다이어그램 – 다른 예
70
내장된 상태와 가드 조건
71
 상태 다이어그램이 상태 안에 내장될 수 있음
 내부 다이어그램의 상태를 서브 상태라 함
상태다이어그램 – 내장 형태
72
액티비티 다이어그램
73
 액티비티 다이어그램은 상태 다이어그램과 유사
 단, 대부분의 트랜지션이 내부 이벤트(계산 종료)에 의하여 이루
어진다는 것이 다름
 액티비티 다이어그램은
 객체나 컴포넌트가 수행하는 작업의 흐름을 이해하는데 사용
 다른 사용사례 사이의 관계나 상호작용을 가시화하는데 사용
 대부분 여러 클래스와 관련 됨
 액티비티 다이어그램의 강점 중의 하나는 병행 액티비
티의 표현
액티비티 다이어그램 - 사례
74
병행처리 표현
75
 병행처리는 fork, join, rendezvous를 사용하여 표현
 fork는 단일 입구 트랜지션과 다수의 출구 트랜지션을 가짐.


Rendezvous는 다수의 입구 트랜지션과 다수의 출구 트랜지션
을 가짐


실행경로가 두 개의 병행 스레드로 분할 됨
모든 입구 트랜지션이 트리거 되면 시스템이 모든 출구 트렌지션
이루어 짐
Join은 다수의 입구 트랜지션과 단일 출구 트랜지션을 가짐
모든 입구 트랜지션이 이루어진 후 출구 트랜지션이 발생
 입구 트랜지션은 분리된 스레드에 의하여 트리거 됨
 먼저 어루어진 입구 트랜지션은 다른 입구 프렌지션이 이루어질
때까지 기다림

스윔레인
76
 액티비티 다이어그램은 대체로 여러 클래스와 관련됨
 같은 스윔레인 안에 있는 액티비티들은 동일한 클래스와 관련된 것
패키지 다이어그램
77
 패키지
 공통적인 특성을 가진 클래스들의 모임
 재사용의 단위가 됨
 관계
 점선 화살표는 의존관계를 나타냄
 컴파일 타임에 바인딩
패키지 다이어그램 - 사례
78
배치 다이어그램
79
 개발될 시스템의 소프트웨어 및 하드웨어 컴포
넌트의 물리적인 설치 관계를 나타냄


노드: 컴퓨팅 유닛
링크: 시스템의 통신 경로(물리적으로 표시), 참조 방향
도 표시